如何从UEFI模式下通过GRUB引导BIOS分区
如何从UEFI模式下通过GRUB引导BIOS分区
嗨,这个问题我之前帮不少人踩过坑解决过——你说用chainloader只链得动UEFI系统,大概率是参数用错了方向!UEFI下的GRUB其实是可以引导MBR格式的BIOS分区系统的,核心是要让GRUB直接调用目标磁盘的MBR引导扇区,而不是去指向ESP分区里的EFI文件,具体操作可以按下面的步骤来:
临时引导(单次生效)
- 开机启动到GRUB菜单时,按
C键进入GRUB命令行模式 - 先输入
ls命令,列出当前识别到的所有磁盘和分区,比如会显示(hd0)、(hd0,gpt1)、(hd1,msdos1)这类标识,找到你要引导的BIOS系统所在的物理磁盘(比如(hd0),注意是整个磁盘,不是单个分区) - 依次输入以下命令:
划重点:set root=(hd0) chainloader +1 boot(hd0)替换成你实际的目标磁盘,+1代表该磁盘的第一个扇区(也就是MBR引导扇区),这才是BIOS系统的启动入口,而不是你之前可能指向的EFI文件。
永久添加到GRUB菜单(长期生效)
如果不想每次都手动输命令,可以把引导项加入GRUB菜单:
- 打开终端,编辑GRUB自定义配置文件:
sudo nano /etc/grub.d/40_custom - 在文件末尾添加以下内容(记得把
(hd0)换成你的目标磁盘):menuentry "BIOS模式系统" { set root=(hd0) chainloader +1 } - 保存退出后,更新GRUB配置:
- Debian/Ubuntu系发行版:
sudo update-grub - RHEL/CentOS/Fedora系发行版:
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
- Debian/Ubuntu系发行版:
额外注意事项
- 要确认目标磁盘是MBR分区表格式(BIOS系统通常用MBR);如果目标磁盘是GPT格式,那它必须有一个专门的BIOS Boot分区(大小约1MB,无盘符,类型标识为
ef02),否则GRUB无法找到BIOS引导入口。 - 如果上述方法还是不行,可以试试用GRUB的
memdisk模块加载目标分区的引导扇区镜像,但这个场景下一般用前面的方法就足够了。
备注:内容来源于stack exchange,提问作者enigmaticPhysicist




