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昵称,拉你进群,互相学习共同进步。
【Linux】使用GRUB和EFI:深入理解GRUB和EFI引导过程,配置和调试引导程序
📚 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
setdefault=0settimeout=5
menuentry 'Ubuntu'{setroot=(hd0,1)
linux /vmlinuz root=/dev/sda1 ro quiet splash
initrd /initrd.img
}
menuentry 'Windows'{setroot=(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
sudoupdate-grub
在UEFI模式下安装GRUB
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
sudoupdate-grub
🔧 4.2 配置GRUB
编辑
/etc/default/grub
文件,修改GRUB配置:
GRUB_DEFAULT=0GRUB_TIMEOUT=5GRUB_DISTRIBUTOR=`lsb_release -i-s2> /dev/null ||echo Debian`GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX=""# 启用图形终端GRUB_TERMINAL=console
应用配置更改:
sudoupdate-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"
应用配置更改:
sudoupdate-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系统分区:
sudomount /dev/sda1 /mnt # 挂载根文件系统sudomount /dev/sda2 /mnt/boot/efi # 挂载EFI系统分区
- 进入chroot环境:
sudochroot /mnt
- 安装和更新GRUB:
sudo grub-install /dev/sda
sudoupdate-grub
- 退出chroot环境并重启系统:
exitsudoreboot
📈 6. 总结
通过深入理解GRUB和EFI引导过程,可以更好地配置和调试引导程序,确保系统的稳定性和可用性。希望本文能对读者有所帮助,提升引导程序配置和调试的技能。
通过合理地使用这些工具和方法,可以大大简化引导程序的配置和调试过程,提高调试效率,确保系统的稳定性和可靠性。无论是新手还是有经验的系统管理员和开发者,都能从中受益。
版权归原作者 I'mAlex 所有, 如有侵权,请联系我们删除。