众所周知,EFI 引导不仅限于 GPT 分区表,MBR 还可以。
我有一个带有 msdos 分区表的旧磁盘,我想将其重新安装到 archlinux 中。
在维基中:
https://wiki.archlinux.org/index.php/GRUB#UEFI_systems
它还说GPT不是必需的。
GPT 不是绝对必需的,但强烈建议这样做,并且是本文当前支持的唯一方法。
使用MBR分区表将grub EFI引导安装到我的硬盘驱动器的方法是什么? 谢谢。
假设:
/- dev/sda1 是你的 efi 分区 /
- dev/sda2 是你的根分区(也包含/boot( 您的 linux
- 内核文件是/boot/vmlinuz-linux
- 您的 initrd 文件是/boot/initrd.img
刻录带有 amd64 架构的 ubuntu 16.04 的实时 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 恢复并正常工作