因此,基本上我想要一个 USB 驱动器上的便携式引导加载程序,可用于引导我已预先配置为使用此 grub 安装的任何计算机/发行版。我正在 ubuntu 上进行测试以弄清来龙去脉,因为我有两个单独的 ubuntu 安装,分别带有 bios 和 efi 安装。
我正在尝试使用其他人开发的技术自己完成这项工作。这是 gdisk 读取的我的分区表。
Number Start (sector) End (sector) Size Code Name
1 10240 624639 300.0 MiB EF00 EFI System
2 624640 626687 1024.0 KiB EF02 BIOS boot partition
3 626688 9015295 4.0 GiB 8300 Linux filesystem
该表是gpt/protected mbr,efi分区是fat32,安装grub的第3个分区是ext4。
我用来安装 grub 的命令是
sudo grub-install --efi-directory=/mnt/efi --boot-directory=/mnt --removable
我到目前为止只进行了 efi 安装的原因是我在几个不同的地方读到 grub efi 可以支持具有此分区配置的 bios 系统。
鉴于上述情况,我的问题与我遇到的一个奇怪问题有关。当我尝试在基于 BIOS 的系统上测试驱动器时,如果安装了驱动器,BIOS 将不会发布。如果我将驱动器放在任何其他端口,也会出现同样的问题。如果我使用 dd 删除分区表,BIOS 会成功发布。如果我在未安装 grub 的情况下重新创建分区表,问题会再次出现。
我不知道这个特定的分区表结构是怎么回事。有人知道这里发生了什么吗?
仅供参考:此问题在我的 efi/uefi 系统中不存在。
答案1
因此我花了大约一个小时测试我能想到的所有方法,似乎解决了这个问题。
当我尝试在基于 BIOS 的系统上测试驱动器时,如果驱动器已安装,BIOS 将不会发布。
- 如果我将驱动器放在任何其他端口,仍会出现同样的问题。
- 如果我使用 dd 清除分区表,则 BIOS 将成功发布。
- 如果我重新创建分区表而不安装 grub,问题就会再次出现。
- 如果我在任何 uefi 系统上使用此驱动器,则不存在此问题。
- 如果我删除第一个分区的异常偏移,问题仍然存在。
- 如果我将 efi 分区移到 bios_grub 和主 grub 分区后面,问题仍然存在。
- 如果我将整个驱动器设为具有 efi 属性标志的单个分区,问题仍然存在。
- 如果我将整个驱动器设为具有 BIOS_grub 属性标志的单个分区,问题仍然存在。
- 如果我使用没有任何标志的单个空白分区测试驱动器,问题仍然存在。
- 如果我对来自不同制造商的另外 2 个驱动器进行之前的任何测试,问题仍然存在。
- 如果我通过将启动分区从 gpt 转换为混合 mbr 来创建混合 mbr,则问题得以解决。
在 Google 上搜索混合 mbr 的问题作为搜索条件。我找到了这篇文章,其中有人做了我尝试做的事情。 https://www.slivermetal.org/2016/09/18/how-to-create-an-hybrid-uefi-gpt-bios-gptmbr-boot-usb-disk/
我希望这可以帮助其他尝试使用引导加载程序做一些奇怪的事情的人。