[已解决]UEFI win10和manjaro双系统,重装win10后怎么恢复grub引导?

分区是gpt,启动方式是纯UEFI的,重装win10后没有了grub的启动菜单,直接进win10了,我就用U盘刻录了一个livecd,进去照着搜索到的几个方法试了下都不行。
我挂载了esp分区,看了里面的文件,和之前有grub启动菜单是一致的,这要如何操作才能恢复原来的多系统启动菜单?

Bios里选…

确实,在主板界面选,因为每次Windows安装是会覆盖你当初grub安装添加的项目的。

如果被覆盖的话,应该就没有了,还能从bios里选到?

进 live 系统后重新 grub-install 呗。

看过了,重装win10后已经没有了,bios里面uefi的bbs顺序里面只有Windows的。

看过了,重装win10后已经没有了,bios里面uefi的bbs顺序里面只有Windows的。

看过了,重装win10后已经没有了,bios里面uefi的bbs顺序里面只有Windows的。

grub install 也试过了,我按照arch wiki里面的方法执行的。

我的esp分区是/dev/sda2
我挂载分区mount /dev/sda2 /mnt
然后执行命令grub-install --target=x86_64-efi --efi-directory=/mnt --bootloader-id=GRUB
结果是报了个错,报错没拍照,忘记了,晚上回去补一下。我还看了下/mnt里面,名字是GRUB的目录是创建成功了,是空的目录。

grub-install没道理不行啊~

你可以在win10中使用bcdedit添加efi引导

manjaro manjaro]# mount /dev/sda2 /mnt/
[manjaro manjaro]# cd /mnt/
[manjaro mnt]# ls
EFI
[manjaro mnt]# cd EFI/
[manjaro EFI]# ls
Boot  Manjaro  Microsoft
[manjaro EFI]# ls
Boot  Manjaro  Microsoft
[manjaro EFI]# grub-install --target=x86_64-efi --efi-directory=/mnt --bootloader-id=Manjaro
Installing for x86_64-efi platform.
grub-install: error: failed to get canonical path of `overlay'.
[manjaro EFI]# grub-install --target=x86_64-efi --efi-directory=/mnt --bootloader-id=Grub
Installing for x86_64-efi platform.
grub-install: error: failed to get canonical path of `overlay'.

chroot 在哪一步做的?有更完整的不?

你在chroot环境下grub-install的吗?那你退出chroot环境再试试看。

上一次贴的不是在chroot里面执行的,下面的才是,也不行,不知道如何搞了。。。
sda4是Manjar系统所在分区,sda2是efi分区。

[manjaro mnt]# mount /dev/sda4 /mnt/
[manjaro mnt]# for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
[manjaro ~]# cd /mnt/
[manjaro mnt]# mkdir efi
[manjaro mnt]# mount /dev/sda2 /mnt/efi/
[manjaro mnt]# chroot /mnt/
[manjaro /]# grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=Manjaro
Installing for x86_64-efi platform.
EFI variables are not supported on this system.
EFI variables are not supported on this system.
Installation finished. No error reported.

我之前还试了用efibootmgr命令添加,也没用,也没报错,显示成功了,一点效果都没有。

我在12楼贴的就是在livecd直接执行的,不是chroot执行的。
我15楼贴的是在chroot里面执行的。

不要用 chroot,有很多重要的目录没有挂载好的。用 arch-chroot。

就是chroot /mnt 换成 arch-chroot /mnt?

刚刚用efibootmgr往BOIO的UEFI里面添加了一个启动项,可以了,用这个的前提的efi分区里面启动文件都在。
之前试过一次不知道怎么不行,估计路径写错了,没注意吧。。。
我的sda2是efi分区

efibootmgr -c -d /dev/sda -p 2 -l "\EFI\Manjaro\grubx64.efi" -L Manjaro

-c 表示需要创建添加
-d 是启动文件所在磁盘
-p 启动文件在磁盘的哪个分区
-l 这个是小写的L,指定启动文件
-L 给添加的启动项去个名字

既然你efibootmgr工作正常,那么说明你之前bios的引导项列表里是有grub的。。。。大概是你没看到

你efibootmgr看一下启动项都有啥