一、问题核心总结
本次故障由系统磁盘(NVMe 硬盘)100% 爆满引发,连带触发两个连锁问题:
- 文件系统损坏,GRUB 引导配置丢失,开机直接进入 GRUB 命令行模式;
- 误删 Ubuntu 22.04 分区后,GRUB 无法正常加载,最终卡在
initramfs紧急 shell 及 GRUB 命令行。核心修复逻辑:先修复文件系统并释放空间 → 手动引导进入系统 → 重装并配置 GRUB 实现双系统正常引导。
二、紧急修复流程(按顺序执行)
阶段 1:进入 GRUB 命令行,手动引导系统
1. 识别根分区
在 grub> 提示符下执行:
ls # 列出所有硬盘及分区
# 示例输出:(proc) (memdisk) (hd0) (hd0,gpt1) (hd0,gpt3) (hd0,gpt7)
# 逐个尝试查看分区内容,找到 Linux 根分区(包含 bin/boot/etc 等目录)
ls (hd0,gpt7)/ # 替换为实际分区号,成功则确认根分区为 (hd0,gpt7)
2. 确认 NVMe 设备对应关系
你的硬盘为 NVMe 协议,设备名对应关系:
- GRUB 中
(hd0,gpt7)→ 系统中/dev/nvme0n1p7
3. 加载内核与 initrd 引导
# 设置根分区
set root=(hd0,gpt7)
# 加载最新内核(替换为实际版本)
linux /boot/vmlinuz-6.17.0-20-generic root=/dev/nvme0n1p7 ro
# 加载 initrd 镜像
initrd /boot/initrd.img-6.17.0-20-generic
# 启动系统
boot
阶段 2:修复文件系统并释放空间(卡在 initramfs 时执行)
若引导后进入 initramfs 紧急 shell,按以下步骤操作:
1. 修复文件系统
# 强制检查并修复 NVMe 根分区
fsck -f /dev/nvme0n1p7
# 执行中遇到提示,全部输入 y 确认修复
-
挂载根分区
mount /dev/nvme0n1p7 /root # 挂载修复后的根分区
-
释放核心空间(删除大文件)
进入 chroot 环境
chroot /root
1. 删除占用文件
rm -rf /home/user/bigfiles/*
2. 退出 chroot
exit
阶段 3:重装并配置 GRUB(修复引导菜单)
进入 Ubuntu 24.04 系统后,执行以下命令修复双系统引导:
1. 重装 GRUB 到 EFI 分区
# 安装 GRUB 到 NVMe 硬盘(自动识别 EFI 分区,不会损坏 Windows)
sudo grub-install /dev/nvme0n1
# 输出 "Installation finished. No error reported." 即成功
-
生成 GRUB 配置(自动添加 Windows 启动项)
sudo update-grub
输出 "Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi" 即成功
三、关键问题与避坑指南
1. 常见报错及解决
| 报错现象 | 原因 | 解决方法 |
|---|---|---|
ALERT! /dev/sda7 does not exist |
硬盘为 NVMe 协议,设备名不是 /dev/sda,而是 /dev/nvme0n1pX |
引导时使用 UUID 而非设备名,或修正设备名为 NVMe 对应路径 |
grub-install 报错 |
EFI 分区未正确挂载或 GRUB 包损坏 | 重新安装 GRUB 包:sudo apt install --reinstall grub-efi-amd64 |
| Windows 未出现在引导菜单 | os-prober 未开启或扫描失败 |
执行 sudo apt install os-prober,再重新运行 sudo update-grub |
2. 核心避坑要点
-
严禁误删系统分区:删除其他系统分区前,务必确认当前 GRUB 引导依赖的分区(如本次 22.04 分区被删后 GRUB 失效);
-
磁盘爆满优先清理缓存 :优先删除训练日志、 离线缓存、docker 镜像等非系统核心文件,避免执行
rm -rf /等高危命令; -
GRUB 引导优先用 UUID :设备名(如
/dev/sda7)会随硬盘插拔、BIOS 配置变化,UUID 唯一且稳定,避免引导失败; -
wandb 离线模式轻量化配置:仅记录损失,不存模型 / 媒体,从源头避免爆盘,配置如下:
import wandb
import os轻量化配置(仅记录数字,不占空间)
os.environ['WANDB_DISABLE_ARTIFACTS'] = '1' # 禁用模型 artifact 保存
os.environ['WANDB_DISABLE_MEDIA'] = '1' # 禁用媒体文件保存
os.environ['WANDB_SAVE_CODE'] = 'False' # 不保存代码wandb.init(
project="your-project",
mode="offline", # 离线模式
settings=wandb.Settings(
disable_viewer=True, # 关闭本地网页面板
enable_logging=False, # 禁用冗余日志
silent=True # 安静模式
)
)
四、后续预防措施
- 磁盘空间监控 :定期执行
df -h /检查系统盘,当使用率超过 80% 时立即清理; - 训练文件存储规范 :将训练日志、checkpoint 存储到数据盘(非系统盘),并配置 checkpoint 保留数量(如
--save_total_limit 5); - GRUB 备份 :修复成功后,备份 EFI 分区内容:
sudo cp -r /boot/efi/EFI ~/efi_backup,便于后续快速恢复; - 双系统引导备份 :备份 GRUB 配置文件:
sudo cp /etc/default/grub ~/grub_backup,并记录当前 GRUB 配置。
五、最终验证
重启电脑后,确认 GRUB 引导菜单包含 Ubuntu 24.04 和 Windows Boot Manager 两个选项,分别进入系统测试,确认功能正常、磁盘空间充足,即修复完成。