基础

Linux 是什么:内核、发行版和文件系统通俗讲解

更新于: · Skillaria.Top

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。内核加上这套经过组装和测试的工具,就叫作发行版。

发行版之间的主要区别在于包管理器、更新策略以及目标用户群。

系列示例软件包常见场景
DebianDebian、Ubuntu、Linux Mint.deb、apt服务器、云主机、工作站
Red HatRHEL、Fedora、Rocky Linux、AlmaLinux.rpm、dnf企业服务器
AlpineAlpine Linuxapk体积要求小的 Docker 镜像
ArchArch Linux、Manjaropacman爱好者、需要较新软件包的用户

可以从 /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 如何启动:从通电到登录提示符

了解启动过程,有助于排查服务器重启后“起不来”的问题。简化的流程如下:

  1. 固件(UEFI 或 BIOS)检查硬件,并找到引导程序。
  2. GRUB 引导程序显示菜单,并从 /boot 把内核和 initramfs 加载到内存。
  3. 内核初始化硬件,并借助 initramfs 找到并挂载根文件系统。
  4. systemd 以 PID 1 运行,并按顺序启动服务:网络、日志、SSH、cron 以及其他服务。
  5. 登录提示符出现在控制台上,或可以通过 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: с нуля до уверенного администрирования”结合实践详细讲解了这一主题。

前往课程