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? 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=0set timeout=5menuentry '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/sdasudo update-grub
在UEFI模式下安装GRUB
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntusudo update-grub
? 4.2 配置GRUB
编辑/etc/default/grub
文件,修改GRUB配置:
GRUB_DEFAULT=0GRUB_TIMEOUT=5GRUB_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=consoleGRUB_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/sdasudo update-grub
退出chroot环境并重启系统: exitsudo reboot
? 6. 总结
通过深入理解GRUB和EFI引导过程,可以更好地配置和调试引导程序,确保系统的稳定性和可用性。希望本文能对读者有所帮助,提升引导程序配置和调试的技能。
通过合理地使用这些工具和方法,可以大大简化引导程序的配置和调试过程,提高调试效率,确保系统的稳定性和可靠性。无论是新手还是有经验的系统管理员和开发者,都能从中受益。