Linux 初识:从操作系统的诞生,到内核、发行版、云服务器与 SSH

个人主页:
个人专栏:
C语言
嵌入式小白启动!
重要OJ算法题详解
蓝桥杯备战
C++从菜鸟到强手
python启航
AI大模型Agent:拥抱未来,赋能自己
26电赛H题:车载小球平衡系统
文章目录
第一次学习 Linux,最重要的不是立刻记住几十条命令,而是先回答四个问题:操作系统为什么存在?Linux 究竟指什么?Ubuntu、CentOS 与内核版本有什么区别?我们应该怎样搭建一个接近企业实际工作的学习环境?

一、从早期计算机说起:为什么需要操作系统
1945 年前后,电子计算机进入重要发展阶段。ENIAC 于 1945 年完成、1946 年公开,是早期通用电子数字计算机的代表。它体积庞大、耗电惊人,编程依赖人工接线和开关设置,与今天打开编辑器编写代码完全不同。
随着电子器件不断发展,计算机逐渐小型化、性能不断提高。1965 年,戈登·摩尔根据集成电路发展趋势提出后来被称为“摩尔定律”的观察:集成电路可容纳的元件数量会周期性增长。它不是永远不变的物理定律,却长期描述了芯片产业提升集成度和降低单位计算成本的方向。
计算机市场也逐渐形成不同路线。IBM 等公司推动面向政府、科研和企业的大型机;苹果、微软以及英特尔生态在个人计算机普及过程中扮演了重要角色。无论机器大小,计算机都可以抽象为输入、计算、输出,但真实硬件包含 CPU、内存、磁盘、网卡、键盘、显示器等大量设备。如果每个应用都直接控制硬件,程序员就必须重复处理设备差异、资源冲突、异常恢复和安全隔离。
于是,操作系统承担起“管理资源并向上提供统一接口”的职责。它向下管理硬件,向上服务应用程序和用户:
- 管理 CPU,让多个程序看起来能同时运行;
- 管理内存,隔离不同进程的地址空间;
- 管理磁盘,把扇区组织成文件与目录;
- 管理设备,通过驱动统一处理键盘、网络、显示等硬件;
- 管理用户与权限,限制谁能访问什么;
- 提供系统调用,让程序以稳定接口请求内核服务。
因此,操作系统并不是“桌面壁纸加窗口”。图形界面只是用户空间中的一组程序。没有图形界面,内核、文件系统、网络和进程管理仍然可以完整工作;这也解释了服务器为什么常用终端而不是桌面。
二、UNIX、C 语言与 Linux 的历史主线


