如何修复Grub引导管理程序
1.前言
在新用户使用Linux操作系统时候,容易出现误删除grub.cfg文件或者格式化EFI分区,导致Linux系统无法成功引导操作系统。本文就以实际的一个例子来说明Grub修复的问题。
2. 常见的情况以及修复的方法
进入Linux会出现上面这种情况,这种情形一般可能是在进入Grub时候,多按了一个键。还有一种情况是,系统grub.cfg文件未找到,第二种情况则需要下面进一步处理。
首先进入任何一个Linux发行版的ISO,所以可以通过U盘刻录或者是Ventoy进入到对应的Linux发行版桌面环境。
第一步,将操作系统和EFI分区挂载上。对于没有EFI分区的,可以使用fdisk或者是cfdisk重新创建一个EFI分区。对于已有的EFI分区和操作系统分区,使用mount命令将其挂载上:
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
这里/dev/sda2
是Linux操作系统的位置,/dev/sda1
是EFI分区的位置。注意,操作系统启动的时候有其他设备也会挂载上去,例如一些Linux固件等等,在修复Linux系统时候也是必须的,所以使用以下的命令将其挂载上去:
sudo mount -t proc /proc /mnt/proc
sudo mount --rbind /dev /mnt/dev
sudo mount --rbind /sys /mnt/sys
第二步,将对应的网络IP等配置复制到对应的环境当中。
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
这一步为的是能够在切换环境之后,修复操作系统的时候可以进行网络连接,如果不需要可以跳过。
第三步,在做好其中的工作之后,将环境切换到硬盘当中的系统。使用以下的命令进行切换:
sudo chroot /mnt /bin/bash
这样就会切换到对应的硬盘操作系统环境。
第四步,更新EFI分区的grubx64.efi文件。使用grub-install
可以生成对应的efi
:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --recheck
第五步,更新对应的grub.cfg配置文件
sudo grub-mkconfig -o /boot/grub/grub.cfg
当然,对于debian
系操作系统可以直接使用以下的命令进行更新
sudo update-grub2
这样就更新了对应的操作系统GRUB启动文件。
第六步,退出
exit
sudo umount /mnt/proc
sudo umount /mnt/dev
sudo umount /mnt/sys
sudo umount /mnt
sudo umount /mnt/boot/efi
当然,对于那些发生kernel panic
的问题,或者是其他操作系统内部的问题,也可以通过以上切换的环境进行修复处理。