1. 为什么要在 Ubuntu 22.04 上折腾 Intel Arc A770
Intel Arc A770 这张卡在 Linux 桌面上的处境,这两年变化挺大的。2022 年刚发布那会儿,内核里连像样的驱动都没有,插上去能点亮桌面都算运气好;到了 Ubuntu 22.04 这个 LTS 周期里,情况已经完全不同了——只要你把内核、固件、用户态驱动这三样东西对齐,A770 在 Linux 下跑桌面、跑视频硬解、跑轻度 AI 推理都是能用的,甚至在某些场景下性价比相当能打。
我这次折腾的起因很简单:手头一台老机器升级,预算有限,又想兼顾 4K 桌面输出和本地跑点小模型,A770 16GB 显存版本的价格实在诱人。但真正上手才发现,Ubuntu 22.04 默认的 5.15 内核根本喂不饱这张卡,lspci能看到设备,glxinfo却告诉你还在用 llvmpipe 软件渲染,风扇狂转、画面卡顿,典型的“卡在驱动没起来”的状态。
这篇内容就是把我从零到跑通的全过程拆开讲清楚。核心要解决三件事:内核版本要够新、RBAR(Resizable BAR)必须开、用户态驱动和固件要装对。适合手里有 Arc 系列显卡、想在 Ubuntu 22.04 上把它真正用起来的人,也适合单纯想搞明白 Linux 显卡驱动这套机制的朋友。下面我会把每一步的“为什么”讲透,而不是甩几条命令让你照抄——因为这张卡的坑,恰恰都藏在“为什么”里。
2. 动手前的整体思路与方案选型
2.1 先搞清楚 Linux 显卡驱动的三层结构
很多人装显卡驱动失败,根本原因是没搞明白 Linux 下显卡驱动其实是三层叠加的,缺一层都不行。我用一个生活化的类比来解释:把显卡想象成一台新买的打印机,你要让它工作,需要三样东西——电脑得认识这个接口(内核驱动)、打印机得有固件(firmware)、电脑上得装对应的打印软件(用户态驱动)。少任何一样,打印机就是块砖。
对应到 Intel Arc A770 上,这三层分别是:
- 内核层(Kernel):负责和硬件直接对话的是
i915驱动。Arc 系列(DG2 架构)需要较新的内核才能完整支持,Ubuntu 22.04 默认的 5.15 内核虽然能识别,但功能残缺、性能拉胯。业界普遍的经验是6.2 及以上内核才能让 Arc 跑得比较舒服,6.5+ 更稳。 - 固件层(Firmware):Intel 显卡需要从
linux-firmware包里加载GuC(图形微控制器)和HuC(视频微控制器)固件。固件版本太老,硬件加速、视频编解码这些功能就起不来。 - 用户态层(Userspace):包括 Mesa 里的
iris驱动(负责 OpenGL/Vulkan)和intel-media-driver(负责视频硬解)。这层决定了你的桌面能不能硬件加速、游戏能不能跑、视频能不能硬解。
提示:这三层里任何一层版本对不上,表现都是“设备在、但用不了”。所以排查问题时,永远先确认这三层的版本,而不是盲目重装。
2.2 为什么选 HWE 内核而不是自己编译
升级内核有两条路:一是自己下载源码编译,二是用 Ubuntu 官方的 HWE(Hardware Enablement)内核。我强烈建议走第二条,原因很实在:
自己编译内核听起来很酷,但坑极多——配置项漏一个,显卡就起不来;编译一次动辄半小时到几小时;后续每次内核更新你都得重来一遍。而 Ubuntu 的 HWE 内核是官方维护的、经过测试的、能通过apt自动更新的,省心太多。对于绝大多数人来说,HWE 内核的版本(22.04 后期能到 6.5 甚至 6.8)已经完全够 Arc A770 用了。
除非你有非常特殊的需求(比如要打某个实时补丁、要裁剪内核体积),否则不要自己编译内核。这是我踩过坑之后的真心建议。
2.3 RBAR 为什么是这张卡的“生死线”
RBAR,全称 Resizable BAR,中文叫“可变基址寄存器”。这东西是 PCIe 的一个特性,简单说就是让 CPU 能一次性访问显卡的全部显存,而不是像传统方式那样只能一小块一小块地访问(传统方式一次只能映射 256MB)。
为什么这对 Arc 特别关键?因为 Intel 的 Arc 驱动架构在设计上高度依赖 RBAR。如果 RBAR 没开,你会遇到:性能直接腰斩、部分游戏直接崩溃、驱动甚至可能拒绝加载。这不是“锦上添花”,而是“没有它基本没法用”。
RBAR 的开启分两个层面:主板 BIOS 里要开(这是前提),系统层面要确认它真的生效了(用lspci验证)。很多人只做了第一步就以为完事了,结果系统层面根本没生效,白忙活。后面我会详细讲怎么验证。
3. 核心细节解析与实操要点
3.1 内核升级:从 5.15 到 6.5 的完整操作
先确认你当前的内核版本,这一步别跳过:
uname -r如果输出是5.15.x开头,那基本可以确定需要升级。升级 HWE 内核的命令如下:
sudo apt update sudo apt install --install-recommends linux-generic-hwe-22.04装完之后必须重启,重启后再uname -r确认版本。正常情况下会看到6.5.x或6.8.x之类的版本号。
这里有个细节要注意:linux-generic-hwe-22.04这个元包会自动拉取当前 HWE 周期对应的内核、头文件、模块。装完之后,旧内核不会自动删除,这是好事——万一新内核有问题,你还能在 GRUB 里选旧内核启动救急。
注意:升级内核前,如果你装了任何第三方内核模块(比如某些虚拟化、文件系统相关的 DKMS 模块),要确认它们支持新内核,否则重启后可能起不来。纯桌面环境一般没这个问题。
3.2 固件更新:别让老固件拖后腿
内核到位后,固件也得跟上。Ubuntu 的固件包是linux-firmware,更新它:
sudo apt install --reinstall linux-firmware为什么用--reinstall而不是直接install?因为很多时候这个包已经装了,只是版本旧,install不会做任何事,--reinstall才会强制拉最新版本。
装完之后,你可以检查一下 Intel 显卡相关的固件文件是否存在:
ls /lib/firmware/i915/ | grep -i dg2Arc A770 是 DG2 架构,应该能看到dg2_guc_*.bin和dg2_huc_*.bin这类文件。如果看不到,说明固件包版本太旧,可能需要从更新的源获取。
3.3 用户态驱动:Mesa 和媒体驱动的安装
用户态这层,桌面渲染靠 Mesa,视频硬解靠 intel-media-driver。安装命令:
sudo apt install mesa-utils intel-media-va-driver-non-free vainfomesa-utils里带了glxinfo,用来验证 OpenGL 是否走硬件;vainfo用来验证视频硬解能力。装完之后验证:
glxinfo | grep "OpenGL renderer"如果输出里出现Intel Arc或Mesa Intel Graphics字样,说明硬件加速起来了;如果还是llvmpipe,那说明前面某一步没生效,得回头查。
视频硬解验证:
vainfo正常应该能看到一堆VAProfileH264、VAProfileHEVC、VAProfileAV1之类的条目。Arc A770 的 AV1 硬编硬解是它的强项,如果vainfo里没有 AV1 相关条目,说明媒体驱动没装对。
3.4 RBAR 的 BIOS 设置与系统验证
BIOS 层面,不同主板叫法不一样,常见的有:
Resizable BAR(最常见)Re-Size BAR SupportAbove 4G Decoding(这个通常要一起开)Smart Access Memory(这是 AMD 的叫法,但本质一样)
进 BIOS 后,先找Above 4G Decoding打开,再找Resizable BAR打开。有些主板还需要把CSM(兼容性支持模块)关掉,用纯 UEFI 模式启动。
系统层面验证,用这条命令:
sudo lspci -vv -s $(lspci | grep -i "VGA.*Intel" | cut -d' ' -f1) | grep -i "BAR"或者更直接地看:
sudo lspci -v | grep -A 10 "VGA compatible controller"关键看Region 2那一行,如果显示的是[size=16G]之类的完整显存大小,说明 RBAR 生效了;如果显示[size=256M],那就是没开。
提示:有些主板即使 BIOS 里开了 RBAR,如果显卡插在 PCIe 3.0 的槽上,或者 CPU 不支持,也可能不生效。Arc A770 建议插在 PCIe 4.0 x16 的槽上,且 CPU 平台要支持 Resizable BAR(Intel 10 代以上、AMD 5000 系以上基本都支持)。
4. 完整实操流程与关键环节记录
4.1 从零开始的完整命令序列
把前面的步骤串起来,这是一套可以直接照着走的流程。我按顺序列出来,每一步都标注了目的:
# 1. 更新软件源索引 sudo apt update # 2. 升级 HWE 内核(解决内核层) sudo apt install --install-recommends linux-generic-hwe-22.04 # 3. 更新固件(解决固件层) sudo apt install --reinstall linux-firmware # 4. 安装用户态驱动(解决用户态层) sudo apt install mesa-utils intel-media-va-driver-non-free vainfo # 5. 重启,让新内核和固件生效 sudo reboot重启后,依次验证:
# 验证内核版本 uname -r # 验证 OpenGL 渲染器 glxinfo | grep "OpenGL renderer" # 验证视频硬解 vainfo # 验证 RBAR sudo lspci -v | grep -A 10 "VGA compatible controller"4.2 参数与版本对照表
为了让你一眼看清各层的版本要求,我整理了一张对照表。这张表是我根据多次实测和社区反馈总结的,不是官方文档的照搬:
| 层级 | 组件 | 最低可用版本 | 推荐版本 | 验证命令 |
|---|---|---|---|---|
| 内核 | linux-generic-hwe | 6.2 | 6.5+ | uname -r |
| 固件 | linux-firmware | 2023 年初版本 | 最新 | ls /lib/firmware/i915/ |
| 用户态 | Mesa | 23.0 | 23.2+ | glxinfo | grep OpenGL |
| 媒体 | intel-media-driver | 23.1 | 最新 | vainfo |
| 硬件 | RBAR | 必须开启 | 必须开启 | lspci -v |
这张表的价值在于:当你遇到问题时,可以逐行对照,快速定位是哪一层拖了后腿。比如glxinfo显示 llvmpipe,但内核版本是对的,那问题大概率在 Mesa 版本或固件上。
4.3 一次真实的排查记录
说个我实际遇到的案例。有一次装完所有东西,glxinfo死活显示 llvmpipe,我一度以为是 Mesa 没装对。后来一步步查:
先看内核,uname -r显示 6.5,没问题。再看固件,ls /lib/firmware/i915/里 DG2 的固件文件都在,也没问题。然后看dmesg:
sudo dmesg | grep -i i915发现一行关键报错:i915 0000:03:00.0: [drm] *ERROR* GT0: GuC firmware load failed。这说明固件加载失败了。再往下查,发现是linux-firmware虽然装了,但版本还是旧的,DG2 的固件文件是空的或者损坏的。重新--reinstall之后,问题解决。
这个案例的教训是:不要只看“文件在不在”,要看“加载成没成”。dmesg里的 i915 日志是排查显卡问题的第一手资料,比任何猜测都靠谱。
5. 常见问题与排查技巧实录
5.1 高频问题速查表
下面这张表是我和社区里其他人踩过的坑的汇总,按“现象→可能原因→解决方向”组织:
| 现象 | 可能原因 | 解决方向 |
|---|---|---|
glxinfo显示 llvmpipe | 内核太旧 / 固件没加载 | 升级内核、重装固件、查 dmesg |
| 画面卡顿、风扇狂转 | RBAR 没开 / 驱动没起来 | 进 BIOS 开 RBAR、验证 lspci |
vainfo报错或无输出 | 媒体驱动没装 | 装 intel-media-va-driver-non-free |
| 开机黑屏 | 内核与显卡不兼容 | GRUB 选旧内核启动,回滚 |
| 游戏崩溃 | RBAR 未生效 / Mesa 太旧 | 验证 RBAR、升级 Mesa |
dmesg报 GuC load failed | 固件版本旧或损坏 | --reinstall linux-firmware |
5.2 几个容易被忽略的避坑点
第一,别用apt autoremove清理旧内核。很多人装完新内核后手贱清理旧内核,结果新内核一旦出问题,连回滚的机会都没有。旧内核占的那点空间,换来的是救命的退路,值。
第二,Secure Boot 可能拦路。如果你的机器开了 Secure Boot,第三方内核模块(包括某些 DKMS 模块)可能加载失败。Arc 的 i915 是内核自带的,一般不受影响,但如果你同时装了别的显卡驱动或虚拟化模块,就要注意。实在不行,进 BIOS 把 Secure Boot 关掉。
第三,虚拟机里别折腾这个。如果你是在 VMware 或 VirtualBox 里装 Ubuntu,Arc A770 是没法直通的(除非做 PCIe 直通,那是另一个大工程)。虚拟机里的“显卡驱动”是虚拟的,和物理卡完全是两码事。这篇内容针对的是物理机。
第四,lspci验证 RBAR 时看对行。一张卡在lspci -v里可能有好几个 Region,要看的是显存对应的那个(通常是 Region 2 或 Region 0),别看到[size=256M]就以为没开,那可能是别的寄存器区域。
5.3 独家实操心得
分享几个文档里不会写、但实际很有用的技巧。
关于内核选择:如果你用的是 22.04.3 之后的镜像,HWE 内核可能默认就是 6.5 了,那就不用额外装。先uname -r看一眼,省得白折腾。
关于验证顺序:排查问题时,永远按“内核→固件→用户态→RBAR”的顺序查。因为下层不通,上层再怎么折腾都是白费。我见过有人 Mesa 装了卸、卸了装好几遍,最后发现是内核太旧,纯属浪费时间。
关于性能预期:Arc A770 在 Linux 下的性能,和 Windows 下比还是有差距的,尤其是新游戏。但日常桌面、视频、轻度计算完全够用。别拿它和同价位的 N 卡在 Linux 下比游戏帧数,心态会崩。它的优势在显存大、AV1 硬解强、开源驱动支持好。
关于驱动更新:Ubuntu 的 HWE 内核和 Mesa 会随系统更新自动升级,所以装好之后基本不用管。但如果你想要最新的 Mesa(比如为了新游戏),可以考虑加kisak-mesa这个 PPA,不过要承担一定的不稳定风险。我个人建议,除非有明确需求,否则用官方源的就够了。
6. 装好之后还能做点什么
驱动跑通只是起点。A770 在 Linux 下还有不少可玩的方向,简单提几个,给后续折腾留个引子。
视频转码:Arc 的 AV1 硬编是它的招牌。用ffmpeg配合vaapi,可以把转码速度拉满,功耗还低。命令大概是ffmpeg -hwaccel vaapi -i input.mp4 -c:v av1_vaapi output.mp4这个路子,具体参数得根据你的源文件调。
本地 AI 推理:16GB 显存跑些小模型是够的。Intel 有自己的oneAPI和IPEX-LLM工具链,能在 Arc 上跑推理。这块配置比驱动复杂,但社区文档不少,有兴趣可以深入。
多屏 4K 输出:Arc A770 的显示输出能力很强,多屏 4K 60Hz 没问题。如果你是多屏工作者,这张卡在 Linux 下的多屏体验是相当顺的。
游戏:Steam 的 Proton 对 Arc 的支持在持续改善,配合较新的 Mesa,不少游戏能跑。但要有心理准备,兼容性和性能不如 Windows,适合折腾型玩家。
我个人在实际操作中的体会是,Arc A770 在 Linux 下最大的门槛就是“把驱动搞对”这一步,一旦过了这个坎,后面的使用体验其实相当稳定。它不像某些卡那样需要频繁折腾驱动,装好之后基本就是“设好就忘”的状态。所以前面这些步骤虽然繁琐,但值得一次性做扎实。最后再分享一个小技巧:把本文用到的验证命令写成一个脚本,每次系统大更新后跑一遍,能快速确认驱动状态有没有被更新破坏,省得每次出问题都从头查起。