结论(2026-10-07,NixOS)
外接 RTX 4060(OcuLink)在 max2(GPD G1619-04)上的 Linux 驱动问题已解决:内核模块与用户态驱动 595.71.05 装载成功,nvidia-smi 正常识别(44°C,无 NVRM 错误、无 Xid)。以下为驱动安装侧的定版事实;显示链路与多屏布局另见相关笔记,不在本文。
最终生效配置(/etc/nixos/hardware-configuration.nix,逐行均为实测定版,无浮动别名)
# 内核钉 6.18:linuxPackages_6_18 = 6.18.54 LTS(原因见 B02)
boot.kernelPackages = pkgs.linuxPackages_6_18;
# 驱动包:mkDriver 钉版 + 五个哈希(缺任一无法构建)
nvidiaPkg = config.boot.kernelPackages.nvidiaPackages.mkDriver {
version = "595.71.05";
sha256_64bit = "sha256-NiA7iWC35JyKQva6H1hjzeNKBek9KyS3mK8G3YRva4I=";
sha256_aarch64 = "sha256-XzKloS00dFKTd4ATWkTIhm9eG/OzR/Sim6MboNZWPu8=";
openSha256 = "sha256-Lfz71QWKM6x/jD2B22SWpUi7/og30HRlXg1kL3EWzEw=";
settingsSha256 = "sha256-mXnf3jyvznfB3OfKd657rxv0rYHQb/dX/Riw/+N9EKU=";
persistencedSha256 = "sha256-Z/6IvEEa/XfZ5F5qoSIPvXJLGtscYVqjFxHZaN/M2Ts=";
};
hardware.nvidia = {
open = true; # 595 系强制 open 内核模块(B04)
modesetting.enable = true; # nvidia_drm.modeset=1
nvidiaSettings = true;
powerManagement.enable = false; # eGPU 热插拔(B08),不做运行时电源管理
package = nvidiaPkg;
prime = {
offload.enable = true;
reverseSync.enable = true; # 4060 输出接进核显主屏(显示主题,另见笔记)
amdgpuBusId = "PCI:102:0:0";
nvidiaBusId = "PCI:1:0:0"; # = 0000:01:00.0 (B06)
};
};
services.xserver.videoDrivers = [ "amdgpu" "nvidia" ];
services.hardware.bolt.enable = true; # 雷雳授权,不装 bolt 设备不上 PCIe(坑5)
定版依据(逐条实测,B01–B08)
| 编号 | 观测 | 结论 |
| B01 | /sys/module/nvidia/version = 595.71.05;驱动绑定 0000:01:00.0(driver=nvidia) | 内核模块装载成功并已接管设备 |
| B02 | 6.18 长期链上 mkDriver 构建 nvidia-drm 正常;本机曾测的另一内核链编译失败 | 必须 boot.kernelPackages = pkgs.linuxPackages_6_18(6.18.54 LTS),禁用浮动别名 |
| B03 | nvidia-smi:NVIDIA GeForce RTX 4060, driver_version 595.71.05, 44°C;modinfo -F version nvidia = 595.71.05 | 用户态与内核态版本一致 |
| B04 | 595 驱动链在 nixpkgs 里对非 open 模块断言不通过 | hardware.nvidia.open = true 对 595 不是可选项 |
| B05 | mkDriver 五个哈希(64bit/aarch64/open/settings/persistenced)均可取到并被构建接受 | 钉版 + 哈希 = 可复现构建 |
| B06 | PCIe 枚举:0000:01:00.0 [10de:2882] type 00 class 0x030000 PCIe Legacy Endpoint,上游 root port 0000:00:01.1;nvidia 0000:01:00.0: enabling device (0000 -> 0003) | 按原生 PCIe 设备处理,无需 VFIO/直通 |
| B07 | 63.012 Gb/s available PCIe bandwidth, limited by 16.0 GT/s PCIe x4 link at 0000:00:01.1 (capable of 126.024 Gb/s with x8) | 当前链路 PCIe4 x4(内核自动打印;x8 为理论上限说明) |
| B08 | pciehp: Slot #0 AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug+ Surprise+ ... | 槽位热插拔已生效;配合 powerManagement.enable = false |
踩坑要点(按主题归组)
- 内核版本×驱动编译:禁用
linuxPackages_latest/linuxPackages 浮动别名——驱动升级时先看编译日志,失败就钉 LTS;本次定版 6.18(B02)。
- open 模块:595 起 open 内核模块是唯一选择(B04);不再尝试 non-open。
- 电源管理×热插拔:eGPU 场景
powerManagement.enable 保持 false(B08);运行态电源管理与热插拔/低功耗切换冲突。
- 雷雳授权:
services.hardware.bolt.enable = true 必须有(本机 TB 安全等级 user);否则设备根本不出现在 PCIe 上,驱动侧无从谈起。
- BusID:
prime.nvidiaBusId = "PCI:1:0:0"(= 0000:01:00.0;X 的 Device 段用同一 BusID)。
- display 与配置落点:NixOS 下这类改动一律落在
/etc/nixos/hardware-configuration.nix(改前备份、build+预检后 switch,流程复用既有脚本)。
验证记录(2026-10-07 实测命令与结果)
| 命令 | 结果 |
nvidia-smi --query-gpu=name,driver_version,temperature.gpu --format=csv | NVIDIA GeForce RTX 4060, 595.71.05, 44 |
cat /sys/module/nvidia/version | 595.71.05 |
modinfo -F version nvidia | 595.71.05 |
journalctl -k -b | grep 0000:01:00.0 | PCIe 枚举 + enabling device (0000 -> 0003),无 NVRM 错误、无 Xid |
边界(本文不覆盖)
- 显示链路/多屏输出(reverse PRIME、GPU Screen NVIDIA-G0、两路菊花链场景)是另一主题,见「多屏扩展时内屏竖块乱序问题」(JRIPwT8qe7O2)与其相关笔记。