-1

众所周知,EFI引导不限于GPT分区表,MBR也可以。

我有一个带有 msdos 分区表的旧磁盘,我想将它重新安装到 archlinux 中。

在维基:

https://wiki.archlinux.org/index.php/GRUB#UEFI_systems

它还说GPT不是必需的。

GPT 不是绝对必要的,但强烈推荐它,并且是本文当前支持的唯一方法。

使用 MBR 分区表将 grub EFI 引导安装到我的硬盘驱动器的方法是什么?谢谢。

4

1 回答 1

3

假设:

  • /dev/sda1 是你的 efi 分区
  • /dev/sda2 是你的根分区(也包含 /boot)
  • 你的 linux 内核文件是 /boot/vmlinuz-linux
  • 您的 initrd 文件是 /boot/initrd.img

使用 amd64 架构刻录 ubuntu 16.04 的 live usb,在其上启动并粘贴以下命令:

sudo os-prober
efibootmgr

如果尚未安装 os-prober 或 efibootmgr,请安装:

sudo apt-get install os-prober
sudo apt-get install efibootmgr

efi模式下的grub可能没有安装,也安装一下

sudo apt-get install grub-efi-amd64-signed

然后,安装 grub:

sudo mount -t ext4 /dev/sda2 /mnt
sudo mount -t vfat /dev/sda1 /mnt/boot/efi
grub-install --target=x86_64-efi --efi-directory=/mnt/boot/efi --boot-directory=/mnt/boot --bootloader-id=grub

不要尝试使用 grub-mkconfig,它不起作用。相反,从新的 grub 引导加载程序启动,您将拥有一个 grub shell,粘贴以下命令:

set root=(hd0,2)
linux /boot/vmlinuz-linux root=/dev/sda2
initrd /boot/initrd.img
boot

之后,你应该在 linux 上,挂载你的 efi 分区(到 /boot/efi !),如果它还没有,安装 grub/os-prober/efibootmgr,然后运行这些:

sudo os-prober
grub-install --target=x86_64-efi --efi-directory=/boot/efi --boot-directory=/boot --bootloader-id=grub
grub-mkconfig -o /boot/grub/grub.cfg

重新启动,grub 又回来了并开始工作

于 2017-08-12T09:24:23.273 回答