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 后重启,再也进不去桌面


症状

重启后流程如下:

  1. 显示 NVIDIA logo(正常)
  2. 黑屏,只有鼠标光标,停在这里不动
  3. 无法进入 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} 这个包存在且已安装。