在启动 Linux 时,有时屏幕上会出现英文错误信息,系统也可能停在启动途中,无法正常进入桌面。 虽然这些错误看起来让人紧张,但它们其实是排查问题的重要线索。
本文将详细说明 Linux 启动时常见的报错原因,以及初学者也可以按顺序尝试的解决方法。
1. 启动时报错时,先不要急着重启
很多用户看到错误信息后,第一反应是不断重启电脑。 但如果反复强制重启,可能会让文件系统问题变得更严重。
首先要做的是:
- 记录完整的错误信息
- 拍照保存屏幕内容
- 注意错误出现在什么阶段
- 确认最近是否做过更新、驱动安装、分区调整等操作
例如,如果最近刚更新过内核,那么问题很可能与新内核有关; 如果最近断电过,则文件系统损坏的可能性更高。
2. 常见的启动错误类型
Linux 启动时常见的错误大致可以分为以下几类:
- GRUB 或启动项错误
- 文件系统检查失败
- 内核或 initramfs 错误
- systemd 服务启动失败
- 显卡驱动或显示管理器错误
- 磁盘容量不足
- 硬盘本身出现故障
不同类型的错误,对应的处理方法完全不同,因此先判断错误类别很重要。
3. 临时显示详细启动日志
很多发行版默认启用了 quiet splash,因此详细错误不会显示。
可以先通过 GRUB 暂时关闭这个设置,以便查看真正的报错位置。
操作步骤
- 重新启动电脑
- 启动时连续按 Shift 或 Esc 打开 GRUB 菜单
- 选中当前启动项并按 e
- 找到包含
quiet splash的那一行 - 删除
quiet splash - 按 Ctrl + X 启动
这样系统会显示更完整的启动过程,你可以看到究竟是卡在磁盘、服务、驱动,还是内核阶段。
4. 如果出现 “grub rescue” 或找不到系统
如果开机后直接出现 grub rescue 或类似 “no such partition” 的错误,通常说明启动加载器或分区信息有问题。
这种情况下,常见原因包括:
- 磁盘分区被移动或修改
- Windows 更新覆盖了启动信息
- /boot 或 EFI 分区异常
- GRUB 配置损坏
如果还能进入 Live USB,可以按如下方式修复:
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi # 仅 UEFI 环境需要
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda
update-grub
exit
sudo reboot
请根据实际分区情况替换设备名。可以先用 lsblk -f 查看分区。
5. 如果进入 emergency mode
如果启动后出现 You are in emergency mode,说明系统检测到严重问题,因此进入了最小修复环境。
这种情况通常与文件系统挂载失败、fstab 配置错误或磁盘异常有关。
进入后可以先查看日志:
journalctl -xb
然后检查 /etc/fstab 是否配置错误:
cat /etc/fstab
常见问题包括:
- UUID 写错
- 外接磁盘被写入 fstab,但当前没有连接
- 挂载点路径不存在
如果确认是 fstab 问题,可以编辑修正:
nano /etc/fstab
修正后重启系统:
reboot
6. 如果出现 fsck 相关错误
如果报错中包含 fsck failed、UNEXPECTED INCONSISTENCY 或磁盘检查失败提示,说明文件系统可能损坏。
这类问题常见于:
- 异常断电
- 强制关机
- 硬盘老化
- 系统在写入时突然中断
可以通过恢复模式或 Live USB 进行修复:
sudo fsck -f /dev/sda1
如果系统提示该分区正在挂载,请不要直接对已挂载的根分区执行 fsck,而应在 Live USB 环境中处理。
修复完成后,建议再次检查磁盘状态:
sudo smartctl -a /dev/sda
如果 SMART 显示大量错误,就要尽快备份数据。
7. 如果是 systemd 服务启动失败
有些情况下,Linux 内核本身已经成功启动,但某些关键服务失败,导致系统卡住或反复报错。 常见报错形式为:
Failed to start ...Dependency failed for ...
这时可以进入 TTY 控制台:
Ctrl + Alt + F2
登录后查看失败的服务:
systemctl --failed
再查看具体服务日志,例如:
systemctl status NetworkManager
journalctl -u NetworkManager -b
如果是非关键服务,也可以先禁用,确认是否因此导致系统无法进入桌面:
sudo systemctl disable 服务名
之后重启观察是否恢复。
8. 如果是内核或 initramfs 问题
如果错误出现在内核加载阶段,例如 kernel panic、无法挂载 root、initramfs shell 等,通常与内核更新或 initramfs 损坏有关。
这时可以先从 GRUB 进入旧内核:
- 打开 GRUB
- 选择 Advanced options
- 选择旧版本内核
如果旧内核可以正常启动,就说明问题多半在新内核或 initramfs。
Ubuntu 系可以重新生成 initramfs:
sudo update-initramfs -u
也可以重新安装当前内核相关包。
9. 如果是显卡驱动导致的错误
当系统实际上已经启动,但图形界面无法显示时,常见原因是 GPU 驱动不兼容。 尤其是在 NVIDIA 驱动更新后,这种问题很常见。
可以在 GRUB 中临时添加 nomodeset 尝试启动:
linux /boot/vmlinuz ... quiet splash nomodeset
如果能进入系统,说明很可能是显卡驱动问题。
之后可以在终端中重新安装驱动,例如 Ubuntu:
sudo apt update
sudo ubuntu-drivers autoinstall
如果之前手动安装过不兼容驱动,也可能需要先卸载旧驱动。
10. 如果是磁盘空间不足
有时系统更新中途报错、启动服务失败,真正原因却只是根分区或 /boot 空间不够。
进入终端后可以先检查磁盘使用情况:
df -h
如果 / 或 /boot 已接近 100%,就需要清理空间。
常见做法包括:
- 删除旧内核
- 清理软件缓存
- 删除不再需要的日志
- 卸载不常用软件
例如 Ubuntu 下可清理缓存:
sudo apt clean
sudo apt autoremove
11. 实在无法启动时,先备份数据
如果多种方法都无效,请不要继续反复试错。 更稳妥的做法是用 Live USB 启动系统,先把重要文件备份到外部硬盘或U盘。
备份完成后,再尝试以下操作:
- 修复文件系统
- 重新安装 GRUB
- 回滚内核
- 修改 fstab
- 重装显示驱动
如果磁盘已经有物理损坏迹象,优先级永远是先救数据。
总结
Linux 启动时出现错误信息,并不一定意味着系统彻底损坏。 很多情况下,只要根据错误内容逐步检查,就可以恢复正常启动。
- 先记录错误信息
- 通过 GRUB 显示详细日志
- 进入 TTY、Recovery Mode 或 Live USB
- 根据错误类型分别检查 GRUB、文件系统、服务、内核、驱动和磁盘空间
- 必要时先备份数据再修复
启动错误的关键不是盲目重装,而是根据报错内容一步一步定位原因。