在 Manjaro 配置 Optimus manager 实现 Nvidia-Prime 双显卡解决方案
KONGJUNE / / 技巧 / 阅读量

本文参考自文章 Guide: Install and configure optimus-manager for hybrid GPU setups (Intel/NVIDIA) ,基本就是对原文的直接翻译。

作为参考:在我个人的尝试中,Manjaro KDE 安装未出现问题,Manjaro Gnome 安装失败(gdm-prime安装失败)。

对于 Inter 与 Nvidia 双显卡笔记本用户来说,最好能够根据自己的需求更换使用的显卡。在一般日常使用的过程中,使用 Inter 显卡来节省电量;而当进行游戏或者其他需要用到独显的时候,切换到 NVIDIA 显卡。Optimus manager 是在 Arch Linux 下的对 Ubuntu 的 Nvidia-prime 解决方案的移植。在这种解决方案下,用户可以选择当前要使用的显卡来满足各种需求。

注意:对于像 AMD-Nvidia 这种模式的双显卡模式,使用 mhwd 安装上 video-hybrid-intel-nvidia-440xx-prime 并且在需要独显时使用 prime-run 运行程序就可以了。这种方案并没有什么好的切换显卡的解决方式。如果你是属于这种情况的话,就不要再阅读下面的内容了,没有用的。

警告:Optimus manager 还是一个新的、正在进行开发的解决方案,在尝试这种解决方案之前,请一定记得对系统进行备份。接下来的内容不止是简简单单地安装一个包(译者:但其实也不是很麻烦),这会涉及到很多手动的配置。请确保在每一次重启前完成了之前步骤所有的更改。如果你不这样做,你电脑可能就开不开了。

目前仅支持 Xorg,Wayland 忠实用户可以说拜拜了。

支持的图形管理器有: SSDM (Manjaro KDE),LightDM (Manjaro XFCE),GDM (Manjaro Gnome) 。其他的图形管理器可能也会正常工作但这就需要你自己去探索了,具体请看下面链接的 FAQ 部分:

Github - Wiki

Askannz/optimus-manager

A Linux program to handle GPU switching on Optimus laptops. - Askannz/optimus-manager

本教程针对 Manjaro,对于其他基于 Arch 的系统请跳过 mhwd 的部分。

Manjaro 会默认为双显卡配置电脑安装大黄蜂 (bumblebee) 解决方案并且我推测你已经设置为使用专有驱动(non-free drivers),如果不是的话,请按照下方内容进行操作:

https://wiki.manjaro.org/index.php/Configure_Graphics_Cards 685

如果你已经在使用 video-hybrid-intel-nvidia-440xx-prime (版本号可能更高,重点在于前面的hybrid(双显卡混合)以及 prime 上)配置的话,这个指南也很适合你,只不过你没有安装大黄蜂解决方案所以你不需要再费力禁用它了,其余步骤都是一样的。更多关于本教程使用的非混合运行模式请见下发第 9 点(Nvidia-435 驱动或更新的版本)。

这个指南也推测你已经有权利修改归属于 root 的文件(通过终端或者是 GUI 程序)。如果并不可以的话,请学习下 bash 的基本指令,比如 cdlscp 以及 mv 等,或者你也可以直接使用管理员权限的 Dolphin (KDE 的一种文件管理器)或 Krusader(同样也是 KDE 的一种文件管理器)或其他能完成这些操作的 GUI 程序。

安装:optimus-manager 以及 optimus-manager-qt

(你可能需要从 AUR 中安装。如果你使用了 archlinuxcn 源,那么你可以直接使用 pacman 从 archlinuxcn 源中安装):

sudo pacman -S optimus-manager optimus-manager-qt

或者你需要从 AUR 中安装 optimus-manager-qt,你可以使用你拥有的 AUR 安装程序:

trizen optimus-manager-qt
yay optimus-manager-qt
yaourt -S optimus-manager-qt

禁用大黄蜂方案

在 Manjaro 20.0 Lysia 之后,如果你在安装时选用了专有驱动 (non-free drivers) 的话,将会自动安装 video-hybrid-intel-nvidia-440xx-prime 而非大黄蜂方案。如果你不确定的话,可以在 Manjaro Setting 中查看:

image-20200517213332917

