起因
安装的Archlinux、linuxmint、windows三系统,由于硬盘分区表分区顺序出现错误,修复后分区盘符发生变化,三个系统均不能启动。
整体思路
由于手里还有一个能用的winpe U盘启动盘。首先,使用winpe修复windows启动,但不能修复linux启动项。
其次,linuxmint存在不能正常引导Arch Linux的问题,而Arch Linux可以正常引导linuxmint。而EndeavourOS不需要配置图形界面就能使用Arch Linux的gui界面,所以,下面使用EndeavourOS Live CD修复grub引导,主要应用命令chroot。
具体操作
1.制作 Ubuntn U盘启动盘
可以在win下使用Ventory软件制作U盘启动盘。然后,将下载的EndeavourOS放到制作的U盘启动盘根目录下。
2.进入电脑BIOS,从U盘启动
3.然后进入EndeavourOS live normal环境
首先,使用EndeavourOS自带的welcome软件,设置镜像为国内镜像。
然后,安装grub引导需要的几个软件(注意使用—Syy更新镜像,否则可能会报错找不到安装包):
sudo pacman -Syy grub
sudo pacman -Syy os-prober
sudo pacman -Syy glibc
yay update-grub
4.查看磁盘分区**,获取根目录,boot目录等所在分区编号
命令:
sudo fdisk -l
此处并不显示分区对应的目录,因此只能亲根据文件类型以及分区大小判断linux系统的分区,及其相应目录对应分区。例如我的archlinux在/dev/sda9
,linuxmint 在 /dev/sda12
,我下面就要使用/dev/sda9
。
5.挂载一系列分区及目录
(1) 根分区挂载:
sudo mount /dev/sda9 /mnt
(2) 其他目录挂载:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
6.chroot到硬盘上的linux系统
sudo chroot /mnt
关于chroot命令详细介绍: chroot
7 .安装并更新grub
update-grub
grub-install /dev/sda
注意这里是/dev/sda
,不带任何盘符编号,引导的是整个硬盘。
8 .修复完成,卸载已挂载的目录
exit //退出chroot环境
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt
9 .重启系统,完成
参考:
版权声明:本文由 Duter2016 在 2023年10月20日发表。本文采用CC BY-NC-SA 4.0许可协议,非商业转载请注明出处,不得用于商业目的。
文章题目及链接:《Arch Linux与windows双系统修复Arch Linux的grub引导》