ArchLinux 下 AMD 集显 NVIDIA 独显双显卡方案

⚠️ 有效性警告本方案仅供参考,仅在特定的该软硬件环境下有效,请勿在不了解原理细节的前提下直接照搬。环境介绍#硬件环境#GPU 1Radeon Vega Mobile SeriesGPU 2GeForce RTX 3050 Ti Mobile软件环境#OSArch Linux x86_64Date2024.06.04Kernel6.9.3-zen1-1-zenWayland1.23.0-1DEKDE Plasma 6.0.5AMD 驱动#操作步骤#安装相关驱动软件包并重启。

1

paru -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau

软件包解析#mesa lib32-mesa提供用于 3D 加速的 DRI 驱动程序xf86-video-amdgpu可提供对 Xorg 的 2D 加速的 DDX 驱动支持vulkan-radeon lib32-vulkan-radeon提供对 Vulkan 的支持libva-mesa-driver lib32-libva-mesa-driver提供对 VA-API 的支持mesa-vdpau lib32-mesa-vdpau提供对 VDPAU 的支持NVIDIA 驱动#20240604 补充#nvidia 550 闭源内核模块可能导致多种情况下内核崩溃(kernel panic),请知悉。如果显卡属于 Turing 微架构及之后可以考虑切换到 nvidia-open{,-dkms},否则可以考虑使用 aur/nvidia-535xx-dkms,或者卸载 nvidia-utils 来使用 nouveau。

由于目前最新闭源驱动的严重不稳定状态以及修复更新较慢,加之近期社区风向建议,因此将 NVIDIA 显卡驱动切换为 nvidia-open 的开源实现。

操作步骤#安装相关驱动软件包。

1

paru -S nvidia-open-dkms nvidia-settings nvidia-utils lib32-nvidia-utils

从 /etc/mkinitcpio.conf 里的 HOOKS 数组中移除 kms 并重新生成 initramfs 以杜绝开源模块nouveau的加载。

1

sudo mkinitcpio -P

在 /etc/default/grub 中的 GRUB_CMDLINE_LINUX_DEFAULT 选项中加入 nvidia_drm.modeset=1 并重新生成配置文件以启用 NVIDIA DRM KMS。

1

sudo grub-mkconfig -o /boot/grub/grub.cfg

完成后重启系统。

软件包解析#nvidia-open-dkms提供驱动内核模块由于我使用 zen 定制内核,因此需要 Dynamic Kernel Module Supportnvidia-settings提供配置工具nvidia-utils lib32-nvidia-utils提供驱动实用程序(例如硬件视频加速)混合图形技术#操作步骤#我们采用 PRIME GPU分载 方案。

安装相关软件包。

1

paru -S nvidia-prime

程序默认通过 AMD 显卡运行,对于要在 NVIDIA 显卡上运行程序,使用软件包提供的 prime-run 脚本,例如:

1

2

prime-run glxinfo | grep "OpenGL renderer"

prime-run vulkaninfo

结果检验#

电源管理#对于较新的硬件及驱动(至少就我目前的设备而言),PCI-Express Runtime D3 电源管理应当能够开箱即用。

无需额外配置,在使用电池供电且 NVIDIA显卡 未工作时,将自动关闭供电。

你可以通过以下现象验证设备已被关闭供电:

Runtime D3 status 的 Enabled 代表设备支持这一功能。

NVIDIA显卡 电源状态处于 D3cold,运行状态为 suspend,代表 NVIDIA显卡 已被切断供电,进入低功耗的暂停状态。

Runtime suspended time 计时不断升高,代表 NVIDIA显卡 持续处于暂停状态。

另请参阅#Xorg - Arch Linux 中文维基

NVIDIA - Arch Linux 中文维基

AMDGPU - Arch Linux 中文维基

NVIDIA Optimus - Arch Linux 中文维基

PRIME - Arch Linux 中文维基