Linux启动过程详解:容易忽略的核心知识
Linux启动过程详解:容易忽略的核心知识
上图是Linux启动过程的基本步骤。理解这个过程,有助于系统管理人员排查问题。下面将详细展开讲解
1 开机自检(BIOS/UEFI)
当你按下开机按钮时,计算机的硬件并不会立刻开始运行操作系统,而是先进行一系列的自我检查。这一阶段由 BIOS(基本输入输出系统) 或 UEFI(统一扩展固件接口) 负责。
-
自检(POST):启动时,BIOS/UEFI 会对硬件进行初步检查,确保硬件设备如 CPU、内存、硬盘等能够正常工作。 -
启动设备选择:完成硬件自检后,BIOS/UEFI 会查找引导设备(如硬盘、U盘、光盘等)。它会根据预设的顺序选择一个设备,查找上面是否有操作系统。
这时,计算机会找到存储在硬盘上的启动引导程序,并将控制权交给它。
2 引导加载程序(Bootloader)
引导加载程序是 Linux 启动流程中的关键部分。最常见的引导程序是 GRUB
。它负责加载操作系统的内核,并将控制权交给内核。具体过程如下:
-
加载内核:GRUB 会从硬盘上的 /boot 分区加载 Linux 内核(通常是 vmlinuz 文件),并将其载入内存。 -
加载初始内存盘(initramfs):除了内核映像,GRUB 还会加载 initramfs,这是一个包含启动时所需的最小操作环境的压缩文件系统。initramfs 包含了必要的驱动程序和工具,能帮助系统在启动阶段挂载根文件系统。
3 内核初始化
内核是操作系统的核心部分,它承担着管理硬件、执行程序和提供服务等任务。内核被加载到内存后,开始进行一系列初始化操作:
-
硬件初始化:内核会识别并初始化计算机的硬件组件,包括 CPU、内存、硬盘、显示器、网络适配器等。内核会通过加载合适的驱动程序来与这些硬件进行交互。 -
挂载临时根文件系统:内核会使用 initramfs 作为临时根文件系统,挂载到 / 目录,这时,根文件系统中的程序和文件还没有完全加载。
当内核初始化完成后,它会启动第一个用户空间进程,这个进程通常是 init,它负责启动系统的其他部分。
4 启动第一个进程(init/systemd)
内核启动后,它会创建一个进程号为 1 的进程,这个进程通常是 init(在现代 Linux 系统中,init 通常是由 systemd 取代的)。init 是 Linux 系统中的第一个用户空间进程,它是所有其他用户空间进程的祖先,负责整个系统的初始化和管理。
-
挂载根文件系统:init 进程会确保最终的根文件系统(硬盘上的实际文件系统)被正确挂载。如果 initramfs 被使用,它会将根文件系统切换到实际的磁盘分区。
5 启动系统服务
系统进入用户空间后,Linux 会启动多个重要的系统服务和守护进程。这些服务包括:
-
网络服务:配置网络接口,分配 IP 地址,启动 DNS 等服务,确保系统可以访问网络。 -
系统日志:启动日志服务(如 rsyslog),收集并保存系统日志,方便后续查看。 -
SSH 服务:如果系统允许远程访问,sshd 服务会被启动,允许用户通过 SSH 登录到系统。 -
定时任务:启动定时任务管理器(如 cron),执行预定的自动化任务。
这些系统服务通常通过配置文件(在 systemd 中是单元文件)来管理,可以按需启用或禁用。
6 用户登录界面
所有的系统服务启动完毕后,系统会进入可供用户交互的阶段。如果系统配置了图形界面,登录界面就会弹出;如果是命令行模式,系统会显示终端提示符等待用户登录。
-
图形界面登录:如果系统使用桌面环境(,登录管理器(如 GDM、LightDM)会显示图形界面,用户可以输入用户名和密码进行登录。 -
命令行界面登录:如果系统没有图形界面(如一些服务器版的 Linux),则会显示一个命令行终端,用户可以通过终端输入用户名和密码进行登录。
这就是 Linux 从开机到完成启动的基本流程。不同的 Linux 发行版和配置可能在某些细节上有所不同,但大体流程基本一致。
阅读剩余
版权声明:
作者:SE_Zhang
链接:https://www.cnesa.cn/3080.html
文章版权归作者所有,未经允许请勿转载。
THE END