20 世纪 60 年代末,贝尔实验室的肯·汤普森(Ken Thompson)参与创建 UNIX。早期系统与汇编语言关系密切,可移植性有限。随后丹尼斯·里奇(Dennis Ritchie)设计和发展 C 语言,UNIX 的大量代码被改用 C 重写。高级语言并没有让操作系统完全摆脱汇编:启动、上下文切换和特定硬件操作仍需少量汇编,但主体可以用 C 表达,从而更容易移植到不同处理器。
1983 年,理查德·斯托曼发起 GNU 计划,希望构建自由的类 UNIX 操作系统。GNU 社区陆续提供 GCC 编译器、Bash、C 库以及大量命令行工具,但内核部分长期未形成广泛使用的完整组合。
1991 年,芬兰赫尔辛基大学学生 Linus Torvalds(常译林纳斯·托瓦兹)公开了自己开发的类 UNIX 内核。这里要纠正两个常见写法:名字是 Linus Torvalds,不是“雷纳斯托瓦兹”;Linux 的名称常被解释为 “Linus’s Unix”,也有人用递归式短语 “Linux Is Not Unix” 帮助记忆,但 Linux 并不是 UNIX 源代码的简单复制。
Linux 内核后来采用 GNU GPL 许可证发布,并与 GNU 工具及其他开源组件组合,形成可实际使用的操作系统。严格来说:
- Linux 是内核,负责进程、内存、文件系统、网络和驱动等核心机制;
- GNU/Linux 系统 是 Linux 内核与 GNU 工具及其他软件的组合;
- 日常语境中的“Linux 操作系统”通常泛指基于 Linux 内核的完整系统;
- Ubuntu、Debian、Fedora 等是发行版,而不是不同的 Linux 内核项目。
Linux 内核主要由 C 语言编写,同时包含架构相关的汇编,以及越来越多经审核引入的 Rust 代码。写成“部分汇编 + C”适合入门理解,但不能把现代内核限制为只有这两种语言。
内核源码与正式版本可以从 kernel.org 获取。开源意味着源代码可以在许可证约束下被查看、修改和再发布,不等于“没有版权”“完全没有规则”或“天然没有漏洞”。Linux 的稳定与安全来自开放协作、工程审查、权限设计和持续维护,而不是只靠“代码公开”四个字。
三、操作系统、内核和发行版不要混为一谈
一台可工作的 Linux 机器通常至少包含:Linux 内核、初始化系统、C 库、Shell、基础命令、包管理器、服务程序和应用。发行版把这些组件选型、集成、测试并提供更新仓库。
可以把它类比成汽车:内核像发动机和底盘的核心机制;GNU 工具、库和系统服务像传动、电气与控制组件;发行版厂商或社区负责选择零件、组装、测试、维护和提供说明书。两款发行版可能使用相近的 Linux 内核,却采用不同包管理器、默认桌面、发布周期和支持策略。
常见发行版包括:
| 发行版 | 特点与典型场景 | 常见包管理体系 |
|---|---|---|
| Debian | 社区驱动、稳定、架构支持广 | APT / .deb |
| Ubuntu | 基于 Debian,资料丰富,提供 LTS 长期支持版 | APT / .deb |
| Fedora | 技术更新较快,与 Red Hat 生态联系紧密 | DNF / RPM |
| RHEL | 面向企业,强调认证、支持与生命周期 | DNF / RPM |
| Rocky Linux / AlmaLinux | RHEL 兼容方向的社区企业级发行版 | DNF / RPM |
| Kali Linux | 面向安全测试,预装大量专业工具,不适合作为纯新手日常系统 | APT / .deb |
| openEuler、麒麟等 | 国内服务器或桌面生态中的发行版 | 依产品而异 |
CentOS 的历史要按时间看待。传统 CentOS Linux 7 已在 2024 年结束维护,CentOS Linux 8 更早结束;CentOS Stream 是位于 Fedora 与 RHEL 之间、持续交付下一版 RHEL 变化的发行渠道,不能简单等同于旧 CentOS Linux。因此,2026 年新购云服务器不应因为旧教程而默认选择 CentOS 7。学习可以选择仍受支持的 Ubuntu LTS、Debian、Rocky Linux、AlmaLinux 或云厂商提供的其他受支持镜像。
Ubuntu 的 20.04、22.04、24.04 不是内核版本,而是发行版版本号,前两位表示年份、后两位表示月份。例如 Ubuntu 24.04 表示 2024 年 4 月发布。LTS 表示长期支持版本。
四、怎样读懂 Linux 内核版本号
运行以下命令可以查看当前正在运行的内核:
uname -r
可能得到:
6.8.0-52-generic
上游内核版本的核心形式通常是 主版本.次版本.修订版本,例如 6.8.12。发行版会在后面增加自己的 ABI、构建或风味标识,所以 6.8.0-52-generic 不能只按三个数字机械解释。2.6.32、6.8 都是内核版本;Ubuntu 22.04、Rocky Linux 9 则是发行版版本。
旧资料常把奇数次版本称为开发版、偶数次版本称为稳定版,这主要是早期内核发布模式,不能直接套到今天。现代上游采用主线版本、稳定版本与长期支持(LTS)分支;发行版还会回移植安全和缺陷修复。因此,版本数字更大不必然意味着某台生产服务器“更安全”,还要看发行版是否持续维护、补丁是否及时安装。
查看完整系统信息可用:
uname -a
cat /etc/os-release
第一条偏向内核和硬件架构,第二条用于识别发行版。排查问题时应同时提供两者,而不是只说“我用的是 Linux”。
五、Linux 为什么成为企业后端的重要选择
Linux 并非所有场景唯一答案,但它在企业服务器和开发基础设施中具有显著优势:开源、可定制、自动化能力强、网络栈成熟、硬件平台覆盖广,并拥有庞大的软件和运维生态。企业真正看重的还包括可预测的更新策略、长期支持、供应商服务、可观测性和大规模部署能力。
1. 服务器领域
Web 服务、数据库、缓存、消息队列和持续集成系统大量运行于 Linux。服务器通常无需本地图形界面,管理员可以通过 SSH 远程管理,使用脚本和配置管理工具批量部署。Linux 权限、进程、网络与日志体系也适合长期后台服务。
2. 桌面领域
Ubuntu、Fedora、Linux Mint、深度等发行版提供图形桌面。Linux 桌面适合开发、科研和重视开源工具链的用户,但特定商业软件、游戏反作弊和外设驱动兼容性仍需具体评估。不能因为服务器常不用 GUI,就得出“Linux 没有图形界面”的结论。
3. 移动与嵌入式领域
Android 使用 Linux 内核,但 Android 用户空间、应用框架和普通 GNU/Linux 桌面并不相同。路由器、电视、车载设备、工业控制器和单板计算机也常使用经过裁剪的 Linux。Linux 的可配置性和丰富驱动生态使它适合不同硬件平台。
4. 云计算、大数据与容器
云主机、Kubernetes 节点、容器宿主机以及 Hadoop、Spark 等平台大量建立在 Linux 上。容器共享宿主机内核,这让理解 Linux 进程、命名空间、控制组、文件系统和网络成为云原生学习的基础。对后端程序员来说,Linux 既是部署平台,也是理解生产环境的入口。
六、学习环境怎么选:双系统、虚拟机、WSL 还是云服务器

