Ubuntu 18.04 Recovery模式实战:从空间告急到系统清理
1. 当Ubuntu开始喘不过气识别/boot分区危机的征兆那天我正在赶一个项目 deadline突然发现系统更新死活装不上去终端里不断弹出没有足够磁盘空间的警告。打开文件管理器一看/boot分区已经亮起了刺眼的红色警告——使用率高达95%这种经历相信很多Ubuntu老用户都不陌生。不同于Windows系统Linux特别是Ubuntu在长期使用后/boot分区就像个从不打扫的储藏室旧内核文件会像过期罐头一样堆积如山。三个典型症状帮你快速判断是否遇到同样问题系统更新失败并提示No space left on device开机时GRUB菜单出现多个内核选项通常超过3个执行df -h命令显示/boot分区使用率超过80%我常用的诊断组合拳是这样的# 查看分区使用情况 df -h | grep boot # 检查当前内核版本 uname -r # 列出所有已安装内核 dpkg -l | grep linux-image最近一次帮同事处理这个问题时发现他的系统竟然堆积了5个旧内核占用了近200MB空间。这就像手机里同时安装5个不同版本的微信每个版本都在占用存储空间。Ubuntu默认会保留旧内核以防新内核出现问题但这个贴心设计往往成为空间危机的元凶。2. 救命稻草Recovery模式的正确打开方式当系统已经卡到连终端都打不开时Recovery模式就成了最后的救命稻草。不过第一次使用时我完全被那个黑白界面吓到了——这简直像是回到了DOS时代。实际上掌握正确方法后这个看似简陋的工具箱能解决80%的系统紧急状况。完整进入Recovery模式的路线图重启电脑在BIOS界面消失后立即长按Shift键UEFI系统可能需要按Esc在GRUB菜单选择Advanced options for Ubuntu找到带有(recovery mode)字样的内核版本建议选最新版你会看到一个包含9个选项的救援菜单这里有个容易踩的坑很多教程直接让你选root进入命令行但如果是网络相关的问题我强烈建议先选择network启用网络连接。有次我折腾了半天才发现问题出在没联网导致apt命令无法使用。各选项的实战心得clean相当于系统级的磁盘清理效果有限但安全dpkg修复破损软件包的神器更新失败时必试fsck我的文件系统救星解决过多次异常关机导致的故障root功能最强大的终端模式需要一定命令行基础3. 精准手术旧内核清理全攻略进入Recovery模式只是开始真正的技术活在于如何安全地清理旧内核。有次我手滑删错了内核结果系统直接无法启动不得不重装系统。血的教训告诉我内核清理就像拆炸弹必须搞清楚每根线的作用。安全清理四步法3.1 建立系统快照在root模式下先挂载硬盘为可写状态mount -o remount,rw /然后立即创建系统快照# 安装timeshift如果尚未安装 apt install timeshift -y # 创建快照 timeshift --create --comments Before kernel cleanup3.2 内核版本侦探工作# 查看当前使用中的内核 uname -r # 列出所有已安装内核 dpkg --list linux-image* | grep ^ii # 查看/boot目录详细占用 du -sh /boot/*3.3 安全卸载旧内核假设当前使用中的内核是5.4.0-80-generic要删除5.4.0-77-generic# 卸载旧内核镜像 apt remove linux-image-5.4.0-77-generic # 连带删除相关模块 apt autoremove # 彻底清理配置谨慎使用 dpkg -P linux-image-5.4.0-77-generic3.4 深度清理残留文件手动清理残留的initrd和vmlinuz文件# 查看/boot目录 ls -lh /boot # 删除特定版本的文件示例 rm /boot/vmlinuz-5.4.0-77-generic rm /boot/initrd.img-5.4.0-77-generic rm /boot/System.map-5.4.0-77-generic4. 预防胜于治疗构建/boot分区健康生态经历过三次/boot分区危机后我总结出一套预防方案。现在我的Ubuntu已经连续稳定运行两年多再没出现过空间告急的情况。长效维护机制4.1 智能自动清理配置编辑apt配置文件sudo nano /etc/apt/apt.conf.d/01autoremove添加以下内容APT::Periodic::AutocleanInterval 7; APT::Periodic::Unattended-Upgrade 1; APT::Periodic::Update-Package-Lists 1;4.2 内核保留策略调整修改grub配置只保留2个最新内核sudo nano /etc/default/grub找到并修改GRUB_DEFAULTsaved GRUB_SAVEDEFAULTtrue GRUB_DISABLE_SUBMENUy更新grubupdate-grub4.3 监控预警系统创建自动监控脚本#!/bin/bash BOOT_USAGE$(df -h /boot | awk NR2 {print $5} | tr -d %) if [ $BOOT_USAGE -gt 70 ]; then echo Warning: /boot usage is at ${BOOT_USAGE}% | mail -s Boot Partition Alert youremail.com fi设为每周执行的cron任务crontab -e添加0 0 * * 0 /path/to/your/script.sh5. 当清理无效时高级救援方案有次遇到个极端案例用户/boot分区只有100MB即使删除所有旧内核也不够用。这时就需要更激进的解决方案。分区扩容三板斧5.1 使用GParted调整分区从Live USB启动安装gpartedsudo apt install gparted从相邻分区划出空间给/boot5.2 符号链接大法如果无法调整分区可以将/boot内容迁移到其他分区# 在其他分区创建boot_backup sudo mkdir /new_partition/boot_backup # 复制现有文件 sudo cp -a /boot/* /new_partition/boot_backup/ # 重命名原boot目录 sudo mv /boot /boot_old # 创建符号链接 sudo ln -s /new_partition/boot_backup /boot5.3 重建initramfs清理后如果出现启动问题可能需要重建initramfs# 进入Recovery模式的root mount -o remount,rw / update-initramfs -u -k all update-grub记得第一次成功解决/boot空间问题时那种成就感不亚于修好一台古董钟表。现在的我会定期检查/boot分区就像定期清理电脑风扇一样把问题扼杀在萌芽状态。Ubuntu的Recovery模式虽然界面复古但确实是名副其实的系统急诊室掌握它的使用技巧就能在系统危机面前保持从容。