Hello! 欢迎来到小浪云!


分析Linux系统的启动过程


分析Linux系统的启动过程

详解Linux系统启动过程:从BIOS自检到登录界面

Linux系统的启动过程可概括为:BIOS自检 → 引导加载程序(GRUB/LILO) → 内核加载 → init进程启动 → 系统初始化 → 登录界面。 下面将对各个阶段进行详细阐述:

一、BIOS自检 (POST)

计算机启动后,BIOS首先进行POST (Power-On Self-Test) 自检,检测硬件。此后,BIOS根据CMOS设置的引导顺序,从硬盘、软盘或光驱等设备读取引导扇区。Linux系统通常从硬盘的MBR (Master Boot Record) 开始引导,MBR位于磁盘的第一个扇区(0柱面0磁头1扇区)。BIOS将控制权交给MBR中的引导加载程序。 要查看MBR内容,可以使用以下命令(需root权限):

dd if=/dev/sda of=mbr.bin bs=512 count=1 od -xa mbr.bin

(/dev/sda替换为你的引导磁盘)

二、引导加载程序 (GRUB/LILO)

GRUB和LILO是常见的引导加载程序,负责加载操作系统内核。GRUB拥有交互式命令界面,支持网络引导,其配置文件错误不会导致系统无法启动;而LILO则相反。 两者都读取MBR中的引导信息,但GRUB更灵活,能支持多个操作系统。

三、内核加载

引导加载程序加载内核映像(zImage或bzImage)到内存。内核映像是压缩的,加载后会进行解压,并放入高端内存。如有初始RAM磁盘映像,也会被加载。 内核加载完成后,开始内核引导过程。

四、init进程启动

内核引导完成后,启动init进程 (PID为1)。init进程是所有其他进程的祖先,负责系统初始化和运行级别管理。它扮演终结父进程的角色,并根据/etc/inittab (或systemd)文件执行相应的脚本,进行系统初始化工作,例如设置键盘、字体、加载模块、配置网络等。

五、系统初始化与登录

init进程根据/etc/inittab (或systemd)文件执行一系列初始化脚本,例如/etc/rc.d/rc.sysinit,完成系统初始化。 初始化完成后,系统进入登录界面,等待用户登录。

通过以上步骤,Linux系统完成启动过程,进入可操作状态。 需要注意的是,现代Linux系统普遍使用systemd代替传统的init系统,其启动流程更为复杂,但基本原理与上述过程类似。

相关阅读