欢迎光临散文网 会员登陆 & 注册

GNU/Linux系统是如何启动的?

2023-05-06 00:03 作者:初代目葱娘  | 我要投稿

GNU/Linux操作系统启动流程


第一步 固件引导

固件BIOS(Legacy)UEFI,为刷写在电脑EEPROM里的小系统,负责硬件识别、自检(POST)和初始化

初始化完成后会把控制权交给中间引导程序进入中间引导阶段


第二步 中间引导

加载内核镜像vmlinuxz以及initramfs到内存,为内核启动做准备

中间引导程序将"指挥权"交给Linux内核进入内核启动阶段


以GRUB2+UEFI为例:

1.准备EFI分区,将GRUB2有关的文件安装在分区中

2.在grub.cfg中配置vmlinuxz和initramfs引导系统加载内核

*良好的UEFI实现(EFISTUB)可替代GRUB2直接引导Linux内核


第三步 内核启动

若系统有initramfs,内核调用initramfs中的init程序进入下一阶段init

若系统无initramfs,内核直接挂载根文件系统并执行init程序进入下一阶段init


*vmlinuz:为压缩过的系统内核文件

*initramfs:临时根文件系统(rootfs),为CPIO格式档案,内核自带CPIO有关的解压代码

*initramfs功能和存在的意义:用于辅助挂载rootfs,因磁盘驱动在磁盘中而直接挂载磁盘需要磁盘驱动,所以这里引入一个临时rootfs用于挂载磁盘所需的驱动/引导加密磁盘/网络引导/其他需要额外模块的引导流程


第四步 init

为Linux系统中第一个由内核启动的用户级进程,缺少该进程系统会无法启动

早期版本Linux的init程序是sysvinit,现在主流的init程序是systemd

systemd启动后会根据配置文件启动journald networkd resolved timesyncd等一系列的系统级服务和其他用户级服务


GNU/Linux系统是如何启动的?的评论 (共 条)

分享到微博请遵守国家法律