NVIDIA 外置显卡(eGPU)在 Ubuntu 22.04 下无法点亮外接显示器的完整修复方案

张开发
2026/7/1 22:51:55 15 分钟阅读
NVIDIA 外置显卡(eGPU)在 Ubuntu 22.04 下无法点亮外接显示器的完整修复方案
文档版本v3.1适用环境Ubuntu 22.04 / NVIDIA 专有驱动 R575 系列 / Thunderbolt雷电4 eGPU状态✅ 已验证稳定连续多次重启测试通过一、问题描述硬件拓扑说明本文中的 PCI 地址如01:00.0、05:00.0和 Thunderbolt 路径如0-1来自一台实际机器仅作为示例。你自己的机器上这些编号可能不同请以本机输出为准。笔记本某 12 代 Intel 平台笔记本内置 GPUIntel Alder Lake-P 核显PCI00:02.0NVIDIA RTX 3060 LaptopPCI01:00.0外置 GPUNVIDIA RTX 4080 Laptop通过雷电 Thunderbolt eGPU 外置显卡拓展坞PCI05:00.0显示器拓扑笔记本内屏外屏 A接笔记本 HDMI外屏 B接 eGPU HDMI故障现象系统内屏笔记本 HDMI 外屏eGPU HDMI 外屏Windows✅ 正常✅ 正常✅ 正常Ubuntu Wayland✅ 正常⚠️ 黑屏只有鼠标❌ 不亮Ubuntu Xorg修复前✅ 正常✅ 正常❌ 不亮nvidia-smi能看到两张 NVIDIA 卡PyTorch CUDA 在两张卡上都能跑。只有 eGPU 的显示输出有问题。二、根本原因分析核心问题nvidia_drm 在 eGPU 上线之前就完成了 KMS 初始化本台机器Ubuntu 22.04 的 NVIDIA 专有驱动会在两个地方配置 nvidia_drm在系统启动早期就启用 KMS modesetGRUB 内核启动参数/etc/default/grub里有GRUB_CMDLINE_LINUX_DEFAULTquiet splash nvidia-drm.modeset1modprobe 配置/etc/modprobe.d/nvidia-graphics-drivers-kms.conf里有options nvidia-drm modeset1这两个配置让nvidia_drm在内核启动早期就启用 KMS。实测的事件序列journalctl 证据kernel: Command line: ... nvidia-drm.modeset1 vt.handoff7 kernel: NVRM: loading NVIDIA UNIX x86_64 Kernel Module kernel: nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver kernel: [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver kernel: nvidia 0000:05:00.0: enabling device ← eGPU 1秒后才上线 kernel: [drm] Initialized nvidia-drm ... for 0000:01:00.0 on minor 2 ↑ 只为内置 GPU 初始化实测观察nvidia_drm 在 eGPU 出现在 PCI 总线之前就完成了 DRM 初始化初始化时只看到内置 RTX 306001:00.0所以只为它建立了 DRM display node/dev/dri/by-path/里只有 01:00.0 节点没有 05:00.0后续 service 试图 reload nvidia 模块时rmmod nvidia_drm报错is in use至于 nvidia_drm 此时被什么进程或子系统持有、为什么 rmmod 卸不掉本次排查没有进一步定位具体机制。但通过排除法验证了一个有效的修复路径禁用 GRUB 和 modprobe 里的早期 modeset 启用让 service 里的modprobe nvidia_drm modeset1成为 KMS 的唯一启用入口eGPU 就能被正确纳入 DRM。次要问题Wayland 下 eGPU 屏黑屏在 Wayland 会话下即使 DRM node 修复后eGPU 屏依然黑屏鼠标可以移过去但没画面。换到 Xorg 会话后能正常显示。本次排查没有进一步定位 Wayland 下的具体原因。三、解决方案总览按修改顺序一共修改4 个地方 创建1 个 systemd service#文件/操作作用1/etc/default/grub关键删除nvidia-drm.modeset1内核参数2/etc/modprobe.d/nvidia-graphics-drivers-kms.conf关键注释options nvidia-drm modeset13/etc/systemd/system/egpu-fix.service开机后在合适时机加载 nvidia_drm modeset14/etc/X11/xorg.conf.d/10-nvidia-egpu.conf让 Xorg 接受 eGPU 作为显示输出源5登录界面右下角齿轮手动选择 “Ubuntu on Xorg”GDM 会记住偏好重要提示第 1 步和第 2 步是这次修复的核心。在没有这两步只有 service 的状态下实测某些重启能成功rmmod 报 “not currently loaded”modprobe 是首次加载eGPU 被纳入另一些重启失败rmmod 报 “is in use”modprobe 是 no-opeGPU 不被纳入行为不可复现。修改 GRUB 和 modprobe 之后行为变得稳定。四、具体配置配置 1删除 GRUB 里的 nvidia-drm.modeset1关键作用阻止内核在启动早期自动让 nvidia_drm 以 KMS 模式加载把 KMS 的启用时机交给我们自己控制。操作sudonano/etc/default/grub找到这一行GRUB_CMDLINE_LINUX_DEFAULTquiet splash nvidia-drm.modeset1改成GRUB_CMDLINE_LINUX_DEFAULTquiet splash更新 GRUBsudoupdate-grub副作用plymouth 启动动画在 NVIDIA 上的显示效果可能略有变化短暂闪烁或回退到基础 framebuffer无害。配置 2注释 modprobe.d 里的 nvidia-drm modeset1关键文件路径/etc/modprobe.d/nvidia-graphics-drivers-kms.conf作用阻止nvidia_drm在被任何路径加载依赖加载、initramfs、udev时自动启用 KMS。操作sudonano/etc/modprobe.d/nvidia-graphics-drivers-kms.conf找到options nvidia-drm modeset1前面加#注释掉# options nvidia-drm modeset1重建 initramfs因为这个文件被打包进了 initramfssudoupdate-initramfs-u配置 3egpu-fix.service文件路径/etc/systemd/system/egpu-fix.service作用开机时等 Thunderbolt 授权完 eGPU 后重新加载 NVIDIA 内核模块。因为配置 1 和 2 已经禁用了 nvidia_drm 的早期 KMS 启用service 里的modprobe nvidia_drm modeset1是 KMS 在本次启动中的第一次启用。实测在这个时机下nvidia_drm 能稳定地为两张 NVIDIA 卡包括 eGPU建立 DRM display node。运行时机在bolt.service之后、display-manager.servicegdm3之前。完整内容[Unit] DescriptionReload NVIDIA modules for Thunderbolt eGPU Wantsbolt.service Afterbolt.service Beforedisplay-manager.service [Service] Typeoneshot # 快速判断 TB 总线上有没有 eGPU 设备0-1 是 eGPU 的 sysfs 节点 # 没插 eGPU 时 ExecCondition 返回非零服务直接 skipped不浪费开机时间 ExecCondition/usr/bin/test -e /sys/bus/thunderbolt/devices/0-1 # 插了 eGPU 的话等它真正出现在 PCI 总线上最多等 20 秒 ExecStartPre/bin/bash -c for i in {1..40}; do lspci -d 10de: | grep -q 05:00.0 exit 0; sleep 0.5; done; exit 1 # 反依赖顺序卸载 4 个 NVIDIA 模块前导 - 表示失败也继续 ExecStart-/usr/sbin/rmmod nvidia_drm ExecStart-/usr/sbin/rmmod nvidia_modeset ExecStart-/usr/sbin/rmmod nvidia_uvm ExecStart-/usr/sbin/rmmod nvidia # 正依赖顺序重新加载显式开启 KMS ExecStart/usr/sbin/modprobe nvidia ExecStart/usr/sbin/modprobe nvidia_modeset ExecStart/usr/sbin/modprobe nvidia_uvm ExecStart/usr/sbin/modprobe nvidia_drm modeset1 TimeoutStartSec30 [Install] WantedBygraphical.target安装步骤sudonano/etc/systemd/system/egpu-fix.service# 粘贴上面的内容sudosystemd-analyze verify /etc/systemd/system/egpu-fix.servicesudosystemctl daemon-reloadsudosystemctlenableegpu-fix.service关键设计点WantsAfterbolt.serviceWants 管拉起After 管顺序Beforedisplay-manager.service必须在 gdm 启动前跑完否则 nvidia 模块会被 X 占用导致 rmmod 失败ExecCondition用/sys/bus/thunderbolt/devices/0-1判断 eGPU 是否插着不依赖 boltd 状态ExecStartPre轮询等待 eGPU 真正出现在 PCI 总线boltd 授权是异步的rmmod前导-某些模块可能没加载或不需要卸载失败不阻断后续没插 eGPU 时ExecCondition 失败 → 服务 skipped →Result: exec-condition正常状态不是错误关于0-1这个编号这是当前 eGPU 在 Thunderbolt 总线上的拓扑位置。如果将来换 eGPU 或换接口可能会变到时候用ls /sys/bus/thunderbolt/devices/看一下当前是什么。配置 410-nvidia-egpu.conf文件路径/etc/X11/xorg.conf.d/10-nvidia-egpu.conf作用告诉 NVIDIA Xorg 驱动允许把外置 GPU 作为显示输出源使用。NVIDIA 驱动默认不会为 eGPU 创建 X screen必须显式开启AllowExternalGpus。完整内容Section OutputClass Identifier nvidia MatchDriver nvidia-drm Driver nvidia Option AllowExternalGpus true ModulePath /usr/lib/x86_64-linux-gnu/nvidia/xorg EndSection安装sudonano/etc/X11/xorg.conf.d/10-nvidia-egpu.conf# 粘贴上面的内容配置 5选择 Xorg sessionWayland 在当前驱动下处理不好这套 eGPU 拓扑必须用 Xorg。保持/etc/gdm3/custom.conf默认WaylandEnabletrue或注释掉不要强制 false —— 实测改成 false 没有好处。做法在登录界面右下角点齿轮图标选择“Ubuntu on Xorg”登录一次。GDM 会把这个偏好记到/var/lib/AccountsService/users/用户名里下次开机默认就是 Xorg。验证echo$XDG_SESSION_TYPE# 必须是 x11关于 GDM 自动行为的补充说明基于本机实测在本机环境下观察到一个有趣现象即使/etc/gdm3/custom.conf里WaylandEnabletrue并且/var/lib/AccountsService/users/用户名里用户偏好写的是Sessionubuntu这指向 Wayland sessionGDM 实际启动的依然是 Xorg session登录界面也不显示 session 选择齿轮进入系统直接是 x11。按配置应该进 Wayland实际进 Xorg —— 三处状态互相矛盾。猜测是 gdm3 在检测到 NVIDIA 专有驱动后有内部的自动回退机制具体不是/run/udev/rules.d/61-gdm.rules这条路径那个文件不存在可能是 gdm3 二进制内部判断。这个自动回退是便利不是保证。如果未来某次nvidia-driver或gdm3升级之后这个机制失效行为会变成进系统后echo $XDG_SESSION_TYPE变成waylandeGPU 屏黑屏只有鼠标即使 DRM node 建好了届时主动强制 Xorg 的两个方法方法 A推荐最直接修改用户偏好sudonano/var/lib/AccountsService/users/$USER把Sessionubuntu改成Sessionubuntu-xorg保存重启。方法 B兜底在 GDM 配置里禁用 Waylandsudonano/etc/gdm3/custom.conf在[daemon]段下加或取消注释WaylandEnablefalse五、整体工作流程修复后1. BIOS/UEFI 启动 2. GRUB 加载内核cmdline 里没有 nvidia-drm.modeset1 3. 内核启动 → nvidia/nvidia_modeset/nvidia_drm 模块被加载 ★ 因为 modprobe.d 里的 modeset1 也被注释了 ★ nvidia_drm 加载时不启用 KMS ★ 这是和之前最关键的区别 4. systemd 启动各种服务 5. bolt.service 启动 6. boltd 授权 eGPU 7. eGPU 出现在 PCI 总线 (05:00.0) 和 sysfs (/sys/bus/thunderbolt/devices/0-1) 8. ★ egpu-fix.service 启动 ├─ ExecCondition: 检测到 0-1 存在 → 通过 ├─ ExecStartPre: 轮询等待 lspci 看到 05:00.0 ├─ rmmod nvidia 模块实测此时 rmmod 能成功 └─ modprobe nvidia_drm modeset1KMS 此时才被启用 → nvidia_drm 在 eGPU 已就位的状态下完成 DRM 初始化 → 两张 NVIDIA 卡都被纳入 → /dev/dri/by-path/ 出现 pci-0000:05:00.0-card ✅ 9. gdm3 启动 10. X session 启动GDM 选择 Xorg session 11. X server 读取 10-nvidia-egpu.conf → AllowExternalGpustrue 生效 → 把 eGPU 作为 PRIME provider 挂到主 X screen 12. 三屏全部点亮 六、验证命令清单修复完成后用这套命令确认所有部件都正常# 1. kernel command line 里没有 nvidia-drm.modesetcat/proc/cmdline# 期待BOOT_IMAGE... ro quiet splash vt.handoff7# 没有 nvidia-drm.modeset1# 2. session 类型echo$XDG_SESSION_TYPE# 期待x11# 3. egpu-fix service 状态systemctl status egpu-fix.service# 期待Active: inactive (dead)# rmmod 可能有 is not currently loaded 报错无害# 关键看 modprobe 这几行是 status0/SUCCESS# 4. DRM 节点必须有 05:00.0ls-l/dev/dri/by-path/# 期待看到三个 card# pci-0000:00:02.0-card (Intel)# pci-0000:01:00.0-card (3060)# pci-0000:05:00.0-card (4080 eGPU) ← 关键# 5. NVIDIA 卡识别nvidia-smi# 期待能看到两张卡3060 4080# 6. Thunderbolt 设备状态boltctl list# 期待eGPU status: authorized# 7. nvidia_drm 是否启用了 KMScat/sys/module/nvidia_drm/parameters/modeset# 期待Y七、eGPU 的两种工作模式与热插拔行为修复后的系统支持两种工作模式通过systemctl enable/disable egpu-fix.service 重启切换。两种模式对应不同的使用场景热插拔行为也不同。模式 A三屏显示模式默认启用方式sudosystemctlenableegpu-fix.servicesudoreboot特性✅ 三屏点亮内屏 笔记本 HDMI eGPU HDMI✅ eGPU 同时承担显示输出 CUDA 计算✅nvidia-smi看到两张卡❌不能热拔 eGPU实测会死机详见下文适用场景日常办公、需要扩展屏幕、固定工位模式 B纯计算模式启用方式sudosystemctl disable egpu-fix.servicesudoreboot特性✅ eGPU 作为算力卡nvidia-smi看到两张 NVIDIA GPU✅ PyTorch / CUDA 等正常使用 eGPU 算力⚠️ eGPU 接的显示器不会亮屏幕只剩内屏 笔记本 HDMI 两屏✅ 大多数情况下可以热拔 eGPU但不 100% 可靠详见下文适用场景跑训练任务、需要随时带笔记本离开工位两种模式对比模式CUDA显示热拔 eGPU插回 eGPUA 显示模式✅ 双卡✅ 三屏❌ 实测死机/B 计算模式✅ 双卡⚠️ 两屏✅ 实测可工作⚠️ 行为不稳定切换两种模式都需要 disable/enable service 重启。模式 B 实测细节在模式 B 下cat /sys/module/nvidia_drm/parameters/modeset是NKMS 未启用/dev/dri/by-path/里没有pci-0000:05:00.0-cardeGPU 没被 DRM 接管nvidia-smi显示两张卡eGPU 那行Persistence-MOff、Disp.AOff、Pwr:Usage只有 2W 左右Persistence-M是 NVIDIA Persistence Mode 的状态。Off 表示驱动允许 GPU 在没有 CUDA 进程使用时进入低功耗状态。Disp.A是 Display Active 的缩写Off 表示这张卡当前没有在驱动任何显示输出。两个 Off 都和模式 B 下 eGPU 是空闲算力卡的状态吻合。⚠️ 模式 A 下的热拔出问题现象实测在模式 A 下系统启动后直接拔 eGPU 雷电线 / 关闭 eGPU 拓展坞电源Ubuntu 立刻死机鼠标都动不了只能强制断电重启。NVIDIA 官方说法NVIDIA 驱动文档 Chapter 34 “Configuring External and Removable GPUs” 原文“system stability when an eGPU is unplugged while in use (also known as ‘hot-unplug’) is not guaranteed. This includes situations where the eGPU is being used to display…”来源https://download.nvidia.com/XFree86/Linux-x86_64/396.51/README/egpu.html注意 NVIDIA 用词是“不保证稳定性”not guaranteed不是不支持。理论上可能能行但 NVIDIA 不为可能的崩溃负责。本机在模式 A 下的实测结果是直接死机。模式 A 下的安全使用规则把 eGPU 当冷插拔设备使用想做的事正确流程想用 eGPU 三屏关机 → 插好 eGPU → 开机 → 三屏工作不想用 eGPU 了关机→ 拔掉 eGPU → 开机 → 两屏工作❌ 千万别模式 A 下系统运行时拔线 / 关 eGPU 电源模式 A 下的软拔出流程理论方案未实测如果在模式 A 下必须不关机就拔 eGPU理论上的思路是先释放 nvidia 对 eGPU 的所有引用# 1. CtrlAltF3 切到 TTY 登录# 2. 停掉图形界面sudosystemctl stop gdm3# 3. 卸载 nvidia 模块 有可能 in use 需要 kill 相关进程sudormmod nvidia_drm nvidia_modeset nvidia_uvm nvidia# 4. 物理拔 eGPU# 5. 重新加载 nvidia这次只认到内置 3060sudomodprobe nvidiasudomodprobe nvidia_modesetsudomodprobe nvidia_drmmodeset1# 6. 重启图形界面sudosystemctl start gdm3⚠️此流程未在本机实测。建议直接养成模式 A 想拔就关机的习惯。模式 B 下的热插拔行为拔出流程# 1. 确认没有 CUDA 进程在用 eGPUnvidia-smi# 看 Processes 块eGPU (GPU 1) 下面应该没有任何进程# 如果有先停掉对应进程# 2. 物理拔 eGPU 雷电线或关闭 eGPU 拓展坞电源# 3. 验证拔出成功nvidia-smi# 期待只看到一张 3060lspci-d10de:# 期待只看到 01:00.0boltctl list# 期待eGPU 状态变成 disconnected实测观察拔 eGPU系统稳定不死机nvidia-smi立刻只剩一张 3060 ✅插回 eGPU行为不一致观察到过两种结果情况 1第一次实测时插回后nvidia-smi不识别 eGPU重启才能恢复情况 2另一次会话中拔/插反复多次nvidia-smi都能正确反映状态变化两次行为差异的具体原因没有定位到。实用建议把模式 B 下的 eGPU 热插拔当成大多数时候能用但不保证 100% 可靠的功能拔之前先nvidia-smi确认无 CUDA 进程在用 eGPU拔的过程不要做其他事如果插回后nvidia-smi不识别直接sudo reboot恢复不要把生产工作流建立在一定能热插拔的假设上关于两种模式行为差异的讨论为什么模式 A 死机、模式 B 大多数情况下能热拔本次排查没有定位到精确原因。一个可能的方向是模式 A 下 nvidia_drm 启用了 KMS 并被 X server 使用而模式 B 下 eGPU 只在计算路径上nvidia/nvidia_uvm没有 KMS后者在设备消失时似乎能更干净地清理。这是观察到的相关性不是验证过的因果机制。NVIDIA 官方文档原文也明确把显示使用中作为 hot-unplug 不保证稳定的典型情形“This includes situations where the eGPU is being used to display…”与本机实测结果方向一致。相关参考资料NVIDIA 官方文档关于 eGPU 的章节Chapter 34“system stability when an eGPU is unplugged while in use … is not guaranteed”链接https://download.nvidia.com/XFree86/Linux-x86_64/396.51/README/egpu.htmlArch Wiki “External GPU” 条目“compute-only workloads … should work without any extra configuration … This use-case should also support full hotplug. Hot-unplug should be also possible (probably depending on drivers used).”“For NVIDIA eGPUs on some systems you may need to early load the thunderbolt kernel module to ensure it is loaded before nvidia_drm.”链接https://wiki.archlinux.org/title/External_GPU社区报告也有热插拔行为不一致的情况例如 NVIDIA 开发者论坛https://forums.developer.nvidia.com/t/unable-to-use-when-reconnect-egpu/191820总体来说官方文档和社区共识是纯计算场景下 hotplug应该能工作但稳定性不保证。本机的实测和这个描述一致。八、故障排查症状 AeGPU 屏完全不亮鼠标也过不去排查ls/dev/dri/by-path/|grep05:00如果什么都没输出DRM node 没建起来看 servicesystemctl status egpu-fix.service journalctl-uegpu-fix.service-b常见原因cat /proc/cmdline里还有nvidia-drm.modeset1→ 配置 1 没生效重新检查/etc/default/grub和update-grubservice 里看到rmmod nvidia_drm: is in use→ 配置 2 没生效检查/etc/modprobe.d/nvidia-graphics-drivers-kms.conf是否注释了 modeset1并且update-initramfs -u跑过ExecCondition 失败 → 检查/sys/bus/thunderbolt/devices/下 eGPU 是不是还叫0-1boltctl 看 eGPU 状态不是 authorized症状 BeGPU 屏鼠标能过去但黑屏只有光标可能原因session 是 waylandecho$XDG_SESSION_TYPE如果是 wayland去登录界面齿轮选 “Ubuntu on Xorg”重新登录。症状 C以前能用更新后突然不行NVIDIA 驱动升级很可能把 GRUB 或 modprobe 配置改回去了。重点检查# 1. GRUB cmdline 里有没有 nvidia-drm.modeset 又被加回来grepnvidia-drm /etc/default/grubcat/proc/cmdline|grepnvidia# 2. modprobe.d 里 modeset1 有没有又被取消注释grep-v^#/etc/modprobe.d/nvidia-graphics-drivers-kms.conf|grepmodeset# 3. service 还在不在systemctl status egpu-fix.service# 4. xorg 配置还在不在ls/etc/X11/xorg.conf.d/10-nvidia-egpu.conf如果 1 或 2 被改回去了按配置 1 和配置 2 的步骤重新改一次 update-grubupdate-initramfs -u 重启。症状 D拔了 eGPU 想用单 GPU 模式但开机后整体很卡可能是 service 没成功 skip。检查ls/sys/bus/thunderbolt/devices/# 没插 eGPU 时应该只有 0-0 和 domain0不应该有 0-1systemctl status egpu-fix.service# 应该显示 Result: exec-condition被 ExecCondition 拦下正常九、修改文件清单重装系统时按这个顺序恢复顺序操作备注1装 NVIDIA 专有驱动sudo ubuntu-drivers autoinstall或选特定版本2改/etc/default/grub删除nvidia-drm.modeset1sudo update-grub3改/etc/modprobe.d/nvidia-graphics-drivers-kms.conf注释modeset1sudo update-initramfs -u4创建/etc/systemd/system/egpu-fix.servicesudo systemctl enable egpu-fix.service5创建/etc/X11/xorg.conf.d/10-nvidia-egpu.conf6重启不插 eGPU 测一次插 eGPU 测一次7登录界面齿轮选 “Ubuntu on Xorg”GDM 会记住8验证三屏全亮用第六节验证清单十、调试过程中走过的弯路避免重蹈覆辙记录下不工作的方向切 Wayland → Xorg改善了笔记本 HDMI没解决 eGPUBIOS 关 Optimus无效BIOS 启用 Thunderbolt Boot Support无效更激进的 xorg.conf 显式 GPU 绑定导致黑屏启动已回滚找 BIOS 里更多 Thunderbolt 安全设置本笔记本消费机型没有boltctl enroll --policy boot这个 policy 值不存在boltctl 只支持 default/auto/manual改 boltd policy 试图让授权更早boltctl enroll --policy boot这个值不存在boltctl只支持default/auto/manual。后来发现修改 GRUB 和 modprobe 配置后已能稳定工作没有进一步追究 boltd 授权时序是不是真的相关。在 service 里只 reload 两个模块手动测试时四个全卸service 也对应了实际可能只需卸载2个WaylandEnablefalse实测没有立竿见影的效果且观察到 GDM 似乎在 NVIDIA 驱动存在时会自动选 Xorg具体机制未定位所以保持默认即可试图在 service 里解决 rmmod failed在 nvidia_drm 已经被早期加载并以 KMS 模式持有的状态下service 内 rmmod 始终失败。后来发现禁用早期 KMS 启用是更可靠的方向。真正有效的核心修改把nvidia_drm的 KMS 启用时机从内核启动早期推迟到 service 里执行也就是 eGPU 已经在 PCI 总线上之后。这需要同时禁用两个早期启用 KMS 的入口GRUB cmdline modprobe.d 配置然后让 service 里的 modprobe 成为 KMS 的唯一启用入口。这是经过本机多次重启验证的方案但具体为什么 rmmod 在早期 KMS 启用时卡住、为什么禁用后就 OK本次排查没有完全定位到内核层面的精确机制。十一、可选的未来改进升级到 Ubuntu 24.04 新驱动更新版本的 GNOME / NVIDIA 驱动栈对多 GPU 和 eGPU 场景有持续的改进理论上有可能不需要这套 workaround。但具体行为没有在本机测试过升级前要充分备份。NVIDIA 开源驱动 nvidia-open可能对 hotplug 有不同的行为表现。本次排查没有测试仅作为可能的探索方向。附录重要文件速查/etc/default/grub → 修改删除 nvidia-drm.modeset1 → 后续sudo update-grub /etc/modprobe.d/nvidia-graphics-drivers-kms.conf → 修改注释 options nvidia-drm modeset1 → 后续sudo update-initramfs -u /etc/systemd/system/egpu-fix.service → 创建完整 service 文件 → 后续sudo systemctl enable egpu-fix.service /etc/X11/xorg.conf.d/10-nvidia-egpu.conf → 创建AllowExternalGpus 配置 /etc/gdm3/custom.conf → 不要改保持默认即可文档结束最后更新2026-04版本v3.1状态✅ 三屏正常工作已多次重启验证通过已知限制模式 A显示模式下实测不能热拔 eGPU直接死机必须关机后操作模式 B计算模式下热插拔大多数情况能工作但不保证 100% 可靠必要时重启恢复

更多文章