想要在 Fedora 40 上安装 Nvidia 驱动程序,以便我可以编写 CUDA 代码。我实际上要参考这个问题因为非常相似;只是7年前有人提出这个问题,但没有得到答案。事实上,我见过很多人有同样的问题,但没有能够解决问题的答案。大多数解决方案都集中在通过 RPMFusion 存储库安装驱动程序,而不是通过其他方式(即通过 Nvidia 网站)。我是从 RPMFusion 直接安装的,所以这对我来说不是问题。
我已经为 Fedora 40 安装了 kmod-nvidia(以及 akmod-nvidia,在 kmod 不起作用之后)软件包。完成此操作并重新启动后,我的分辨率卡在 800x600。我使用的显示器是 1680x1050。现在无论我做什么都无法更改分辨率,并且我的显示器显示为“无”。
根据 nvidia-smi 命令,驱动程序为 550.76。
lspci -d ::03xx -nnv
输出:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GA106 [GeForce RTX 3060 Lite Hash Rate] [10de:2504] (rev a1) (prog-if 00 [VGA controller])
Subsystem: ASUSTeK Computer Inc. Device [1043:881d]
Flags: bus master, fast devsel, latency 0, IRQ 172
Memory at a0000000 (32-bit, non-prefetchable) [size=16M]
Memory at 4000000000 (64-bit, prefetchable) [size=256M]
Memory at 4010000000 (64-bit, prefetchable) [size=32M]
I/O ports at 4000 [size=128]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: <access denied>
Kernel driver in use: nvidia
Kernel modules: nvidia_drm, nvidia
cat /proc/fb
抛出“没有这样的目录”
xrandr --listproviders
输出:
Providers: number : 1
Provider 0: id: 0x41 cap: 0x2, Sink Output crtcs: 1 outputs: 1 associated providers: 0 name:modesetting
我使用的是配备 x86-64 Intel 核心和 RTX 3060 GPU 的台式计算机。
即使安装 debugfs 后,/sys/kernel/debug/vgaswitcheroo/switch 也不存在。
我努力了:
- Fedora 40 的全新安装
- Fedora 39 的全新安装
- KDE 和 Gnome; X11 和 Wayland
- 安装驱动程序的不同方法
- 使用 xrandr 通过终端设置分辨率(抛出“在可用模式中找不到尺寸 1680x1050”)
答案1
好的,所以它是台式机,而且您没有 iGPU,这可能会导致其自身的复杂性。内核端看起来正常:nvidia
模块已加载,并且似乎没有nouveau
活动的冲突模块。
但xrandr --listproviders
输出表明唯一的提供程序是通用的,modesetting
而不是类似的内容NVIDIA-0
:这表明 X11 服务器没有使用正确的 X11 驱动程序模块来配合 NVIDIA 内核模块。
这表明您需要一个xorg.conf
片段,其中包含Device
明确指定nvidia
GPU 的 X11 驱动程序模块的部分。它可能是这样的/etc/X11/xorg.conf.d/nvidia.conf
:
Section "Module"
Disable "dri" # just to silence a warning about obsolete DRI 1.0
EndSection
Section "Device"
Identifier "Device0"
Driver "nvidia" # Selects this module...
VendorName "NVIDIA Corporation"
BusID "1:0:0" # ... for this GPU.
EndSection
我猜想最新的系统更新会自动提供类似的内容,或者导致nvidia
X11 驱动程序的优先级高于通用modesetting
驱动程序。