manjaro+win10双系统修复grub的艰辛过程

manjaro+win10双系统修复grub的艰辛过程

起因:当时由于饱受kde环境下deep-wine-wechat及tim的折磨,尝试装了deepin,用完觉得整体一般,于是在bios删掉了启动项,随后删除了deepin的安装盘(作死),再次切到manjaro是便如题图了。

下方来说详细过程

一、初步检查(可解决最简单情况)

1.1 查看分区

grub rescue> ls

列出磁盘分区

(hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1)

注 : 上面这个分区可能因人而异,nvmexxx之类的也是可能的。

1.2 寻找manjaro在哪个分区

就是寻找你的Linux系统是装在以上哪个分区里

grub rescue> ls (hd0,msdos1)

若出现unknown filesystem字样,则尝试下一个,以此类推

直到出现相应主目录下的文件夹即可

1.3 安装MBR

修改启动分区

假如你找到的启动分区是 (hd0,msdos8)

grub rescue>root=(hd0,msdos8)
grub rescue>prefix=/boot/grub                 //grub路径设置
grub rescue>set root=(hd0,msdos8)
grub rescue>set prefix=(hd0,msdos8)/boot/grub
grub rescue>insmod normal                     //启动normal启动
grub rescue>normal

在此分支,有些人执行语句insmod normal时会报错,有人不会。

如果没有报错,执行完之后你会进入熟悉的界面了,恭喜问题已经得到了解决!

进入系统之后还是建议执行以下语句以防万一

grub-mkconfig -o /boot/grub/grub.cfg

对于报错的同志们,我们进入下一部分

二、深入检查(对于疑难杂症)

2.1制作Live CD

此时我们发现单纯在grub命令行里无法解决问题,此时我们需要制作一张live CD, 就是相当于用rufus等软件在U盘里刷一次manjaro的ISO,这点我们无需赘述,相信大家都会。

2.2 查看安装位置

由于我的efi是单独的一个盘,所以首先登入windows在磁盘管理中查看,efi的位置,并记录。

USB设为首选项启动,进入manjaro安装的桌面,打开终端

lsblk -f

此时会显示,manjaro系统安装的位置,需要记录一下

2.3挂载

使用manjaro-chroot来挂载,chroot即change root

sudo manjaro-chroot -a

此时按照给出的提示来选择系统

正常那么皆大欢喜直接进行下一步,但是这步有巨坑!!!!

你可能会收到以下报错ERROR: You cant mount 0!

==> detected systems:
–> 0) ManjaroLinux
==>Select system to mount [0-0]
==>ERROR: You cant mount 0!

这时是个人都会很疑惑,但是此时选择'1'会解决问题(莫名其妙)

进入下一步

mount /dev/[manjaro安装分区] /mnt

利用在lsblk中获得的分区来替换'[manjaro安装分区]',比如我的是nvme0n1p6,即

mount /dev/nvme0n1p6 /mnt

需要注意空格

同时需要挂载efi的分区,即我们前面在windows里查看的分区(lsblk也可看到)

mount /dev/[GRUB所在分区] /mnt/boot

同理

mount /dev/nvme0n1p1/ mnt/boot

2.4切换挂载的根目录

cd /mnt
chroot /mnt

2.5重装GRUB

grub-install /dev/[GRUB所在分区]

这个替换同上,有人在这一步也会报错

error: cannot find a device for /boot (is /dev mounted?).

grub-install install device isn't specified

此时用exit退回上一级目录,执行

mount | tail -l

会得到类似

dev/sda5 on /media/sys type ext3 (rw,nosuid,nodev,uhelper=udisks)

这样的结果,记录GRUB所在分区对应的on后面的目录即可

再次

chroot /mnt

执行

sudo grub-install --root-directory=[on后面目录] /dev/[GRUB所在分区]

需要注意空格,此时运行成功,再执行

update-grub

等待执行完毕,重启系统选择manjaro为启动项

此时又迎来了分支,有些人直接进入系统,那么恭喜终于结束!

三、重复

有些人依旧是进入grub

显示minimal bash-like line editing is supported,不要灰心,胜利就在前方

此时的gurb可以观察到是重装过的,重复执行第一部分,insmod normal语句不会再报错,

于是进入系统!大功告成!

四、尾声

这玩意折腾了我一整天,差点给我整自闭,其间参考了arch wiki,manjaro论坛,ubuntu论坛等资料,写出来只是为了以后的同志们少走点弯路。

参考:

https://ubuntuforums.org/showthread.php?t=1372460ubuntuforums.org
https://forum.manjaro.org/t/chroot-not-working-error-you-cant-mount-0/26948forum.manjaro.org
Linux与windows双系统GRUB引导修复www.waimaosns.cc
https://wiki.manjaro.org/index.php/Restore_the_GRUB_Bootloaderwiki.manjaro.org

发布于 07-04