Linux系统是如何启动的

-- TOC --

总算到了研究Linux系统底层机制的时候了,先总结Linux的启动流程!

第1步,上电

Power On

POST, Power On Self Test

第2步,固件

BIOS或UEFI被运行。

现在主流系统都是UEFI,这是一个很庞大的话题,这里不展开了。

第3步,bootloader

Linux系统使用的bootloader基本都是Grub。

如果是传统的BIOS固件,这一步就是加载硬盘的MBR,然后Grub开始3个阶段的加载(stage1[boot.img] --> stage1.5[core.img] --> stage2)。(参考:启动Grub的3个stage

如果是UEFI固件,加载一个固定名称的efi程序,这个程序直接加载Grub。(x64架构:/efi/boot/bootx64.efi,貌似大小写无关)

第4步,kernel和initrd

通过Grub,加载Linux kernel和initrd(init ramdisk)到内存,并开始执行。

kernel首先以内存中的initrd作为临时根文件系统,加载必要的驱动程序等,有了必要的驱动,kernel再切换到真正的物理硬盘的根。

第5步,systemd

1号进程,systemd,褒贬不一。

systemd作为系统的根进程,其它所有的进程都由它启动......一大推启动后,Linux系统就进入了用户可操作的状态了。

本文链接:https://cs.pynote.net/sf/linux/sys/202110195/

-- EOF --

-- MORE --