grub启动故障通常无需重装系统,关键在定位配置、引导程序、内核路径或硬件识别问题;依据报错类型(如grub>、error 15/17、黑屏)快速判断,并通过编辑启动项、live环境重装grub或检查磁盘/文件系统修复。

GRUB启动故障是Linux系统无法进入的第一道关卡,多数情况不用重装系统,关键在快速定位是配置、引导程序、内核路径还是硬件识别出了问题。
看报错信息,先分清类型
启动时出现的提示是重要线索:
- “grub>” 或 “grub rescue>”:GRUB主程序损坏或丢失,MBR/EFI分区未正确安装
-
“Error 15: File not found”:配置里指定的内核(vmlinuz)或initrd路径错误,常见于手动改过
/boot/grub/grub.cfg或/etc/grub.d/脚本后 - “Error 17: Cannot mount selected partition”:root=参数指向的分区不存在、UUID变化、文件系统类型不识别,或/boot单独分区未挂载
- 黑屏/卡在光标闪烁/无限重启:可能是显卡驱动冲突(尤其NVIDIA)、initramfs缺失、或内核panic但没显示出来
临时绕过,进系统再修复
在GRUB菜单界面按e编辑当前启动项,做最小干预:
- 找到以
linux开头的行,检查root=后面是否为当前根分区的正确UUID(可用blkid命令确认),不是则改成root=UUID=xxxx-xxxx或root=/dev/sda2 - 确认
initrd行中镜像文件名存在(如/boot/initrd.img-6.8.0-xx-generic),若路径不对或文件缺失,临时删掉整行试试 - 显卡问题可追加内核参数:
nomodeset(禁用GPU驱动)或acpi=off(关闭ACPI,老硬件常用) - 编辑完按
Ctrl+X或F10启动;成功进系统后立即执行sudo update-grub
用Live环境彻底重装GRUB
当无法临时启动时,需借助Live USB/CD操作:
- 启动Live系统,打开终端,识别硬盘和分区:
lsblk -f或sudo fdisk -l - 挂载根分区(假设为
/dev/sda2):sudo mount /dev/sda2 /mnt - 若
/boot或/boot/efi是独立分区,一并挂载:sudo mount /dev/sda1 /mnt/boot,sudo mount /dev/sda3 /mnt/boot/efi - 绑定必要虚拟文件系统:
sudo mount -t proc proc /mnt/proc,sudo mount -t sysfs sys /mnt/sys,sudo mount -o bind /dev /mnt/dev - 切换到原系统环境:
sudo chroot /mnt - 重新安装GRUB:
• BIOS传统模式:grub-install /dev/sda
• UEFI模式:grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
• 最后更新配置:update-grub - 退出chroot,重启
检查底层支撑是否完好
GRUB能跑起来,不代表底层没问题:
- 运行
sudo smartctl -a /dev/sda查看磁盘SMART健康状态,重点看Reallocated_Sector_Ct和Current_Pending_Sector - 强制检查文件系统:
sudo fsck -y /dev/sda2(ext系列)或sudo xfs_repair -L /dev/sda2(xfs,-L会清空日志,慎用) - 确认initramfs是否完整:
ls /boot/initrd.img*,对比uname -r输出,缺失则重建:sudo update-initramfs -u -k all(Debian系)或sudo dracut -f(RHEL系) - 检查
/etc/fstab中所有挂载项是否真实存在且格式正确,错误条目会导致启动卡在“Started File System Check on Root Device”










