DGX Spark reboot 后黑屏无法进入桌面 — 完整踩坑记录
apt upgrade 导致内核和 NVIDIA 驱动模块版本不匹配,从黑屏到修复的全过程
DGX Spark reboot 后黑屏无法进入桌面 — 完整踩坑记录
环境:NVIDIA DGX Spark Founders Edition,DGX OS 7.5.0,Linux 6.17.0-1021-nvidia,aarch64
起因:多次执行sudo apt update && sudo apt upgrade后重启,再也进不去桌面
症状
重启后流程如下:
- 显示 NVIDIA logo(正常)
- 黑屏,只有鼠标光标,停在这里不动
- 无法进入 Ubuntu 桌面
根本原因
apt upgrade 将内核从 6.11 升级到了 6.17,但 NVIDIA 主驱动模块包(linux-modules-nvidia-580-open-*)只为旧内核 6.11 编译,没有跟着升级到 6.17。
导致链式崩溃:
nvidia 主驱动模块在 6.17 内核下缺失
→ /dev/nvidia* 设备文件不存在
→ nvidia-persistenced 启动失败("Failed to query NVIDIA devices")
→ Wayland session 无法初始化
→ GDM 反复重试直到放弃("maximum number of X display failures reached")
→ 黑屏,只剩鼠标光标
完整排查过程
第一步:尝试进入 GRUB Recovery Mode
重启后在 NVIDIA logo 出现的瞬间狂按 Shift 键,进入 GRUB 菜单:
注意:
Esc/Del是进 UEFI/BIOS,进 GRUB 要按Shift,两者不同。
Advanced options for DGX OS GNU/Linux
→ DGX OS GNU/Linux, with Linux 6.17.0-1021-nvidia (recovery mode)
进入 Recovery Menu 后选 root,进入 root shell。
检查磁盘(排除磁盘满导致黑屏的可能):
df -h
# 结果:/ 只用了 15%,/dev/nvme0n1p2 还有 3.0T 空闲,排除磁盘满
尝试重启 GDM:
mount -o remount,rw /
systemctl restart gdm
# 无报错,但 reboot 后依然黑屏
第二步:尝试重装 nvidia-fs-dkms(走进死路)
查 GDM 日志发现 X server 崩溃,进一步发现 nvidia-persistenced 报错 Failed to query NVIDIA devices。
尝试重装驱动相关包:
sudo apt install --reinstall nvidia-fs-dkms
结果:进度条卡在 90% 一动不动,等了一晚上没反应。
无奈之下长按电源键强制关机。事后分析,这条路走不通,因为 nvidia-fs 不是根本问题,主驱动模块才是。
第三步:发现 TTY 救命后路
重启后再次进入黑屏状态,这时候发现:黑屏有光标 ≠ 系统崩溃,内核其实已经正常跑起来了,只是图形层挂了。
在黑屏状态下直接按:
Ctrl + Alt + F2
屏幕出现登录提示,正常输入用户名密码,成功登入 TTY。
系统完全正常,磁盘、内存、网络全都在线:
Usage of /: 13.7% of 3.67TB
Memory usage: 13%
IPv4 address: 192.168.3.69
第四步:开启 SSH,从 Mac 远程操作
TTY 下打字不方便,先把 SSH 开起来:
sudo systemctl enable ssh
sudo systemctl start ssh
然后在 Mac 上:
ssh user@192.168.3.69
SSH 连上之后排查效率天壤之别,可以直接复制粘贴命令,不用对着屏幕一个字一个字敲。强烈建议第一时间开 SSH。
第五步:定位根本原因
查 GDM 日志:
journalctl -u gdm --no-pager -n 50
关键报错:
GdmLocalDisplayFactory: maximum number of X display failures reached: check X server log for errors
GdmDisplay: Session never registered, failing
on_display_added: assertion 'GDM_IS_REMOTE_DISPLAY (display)' failed
查 nvidia-persistenced:
sudo systemctl status nvidia-persistenced
# Active: failed
# Failed to query NVIDIA devices. Please ensure that the NVIDIA device files exist.
确认设备文件根本不存在:
ls /dev/nvidia*
# 没有那个文件或目录
sudo modprobe nvidia
# FATAL: Module nvidia not found in directory /lib/modules/6.17.0-1021-nvidia
nvidia 主驱动模块在 6.17 内核下根本不存在。
查 dkms 状态:
sudo dkms status
# nvidia-fs/2.29.4: added
# 注意是 added,不是 installed,说明之前的编译没有完成
查已安装包,找到关键线索:
dpkg -l | grep nvidia | grep -v "^rc"
发现:
linux-modules-nvidia-580-open-nvidia-hwe-24.04 6.11.0-1014.14+2
主驱动模块只为 6.11 内核编译,当前跑的是 6.17 内核,完全对不上。
确认 6.17 内核的 dkms 目录:
ls /lib/modules/6.17.0-1021-nvidia/updates/dkms/
# 只有 nvidia-fs.ko.zst,没有 nvidia.ko
第六步:修复
先处理被强制关机中断的 dpkg:
sudo dpkg --configure -a
安装 6.17 内核对应的 nvidia 驱动模块:
sudo apt install linux-modules-nvidia-580-open-6.17.0-1021-nvidia
apt 自动处理了所有依赖,将驱动从 580.82 升级到 580.159,并自动重建 initramfs、更新 grub。整个过程下载了约 294 MB,耗时约 13 秒。
重启:
sudo reboot
✅ 桌面正常启动,问题解决。
教训
不要在 DGX Spark 上裸跑 apt upgrade。
DGX OS 的内核、NVIDIA 驱动模块、nvidia-fs 等组件版本绑定非常紧,Ubuntu 官方源的升级节奏和 NVIDIA 不一定同步,很容易出现内核升了但对应驱动模块没跟上的情况。
正确的更新方式应该走 NVIDIA 官方的 DGX 更新机制,或者在升级前明确确认 linux-modules-nvidia-* 会跟着一起升级。
快速参考
进不了桌面时的后路
| 情况 | 操作 |
|---|---|
| 黑屏有光标 | Ctrl + Alt + F2 切 TTY,直接登录 |
| 需要远程操作 | TTY 登录后 sudo systemctl start ssh,从别的电脑 SSH 进来 |
| 需要 root shell | 重启 → 狂按 Shift → GRUB → Advanced options → recovery mode → root |
| 最后手段(数据全清) | USB 恢复镜像,参考官方文档 docs.nvidia.com/dgx/dgx-spark/system-recovery.html |
本次修复用到的关键命令
# 查磁盘使用
df -h
# 查 GDM 日志
journalctl -u gdm --no-pager -n 50
# 查 nvidia-persistenced 状态
sudo systemctl status nvidia-persistenced
# 确认 nvidia 设备文件是否存在
ls /dev/nvidia*
# 查 dkms 状态
sudo dkms status
# 查已安装的 nvidia 相关包
dpkg -l | grep nvidia | grep -v "^rc"
# 修复中断的 dpkg
sudo dpkg --configure -a
# 安装对应内核的 nvidia 驱动模块(根据实际内核版本替换)
sudo apt install linux-modules-nvidia-580-open-6.17.0-1021-nvidia
如何确认当前内核版本
uname -r
# 6.17.0-1021-nvidia
确保 linux-modules-nvidia-580-open-{uname -r} 这个包存在且已安装。