Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

kernel version: 5.18(4b0986a3613c)

本文中的大部分代码段都有代码删除

系统启动过程的最后一个阶段:挂载根文件系统、执行根文件系统中的init程序完成到用户空间的切换。然而根文件系统可能是在不同的硬件设备上,如SCSI硬盘、SATA硬盘、Flash设备等,后续会出现更多的硬件设备;根文件系统可以是xfs、ext4、NFS等不同的文件系统;为了成功挂载根文件系统,内核需要具备相应的设备驱动、文件系统驱动,如果为了兼容所有的根文件系统,将所有相关驱动编译进内核,会增大内核大小,并在实际环境中引入一些无用的驱动。

boot

无论是Linux还是其他操作系统,开机启动最开始的流程由BIOS完成。当电脑上电后,BIOS首先会初始化BIOS内部状态、外部接口、检测并setup硬件。这个最开始的阶段称为开机自检(POST, Power On Self Test)。随后BIOS进入启动阶段,会检查启动介质,找到bootloader,将其加载至内存并跳转至bootloader执行。
本文以SeaBIOS为例,介绍x86架构下BIOS在启动流程所做的工作。SeaBIOS是16bit x86 BIOS的开源实现,也是qemu和kvm默认的BIOS。

boot