Arch-Linux

在不同的驅動器上重新安裝 grub?

  • August 2, 2017

在 GRUB 消失之後,我拆除了我的電腦並重新組裝了它。

我有兩個磁碟:一個 SSD(sdb、GPT)和一個 HDD(sda、MBR):

  • sda1:“部分”(128MB)
  • sda2:windows,ntfs
  • sda3: windows again, 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_grubgrubenv,,在(我以UEFI模式安裝了windows grub.cfg, 我想我安裝了在 UEFI 模式下也使用 arch,我使用了架構師) x86_64-efi``/boot

所以基本上 grub/boot在我的 HDD 上(並且/boot/efi在我的 SSD 上),到目前為止一切正常。我嘗試boot-repair在 ubuntu live usb 上使用,但出現錯誤“arch 沒有grub-amd64-efi-signed安裝包”

我想我仍然可以使用grub 的命令行在arch 上啟動,但我該怎麼辦?我已經擁有了所有需要的文件,因此grub-install將無用

感謝 Raman Sailopal 和 cas 的幫助,但它不適合我的情況。

以下是要遵循的確切步驟,假設 /dev/sda4 是 linux root,/dev/sdb2 是您的 EFI 分區(位於 /boot/efi),並且您的 linux/initrd 文件是/boot/vmlinuz-linux& /boot/initramfs.img

Burn a live usb of ubuntu (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 又回來了。

從 Linux 恢復媒體/live CD 啟動,然後將 /dev/sda4 掛載到 /mnt,將 /dev/sdb2 掛載到 /mnt/boot。chroot /mnt 然後執行 grub-install /dev/sdb。

引用自:https://unix.stackexchange.com/questions/382372