共计 1787 个字符,预计需要花费 5 分钟才能阅读完成。
在 Ubuntu 22.04 上使用 AMD 显卡时,主要有两种驱动方案可选:开源 amdgpu 驱动和闭源 amdgpu-pro 驱动。开源驱动由社区维护,稳定性较好但性能可能不如闭源驱动;闭源驱动由 AMD 官方提供,支持更多高级功能如 OpenCL 和 Vulkan 加速,适合专业图形和计算需求。

闭源驱动安装流程
- 添加官方仓库 GPG 密钥
首先需要添加 AMD 官方仓库的 GPG 密钥,并验证指纹以确保安全性。
sudo apt update
sudo apt install -y wget
wget -q -O - https://repo.radeon.com/rocm/rocm.gpg.key | sudo apt-key add -
# 验证指纹
sudo apt-key fingerprint 0x1c0e111d
确保输出中包含 1C0E 111D 指纹,这是 AMD 官方密钥的标识。
- 配置 apt 源
根据 Ubuntu 子版本的不同,apt 源配置可能略有差异。以下是适用于 Ubuntu 22.04 的配置:
echo 'deb [arch=amd64] https://repo.radeon.com/amdgpu/5.7/ubuntu jammy main' | sudo tee /etc/apt/sources.list.d/amdgpu.list
sudo apt update
如果是 22.04.1 或 22.04.3,请确保 jammy 字段与你的系统版本匹配。
- 安装闭源驱动
使用 amdgpu-install 工具安装驱动,并指定适用的用例(如图形渲染或 OpenCL 计算)。
sudo apt install -y amdgpu-install
sudo amdgpu-install --usecase=graphics,opencl --vulkan=pro --opencl=rocr
--usecase=graphics,opencl:指定驱动用途为图形和 OpenCL 计算。--vulkan=pro:启用 Vulkan 专业驱动支持。--opencl=rocr:使用 ROCr 运行时支持 OpenCL。
DKMS 自动编译内核模块故障排查
- 查看内核模块版本
使用 modinfo 检查当前加载的内核模块版本,确保与驱动版本一致。
modinfo amdgpu | grep version
- 解决 Secure Boot 签名问题
如果启用了 Secure Boot,可能需要手动签名内核模块。使用 mokutil 工具处理签名问题:
sudo mokutil --disable-validation
# 重启后进入 MOK 管理界面,选择禁用验证
性能验证
- Vulkan 基准测试
安装 Vulkan 工具并运行测试,确认驱动正常工作。
sudo apt install -y vulkan-tools
vulkaninfo | grep "driverVersion"
vkcube
预期输出中应包含 AMD 驱动的版本号,并且 vkcube 会显示一个旋转的立方体。
- OpenCL 设备识别
使用 clinfo 检查 OpenCL 设备是否被正确识别。
sudo apt install -y clinfo
clinfo | grep "Device Name"
输出应显示你的 AMD GPU 设备名称。
生产环境注意事项
- 避免与 Nouveau 驱动冲突
在 GRUB 配置中添加以下参数,禁用 Nouveau 驱动:
sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="/&amdgpu.dc=1 rd.driver.blacklist=nouveau /' /etc/default/grub
sudo update-grub
- 多 GPU 混插时的 PCIe 总线编号确认
使用 lspci 确认 GPU 的 PCIe 总线编号,避免设备冲突。
lspci | grep -i amd
后续扩展:ROCm 计算框架
如果需要进一步支持深度学习计算,可以尝试部署 ROCm 的 TensorFlow 容器。
docker pull rocm/tensorflow:latest
docker run -it --device=/dev/kfd --device=/dev/dri rocm/tensorflow:latest
更多信息可参考 ROCm 官方文档 。
总结
本文详细介绍了在 Ubuntu 22.04 上安装 AMD 显卡闭源驱动的完整流程,从密钥验证到性能测试,涵盖了常见问题的解决方法。无论是图形渲染还是 GPU 计算,都能通过合理的驱动配置获得最佳性能。如果需要更高级的计算支持,ROCm 框架是一个不错的选择。
