【Linux】使用GRUB和EFI:深入理解GRUB和EFI引导过程,配置和调试引导程序

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


🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:gylzbk

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

在这里插入图片描述

📚 1. 基本概念

🧩 1.1 什么是GRUB

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

🔧 1.2 什么是EFI

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

🛠️ 2. GRUB引导过程

📝 2.1 GRUB引导阶段

GRUB引导过程分为以下几个阶段:

  1. Stage 1:GRUB的第一阶段引导程序通常位于MBR(Master Boot Record)或EFI系统分区中,负责加载Stage 1.5或Stage 2。
  2. Stage 1.5(可选):位于MBR之后的空闲扇区中,负责加载文件系统支持模块。
  3. 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引导过程分为以下几个阶段:

  1. Pre-EFI Initialization(PEI):固件初始化基本硬件和内存。
  2. Driver Execution Environment(DXE):加载和执行EFI驱动程序。
  3. Boot Device Selection(BDS):选择引导设备并加载引导程序。
  4. 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

  1. 启动Live CD或USB,打开终端。
  2. 挂载根文件系统和EFI系统分区:
sudo mount /dev/sda1 /mnt  # 挂载根文件系统
sudo mount /dev/sda2 /mnt/boot/efi  # 挂载EFI系统分区
  1. 进入chroot环境:
sudo chroot /mnt
  1. 安装和更新GRUB:
sudo grub-install /dev/sda
sudo update-grub
  1. 退出chroot环境并重启系统:
exit
sudo reboot

📈 6. 总结

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I'mAlex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值