安装 EndeavourOS 后 grub 无法工作(通过实时 USB)

安装 EndeavourOS 后 grub 无法工作(通过实时 USB)

我按照 /dev/sda 分区上的指南通过 live USB 安装了 EndeavourOS(基于 arch linux),我曾经在该分区上安装过 Ubuntu,运行得很好。我还有一个单独的硬盘,我的 /dev/sdb 分区,安装了 Windows 10。每次我打开电脑时,我都会进入 grub shell,但无法正常启动到这两个操作系统。

这是 grub shell 的输出:

grub>ls
grub>(hd0) (hd1) ... (hd1,gpt2) (hd2,gpt2) (hd1,msdos1)...

我需要的分区是 (hd1,gpt2) 所以我这样做:

grub>set root (hd1,gpt2)
grub>linux /boot/vmlinuz-linux root=/dev/sda2
grub>initrd /boot/initramfs_linux.image
grub> boot

它可以正常启动进入 EndeavourOS。然后我尝试修复我的 grub 安装:

$ sudo grub-mkconfig -o /boot/grub/grub.cfg
$ sudo grub-install /dev/sda

然后我得到这个错误:

Installing for x86_64-efi platform.
grub-install: error: cannot find EFI directory.

我尝试指定EFI分区如下回答:

$ sudo mount /dev/sda1 /mnt
$ sudo grub-install --efi-directory=/mnt/EFI

但我得到:

Installing for x86_64-efi platform.
grub-install: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-install: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-install: warning: disk does not exist, so falling back to partition device /dev/sda1.
grub-install: error: disk `hostdisk//dev/sda1' not found.

我检查了/mnt/EFI目录:

$ls /mnt/EFI/
drwxr-xr-x 2 root root 4096 21 apr  2019 BOOT
drwxr-xr-x 3 root root 4096 24 mar 15.22 ubuntu

所以我想也许 USB Live 安装没有正确格式化分区...有没有办法解决这个问题,而不是格式化所有内容并从头开始?提前致谢。

编辑:我尝试按照建议将 /mnt 称为 efi 目录:

$ sudo grub-install --efi-directory=/mnt

并得到这个错误:

Installing for x86_64-efi platform.
Could not prepare Boot variable: No space left on device
grub-install: error: efibootmgr failed to register the boot entry: Input/output error.

现在我的 /mnt/EFI 文件夹如下所示:

$ ls /mnt/EFI
BOOT  endeavouros  ubuntu
$ ls /mnt/EFI/endeavouros
grubx64.efi
$ ls /mnt/EFI/ubuntu
BOOTX64.CSV  fw  grub.cfg  grubx64.efi  mmx64.efi  shimx64.efi

我应该删除 ubuntu 文件夹吗?

我还运行 efibootmgr 得到了大量结果:

BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,000C,001A,0012,0007,0009,0011,0013,0014,0015,0017,0018,0019,0001,0002,0003
Boot0000* ubuntu
Boot0001* UEFI:CD/DVD Drive
Boot0002* UEFI:Removable Device
Boot0003* UEFI:Network Device
Boot0007  UEFI OS
Boot0009  CD/DVD Drive 
Boot000C* UEFI OS
Boot0011  UEFI OS
Boot0012* Unknown Device
Boot0013  ubuntu
Boot0014  ubuntu
Boot0015  UEFI OS
Boot0017  ubuntu
Boot0018  UEFI OS
Boot0019  ubuntu
Boot001A* UEFI OS

已解决:我按照指导在 wiki 上,在 UEFI 中启动实时系统(否则将无法工作)。

答案1

efi目录错误,应该设置为分区挂载的路径。也sudo用于grub-install

sudo mount /dev/sda1 /mnt
sudo grub-install --efi-directory=/mnt

编辑:

看起来您的 efivars(EEPROM 位置,而不是分区/dev/sda1)已满,您需要清理。

运行efibootmgr -v并删除过时的条目,即如果有旧的 Ubuntu 条目,例如

Boot0014* ubuntu    HD(1,GPT,...)/File(\EFI\ubuntu\shimx64.efi)

那么你可以删除它

sudo efibootmgr -b 0014 -B

同时删除dump-*中的文件/sys/firmware/efi/efivars,请参阅这个答案:Grub安装失败

是的,您也可以删除该/mnt/EFI/ubuntu目录,但我不认为这是错误的原因,因为endeavouros/grubx64.efi已成功写入。

然后尝试

sudo grub-install --efi-directory=/mnt

再次。

相关内容