win10 更新后导致 manjaro 的引导文件失效的解决

本文最后更新于:2020年11月22日 晚上

windows bug 10, best windows 10!

前言

更新了 Windows10 2004 的更新后发现 manjaro 的系统进不去了。进去了是 grub rescue 救援模式。
参考了救援模式的解决,但好像只看到了 /boot 的挂载点,没看到 /boot/efi 的挂载点,更别提 / 的挂载点了。

所以没办法,就烧了个manjaro 的 livecd 进去修复 grub . 其中也踩了几个坑,这里记一下,方便遇到相同问题的人解决。

正文

我的环境

这里我列一下我的文件目录的挂载点。之前出错就是因为这里有问题。

设备       启动       起点       末尾       扇区   大小 Id 类型
/dev/sda1  *            64 1848663470 1848663407 881.5G  7 HPFS/NTFS/exFAT
/dev/sda2       1848664064 1893720063   45056000  21.5G 83 Linux
/dev/sda3       1893720064 1934680063   40960000  19.5G 83 Linux
/dev/sda4       1934680064 1953520064   18840001     9G 82 Linux swap / Solaris

设备            起点      末尾      扇区   大小 类型
/dev/sdb1       2048   1085439   1083392   529M Windows 恢复环境
/dev/sdb2    1085440   1290239    204800   100M EFI 系统
/dev/sdb3    1290240   1323007     32768    16M Microsoft 保留
/dev/sdb4    1323008 244098048 242775041 115.8G Microsoft 基本数据
/dev/sdb5  244099072 245411839   1312768   641M Windows 恢复环境
/dev/sdb6  245413888 247463902   2050015  1001M Linux 文件系统

这里我是因为用双硬盘装了 WindowsManjaro的双系统,所以看起来很麻烦。其实还好啦。

设备 挂载点
/dev/sda2 /
/dev/sdb6 /boot
/dev/sdb2 /boot/efi

和表格中显示的一样,我是分了三个分区分别用来挂载不同的目录的。

原理

我们要做的,就是通过使用 Manjaro 的 livecd 来使用 manjaro-chroot进行 grub 的修复。

我的操作是

  1. 挂载 /dev/sda2/mnt
  2. 挂载 /dev/sdb6/mnt/boot
  3. 挂载 /dev/sdb2/mnt/boot/efi

然后使用manjaro-chroot /mnt 进入系统进行修复。

所以对于挂载点的情况一定要记得清楚!我的操作是针对我这种 /boot/boot/efi 挂载在不同分区上的情况。操作时要按照自己的实际情况改变命令。

下面就是具体的操作啦

具体操作

Manjaro 的 LiveCD 进入系统,然后在 root 用户中输入以下命令

  1. 查看硬盘的挂载情况
fdisk -l

用这个命令来查看你的文件系统的情况。如果你清楚了那就不用了。

  1. 挂载实际系统中的 //mnt
    在这里我的硬盘是 /dev/sda2
mount /dev/sda2 /mnt
  1. 挂载实际系统中的 /boot/mnt/boot
    在这里我的硬盘是 /dev/sdb6
mount /dev/sdb6 /mnt/boot
  1. 挂载实际系统中的 /boot/efi/mnt/boot/efi
    在这里我的硬盘是 /dev/sdb2
mount /dev/sdb2 /mnt/boot/efi
  1. 进入 manjaro-chroot
manjaro-chroot /mnt
  1. 在 EFI 启动分区创建引导文件
grub-install --recheck /dev/sda --efi-directory=/boot/efi
  1. 生成 grub 的配置文件
grub-mkconfig -o /boot/grub/grub.cfg
  1. 重启试试能不能进入 manjaro
exit
reboot

记得拔掉 U 盘!

总结

其实原理就是通过 manjaro-chroot 进入到实际的系统中,然后用 grub-install 修复引导文件。

因此我们挂载操作的主要目的就是为了让 manjaro-chroot 工作,和 grub-install 能够用正确的方式来生成引导文件。

参考

Manjaro UEFI 启动修复 - 云酱的笔记本