重建linux系统的grub启动项

当Windows重启导致找不到ArchLinux的GRUB启动项时,可以通过重新安装GRUB解决。步骤包括:准备ArchLinux启动盘,列出并识别硬盘分区,挂载根分区和EFI分区,使用arch-chroot切换到根分区,安装内核,部署GRUB,生成配置,最后重启系统。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

鉴于没钱买新电脑,所以在一个电脑上装了3个系统,Ubuntu,ArchLinux和Windows。然而Windows系统重启经常会导致找不到Arch的启动项,即在UEFI里找不到Arch的grub。于是重建了好多次Arch的grub。

Arch的grub重建方式

准备启动盘

准备一个ArchLinux的启动U盘,就和安装系统时的一样。然后从这个U盘启动Arch Install

切换分区

使用下面的命令列出所有硬盘分区。

fdisk -l

然后会有一个类似于下图的输出。可能输出有很多而且名字也不同,但找到这个部分就行。我们需要关注图中下半部分的其中几个分区。

EFISystem分区存储的是各个系统的启动项。其中第一个EFI是我放置Ubuntu和Windows启动项的,512M的EFI才是ArchLinux(可能也是这个原因导致Ubuntu启动项一直是好的)。

Linux filesysytem就是Linux的根分区。我这里有两个是因为我装了Ubuntu和ArchLinux两个Linux系统。

Windows basic data顾名思义你就应该懂了。我有三个分别对于C盘D盘E盘。

Windows recovery environment是Windows恢复分区,别动就对了。虽然我动过不止一次(。现在我已经做好Windows系统死掉的准备了。

然后敲入下面的命令,切换根分区。

mount /dev/nvme0n1p8 /mnt # 挂载根分区,第二个参数/mnt可以自己命名。
mount /dev/nvme0n1p1 /mnt/boot # 将Windows的EFI分区挂载到根分区的boot目录下,保证根分区名称对应。
arch-chroot /mnt # 切换到根分区。意味着之后'/mnt'就是你的'/'路径,访问'/'就等于访问'/dev/nvme0n1p8'。输入exit可以退出。
部署grub

先安装linux内核,其实是应该执行某个命令的,但是记不住,于是用这个方法顺带执行那个命令了。

pacman -S linux # pacman是arch的包管理器,类似于Ubuntu的apt,-S代表是安装

部署grub,基本照抄别动。其中--bootloader-id后边紧跟着的是启动项名称,也就是在UEFI选择界面时的名称,如果像我一样有好多系统,建议命名清楚一点。

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub
生成配置
grub-mkconfig -o /boot/grub/grub.cfg

然后输入exit退出根分区,输入reboot重启系统。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值