Linux 是什么:内核、发行版和文件系统通俗讲解
Linux 是开源的操作系统内核,负责管理处理器、内存、磁盘和网络;内核加上工具程序、包管理器和初始化系统,就构成了发行版,例如 Ubuntu、Debian 或 Fedora。Linux 运行在大多数服务器、容器和云主机上,因此会使用 Linux 是 DevOps 工程师和系统管理员的基础技能。
Linux 是一个开源的操作系统内核,人们以它为基础组装出完整的系统:服务器系统、桌面系统和嵌入式系统。说“服务器跑的是 Linux”时,通常指的并不是某一个程序,而是一个发行版:内核加上一整套工具、库、包管理器和初始化系统。下面我们说明 Linux 到底是什么、由哪些部分组成,以及为什么几乎每个 DevOps 工程师都离不开它。
Linux 是内核,而不是整个系统
严格来说,Linux 只是内核(kernel)。内核是在引导程序之后第一个运行的程序,并且在计算机运行期间一直驻留在内存中。它在进程之间分配处理器时间,分配内存,通过驱动程序操作磁盘和网卡,并检查访问权限。
普通程序不会直接操作硬件。比如编辑器保存文件时,会发起系统调用(open、write、close),然后由内核决定把数据写到磁盘的哪个块上,以及这个进程是否有权限这样做。这种分工让系统更稳定:一个程序崩溃,不会带走整台计算机。
查看内核版本只需一条命令:
$ uname -r
6.8.0-45-generic
Linux 内核由 Linus Torvalds 于 1991 年创建,此后一直公开开发:源代码以 GNU GPL 第 2 版发布,任何人都可以阅读、修改并在同样的条件下分发。
什么是 Linux 发行版
只有内核还不够:还需要命令行 shell、处理文件的工具、库和软件安装器。其中大部分基础工具(ls、cp、bash、grep)来自 GNU 项目,所以这个系统有时被称为 GNU/Linux。内核加上这套经过组装和测试的工具,就叫作发行版。
发行版之间的主要区别在于包管理器、更新策略以及目标用户群。
| 系列 | 示例 | 软件包 | 常见场景 |
|---|---|---|---|
| Debian | Debian、Ubuntu、Linux Mint | .deb、apt | 服务器、云主机、工作站 |
| Red Hat | RHEL、Fedora、Rocky Linux、AlmaLinux | .rpm、dnf | 企业服务器 |
| Alpine | Alpine Linux | apk | 体积要求小的 Docker 镜像 |
| Arch | Arch Linux、Manjaro | pacman | 爱好者、需要较新软件包的用户 |
可以从 /etc/os-release 文件中查看当前使用的是哪个发行版:
$ cat /etc/os-release
PRETTY_NAME="Ubuntu 24.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
ID=ubuntu
ID_LIKE=debian
学习和部署服务器时,最常选择 Ubuntu LTS 或 Debian:文档丰富,网上教程里的命令基本可以直接使用。
系统的结构:内核、shell 和用户空间
可以把 Linux 看作分层结构。最底层是硬件,其上是内核,再往上是用户空间:系统服务、库(例如 glibc)和应用程序。人与系统之间是 shell,最常见的是 bash,它接收命令并启动程序。
- 内核:进程、内存、文件系统、网络、驱动程序。
- 初始化系统:进程 PID 1,在大多数现代发行版中是
systemd,负责启动其他服务。 - 服务(守护进程):Web 服务器、SSH 服务器、cron、日志。
- shell 和工具:你在终端里直接使用的部分。
服务器上通常根本没有图形界面:管理员通过 SSH 连接,在命令行中工作。因此学习 Linux 首先就是学习终端。
Linux 文件系统:一切从根目录 / 开始
Linux 中没有 C: 和 D: 这样的盘符,只有一棵从根目录 / 开始的目录树。所有磁盘、U 盘和网络共享都会挂载(mount)到这棵树的某个目录下。另一个原则是:Linux 中几乎一切都表现为文件,包括普通文件、目录、设备,甚至进程信息。
$ ls /
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
目录的布局由 FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)规定,因此在任何发行版中,配置文件大体都放在相同的位置。
| 目录 | 内容 |
|---|---|
/etc | 系统和服务的配置:/etc/passwd、/etc/ssh/sshd_config、/etc/fstab |
/home | 用户的主目录:/home/alice |
/root | 超级用户 root 的主目录 |
/var | 可变数据:/var/log 中的日志、软件包缓存、数据库、邮件队列 |
/usr | 已安装的程序和库:/usr/bin、/usr/lib |
/bin、/sbin | 基础命令;在现代发行版中它们是指向 /usr/bin 和 /usr/sbin 的链接 |
/boot | 内核(vmlinuz-*)、initramfs 和引导程序文件 |
/dev | 设备文件:/dev/sda、/dev/null |
/proc、/sys | 虚拟文件系统:内核通过它们展示进程和系统设置 |
/tmp | 临时文件,通常在重启时清空 |
/opt | 整体提供的第三方程序 |
/mnt、/media | 磁盘和可移动介质的挂载点 |
绝对路径和相对路径
绝对路径以 / 开头,与当前所在位置无关,例如 /var/log/syslog。相对路径从当前目录算起,例如 ../logs/app.log。点 . 表示当前目录,两个点 .. 表示上级目录,波浪号 ~ 表示你的主目录。
$ pwd
/home/alice
$ cd /var/log
$ cd ..
$ pwd
/var
$ cd ~
$ pwd
/home/alice
/proc:把系统当作一组文件
/proc 并不存储在磁盘上,而是由内核实时生成。例如 cat /proc/cpuinfo 显示处理器信息,cat /proc/meminfo 显示内存信息,每个进程还有一个目录 /proc/<PID>,里面有它的命令行和打开的文件。ps、top 等工具大多只是读取这些文件。
挂载
命令 df -h 显示各个文件系统挂载在哪里,以及还剩多少空间:
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 40G 12G 26G 32% /
/dev/sda1 1.1G 6.1M 1.1G 1% /boot/efi
tmpfs 393M 1.2M 392M 1% /run
永久挂载点记录在 /etc/fstab 中,系统在启动时读取该文件。
Linux 如何启动:从通电到登录提示符
了解启动过程,有助于排查服务器重启后“起不来”的问题。简化的流程如下:
- 固件(UEFI 或 BIOS)检查硬件,并找到引导程序。
- GRUB 引导程序显示菜单,并从
/boot把内核和 initramfs 加载到内存。 - 内核初始化硬件,并借助 initramfs 找到并挂载根文件系统。
- systemd 以 PID 1 运行,并按顺序启动服务:网络、日志、SSH、cron 以及其他服务。
- 登录提示符出现在控制台上,或可以通过 SSH 登录。
启动时的内核消息可以用 sudo dmesg 或 journalctl -k 查看,各阶段耗时可以用 systemd-analyze 查看。
用户和权限:内置的保护机制
Linux 从一开始就是多用户系统。每个文件都有所有者、所属组以及读、写、执行权限。普通用户无法破坏系统文件,管理性操作通过 sudo 完成。超级用户 root 权限最大,因此不建议长期以 root 身份工作。
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 2847 Oct 1 10:12 /etc/passwd
这一行的含义是:普通文件,所有者 root 可以读写,其他人只能读。
Linux 对 DevOps 工程师的意义
对 DevOps 工程师来说,Linux 不是众多主题之一,而是几乎所有工作发生的环境。以下是他们每天会接触 Linux 的场景:
- 服务器。Web 服务器、数据库和消息队列绝大多数运行在 Linux 上。
- 容器。Docker 使用 Linux 内核的机制,即 namespaces 和 cgroups。容器就是一个带有隔离的 Linux 进程,镜像则基于 Debian 或 Alpine 等发行版。
- 云和 Kubernetes。云中的虚拟机和集群节点同样运行 Linux。
- CI/CD。流水线中的构建在 Linux 运行器上执行,构建脚本通常用 bash 编写。
- 诊断。服务出故障时,人们会查看
journalctl、top、ss、df。如果不了解这些工具,就无法分析事故。
最低限度的技能包括:熟练地在文件系统中移动,理解权限,安装软件包,用 systemctl 管理服务,阅读日志,处理进程、网络和 SSH,以及编写简单的 bash 脚本。
如何开始学习 Linux
不必把 Linux 装到主力电脑上代替原来的系统。有几种安全的尝试方式:
- 虚拟机(VirtualBox、VMware)安装 Ubuntu Server,可以随意破坏,再从快照恢复。
- Windows 上的 WSL:在 Windows 终端中提供完整的 Ubuntu 环境,执行
wsl --install即可。 - 云服务器:最接近实际工作的方式,通过 SSH 连接。
- Docker 容器:
docker run -it --rm ubuntu bash几秒钟就能得到一个 shell。
建议从导航开始(pwd、ls、cd),然后学习文件和权限,接着是软件包、进程和服务。内置帮助随时可用:man ls 或 ls --help。
总结
Linux 是内核,而发行版是内核加上工具、库、包管理器和 systemd。整个系统是一棵从根目录 / 开始的目录树:配置在 /etc,日志在 /var/log,程序在 /usr。理解 Linux 是什么以及它如何启动,就为服务器、容器和云打下了基础。文件系统、启动过程和系统管理,都在 Linux 课程中结合实践讲解。
常见问题
Linux 是操作系统还是内核?
严格来说,Linux 是内核;操作系统是由发行版组成的,即内核加上 GNU 工具、库、包管理器和初始化系统。日常交流中,“Linux”通常指整个系统。
Linux 是免费的吗?
内核和大多数发行版(Ubuntu、Debian、Fedora)都以开源许可免费分发。付费的通常是技术支持订阅,例如 Red Hat Enterprise Linux。
新手应该选哪个 Linux 发行版?
学习服务器管理,Ubuntu LTS 和 Debian 比较合适:版本稳定,文档丰富。各发行版的知识可以互相迁移,主要差别在包管理器。
使用 Docker 需要了解 Linux 吗?
需要,至少要有基础知识。容器建立在 Linux 内核的机制之上,镜像内部是某个发行版,调试时使用的也是 shell 命令。
Linux 和 Unix 有什么区别?
Unix 是 1970 年代出现的一系列系统,Linux 则是独立编写的内核,沿用了 Unix 的思想和接口(遵循 POSIX 标准)。因此两者的命令和工作原理非常相似。
课程“Linux: с нуля до уверенного администрирования”结合实践详细讲解了这一主题。
- Linux: с нуля до уверенного администрирования
- Как устроена файловая система Linux: от корня до загрузки ядра