manjaro双系统引导修复


1. 前言
人在江湖飘,哪有不挨刀。我装双系统之前,电脑只安装了Manjaro,后来以防万一装了windows。因为引导win11一直失败,所以我先安装了win10。后来把所有的问题都搞定之后,我就给我的win10升级。升到win11本来是好事,结果启动Manjaro的时候,直接进入了grub rescue模式。
在此之前,我完全不相信双系统会出现这种问题。毕竟我给我的硬盘分好了区,两个系统井水不犯河水。当时觉得别人出现问题是因为他们没有正确处理这些问题。当我的linux系统的grub被windows弄坏的时候,我知道我也中招了。
这种问题按理来说不是难事,可是当我跑到网上去查的时候,发现能查出来的都是不知所云的。果然百度不能信。求天求地不如求己,因此又有了这篇引导修复的文章。
2. 引导修复
我的Manjaro系统出现故障的时候,只要一选择Manjaro启动就会跑到grub rescue界面,所以如果你可以进入正常的引导界面,只是启动后黑屏的话,多半是驱动问题,这篇文章自然就不用看了。
引导修复有两种办法:
Live CD修复
手动修复
第一种方法对于Windows玩机大家来说很简单了,就是各类的PE机做的事。不过我还是说说。
2.1. Live CD修复
这种方式要求你有一个Manjaro启动盘或者和你系统一样的启动盘。为什么使用Manjaro Live CD?因为Manjaro本身支持LiveCD。启动盘不难制作,按我之前说,直接用Ventoy[1]制作即可。
启动电脑进入BIOS或者UEFI界面,选择U盘启动,就像安装Manjaro一样直到进入图形界面。
进入图形界面之后,打开控制台,输入
sudo fdisk -l
查看你的硬盘分区,通常你是可以知道自己的硬盘分区的。例如分区如下,我的Manjaro安装在Windows之后,所以倒数一二块分区应该就是我的Manjaro的EFI和根(root)分区:
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectorsDisk model: INTEL SSDPEKNW512G8                     Units: sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisklabel type: gptDisk identifier: 2CBB82D2-DA15-824E-A9B0-AF96C6143278Device             Start        End   Sectors   Size Type/dev/nvme0n1p1      2048     616447    614400   300M EFI System/dev/nvme0n1p2    616448     649215     32768    16M Microsoft reserved/dev/nvme0n1p3    649216  159879167 159229952  75.9G Microsoft basic data/dev/nvme0n1p4 159879168  161349631   1470464   718M Windows recovery environmen/dev/nvme0n1p5 161351680  161966079    614400   300M EFI System/dev/nvme0n1p6 161966080 1000215182 838249103 399.7G Linux filesystem
接下来是挂载我的Manjaro两个分区,同时转换到挂载的目录:
sudo mount /dev/nvme0n1p6 /mntsudo mount /dev/nvme0n1p5 /mnt/boot/efimanjaro-chroot /mnt
转换之后,命令提示符应该从原本的Manjaro格式变成其他格式,我的变成了这样
sh-5.1#
这时候,我们需要更新我们的grub,然后再次安装它:
update-grubgrub-install /dev/nvme0n1p5
当然,你要是不放心,还可以再次生成grub:
grub-mkconfig -o /boot/grub/grub.cfg
然后退出,卸载,然后重启
exitsudo umount -R /mntreboot
正常情况下,你的系统应该可以启动了。
2.2. 手动修复
这种情况是你手中没有Live CD,或者没有合适的Live CD。这种就很难受了。
首先你会看到这个提示
eorror: unkown filesystemEntering rescue mode...grub rescue > 
如果没有这个提示,很好,你的问题我不能解决,你可以另往它处了。
第一步,我们先看一下自己的Manjaro系统在哪里,使用ls。
ls
我的提示如下
(hd0) (hd1) (hd1,gpt4) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2,gpt6) (hd2,gpt5) (hd2,gpt4) (hd2,gpt3) (hd2,gpt2) (hd2,gpt1) 
你的分区可能不会这么多,所以不用担心。
接下来就是烦人的操作了,使用ls一个个查看这些分区,例如
ls (hd0)/ls (hd1,gpt4)/...
注意,hd1和gpt4之间除了逗号,什么也没有,括号之后还需要加上/,除此之外不要添加别的东西。
一个一个地试,你可以会得到这类消息
error: unkown filesystem
恭喜你,你成功排除了一个选项,请继续排除。
等到你找到类似下面这个
ls (hd2,gpt6)./ ../ lost+found/ boot/ dev/ home/ opt/ proc/ run/ sys/
的提示的时候,这说明你找对了,只要看到boot/就说明已经正确了。记住你的卷标,我的是(hd2,gpt6)
接下來输入
set root=(hd2,gpt6)set prefix=(hd2,gpt6)/boot/grubinsmod normalnormal
至此,你的引导系统算是正确了。它会自己重启。
不急,等你进入系统之后打开控制台(终端),输入
fdisk -l
查找你的Manjaro的EFI在哪里,我的是/dev/nvme0n1p5,我知道,上面我就试过了。然后输入
sudo update-grubsudo grub-install /dev/nvme0n1p5
重启一下,你的系统又变好!!
3. 后语
只要不乱搞,你的系统是不会有问题的。所以当你的系统有问题的时候,别急着责怪电脑,毕竟你比电脑还不负责。
相关网址
[1]: https://ventoy.net/
到顶部