在使用 linux 过程中我们可能会由于操作不慎,弄坏 grub。下面介绍如何在 LiveCD 或者紧急模式下,拯救坏掉的 grub。LiveCD 可以从各个发行版本的镜像站中找到,按照需要,可选 Debian/Ubuntu/CentOS 等常见发行版本的 LiveCD。
操作步骤
1. 启动并进入 LiveCD 或者紧急模式
在这不过多介绍如何进入 LiveCD 或者紧急模式。
2. 判断硬盘分区情况
将硬盘列出来,找到出问题的硬盘。如果 LiveCD 没有 fdisk 命令,可以通过 apt install fdisk
来安装。
fdisk -l
会得到一份分区列表,例如 /dev/sda
,这是我的 VPS 的系统盘,而 sda 中 的 a 为第一块硬盘。当然系统盘的名字可能不同,可能叫 vd*,如果是 NVME 硬盘的话,则可能叫 nvme0n1,具体您需要根据自己的情况判断。
而启动方式有两种情况,一种是 BIOS 启动,一种是 EFI 启动。
1. 例如 BIOS 启动:
/dev/sda2
挂载点在 /
,
/dev/sda1
挂载点在 /boot
。
mount /dev/sda2 /mnt mount /dev/sda1 /mnt/boot
当然,BIOS 启动的话,只有 / 分区也可以正常启动,具体情况需要根据 fdisk 得到的具体分区来看。
2. 如果是 EFI 启动,则有个 FAT 分区:
/dev/sda1
,挂载点为:/boot/efi
mount /dev/sda2 /mnt mount /dev/sda1 /mnt/boot/efi
3. 挂载分区
将如下特殊分区挂载上:
mount -t proc proc /mnt/proc/ mount -t sysfs sys /mnt/sys/ mount -o bind /dev /mnt/dev/ mount -o bind /run /mnt/run/ mount -t devpts pts /mnt/dev/pts/
如果是 EFI 启动,则再加一条:
mount -t efivarfs efivars /mnt/sys/firmware/efi/efivars
4. chroot
chroot /mnt
这样,就切换到出故障的系统上了。我们可以执行很多操作,例如 apt 更新或增加软件包,修改文件等。
5. 更新 grub 条目
grub-install /dev/sda update-grub
如果是 EFI 启动,但是却是弱 EFI 支持,则可能需要复制一份 grub 启动文件,否则可能不开机。
cd /boot/efi/EFI/ mkdir boot cp debian/grubx64.efi /boot/bootx64.efi
拯救完毕。重启即可正常进入系统。
评论前必须登录!
立即登录 注册