1. 双系统
双系统能直接使用真实硬件,性能好,但涉及磁盘分区、引导管理与驱动兼容。一旦误操作,可能影响原系统数据。对只想学习命令、网络和后端编程的新手,收益通常不值得承担这些风险。确实需要 GPU、内核模块或原生桌面体验时,再在完整备份后考虑。
2. 虚拟机
虚拟机并非“不推荐”,它是很好的可恢复实验室:可以做快照、断网练习、测试 root 操作,出错后快速回滚。缺点是占用本机内存和磁盘,桥接、NAT、端口转发等网络概念对新手有门槛。虚拟机“入网很难”不是绝对结论,默认 NAT 通常足以访问互联网;从其他机器访问虚拟机时才需额外配置。
3. WSL
Windows 用户可使用 WSL 2 快速获得 Linux 命令行和开发环境。它与编辑器、Windows 文件系统配合方便,不必购买服务器。其环境与完整远程服务器仍有差异,例如网络、服务管理、内核和硬件访问方式,因此适合本地开发,不能替代全部运维实验。
4. 云服务器
云服务器最接近“通过公网 IP 远程管理企业 Linux 主机”的体验,可以练习 SSH、用户权限、服务部署、防火墙和日志。但它会产生费用,而且公网主机从创建起就可能被自动扫描攻击。购买最便宜实例不是唯一标准,还要确认地区、流量计费、续费价格、系统镜像、快照和销毁规则。
更稳妥的学习策略是:本地用 WSL 或虚拟机进行高风险实验;云服务器用于远程登录和真实网络服务部署。两种环境不是互斥选择。
七、从云服务器到 SSH 登录
环境安装流程强调公网 IP、云实例、终端软件与多用户的联系。实际操作时还必须把安全组、主机指纹、普通用户和 SSH 密钥纳入流程。

