当系统无法正常进入桌面或命令行时,GRUB恢复模式是最常用的排查入口。重启计算机,在GRUB菜单中选择“Advanced options for [发行版名称]”,然后选择带有“(recovery mode)”后缀的内核版本进入恢复菜单。在恢复选项中选择“Drop to root shell prompt”(或类似选项),进入root命令行环境(部分系统需先执行mount -o remount,rw /将根分区重新挂载为可读写)。
文件系统损坏是启动失败的常见原因之一。在恢复模式的root shell中,执行fsck /dev/sdXn命令(sdXn为根分区,如/dev/sda2;可通过lsblk或fdisk -l确认分区信息)。fsck会扫描并修复文件系统中的坏道、不一致等问题,修复完成后执行reboot重启系统。
若系统无法从硬盘启动,可能是GRUB引导程序损坏或配置错误。使用Live USB启动系统,选择“Try Ubuntu”进入临时环境,打开终端执行以下步骤:
sudo fdisk -l找到原系统的根分区(如/dev/sda2)和EFI分区(如/dev/sda1,UEFI系统必需);sudo mount /dev/sda2 /mnt;sudo mount /dev/sda1 /mnt/boot/efi;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(传统BIOS系统执行grub-install /dev/sda);exit,然后卸载所有挂载点并拔出U盘。启动日志是排查启动问题的关键线索。在恢复模式的root shell中,可使用以下命令查看日志:
journalctl -b:查看本次启动的完整日志;journalctl -b -p err:过滤出错误级别的日志(更聚焦问题);dmesg:查看内核日志(重点关注硬件、驱动相关的错误,如“failed to load module”)。部分服务启动失败会导致系统卡住或无法进入桌面。在恢复模式的root shell中,执行systemctl list-units --state=failed查看所有失败的服务,然后针对具体服务进行处理:
systemctl disable 服务名(避免下次启动时再次触发);/etc/systemd/system/服务名.service),检查ExecStart路径、依赖项(After=、Requires=)是否正确,修改后执行systemctl daemon-reload重新加载配置;systemctl start 服务名(测试服务是否能正常启动)。系统更新中断或软件包安装失败可能导致依赖关系混乱,进而引发启动问题。通过Live USB进入原系统环境(参考“通过Live CD/USB修复引导”步骤),执行以下命令修复依赖:
dpkg --configure -a:完成未完成的软件包配置;apt-get install -f:自动修复依赖关系(解决“unmet dependencies”问题);apt-get update && apt-get upgrade:更新软件包列表并升级系统(可选,确保系统处于最新稳定状态)。硬件故障(如硬盘坏道、内存损坏)也可能导致启动失败。可使用以下工具进行检测:
smartctl -a /dev/sdX(sdX为硬盘设备,如/dev/sda),查看“Reallocated_Sector_Ct”(重分配扇区数)等指标是否异常;memtest86+(需从Live USB启动,选择“Memory Test”选项,运行完整测试)。若以上方法均无法解决问题,且数据已备份,可考虑重装系统。使用Live USB启动,选择“Install Ubuntu”(或其他发行版),按照向导重新安装系统(注意:重装前需格式化系统分区,确保数据已完全备份)。