linux如何grub引导流程
linux如何grub引导流程详细介绍
GRUB(GRand Unified Bootloader)是 Linux 系统中常用的引导加载程序,它负责在计算机启动时加载操作系统内核。下面为你详细介绍 Linux 下 GRUB 的引导流程:
1. 计算机开机
当你开启计算机电源,BIOS(基本输入输出系统)或者 UEFI(统一的可扩展固件接口)会首先启动。BIOS/UEFI 是计算机硬件和操作系统之间的桥梁,它的主要任务是进行硬件自检(POST,Power-On Self-Test),检测并初始化计算机的硬件设备,如内存、硬盘、显卡等。
2. 加载 GRUB 的第一阶段(BIOS 模式)或 GRUB EFI 加载(UEFI 模式)
- BIOS 模式:
- 硬件自检完成后,BIOS 会根据用户在 BIOS 设置中指定的启动顺序,从指定的存储设备(通常是硬盘)读取主引导记录(MBR,Master Boot Record)。MBR 位于硬盘的第一个扇区(0 磁道 0 柱面 1 扇区),大小为 512 字节。
- MBR 中包含了 GRUB 的第一阶段代码(约 446 字节)和分区表信息。GRUB 的第一阶段代码的主要作用是加载 GRUB 的第二阶段代码。
- UEFI 模式:
- UEFI 会根据启动顺序从 ESP(EFI System Partition)分区中查找并加载 GRUB 的 EFI 文件(通常是
grubx64.efi)。ESP 分区是一个 FAT32 格式的分区,专门用于存储 UEFI 启动文件。
- UEFI 会根据启动顺序从 ESP(EFI System Partition)分区中查找并加载 GRUB 的 EFI 文件(通常是
3. 加载 GRUB 的第二阶段
- BIOS 模式:
- GRUB 的第一阶段代码会从硬盘的特定位置加载 GRUB 的第二阶段代码。第二阶段代码通常存放在硬盘的
/boot/grub目录下。 - 第二阶段代码负责加载 GRUB 的配置文件
/boot/grub/grub.cfg,该配置文件包含了 GRUB 的菜单选项和操作系统内核的加载信息。
- GRUB 的第一阶段代码会从硬盘的特定位置加载 GRUB 的第二阶段代码。第二阶段代码通常存放在硬盘的
- UEFI 模式:
- 加载的
grubx64.efi文件会执行类似 BIOS 模式下第二阶段代码的功能,即加载/boot/grub/grub.cfg配置文件。
- 加载的
4. 显示 GRUB 菜单
GRUB 会根据grub.cfg文件中的配置信息显示引导菜单,菜单中通常包含多个选项,如不同版本的 Linux 内核、恢复模式、其他操作系统等。用户可以在一定时间内选择要启动的选项,如果在规定时间内没有进行选择,GRUB 会自动启动默认选项。
5. 加载操作系统内核
- 用户选择了要启动的选项后,GRUB 会根据
grub.cfg文件中的配置信息,从指定的位置加载操作系统内核文件(通常是vmlinuz)和初始 RAM 磁盘(initrd.img)。 - 初始 RAM 磁盘是一个临时的根文件系统,它包含了启动过程中所需的驱动程序和工具。
6. 传递控制权给操作系统内核
- 当操作系统内核和初始 RAM 磁盘加载完成后,GRUB 会将控制权传递给操作系统内核。
- 操作系统内核开始初始化,挂载根文件系统,启动各种系统服务和进程,最终进入用户登录界面。
总结
GRUB 的引导流程可以概括为:计算机开机 -> 硬件自检 -> 加载 GRUB 的第一阶段(BIOS 模式)或 GRUB EFI 加载(UEFI 模式) -> 加载 GRUB 的第二阶段 -> 显示 GRUB 菜单 -> 加载操作系统内核 -> 传递控制权给操作系统内核。这个过程确保了计算机能够正确地加载并启动 Linux 操作系统。