Arch Linux Wayland之路
前情提要:听说Linux上N卡闭源驱动有了较大的更新,比如添加了drm和Xwayland硬件加速支持。正好手头Manjaro滚炸了(很久没更新了,大概跟新驱动有关),直接新装Arch Linux + GNOME + Wayland套餐。不过中间Wayland之路经历了很多曲折,期间多次放弃Wayland滚回Xorg。。。
仅仅提供一个参考,具体还得看平台和使用场景。
环境:
- Host: MSI GS66 Stealth 10SF
- OS: Arch Linux with Stable kernel
- CPU: Intel i7-10750H
- GPU: NVIDIA GeForce RTX 2070 Mobile
如上图,标准的I+N双显卡游戏本。
注意,在写本文的时候,I+N方案Wayland支持程度仍然很差,当然使用Xorg性能也依然不佳(不然也不会想方设法去用Wayland
本文默认已经装好Arch Linux和GNOME,并且使用的是稳定版(非lts)内核。
NVIDIA闭源驱动安装
参考Archwiki所述Wayland需求
https://wiki.archlinux.org/title/Wayland#Requirements
个人认为,N卡使用Wayland的基本需求就是启用DRM和设置kms。
先安装NV驱动,两个包,nvidia
和nvidia-utils
。然后直接配置DRM和kms。
如Archwiki配置:
https://wiki.archlinux.org/title/NVIDIA#DRM_kernel_mode_setting
额外注意事项:
- DRM使用
early loading
模式 - I+N双显卡的用户最好再额外添加
intel_agp
和i915
两个内核模块。
设置完这些后重启电脑应该能在gdm选项内看到Wayland,如果没有,也可以通过此方法强制启用Wayland。
这些操作以后,Arch Linux就可以在Wayland模式下工作了。
启用显卡直连,在Wayland使用多显示器
如果你想要连接外部显示器,是有可能出现连接后没有反映,但是设置里面是能识别到外接屏幕的。具体什么原因我也不想深究,注:下文所述的一些原理都只是个人推测,请不要全部当真。
下面只根据我的一些思路和一些Archlinuxcn社区的朋友的帮助,提供一个针对我的电脑的解决方案,希望能给予一定参考价值。
我的MSI笔记本和大多I+N双显卡游戏本默认使用混杂模式,即两个显卡同时启用。这样有好处:使用核显工作功耗更低,使用独显可以获得更好性能。这个技术也叫NVIDIA Optimus。
可是众所周知Optimus在linux上体验并不是很好。在Xorg下,使用PRIME之类的解决方案还算过得去。但是在Wayland下,双显卡方案基本没有支持。在上文的安装条件下,基本会成为主I卡,副N卡的局面,I卡负责输出,N卡辅助提供加速。外接显示器大概是直连N卡的。所以外接显示器大概就没有了显示输出(个人的无端猜想)。
所以,按照道理来讲,关闭混杂模式,单独使用独显应该就可以了吧。
事实上,我在BIOS设置里关闭了核显(或者设置主显卡为独立显卡后),笔记本内屏就不再显示了,包括之后BIOS设置界面也得使用外部屏幕。其实这种解决方案并不是关闭混杂模式,只是关闭了核显,只允许显卡输出罢了,下文会讲述原因。不过,也不得不说,屏蔽掉核显之后(仅有外部显示器),Wayland在外接屏幕上工作的还算不错。
不过我后来还是回到了双显卡Xorg单外接显示器(避免多显示器画面撕裂)方案。
这样的妥协显然不是完美的解决方案。
阴差阳错下,我得知一个Archlinuxcn的群友可以实现Wayland多屏幕(但是存在内建屏幕亮度无法调节的问题)。了解后得知他使用了显卡直连的模式(需要主板支持),抱着试试看的态度,发现了我的MSI笔记本是支持切换模式的(如下图)。
不过之前一直没有注意这个东西,默认状态为MS-Hybrid
(混杂模式),一看名字就知道是给Windows做的功能。然后切换为Discrete
离散模式。
这个显卡直连的意思大概是显卡与显示器(应该是内屏)连接的模式,默认工作在混杂模式(如上文所述的I+N混合工作方案,内建屏幕的输出核显负责的,N卡只是提供加速,所以在混杂模式开启的情况下,屏蔽核显会导致内屏直接停止工作),换成离散模式后,两个显卡的切断了联系,各自都可以直接对内建屏幕提供输出,这时候设置主显卡为N卡就有了意义,内屏直接连接显卡。
题外话,不止对于Linux用户,离散模式主N卡可以提供比混杂模式更好的性能,不过功耗更高。
这样配置后,后面的事情也就不用多说了,Wayland双屏幕终于算是完美实现了。
至于上面提到的内建屏幕无法调节亮度(无论Xorg还是Wayland),在我的MSI上没有遇到,可能是显卡比较老的缘故。不过这个问题已经在NVIDIA开发者论坛上有人在探讨了,应该不久就会跟进修复。
如果你有背光亮度问题,入口:
https://forums.developer.nvidia.com/t/laptop-backlight-control-regression-with-465-24-02/175585/80
补充更新
- 2022.9.7: MSI Windows 上的 dragon center 也提供了显示模式切换的选项。