新手避坑指南:Ubuntu开机卡在clean blocks界面?教你用recovery mode救回系统

📅 发布时间:2026/7/14 5:50:24 👁️ 浏览次数:
新手避坑指南:Ubuntu开机卡在clean blocks界面?教你用recovery mode救回系统
新手避坑指南Ubuntu开机卡在clean blocks界面教你用recovery mode救回系统刚装好的Ubuntu系统或者用得好好的某天开机突然就卡住了。屏幕上滚动着几行令人不安的白色文字最后定格在类似“/dev/sda2: recovering journal”和“clean, xxx files, xxx blocks”的提示上光标闪烁系统却再无响应。对于刚接触Linux的新手或者将Ubuntu用于个人开发、家庭服务器的用户来说这无疑是当头一棒——数据还在里面吗系统是不是彻底坏了别慌这远非世界末日。你遇到的很可能是Linux文件系统在遭遇非正常关机比如突然断电、强制重启后启动时进行的一次标准“体检”和“修复”流程卡住了。而系统自带的“安全屋”——Recovery Mode恢复模式正是为你准备的救援工具箱。这篇文章我将带你绕过那些千篇一律的“修改GRUB加nomodeset”的教程直击因文件系统日志journal损坏导致启动失败的核心问题手把手教你如何利用恢复模式中的专业工具像一位系统外科医生一样精准修复你的Ubuntu救回你的数据和系统。1. 问题诊断为什么是“Recovering Journal”在深入操作之前我们得先弄明白屏幕上那几行字到底在说什么。这能帮你判断问题的严重程度并理解后续每一步操作的意义而不是机械地照搬命令。当你看到recovering journal时你的系统正试图修复ext4文件系统的日志Journal。你可以把日志想象成文件系统的一个“事务备忘录”。每次你要写入、删除或修改文件时系统会先把要做的操作记录在这个“备忘录”里然后再实际执行。这样做的最大好处是如果操作中途系统突然崩溃比如断电重启后系统只需要检查这个“备忘录”就能知道哪些操作完成了哪些只做了一半从而快速地将文件系统恢复到一致、可用的状态避免数据错乱。这个过程就是Journaling日志功能。clean, xxx files, xxx blocks这行信息通常是文件系统检查fsck完成后输出的状态报告表明文件系统是“干净”的没有发现不一致的问题。理论上看到这个之后系统就应该正常启动了。那么问题出在哪“Recovering Journal”过程本身卡住了。这通常意味着日志区域本身在非正常关机中受损严重系统无法从中读取完整的事务记录来进行恢复。硬盘存在潜在的物理坏道恰好位于存放日志或关键元数据的区域。文件系统的超级块Superblock相当于文件系统的“目录总览”等关键元数据受损导致连读取日志的“地图”都找不到了。这种情况下系统会陷入一个死循环它知道要恢复日志但恢复过程本身无法完成。而网络上大量流传的“在GRUB启动参数添加nomodeset”方法主要是为了解决显卡驱动兼容性问题导致的黑屏对于真正的文件系统损坏它通常无效。这就是为什么很多朋友照做后问题依旧。注意在尝试任何修复操作前如果你有极其重要的数据在系统盘尤其是/home目录并且有条件强烈建议先使用Ubuntu安装U盘启动尝试挂载并备份数据。修复操作本身是安全的但任何对磁盘的写操作在极端情况下都有理论风险。2. 进入救援通道GRUB与Recovery Mode详解修复的第一步是进入一个能绕过正常启动流程、给你提供命令行操作权限的环境。这就是GRUB引导菜单和Recovery Mode的作用。GRUBGRand Unified Bootloader是大多数Linux系统的启动管理器。它在开机自检POST之后、加载操作系统之前运行。它的主要任务就是让你选择要启动哪个系统或内核。对于我们的救援任务我们需要利用它进入Recovery Mode。如何触发GRUB菜单这因电脑而异但最常见的方法是在开机后主板Logo消失、屏幕变黑或出现点状图案时立即长按Shift键对于传统BIOS启动或长按Esc键对于UEFI启动的许多系统。如果没反应可以尝试交替或同时按这两个键。成功的话你会看到一个蓝底或黑底的菜单列出“Ubuntu”、“Ubuntu高级选项”等条目。进入GRUB菜单后用上下箭头键选择“Ubuntu高级选项”回车。你会进入一个子菜单里面列出了所有已安装的内核版本每个版本通常对应两个条目普通启动和恢复模式启动。它们看起来像这样Ubuntu 使用 Linux 5.15.0-91-generic Ubuntu 使用 Linux 5.15.0-91-generic (recovery mode)选择带有“(recovery mode)”后缀的那一行回车。系统会加载一个精简的内核并直接进入Recovery Mode的菜单界面。Recovery Mode菜单导航恢复模式菜单提供了几个安全的入口点我们主要用到其中两个fsck- 检查文件系统这是一个自动化的文件系统检查与修复工具。它会尝试自动修复发现的问题是我们首选的“一键修复”方案。root- 以root权限进入命令行这会给你一个拥有最高权限#提示符的终端。当fsck菜单项无法解决问题或你需要更精细的操作时就选这个。提示在Recovery Mode菜单中由于图形驱动未加载你通常只能使用键盘的Tab键切换选项用上下箭头键移动光标用回车键确认选择。鼠标是无法使用的。3. 核心修复操作使用fsck工具手动修复文件系统如果通过菜单中的fsck选项运行后问题依旧我们就需要进入root命令行进行手动、更深入的检查。这才是解决“recovering journal”问题的关键所在。首先在Recovery Mode菜单选择root选项回车。系统会提示你按回车键进入维护模式并最终给你一个root命令行提示符通常是#。在这个命令行里文件系统默认是以只读read-only方式挂载的。这意味着你可以查看文件但不能修改。为了运行修复工具我们通常需要以读写方式重新挂载根文件系统。但更标准的做法是直接对未挂载或只读挂载的分区运行修复工具。第一步确定需要修复的分区你需要知道你的Ubuntu系统安装在哪个磁盘分区上。在命令行中输入lsblk -f或者blkid这两个命令会列出所有磁盘和分区。你需要找到你的系统根分区/。通常它会是ext4文件系统类型并且挂载点为/在Recovery Mode下可能显示为/root或没有挂载点。记下它的设备名常见格式如/dev/sda1、/dev/sda2、/dev/nvme0n1p2等。假设我们的系统根分区是/dev/sda2。第二步运行文件系统检查与修复关键命令fsckfile system check登场。对于ext4文件系统我们使用fsck.ext4。为了强制检查即使文件系统标记为“干净”的分区并自动修复错误我们使用-f强制和-y对所有问题自动回答“yes”参数。在root命令行中输入fsck -f -y /dev/sda2请将/dev/sda2替换为你实际查到的设备名。命令执行过程解析fsck会首先检查文件系统的超级块。接着会检查索引节点inode表、目录结构、文件数据块的一致性。对于日志文件系统如ext4它也会处理日志区域。如果发现损坏的日志它会尝试重建或清除它。-y参数让它自动处理所有询问例如“清除损坏的inode吗”、“修复目录大小不一致吗”。这对于无人值守的修复是必要的。这个过程可能会持续几分钟到几十分钟取决于分区大小和损坏程度。屏幕上会滚动大量信息显示检查的各个阶段和修复的操作。你可能会看到类似下面的输出Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/sda2: ***** FILE SYSTEM WAS MODIFIED ***** /dev/sda2: 123456/7890120 files (0.1% non-contiguous), 987654321/1572864000 blocks最后一行显示文件数量和使用块数并且FILE SYSTEM WAS MODIFIED这条信息非常重要它意味着fsck确实发现并修复了问题。第三步处理可能出现的特殊情况如果fsck报告“文件系统已挂载”这说明根分区可能被以读写方式挂载了。在Recovery Mode的root环境下可以尝试先将其重新以只读方式挂载mount -o remount,ro /然后再运行fsck。如果不行你可能需要参考下一节关于使用Live USB的内容。如果fsck中途卡住很久在某个阶段尤其是Pass 1或Pass 5长时间不动可能是遇到了严重的坏道。你可以尝试使用-c参数让fsck同时检查坏块但这会极大延长检查时间。如果等待超过半小时仍无进展可以考虑强制重启按CtrlAltDel并尝试其他方法如使用Live USB。修复完成后怎么办当fsck成功完成并显示文件系统信息后输入reboot命令重启电脑。此时系统应该能正常通过启动过程不再卡在“recovering journal”。4. 进阶救援当Recovery Mode也失效时有些情况下损坏可能比较严重导致系统无法进入本地的Recovery Mode或者在上面运行fsck时遇到无法解决的错误例如提示无法锁定设备或超级块损坏。别担心我们还有终极武器Ubuntu Live USB安装U盘。你需要另一台能上网的电脑制作一个与你现在系统版本相同或更新的Ubuntu安装U盘。用这个U盘启动你的故障电脑。从Live USB启动并修复在BIOS/UEFI中设置从U盘启动进入Ubuntu安装程序的“试用Ubuntu”模式。进入桌面后打开终端CtrlAltT。同样先用lsblk或sudo fdisk -l确认你的系统根分区设备名比如/dev/sda2。务必仔细核对不要选错由于分区未被系统挂载我们可以直接对其操作。首先尝试卸载如果被自动挂载了sudo umount /dev/sda2运行更彻底的fsck。在Live环境中你需要使用sudosudo fsck -f -y -v /dev/sda2这里加了-v详细参数让你能看到更多过程信息。应对超级块损坏如果fsck一开始就报错说找不到有效的超级块说明备份超级块也受损了。ext4文件系统在创建时会生成多个超级块备份。我们可以尝试指定一个备份超级块来修复sudo fsck -b 32768 -y /dev/sda2这里的-b 32768指定使用位于32768号块的备份超级块这是一个常见的备份位置。如果不行可以尝试其他块如8193,16384,24576等。你可以用dumpe2fs /dev/sda2 | grep -i superblock命令在Live环境里先sudo apt install e2fsprogs来查看所有备份超级块的位置。修复后的收尾工作与数据备份在Live USB中成功运行fsck并重启进入原系统后系统很可能已经恢复正常。但为了确保万无一失并防止问题再次发生我建议你做以下几件事全面检查磁盘健康状态安装smartmontools来检查硬盘的S.M.A.R.T.数据这能预警物理故障。sudo apt update sudo apt install smartmontools sudo smartctl -a /dev/sda | less重点关注Reallocated_Sector_Ct重映射扇区数、Current_Pending_Sector当前待处理扇区等属性值如果RAW值很高说明硬盘可能有物理坏道应考虑更换硬盘并迁移数据。配置定期自动文件系统检查对于ext4文件系统系统默认会在挂载计数达到一定值或一定时间后自动触发fsck。你可以手动调整或查看这些设置sudo tune2fs -c 30 /dev/sda2 # 每挂载30次后检查谨慎使用频繁检查影响体验 sudo tune2fs -l /dev/sda2 | grep -E (Maximum mount count|Check interval)更实用的做法是依靠日志功能并养成良好的关机习惯。建立有效的数据备份习惯这次事件是一个警示。对于个人用户可以将/home目录定期同步到外部硬盘或云存储。对于服务器应实施完整的备份策略。一个简单的本地备份脚本示例#!/bin/bash BACKUP_SRC/home /etc /var/www # 要备份的目录 BACKUP_DEST/mnt/backup_drive DATE$(date %Y%m%d_%H%M%S) sudo tar -czpf $BACKUP_DEST/backup_$DATE.tar.gz $BACKUP_SRC echo Backup completed on $DATE将这个脚本设为每周定时任务cron job。5. 防患于未然避免“Recovering Journal”的最佳实践修复系统固然重要但更好的策略是避免问题发生。结合我管理多台开发机和家庭服务器的经验以下几点能极大降低你遇到此类启动故障的概率1. 优雅地关机与重启永远避免直接按电源键强制关机。在终端中使用sudo shutdown -h now # 立即关机 sudo reboot # 立即重启在图形界面使用系统菜单中的关机/重启选项。对于服务器确保有可靠的UPS不间断电源应对意外断电。2. 保持系统更新但谨慎对待内核与驱动更新定期sudo apt update sudo apt upgrade可以获取安全补丁和错误修复。但内核更新和专有显卡驱动如NVIDIA更新有时会引入兼容性问题。更新后如果出现黑屏、卡LOGO可以尝试在GRUB菜单选择上一个老版本内核启动。对于NVIDIA驱动建议使用Ubuntu附加驱动管理器提供的版本而非直接从官网下载最新版。3. 为根文件系统预留充足空间根分区/空间耗尽会导致各种诡异问题包括启动失败。定期用df -h检查磁盘使用情况。建议根分区至少分配50GB以上空间。将/home分到独立的大分区是个好习惯。4. 理解并善用文件系统特性Ext4的默认设置是合理的默认启用日志has_journal这能在断电后快速恢复。不要轻易禁用它。考虑更健壮的文件系统对于数据非常重要的服务器可以考虑使用ZFS或Btrfs。它们提供了更强大的数据完整性校验、快照和自修复功能如ZFS的scrub。当然这需要更多的学习成本。5. 维护一个可用的救援环境在你的工具箱里常备一个最新版的Ubuntu安装U盘。它不仅用于安装系统更是最强大的救援工具。你还可以在U盘里放一些常用的诊断脚本和工具包。对于服务器确保你知道如何通过IPMI、iDRAC等带外管理工具挂载虚拟光驱进行远程救援。说到底Linux系统是强大且可修复的。遇到“recovering journal”这类问题与其慌张地重装系统不如把它看作一次深入了解系统底层运作的机会。掌握从GRUB到fsck的这一套排查流程你不仅解决了眼前的问题更获得了一种应对未来更多未知故障的能力和信心。我的几台常年不关机的开发服务器也偶尔会因为机房波动遇到类似情况每次都是靠这套方法稳稳地恢复过来。记住在命令行里解决问题的过程本身就是Linux精髓的一部分。