双系统重建引导
双系统重建引导,主要是win10安装linux发行版后的操作

之前装双系统都是先安装win10,然后安装linux发行版,这样引导是grub2引导最后留下了,基本上问题不是很大。但是最近作死,现状的manjaro然后再安装的win10,由于win10的引导覆盖了grub2,然后win10引导又不认linux启动项,造成了无法启动manjaro,查阅了一些资料记录一下。

核心思想就是引导仍然使用grub2,用grub2引导manjaro和win10系统,所以下面主要是安装grub2,这里我使用livecd完成的安装和配置,我自己的是用UEFI+GPT引导的64位系统,不是用于老的。

  • 查看基本分区情况
# fdisk -l

/dev/sda1 efi
/dev/sda2 /
/dev/sda3 swap
/dev/sda4 win10
  • 挂载chroot所需的分区
# mount /dev/sda2 /mnt
# mkdir /mnt/efi
# mount /dev/sda1 /mnt/efi
# mount --bind proc /mnt/proc
# mount --bind dev /mnt/dev
# mount --bind sys /mnt/sys
  • chroot到新系统中安装gurb2并生成grub.cfg
    **在安装grub2的时候可能会出现一个错误 **EFI variables are not supported on this system** **
    如果加载的时候出现错误提示**modprobe: FATAL: Module efivars not found in directory /lib/modules/**
# chroot /mnt

## 安装grub2 
# grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB

## 配置grub2
# grub-mkconfig -o /boot/grub/grub.cfg
## 查阅了一些资料,发现原因是efivars 模块没有加载,可以退出chroot环境加载该模块。

## 退出chroot环境
# exit

## 加载efivars
# modprobe efivars

## 进入chroot环境继续操作
# chroot /mnt
## 在chroot环境中挂载efivars,然后再安装grub2
# mount -t efivars efivars /sys/firmware/efi/efivars
  • 添加win10启动项

因为我的livecd没有网络,所以这部分最好是重启进入Manjaro中添加启动项,主要是利用os-prober来探测win10的启动项可能需要ntfs-3g的支持。

## 重启进入正常的Manjaro 系统中打开终端
# pacman -Sy ntfs-3g

## 挂载win10硬盘,我这里是/dev/sda4
# mount /dev/sda4 /mnt
# os-prober partition /dev/sda4 /mnt
# os-prober

## 上面的命令基本上就可以探测到并做好配置了,下面只需要更新一下grub配置文件
# update-grub
## 输出的信息中可以看到windows启动项的配置文件。

## 可以修改/etc/default/grub配置文件来改动默认启动和引导界面的时间
# vi /etc/dafault/grub 
## 记得更新配置文件
# update-grub

最后修改于 2022-04-11