说到 Arch Linux 上的 GPU 驱动,我估计每个折腾过的人都有一段“不堪回首”的经历。网上教程一大堆,但多半是复制粘贴的旧方案,照着做经常把系统搞到进不了桌面。我自己从最早的 nouveau 开源驱动一路折腾到现在的 nvidia-dkms + amdgpu 混合方案,踩坑无数,今天把这几年攒下的经验梳理成一篇完整的配置文档,希望能帮后来的朋友少走点弯路。
这篇内容适合谁看?刚把 Arch 装好、正准备给自己的 NVIDIA 或 AMD 显卡装驱动的用户;已经装好但经常遇到黑屏、驱动崩溃、内核升级后进不去桌面的用户;以及想在 Arch 上跑 CUDA、PyTorch、大模型推理的朋友。我把安装步骤、原理、坑点、排查思路全部拆开讲。
开始之前先说一句:Arch 是滚动发行版,内核和驱动都在不停更新,所以驱动配置从来不是“一次配置、一劳永逸”的事,但理解了底层逻辑之后,再遇到问题就不慌了。下面直接进入正题。
1. 动手前的准备:先搞清楚自己是什么显卡
1.1 查看显卡型号与当前使用的驱动
无论你想干什么,第一步永远是确认自己手上的硬件是什么。这一步看起来简单,但很多人跳过之后,装完驱动发现没生效,然后又回来查,反而浪费时间。
在终端里执行:
bash复制lspci | grep -E "VGA|3D"
这会列出所有显卡设备。输出里一般能看到厂商和型号,比如 NVIDIA GA106 [GeForce RTX 3060 Lite Hash Rate] 或者 Advanced Micro Devices, Inc. [AMD/ATI] Navi 23。如果是笔记本,通常能看到两个设备,一个 Intel 核显(或者 AMD APU)加一个 NVIDIA / AMD 独显。
接着可以看当前内核已经给这个设备加载了哪个驱动模块:
bash复制lspci -k | grep -A 2 -E "VGA|3D"
输出中的 Kernel driver in use: nvidia 或 amdgpu 会直接告诉你现在用的是哪套驱动。如果你刚装完系统还没装任何闭源驱动,NVIDIA 显卡大概率显示的是 nouveau,AMD 显卡显示的则是 amdgpu 或 radeon。
对 NVIDIA 用户来说,这一步很重要,因为后面我们要把 nouveau 列入黑名单,必须先确认它是当前加载的模块再动手。
1.2 三大厂商驱动方案的底层差异
读懂三种驱动方案的区别,是后面所有操作的基础。
NVIDIA 官方只维护闭源驱动,内核模块需要每年跟上内核版本。Arch 的官方仓库里有 nvidia、nvidia-lts、nvidia-dkms 三个包,分别对应不同内核的预编译版本和带有 DKMS 机制的源码版本。nouveau 是社区逆向工程的开源驱动,能点亮屏幕,但性能差、功耗高、不支持新特性,实际使用基本只有应急价值。
AMD 的情况好很多。GPU 的内核驱动 amdgpu 直接编译在内核源码树里,只要你的内核版本不是太老,硬件不是太冷门,开箱就能用。用户态的部分靠 mesa 提供 OpenGL,vulkan-radeon 提供 Vulkan,本质上由同一个开源项目组维护,升级非常顺滑。
Intel 核显跟 AMD 类似,内核自带 i915 驱动(新的 Xe 架构用 xe),配合 mesa 即可。唯一需要额外装的是视频编解码的固件和用户态库,也就是 intel-media-driver。
搞清楚这些背景之后,安装选择的方向基本就定了:NVIDIA 用户装闭源驱动,AMD 和 Intel 用户保证内核、固件、mesa 三件套齐全即可。
1.3 安装前需要准备的软件包
不管哪家显卡,我建议先把基础工具装上:
bash复制sudo pacman -S base-devel linux-headers mesa-utils vulkan-tools
linux-headers是 DKMS 编译内核模块必须的,后面会反复用到。mesa-utils提供glxinfo,用来验证 OpenGL 渲染是否真的走了独立显卡。vulkan-tools提供vulkaninfo,验证 Vulkan 支持。
这里有个细节:如果你用的不是默认内核,而是 linux-lts 或者自己编译的内核,要装对应的头文件包,比如 linux-lts-headers。安装错了,DKMS 会直接编译报错,报错信息还很抽象,新手根本看不懂。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. NVIDIA 闭源驱动安装与配置
2.1 选对包:nvidia、nvidia-lts 还是 nvidia-dkms
Arch 官方仓库里 NVIDIA 驱动包有四个相关选择:
| 包名 | 适用场景 | 特点 |
|---|---|---|
nvidia |
默认 linux 内核 |
预编译模块,安装快,但与默认内核严格绑定 |
nvidia-lts |
linux-lts 内核 |
同上,绑定 LTS 内核 |
nvidia-dkms |
任何内核、自定义内核、多内核切换 | 每次内核升级后自动重编译,灵活但需装 headers |
nvidia-utils |
所有 NVIDIA 用户 | 用户态库,必须安装 |
我自己现在用的是 nvidia-dkms,原因很简单:Arch 上很多人会同时装 linux 和 linux-lts 两个内核作为保险,万一主内核出问题还能切到 LTS。这种情况下,nvidia 只能照顾一个内核,每次装新内核都得手动换包。DKMS 则会在内核升级时自动把模块编译好,省心。
如果你确定自己永远只用一个默认内核,装 nvidia 最省事,不用自己编译,装的也快。用下面的命令安装:
bash复制# 方案一:默认内核,预编译
sudo pacman -S nvidia nvidia-utils
# 方案二:DKMS 方式,适合多内核或自定义内核
sudo pacman -S nvidia-dkms nvidia-utils
如果是 64 位系统还想跑 32 位应用(比如 Steam 里的老游戏),再加一个:
bash复制sudo pacman -S lib32-nvidia-util
