Homelab NVMe 修复记录
Ciallo!
0x00 事件背景
几个月前,我给服务器加了一个机箱。
果然,不出 3 天,岁数跟我一样大的电源炸了。(boom
这台机器使用技嘉 GA-6PXSVT 服务器主板,估计是主板救了数据一命。
事后我马上把主板电池扣了,便引发了这一晚上的折腾。
0x01 服务器背景
这台 Homelab 原生不支持 NVMe 启动。为了使用 NVMe 固态硬盘启动 Ubuntu,之前对 BIOS 进行了修改,注入了 NVMe 驱动模块。
修改版 BIOS 刷入后稳定运行了几个月,Ubuntu 启动正常。
0x02 神秘现象
扣电池后开机,BIOS 启动菜单中 Ubuntu 启动项消失。进入 EFI Shell,执行 map -r 只能看到 blk 设备。
FirPE 启动!正常识别 NVMe 硬盘,分区和文件都在。这体现了硬盘硬件正常,问题的实际是出在主板固件层面。清 CMOS 抹掉了 NVRAM 中的 UEFI 启动项,同时重置了 BIOS 设置,有利于修改版 BIOS 的 NVMe 驱动模块未被加载。
0x03 排查过程
进入 BIOS,把 CSM Support 设为 Disabled。
保存重启后,EFI Shell 中依然只有 blk。
怀疑 BIOS 被恢复,于是用 EFI Shell 重新刷写修改版 BIOS。
0x04 刷写 BIOS
这块主板 BIOS 为 AMI Aptio 4,不是 Aptio V,我从网上下载了对应的程序。以前是使用 EFI Shell 进行 BIOS 刷写的,过于麻烦。这次就直接在 FirPE 中进行了。
解压好 AFUWINGUIx64.exe,直接点击储存提取 BIOS,你也可以在官网下载新的固件(上一次就是那么干的)。吃大白饭的技嘉把那个页面重定向到了 cn,不知道何意味。
刷写工具为 UEFITool,注意不是 NE 版本的(NE 版本没有修改功能),Releases 翻到后面有 0.28.0 版本。
下载后在上面找到 Search… 选项,切换到 Text 寻找 CSMCORE,点击下方出现的文字,接着往下滚动到一堆编码下面,找到 Volume Free Space。
在最后一个模块(Volume Free Space 的上一个)上右键,选择 Insert after...,插入你在网上下的 NvmExpressDxe.ffs 文件。
改完保存。再次运行 AFUWINGUIx64.exe,点击 “打开” 选择修改后的 .rom 文件。
切换到 “Setup” 选项卡,勾选 Program all Blocks 和 Do Not Check ROM ID。(这句话是 AI Generated,中文译名是什么我不记得了
点击 “刷新” 开始刷写,过程中切勿断电或中断操作。完成后按提示重启系统即可。 刷完后症状依旧,BIOS 中仍找不到 NVMe 启动项。
啊啊啊啊啊,为什么!
0x05 刷写引导
用 FirPE 启动,打开 DiskGenius,确认 EFI 分区中 \EFI\ubuntu\shimx64.efi 存在。然后使用 BOOTICE 添加 UEFI 启动项,保存后重启。BIOS 中依然没有变化。
从 Ubuntu 官网下载 ISO 镜像,在另一台电脑上使用 Rufus 制作启动盘。
插入 U 盘,打开 Rufus,选择下载的 ISO 文件,分区类型选择 GPT,目标系统选择 UEFI,点击开始写入。
将 U 盘插入主板的后置 USB 接口。
开机,在看到技嘉 Logo 时连续敲击 F2 键,调出启动菜单。
在启动菜单中选择带 UEFI 前缀的 U 盘设备。
进入 GRUB 菜单后选择 Try or Install Ubuntu,接着在选择语言的界面上选择右上角的 Help,并选择 Shell。
恭喜你靠我的邪修方法进入了终端!
安装 efibootmgr,于是联网,输入
apt update
apt install efibootmgr
(by deepseek) 如果 Live 环境无法联网,可以在另一台电脑上从 https://packages.ubuntu.com 下载对应版本的 efibootmgr deb 包,用 U 盘拷贝到 Live 系统中,然后执行以下命令安装。
sudo dpkg -i efibootmgr_*.deb
查看你的硬盘分区,输入
lsblk
找到 NVMe 硬盘,例如 /dev/nvme0n1。找到它的 EFI 系统分区,通常是第一个分区,例如 /dev/nvme0n1p1,文件系统类型为 vfat,分区类型为 EFI System。
执行以下命令,将 Ubuntu 启动项写入 NVRAM。
efibootmgr -c -d /dev/nvme0n1 -p 1 -L Ubuntu -l "\EFI\ubuntu\shimx64.efi"
参数说明:
- -c 创建新启动项
- -d 指定硬盘设备
- -p 指定分区号
- -L 指定启动项显示名称
- -l 指定 EFI 引导文件路径,路径中的反斜杠必须保留
执行以下命令查看当前所有 UEFI 启动项。
sudo efibootmgr -v
如果输出中出现了 Ubuntu 条目,并且指向 \EFI\ubuntu\shimx64.efi,说明创建成功。
关闭 Live 系统,重启电脑。开机按 Del 或 F2 进入 BIOS。在 Boot 菜单中,将 Ubuntu 设为第一启动项。保存并退出。
系统正常进入 GRUB,Ubuntu 启动成功喵!
0x06 后记
滚木。
Homelab NVMe 修复记录 © 2026 by Purrbyte is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International
这是我第二次发博客哦,希望大家多多支持喵!