在不同的驱动器上重新安装 grub?

在不同的驱动器上重新安装 grub?

我拆掉了我的电脑并重新组装了它,之后 GRUB 就消失了。
我有两个磁盘:SSD(sdb,GPT)和HDD(sda,MBR):

  • sda1:“部分”(128MB)
  • sda2:Windows、NTFS
  • sda3:再次是windows,ntfs(安装grub和arch后添加此分区)
  • sda4:拱形Linux /

  • sdb1:Windows 的恢复(ntfs)

  • sdb2: /boot/efi (vfat)
  • sdb3:再次“部分”,16MB
  • sdb4:再次是windows(主windows分区,安装在这里)

我通常在我的SSD上启动,并且我有windows boot loader和arch_grub
现在我只有windows boot loader,但是grub的文件仍然在那里,有grubx64.efi/boot/efi/EFI/arch_grub,和,,grubenv在( 我在UEFI模式下安装了windows,我猜我安装了UEFI 模式下也是 arch,我用的是architect) grub.cfgx86_64-efi/boot

所以基本上 grub 位于/boot我的 HDD 上(并且/boot/efi位于我的 SSD 上),到目前为止一切正常。我尝试在 ubuntu live usb 上使用boot-repair,但出现错误“arch 没有grub-amd64-efi-signed安装软件包”

我想我仍然可以在 arch 上启动grub 的命令行但那我该怎么办呢?我已经拥有所有需要的文件,因此grub 安装将毫无用处

答案1

从 Linux 恢复介质/Live CD 启动,然后将 /dev/sda4 安装到 /mnt,将 /dev/sdb2 安装到 /mnt/boot。 chroot /mnt,然后运行 ​​grub-install /dev/sdb。

答案2

感谢 Raman Sailopal 和 cas 的帮助,但这不适合我的情况。
以下是要遵循的确切步骤,假设 /dev/sda4 是 linux root,/dev/sdb2 是您的 EFI 分区(位于 /boot/efi 中),并且您的 linux/initrd 文件是/boot/vmlinuz-linux&/boot/initramfs.img
刻录 ubuntu 的实时 USB (16.04 ?)使用 amd64 架构,启动它并粘贴以下命令:

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/sda4 /mnt
sudo mount -t vfat /dev/sdb2 /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,4)
linux /boot/vmlinuz-linux root=/dev/sda4
initrd /boot/initramfs.img
boot

之后,您应该在 Linux 上,安装您的 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 又回来了。

相关内容