ArchLinux 下双显卡配置
Fuck Nvidia
如果笔电上有一张 Nivdia 显卡,使用 Linux 的时候也许会因为驱动引起一些令人苦恼的问题。
如果熟读并背诵 ArchWiki 的话就不会有这些问题了 (误
我就记录一下我的笔电在 ArchLinux 下的双显卡的配置,其实我说的这些,几乎全部来自于 ArchWiki ,但是分布在不同的几个页面,我就充当一次搬运工了。
我的显卡硬件情况:
- GPU0 Intel UHD 620
- GPU1 Nvidia MX150
先说一下黑屏的问题
有可能是因为你漏装了 nvidia 显卡的驱动程式,可以用一下命令安装
进不去系统的话可以尝试
Ctrl
+Alt
+F2~6
切换到tty
,仍然不行的话可能就要搬来 LiveCD 了
pacman -S nvidia
注意!
我现在执行的命令在我的机器上有效,对于比较新的机器应该都没有问题,但是具体呢还是要参看 ArchWiki NVIDIA
进入正题
先说一下我的基于什么选择了接下来的双显卡方案,如果你的目的与我不同,那也许就没有参考价值了
- 尽量发挥性能
- 尽量省电
基于以上理由我选择了,闭源驱动 + PRIME render offload
安装驱动
Intel 显卡驱动
安装 mesa
包,为了对 32 位程序的支持,安装 lib32-mesa
包 (位于 multilib 仓库,请提前自行开启此仓库)。
pacman -S mesa lib32-mesa
另外需要注意的是,如果之前安装了 xf86-video-intel
包,最好卸载掉
比如这个包会引起我的 OBS 在录制闪屏,而且不使用此包也是官方的建议
Often not recommended, see note below
Note: Some (Debian & Ubuntu, Fedora, KDE) recommend not installing the xf86-video-intel driver, and instead falling back on the modesetting driver for Gen4 and newer GPUs (GMA 3000 from 2006 and newer). See [1], [2], Xorg#Installation, and modesetting(4). However, the modesetting driver can cause problems such as Chromium Issue 370022.
卸载
pacman -Rsc xf86-video-intel
NVIDIA 显卡驱动
具体参见 ArchWiki NVIDIA
安装 nvidia
包,为了对 32 位程序的支持,安装 lib32-nvidia-utils
包 (位于 multilib 仓库,请提前自行开启此仓库)。
pacman -S nvidia lib32-nvidia-utils
配置 PRIME render offload
具体参见 ArchWiki PRIME
安装 nvidia-prime
包来使用官方配置 (不起作用的话,你就要去 Wiki 看怎么手动配置了,不过我觉得一般都不需要手动配置啦)
pacman -S nvidia-prime
reboot!
这时候重启系统就应该起作用了,你可以通过 prime-run
命令使指定程序在 NVIDIA 显卡上渲染。例如:
# 以 n 卡渲染 vlc
prime-run vlc
# 以 n 卡渲染 wine 游戏
prime-run wine touhou08.exe
在此之前你可能想查看你的配置是否生效,可以使用 glxinfo
这个工具,它属于 mesa-demos
包,先安装
pacman -S mesa-demo
来测试一下
glxinfo | grep "OpenGL renderer"
输出应该类似于下面,这意味着默认情况下你使用的是 Intel 显卡
OpenGL renderer string: Mesa DRI Intel(R) UHD Graphics (Whiskey Lake 3x8 GT2)
然后
prime-run glxinfo | grep "OpenGL renderer"
你应该看到
OpenGL renderer string: GeForce MX150/PCIe/SSE2
这意味着你在使用 NVIDIA 显卡了 ´ ▽ ` )ノ
一点总结
我之前使用的是 Bumblebee 方案,但是感觉不如现在的方案方便也不如这个性能好。
另外使用了 NVIDIA 的闭源驱动所以在配置双显卡的时候使用了 PRIME render offload 而不是在 Wiki 里的上一级标题 PRIME GPU offloading ,后者是给 NVIDIA 的开源驱动程式用的。关于具体的不同,自己去翻阅 wiki 吧,不归我管,我只是记录一下我觉得目前最好使的方案。