如上图,如果被勾选的已安装的选项以 prime 结尾,则代表无需再执行这一步,直接进入下一步即可。如果以 bumblebee 则表明你需要禁用大黄蜂方案。如果也不是上述两种情况,则表明你未安装任何双显卡混合方案。

sudo systemctl disable bumblebeed.service

安装了 optimus-manager 包后,大黄蜂解决方案会出现异常,所以如果你执行大黄蜂后出现错误的话是很正常的。安装了 optimus-manager 后大黄蜂不可能正常工作,所以禁用了就得了。大黄蜂相关的包可能会仍在保留在你的系统中,但如果未来你删除了 optimus-manager 但没有激活上述的系统服务,它也自然而然地不会干任何的事情。

/etc/X11/xorg.conf.d/ 下禁用 Xorg 的图形配置

进入 /etc/X11/xorg.conf.d/ 目录下,并且禁用任何与图形有关系的配置。你不需要把他们给删除了,只需要在它们的名字后面加上 .bak 后缀就好了。这样你未来如果遇到什么问题还能恢复原来的配置。

例如,在这个文件夹下,我有以下的内容:

00-keyboard.conf 20-intel.conf 30-touchpad.conf 90-mhwd.conf

你的该目录下的文件可能与我的不同,但不要担心。

Keyboard(键盘)与 touchpad(触控板)配置和 GPU 毛关系都没有,Intel(英特尔核显)很明显是显卡相关的而 mhwd 是 Manjaro 独有的图形配置文件(在非 Manjaro 系统下不会有这个文件)。

我把 intel 与 mhwd 的配置问价加上了 .bak,所以最后我的该文件夹下的文件如下:

00-keyboard.conf 20-intel.conf.bak 30-touchpad.conf
10-optimus-manager.conf 20-intel.conf.bak-old 90-mhwd.conf.bak

你注意到了一个新文件 10-optimus-manager.conf 了么?这个文件会在之后自动被 optimus-manager 生成,如果你现在没有发现这个文件的话,完全不需要惊慌。这个新文件关系到显卡的选择,所以它的内容与当前选择的 GPU 有关。

/etc/X11/ 文件夹禁用 Xorg 的图形配置

和上一步一样,在这个文件夹下我有如下文件:

nvidia-xorg.conf

你可以把他更改成 nvidia-xorg.conf.bak。但我注意到一些更新可能会重新生成这个文件,而且 optimus-manager 会依然好好地工作,所以虽然这有点没用,但我还是推荐你把这个文件重命名来禁用下……

这个文件夹下你可以也会遇到一些其他的文件,比如 xorg.confnvidia-xonfig 什么的。一样地,通过重命名把他们禁用了吧。

对于 Manjaro Gnome 用户(其他人可以忽略这一部分)

  1. 从 AUR 中安装 gdm-prime

    这个包是 Canonical 制作的为了实现 prime 切换的 gdm,它其实就是 gdm。使用默认使用的 gdm 的话,optimus-manager 会无法更改选择的 GPU。

    在 Manjaro Gnome 下,你可能会安装有 manjaro-gdm-tweak,这个包是依赖 gdm 的,所以你要先卸载这个包才能安装 gdm-prime:

    sudo pacman -Rns manjaro-gdm-tweak
    

    接着根据你使用的 AUR 安装器,安装 gdm-prime 删除 gdm:

    yay gdm-prime
    trizen gdm-prime
    pamac build gdm-prime
    yaourt -S gdm-prime
    

    之后启用 gdm:

    sudo systemctl enable gdm
    

    之后重启。

  2. 修改 /etc/gdm.custom.conf

    删除内容为 #WaylandEnable=false 行前面的 #,修改后它会成为:

    WaylandEnable=false
    

    Gnome 默认会使用 Wayland,但 Wayland 不适用于 optimus-manager,这一步是在设置强制使用 Xorg。

  3. 有可能在更改了选择的 GPU 之后,Xorg 并不会自动重启,如果变成了黑屏或者只有闪烁的光标的黑屏,尝试切换到一个空的 TTY (例如使用 Ctrl+Alt+F5),然后使用 Ctrl+Alt+F1 切换到 TTY1。

对于 Manjaro KDE 用户(其他人可以忽略这一部分)

修改 /etc/sddm.conf 然后在以 DisplayCommandDisplayStopCommand 开头的行前面加上 #。

你可以使用以下指令修改这个文件:

sudo nano /etc/sddm.conf
sudo vim /etc/sddm.conf
kate /etc/sddm.conf

