问题描述
当操作开机启动后,在进入 GRUB 菜单时,按 c 键,能够进入 GRUB 的命令行模式。当终端显示 grub> 提示符时,表示已经进入命令模式。
当进入命令模式后(普通场景)
### #1 查看所有分区 grub> ls ### #2 查看分区下的内容 grub> ls (hd0,1)/ ### #3 设置根分区及启动盘 grub> set root=(hd0,1) grub> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1 grub> initrd /boot/initrd.img-3.13.0-29-generic grub> boot # 「普通场景」:这里的普通场景指的是「BIOS」+「MBR」+「普通的磁盘分区」,没有使用RAID和LVM等等技术。
如果处于救援模式
如果你进入了救援模式,那执行的命令会有所不同。此时的命令提示符为grub rescue>,表示救援模式:
grub rescue> set prefix=(hd0,1)/boot/grub grub rescue> set root=(hd0,1) grub rescue> insmod normal grub rescue> normal grub rescue> insmod linux # 后面的步骤就是前面一样了 grub rescue> linux /boot/vmlinuz-3.13.0-29-generic root=/dev/sda1 grub rescue> initrd /boot/initrd.img-3.13.0-29-generic grub rescue> boot
如果系统进入救援模式,那通常是没有找到/boot/grub/目录。可能还有其他原因,具体情况要具体分析。
修复系统引导
当进入系统后,第一件事情是修复引导:
update-grub
如果你的系统是GPT分区表,在引导修复的时候需要进行一些不同的操作。
通过 chroot 修复
boot – How do I run update-grub from a LiveCD? – Ask Ubuntu
mount /dev/sda5 /mnt mount --bind /dev /mnt/dev mount --bind /sys /mnt/sys mount --bind /proc /mnt/proc mount /dev/sdaX /mnt/boot # 如果引导是单独分区,则必须执行 chroot /mnt update-grub exit // 最后,卸载并重启 umount /mnt/dev umount /mnt/sys umount /mnt/proc umount /mnt/boot umount /mnt/ reboot
参考文献
How to Rescue a Non-booting GRUB 2 on Linux