XShell 是 Windows 上的终端/SSH 客户端之一,Windows Terminal、PuTTY、MobaXterm 以及系统自带的 ssh 客户端也能完成同类工作。终端软件不是 Linux,它只是连接远端 Shell 的窗口。
云服务器初始化可按以下思路进行:
- 选择仍在安全维护期内的 Linux 镜像。
- 创建实例并记录公网 IP、地域和登录用户名。
- 在安全组中只开放必要端口,SSH 默认是 TCP 22;能限定来源 IP 时不要向全网开放。
- 优先创建或绑定 SSH 密钥。若课堂要求密码登录,应使用唯一强密码,并避免在聊天、截图或代码仓库中泄露。
- 使用客户端登录并核对主机指纹,防止连接到错误主机。
- 登录后更新安全补丁,建立普通管理用户,验证
sudo后再考虑限制 root 远程登录。
典型登录命令是:
ssh 用户名@公网IP
例如:
ssh student@203.0.113.10
203.0.113.10 是文档示例地址,不能当作真实服务器使用。不同云镜像的默认用户可能是 ubuntu、debian、ec2-user、rocky 或云厂商指定名称,不应一律假定为 root。
第一次连接时客户端会显示主机指纹。应该在云控制台或可信渠道核对,再决定是否接受。密码输入时终端通常不显示星号,这是防止旁观者判断密码长度的设计,并非键盘失效。
登录后先做三项只读确认:
whoami
pwd
cat /etc/os-release
提示符 [root@bite-alicloud ~]# 可拆为当前用户 root、主机名、家目录缩写和超级用户提示符;普通用户多以 $ 结尾。前几节课使用 root 有利于减少权限阻碍,但长期把 root 当日常账号会放大误删除和误配置的后果,应尽快切换到普通用户配合 sudo。
八、Linux 的多用户本质
Linux 从设计上就是多用户系统。多用户不只是“能建立多个名字”,而是每个用户拥有 UID、主组和附加组、家目录、登录 Shell 以及相应权限。内核和文件系统主要依据数字 UID/GID 判断身份,用户名是便于人类使用的映射。
板书给出了创建用户、设置密码和删除用户的基础命令:
sudo useradd -m user1 # 通用低层命令,-m 创建家目录
sudo passwd user1 # 设置或修改密码
sudo userdel -r user1 # 删除账号及其家目录,执行前必须确认数据
在 Debian/Ubuntu 中,adduser user1 是更友好的交互式工具;某些发行版中 adduser 只是 useradd 的链接。删除用户属于破坏性操作,-r 会连家目录和邮件池一起处理,不应在存在重要文件或正在运行进程时直接执行。
使用 SSH 密钥时,可将公钥安装到目标用户的 ~/.ssh/authorized_keys,并保证目录和文件权限正确。不要共享 root 密码让多人“共用一个管理员”,否则日志难以追责、权限无法按人撤销。更合理的方式是每人使用独立账号,需要管理权限时通过 sudo 提升,并保留审计记录。
九、一次完整的 Linux 初识检查
成功登录练习环境后,可以执行以下只读或低风险命令:
whoami # 当前用户
id # UID、GID 与组
pwd # 当前目录
uname -r # 内核版本
cat /etc/os-release # 发行版信息
hostname # 主机名
ip addr # 网络接口与地址
free -h # 内存概况
df -h # 文件系统空间
然后在自己的家目录创建实验区:
mkdir -p ~/linux-intro-lab
cd ~/linux-intro-lab
printf 'hello linux\n' > hello.txt
ls -l
cat hello.txt
这组操作把抽象概念落到具体对象上:当前用户拥有一个家目录;Shell 有工作目录;发行版运行在某个内核之上;网络接口拥有地址;文件系统管理空间;普通程序通过重定向和系统调用创建文件。
十、结语:Linux 初识应该建立的四层认知
学习完这一部分,至少应能清楚区分四层:最下方是 CPU、内存、磁盘和网卡等硬件;Linux 内核负责管理这些资源;发行版把内核、GNU 工具、系统服务和软件仓库组合成可维护的系统;终端、Shell、编译器、服务器程序则运行在用户空间。
历史帮助我们理解 Linux 为什么重视可移植性、文本接口和开放协作;版本知识帮助我们避免把 Ubuntu 22.04 与内核 6.x 混为一谈;环境选择帮助我们在风险、成本和真实性之间取舍;多用户和 SSH 则把个人电脑上的练习连接到真实企业后端。
真正的“Linux 初识”不是记住 Linux 诞生于 1991 年,而是知道自己登录的究竟是哪一种发行版、运行哪个内核、以什么身份操作、通过什么网络边界暴露服务,以及每一次命令最终会影响哪个对象。带着这套模型继续学习文件、权限、进程和网络,后面的知识才会彼此连接。
配图说明: 文中结构图、时间线和环境对比图为原创;课堂板书整理图来自课程材料,仅用于学习总结。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)