GRUB(GRand Unified Bootloader)和EFI(Extensible Firmware Interface)是现代计算机系统中常用的引导程序。GRUB是一个多功能的引导程序,支持多种操作系统。EFI是一个标准的固件接口,用于在操作系统和平台固件之间提供交互。本文将深入探讨GRUB和EFI的引导过程,并介绍如何配置和调试引导程序。

【Linux】使用GRUB和EFI:深入理解GRUB和EFI引导过程,配置和调试引导程序
📚 1. 基本概念
🧩 1.1 什么是GRUB
🔧 1.2 什么是EFI
🛠️ 2. GRUB引导过程
📝 2.1 GRUB引导阶段
🔍 2.2 GRUB配置文件
示例grub.cfg
🌐 3. EFI引导过程
📝 3.1 EFI引导阶段
🔍 3.2 EFI系统分区
示例ESP结构
🧠 4. 安装和配置GRUB
📝 4.1 安装GRUB
在BIOS模式下安装GRUB
在UEFI模式下安装GRUB
🔧 4.2 配置GRUB
🌐 5. 调试GRUB
📝 5.1 启用GRUB调试
🔧 5.2 进入GRUB命令行
常用GRUB命令
📝 5.3 修复GRUB
使用chroot修复GRUB
📈 6. 总结

📚 1. 基本概念
🧩 1.1 什么是GRUB
GRUB是一个强大的引导加载程序,广泛用于Linux系统。它支持多种文件系统和操作系统,可以在启动时显示一个菜单,让用户选择要启动的操作系统。

🔧 1.2 什么是EFI
EFI是一个标准的固件接口,取代了传统的BIOS。UEFI(Unified Extensible Firmware Interface)是EFI的改进版本,广泛应用于现代计算机系统。UEFI提供了更好的硬件初始化和引导能力,支持更大的硬盘和更复杂的系统配置。

🛠️ 2. GRUB引导过程
📝 2.1 GRUB引导阶段
GRUB引导过程分为以下几个阶段:

Stage 1:GRUB的第一阶段引导程序通常位于MBR(Master Boot Record)或EFI系统分区中,负责加载Stage 1.5或Stage 2。
Stage 1.5(可选):位于MBR之后的空闲扇区中,负责加载文件系统支持模块。
Stage 2:位于文件系统中,负责加载GRUB配置文件和操作系统内核。
🔍 2.2 GRUB配置文件
GRUB的主要配置文件是/boot/grub/grub.cfg。这个文件通常由grub-mkconfig命令自动生成,但也可以手动编辑。

示例grub.cfg

set default=0
set timeout=5

menuentry 'Ubuntu' {
    set root=(hd0,1)
    linux /vmlinuz root=/dev/sda1 ro quiet splash
    initrd /initrd.img
}

menuentry 'Windows' {
    set root=(hd0,2)
    chainloader +1
}

🌐 3. EFI引导过程
📝 3.1 EFI引导阶段
EFI引导过程分为以下几个阶段:

Pre-EFI Initialization(PEI):固件初始化基本硬件和内存。
Driver Execution Environment(DXE):加载和执行EFI驱动程序。
Boot Device Selection(BDS):选择引导设备并加载引导程序。
Transitional Boot Loader(TBL):执行引导程序(如GRUB)。
🔍 3.2 EFI系统分区
EFI系统分区(ESP)是一个特殊的分区,存储EFI引导程序和应用程序。通常格式化为FAT32文件系统。

示例ESP结构

/boot/efi/
├── EFI/
│   ├── BOOT/
│   │   └── BOOTX64.EFI
│   └── ubuntu/
│       └── grubx64.efi

🧠 4. 安装和配置GRUB
📝 4.1 安装GRUB
在BIOS模式下安装GRUB

sudo grub-install /dev/sda
sudo update-grub

在UEFI模式下安装GRUB

sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
sudo update-grub

🔧 4.2 配置GRUB
编辑/etc/default/grub文件,修改GRUB配置:

GRUB_DEFAULT=0
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# 启用图形终端
GRUB_TERMINAL=console

应用配置更改:

sudo update-grub

🌐 5. 调试GRUB
📝 5.1 启用GRUB调试
编辑/etc/default/grub文件,启用GRUB调试:

GRUB_TERMINAL=console
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

# 启用GRUB调试信息
GRUB_DEBUG="all"

应用配置更改:

sudo update-grub

🔧 5.2 进入GRUB命令行
在启动时按下Esc键或Shift键进入GRUB菜单,然后按下c键进入GRUB命令行模式。在命令行模式下,可以使用GRUB命令进行调试和引导操作系统。

常用GRUB命令

ls:列出设备和分区。
set:查看和设置GRUB环境变量。
linux:加载Linux内核。
initrd:加载initrd镜像。
boot:启动操作系统。

📝 5.3 修复GRUB
如果GRUB损坏,无法引导系统,可以使用Live CD或USB进行修复。

使用chroot修复GRUB
启动Live CD或USB,打开终端。
挂载根文件系统和EFI系统分区:

sudo mount /dev/sda1 /mnt  # 挂载根文件系统
sudo mount /dev/sda2 /mnt/boot/efi  # 挂载EFI系统分区

进入chroot环境:

sudo chroot /mnt

安装和更新GRUB:

sudo grub-install /dev/sda
sudo update-grub

退出chroot环境并重启系统:

exit
sudo reboot

📈 6. 总结
通过深入理解GRUB和EFI引导过程,可以更好地配置和调试引导程序,确保系统的稳定性和可用性。希望本文能对读者有所帮助,提升引导程序配置和调试的技能。

通过合理地使用这些工具和方法,可以大大简化引导程序的配置和调试过程,提高调试效率,确保系统的稳定性和可靠性。无论是新手还是有经验的系统管理员和开发者,都能从中受益。
https://blog.csdn.net/g310773517/article/details/142148935

文档更新时间: 2025-07-08 23:36   作者:月影鹏鹏
IT运维支持-AIWALY-月影工作室