Linux最小化系统的启动过程可以分为以下步骤:
- BIOS/UEFI阶段:当计算机打开电源后,BIOS(基本输入输出系统)开始进行硬件自检,确保所有硬件设备都能正常工作。BIOS程序首先检查计算机硬件能否满足运行的基本条件,这叫做“硬件自检”(Power-On Self-Test),缩写为POST。硬件自检完成后,BIOS把控制权转交给下一阶段的启动程序。
- Bootloader阶段:BIOS按照“启动顺序”,把控制权转交给排在第一位的储存设备。这时,计算机读取该设备的第一个扇区,也就是读取最前面的512个字节。如果这512个字节的最后两个字节是0x55和0xAA,表明这个设备可以用于启动; 如果不是,表明设备不能用于启动,控制权于是被转交给“启动顺序”中的下一个设备。这最前面的512个字节,就叫做“主引导记录”(Master boot record,缩写为MBR)。在Linux系统中,通常使用GRUB(GRand Unified Bootloader)作为Bootloader。GRUB负责加载Linux内核到内存中。
- 内核加载:GRUB加载内核到内存中,然后CPU开始执行内核代码,初始化硬件设备。内核在initrd文件系统内执行init脚本,这将加载硬件驱动程序并挂载根分区。
- 系统初始化:内核加载完成后,启动init进程,这是Linux系统的第一个用户空间进程,负责启动和管理其他进程。init进程读取 /etc/inittab 文件,确定运行级别,并执行相应的初始化脚本,如 /etc/rc.sysinit 。
- 建立终端和用户登录:系统初始化完成后,init进程会打开6个终端(tty1到tty6),等待用户登录。用户可以通过命令行登录、SSH登录或图形界面登录。登录成功后,用户即可开始使用系统。
- 系统关机:系统关机时,会执行一系列清理操作,如同步内存到硬盘、关闭所有服务等,然后关闭电源或重启。
请注意,具体的启动过程可能会因不同的Linux发行版和版本而有所差异。