GRUB菜单的配置文件和相关文件分布在多个位置,部分内容确实存储在EFI分区中(尤其是在UEFI启动模式下),但主要配置和核心文件位于其他目录。以下是详细说明:
1. GRUB的核心文件位置
UEFI模式(EFI分区)
- 路径:
/boot/efi/EFI/ubuntu/
(EFI分区通常挂载在/boot/efi
,包含以下关键文件):grubx64.efi
:GRUB的UEFI可执行文件,由固件(BIOS/UEFI)直接加载。shimx64.efi
:安全启动(Secure Boot)所需的签名加载器。grub.cfg
:简化的引导配置(可能只是一个链接或基础配置,指向主配置文件)。
传统BIOS模式(无EFI分区)
- 路径:
/boot/grub/
- 核心文件(如
stage1
、stage2
)直接写入磁盘的引导扇区(MBR)。
- 核心文件(如
2. 主配置文件生成位置
实际配置文件:
/boot/grub/grub.cfg
- 这是GRUB菜单的完整配置文件,包含所有启动条目和参数。
- 注意:此文件是自动生成的,不要直接编辑!修改后会被覆盖。
用户自定义配置:
/etc/default/grub
- 用户通过编辑此文件来自定义GRUB行为(如超时时间、默认启动项)。
- 修改后需运行
sudo update-grub
生成新的grub.cfg
。
脚本目录:
/etc/grub.d/
- 包含生成
grub.cfg
的脚本(如10_linux
、30_os-prober
等),用于检测系统内核和其他操作系统。
- 包含生成
3. EFI分区的作用
- UEFI启动必需:EFI分区(FAT32格式,通常100MB~500MB)存储:
- 引导加载器(如
grubx64.efi
)。 - 其他操作系统的EFI文件(如Windows的
bootmgfw.efi
)。
- 引导加载器(如
- 与
/boot/grub/
的关系:
UEFI模式下,GRUB会从EFI分区加载初始文件,然后跳转到/boot/grub/grub.cfg
读取完整配置。
4. 如何查看和修改?
查看EFI分区内容
# 确认EFI分区挂载点(通常为/boot/efi)
mount | grep efi
# 查看EFI分区中的GRUB文件
ls /boot/efi/EFI/ubuntu/
手动修复EFI分区中的GRUB
如果EFI分区损坏,需重新安装GRUB到EFI分区(假设磁盘为sda
):
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
sudo update-grub
5. 关键区别:UEFI vs BIOS
项目 | UEFI模式 | 传统BIOS模式 |
---|---|---|
GRUB位置 | EFI分区 (/boot/efi/EFI/ubuntu/ ) |
磁盘MBR + /boot/grub/ |
配置文件 | /boot/grub/grub.cfg |
/boot/grub/grub.cfg |
安装命令 | grub-install --target=x86_64-efi |
grub-install --target=i386-pc |
6. 注意事项
- 不要删除EFI分区:否则会导致系统无法启动!
- 双系统问题:Windows更新可能覆盖EFI分区中的GRUB,需用Live USB修复(参考Ubuntu官方指南)。
- 安全启动:若启用Secure Boot,需确保EFI分区中的
shimx64.efi
和grubx64.efi
已正确签名。
总结:GRUB菜单的完整配置在/boot/grub/grub.cfg
,而UEFI启动所需的引导文件在EFI分区中。两者协同工作,确保系统正常启动。