Linux系统引导过程

Linux系统引导过程

理解引导过程可以帮助你解决引导系统时遇到的问题。引导过程涉及一些文件,这些文件中的错误通常造成了引导问题。引导过程和配置是不同的,这取决于你的硬件是使用UEFI固件还是传统的BIOS去处理系统引导。

该文章描述的操作系统为Oracle Linux 8。

UEFI引导

在一个基于UEFI的系统中,系统引导过程按如下顺序执行:

  1. 系统的UEFI固件执行开机自检(POST),然后定位和初始化外围设备,包括硬盘。

  2. UEFI查找一个带有特定的全局唯一标识符(GUID)的GPT分区,标识符标识该分区为EFI系统分区(ESP),它包含了EFI应用程序例如引导加载程序。如果存在多个引导设备,UEFI引导管理器将使用一个合适的ESP,这取决于它们在引导管理器中定义的顺序。如果你不想使用默认的顺序,通过efibootmgr工具,你可以定义不同的顺序。

  3. UEFI引导管理器确定Secure Boot是否被启用。如果Secure Boot没有被启用,引导管理器将运行在ESP中的GRUB 2引导加载程序。

    否则,引导管理器从引导加载程序请求一个证书然后验证这个通过对比存储在UEFI Secure Boot key database中的键。为了处理证书验证过程,环境被配置为执行两阶段的引导过程,并在加载GRUB 2引导加载程序之前先加载负责认证的shim.efi应用程序。如果证书有效,那么引导加载程序将运行,并依次验证被配置为加载的内核。

  4. 引导加载程序加载vmlinuz内核镜像文件到内存,然后提取initramfs镜像文件的内容到一个临时的,基于内存的文件系统(tmpfs)。

  5. 内核从initramfs文件系统加载访问根文件系统所需的驱动模块。

  6. 内核启动systemd进程,进程ID为1(PID 1)。

  7. systemd运行为它定义的其他进程。

注意

通过定义你自己的systemd单元,指定在引导过程中要处理的任何其他操作。与使用/etc/rc.local文件相比,该方法是首选方法。

BIOS引导

在一个基于BIOS的系统中,系统引导过程如下:

  1. 系统的BIOS执行开机自检(POST),然后定位和初始化所有外围设备,包括硬盘。
  2. BIOS从引导设备读取主引导记录(MBR)到内存。MBR存储有关该设备上分区组织的信息,即分区表,以及用于错误检测的引导签名。另外,MBR包含指向引导加载程序(GRUB 2)的指针。引导程序自身可在同一设备上,也可以在另一个设备上。
  3. 引导加载程序加载vmlinuz内核镜像文件到内存,然后提取initramfs镜像文件的内容到一个临时的,基于内存的文件系统(tmpfs)。
  4. 内核从initramfs文件系统加载访问根文件系统所需的驱动模块。
  5. 内核启动systemd进程,进程ID为1(PID 1)。
  6. systemd运行为它定义的其他进程。

注意

通过定义你自己的systemd单元,指定在引导过程中要处理的任何其他操作。与使用/etc/rc.local文件相比,该方法是首选方法。

参考

https://docs.oracle.com/en/operating-systems/oracle-linux/8/osmanage/ol-bootconf.html

相关推荐
©️2020 CSDN 皮肤主题: 精致技术 设计师:CSDN官方博客 返回首页