我拆掉了我的电脑并重新组装了它,之后 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.cfg
x86_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 又回来了。