Author: R.W.Flurando
Tags: nvidia, gpu, guix
电脑配置升级了,现在电脑内有一张Nvidia 5060的游戏显卡。
然而,在Linux,准确说在Guix上配置它的过程并不顺利。
遗憾的是,Nonguix的GitLab官方文档和Systemcrafter上的教程都过时了
或者说对RTX5060不起作用
最后我东拼西凑才弄出一个可运行的配置
无法用于显示,只能opengl接口加速。
我猜测用于显示需要把guix所有的包都replace-mesa才行。
算了。
目前可以驱动,需要用显卡的程序按说明将mesa换成nvda即可。
使用时得附带两个环境变量。
废话就没必要说了,下面是相关系统配置
(use-modules (nongnu packages linux)
(nongnu packages nvidia)
(nongnu services nvidia))
(operating-system
(kernel linux)
(kernel-arguments '("modprobe.blacklist=nouveau"
"nvidia_drm.modeset=1"))
(kernel-loadable-modules (list nvidia-module-open))
(firmware (cons* nvidia-firmware %base-firmware))
(services
(cons*
(service nvidia-service-type
(nvidia-configuration
(module nvidia-module-open)))
%desktop-services)))除了kernel-loadable-module那行可以删,其它都是必要的,特别是nvidia-firmware
而且,由于我们要加载nvidia-firmware,只能使用nonguix提供的带不可审查二进制包的内核。
现在显卡是能动了,但怎么让程序使用它呢?
如果你要将它放到配置里,就用replace-mesa包一下
如果是guix shell里,就临时用--with-graft=mesa=nvda
这是由于默认的mesa没法用Nvidia的专有驱动
这样还不够,设置两个环境变量
export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __NV_PRIME_RENDER_OFFLOAD=1当然,你可以直接写到命令开头,比如__GLX_VENDOR_LIBRARY_NAME=nvidia __NV_PRIME_RENDER_OFFLOAD=1 <替换过mesa的软件包>。
我使用godot测试,确实输出了opengl使用显卡的信息。