这一部分的原因是 Manjaro 拥有一套针对 SDDM(KDE 的默认登录管理器)的默认的配置。这个配置会与 optimus-manager 的内容冲突。

也有可能十分邪乎的你这个文件下没有这两行内容,这样你就什么都不用做了。这有可能是因为最近的 Manjaro 更新删除了这些内容(在非 Manjaro 系统中没有出现过这两行内容)。

为 optimus-manager-qt 配置自动启动

optimus-manager-qt 是一个实现了在托盘加上一个显示并且切换当前使用的GPU的小部件。右击这个托盘图标你就可以更换选择的 GPU 或配置 optimus-manager。简单来说,就是免除了命令行的烦恼。

对于一些系统或是桌面环境,可能它会被自动地加入自动启动脚本中,所以就没必要做这一步了。如果你重启后看到了那个托盘图标,这一部分就可以跳过了。

由于在不同的桌面环境下,设置自动启动的方式不同,你需要知道正在使用的桌面环境配置自动启动的方式。

在 KDE Plasma 下,你需要到“系统设置 → 开机和关机 → 自动启动”中设置:

image-20200517222012509

点击”添加程序...“,搜索 optimus-manager-qt(在我这里,中文名显示的是 Optimus 管理器)。选择然后把他标记为开机启动。

在 Gnome 下,你需要在“优化”(gnome-tweaks)中设置。

重启

到这一步,所有的配置都已经做完了,你可以重启你的系统了。

使用如下命令来检查 Optimus 是否正常运行:

systemctl status optimus-manager.service

如果显示运行正常,你就可以在终端或者是系统托盘处开始使用了。

你理论上来说会在系统托盘处看到 Intel 图标(optimus-manager 会在系统启动时默认选择 Intel 显卡,如果你不希望是这样,可以修改)。接下来你就可以通过右击来更改使用的显卡。

image-20200517223209552

也有可能出现了一些问题导致切换不成功。这样的话,你可以尝试切换到 tty 然后从备份中恢复,恢复你刚才进行的更改,然后尝试找出有什么问题。

注意:在 Plasma 中切换 GPU 时,你需要在 SDDM 中输入密码,这是不可避免的并且不可以被修改。

Nvidia-435 驱动或更新的版本

Optimus-manager 目前与这些驱动兼容但这些驱动的某些功能并不完美,你可能依然需要使用 Inter 模式来获取最低的能耗。所以即使当 Nvidia 驱动提供分离的 GPU 卸载(混合模式,让 Intel 与 Nvidia 同时使用,按照需求启动或关闭 Nvidia 显卡),这项技术并非是完美的。还是推荐你使用纯 Intel 或纯 Nvidia 模式。

Optimus-manager-qt 也提供混合模式(Hybrid mode):

  • optimus-manager --switch hybrid 来切换到 Intel 模式,但依然保留 Nvidia GPU 可用,当需要用到 CUDA 或者是 PRIME Render offload 就可以切换到 Nvidia 模式。

如果是 Nividia-435 之前版本的驱动,选择这一项会直接换为 Intel 模式。

此部分后面还涉及到有关更换显卡驱动、Steam 在混合模式下加载 Nvidia 显卡等内容。由于篇幅过长,翻译就先咕咕咕一段时间。

在更换时可能出现的问题

Optimus manager 默认使用 nouveau 来切换 GPU,但对某些情况它并不起作用,最后桌面环境无法启动并且风扇”狂吼“(过热)。

通常可以通过更改为 bbswitch 解决问题。这在托盘图标的设置中可用,更改后重新启动即可。

image-20200517231301740

如果由于某种原因新设置工作不正常,并且系统在重新启动后无法启动图形会话的话,进入 TTY(Ctrl+Alt+F2),登录并手动编辑回到上一个设置:

/etc/optimus-manager/optimus-manager.conf

更多关于如何在命令行中使用 optimus-manager 或如何检查故障,见:

Github

Askannz/optimus-manager

A Linux program to handle GPU switching on Optimus laptops. - Askannz/optimus-manager

Github Wiki:

Github - Wiki

Askannz/optimus-manager

A Linux program to handle GPU switching on Optimus laptops. - Askannz/optimus-manager

支付宝捐赠
请使用支付宝扫一扫进行捐赠
微信捐赠
请使用微信扫一扫进行赞赏
有 0 篇文章