我无法amdgpu
加载驱动程序。相反,它总是加载radeon
。
设置:
Ubuntu 18.04.1 LTS
i7-5830k
2 台 R9 390X
答案1
这是一份指南和测试摘要启用 amdgpu(代替雷響)在 Ubuntu 18.04.1 上有一个R9 390X安装并尝试各种内核。
看完之后这和阅读/观看Level1Techs 指南以及许多其他人我最终设法加载 amdgpu 而不是 radeon。以下步骤显示了如何实现这一点。
问题
我想使用开源驱动程序(不是 amdgpu-pro)通过 DXVK 在 Linux 上玩游戏。由于 DXVK 仅适用于 amdgpu 驱动程序,因此我不得不摆脱一直加载 radeon 的 Ubuntu。
我的设置
Ubuntu 18.04.1 LTS
i7-5830k
R9 390X(实际上是 2,但应该没关系)
如何
一、最新驱动程序
@未经测试:它还应该与 Ubuntu 18.04.1 安装附带的官方驱动程序兼容。如果您不想运行非官方驱动程序,请跳过此步骤。
@笔记:从 PPA 下载较新的非官方驱动程序以在 DXVK 中获得更好的性能。可能不稳定。
安装最新的驱动程序https://launchpad.net/~oibaf/+archive/ubuntu/graphics-drivers:
sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt update && sudo apt dist-upgrade
sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:i386
@错误未满足的依赖关系:首先安装原装驱动程序:
sudo add-apt-repository --remove ppa:oibaf/graphics-drivers
sudo apt install mesa-vulkan-drivers mesa-vulkan-drivers:i386
@注意力:确保没有其他图形驱动程序 PPA,例如ppa:保罗·米格尔·迪亚斯/梅萨添加。您可以查看他的 Mesa 驱动程序:稳定的或者不稳定
@错误由于 PPA 导致的一般错误: 清除图形驱动程序 PPA 以恢复到原始驱动程序并进行清理:
sudo apt install ppa-purge && aptitude
sudo ppa-purge ppa:oibaf/graphics-drivers
sudo apt autoremove && sudo apt autoclean
你可以重新开始。
II. Xorg 配置
创建一个将在启动时自动加载的 xorg 配置文件:
/usr/share/X11/xorg.conf.d/<nr-name>.conf
例如42-amdgpu.conf
#/usr/share/X11/xorg.conf.d/42-amdgpu.conf
Section "Device"
Identifier "AMDGPU"
Driver "amdgpu"
Option "AccelMethod" "glamor"
Option "DRI" "3"
EndSection
@未经测试:将其添加到已存在的10-amdgpu.conf
文件中。可能会被驱动程序安装覆盖。
@选项:您也可以将其添加到/etc/X11/xorg.conf
或/etc/xorg.conf
。
三、黑名单 radeon
创建需要列入黑名单的模块的黑名单文件:
/etc/modprobe.d/<name>.conf
例如blacklist-radeon.conf
#/etc/modprobe.d/blacklist-radeon.conf
blacklist radeon
@选项:blacklist.conf
只需附加到某处就可以使用已经存在的文件blacklist radeon
。
四、GRUB 配置
在 grub 配置中添加或更改以下参数/etc/default/grub
:
#/etc/default/grub
...
GRUB_GFXMODE=1920x1080x32
GRUB_CMDLINE_LINUX_DEFAULT="radeon.si_support=0 radeon.cik_support=0 amdgpu.si_support=1 amdgpu.cik_support=1 amdgpu.dc=1 amdgpu.dpm=1 amdgpu.modeset=1"
...
@不工作:我复制了文件40_custom
到 中。当我将其放入而不是 中/etc/grub.d/
时,它不起作用。(有关详细信息,请参阅 )40_amdgpu
/etc/default/grub
/etc/grub.d/README
五、更新 GRUB 和初始 ramdisk
让上述更改生效:
sudo update-grub2 && sudo update-initramfs -u -k all
和
reboot
六核实
要验证 amdgpu 驱动程序是否已加载并正在使用,请执行以下一个或多个命令:
lsmod | egrep 'Used|amdgpu'
sudo lspci -v | grep amdgpu -B 19
sudo lshw -c video | grep amdgpu -B 10 -A 1
运行 Vulkan 测试应用程序:
sudo apt install vulkan-utils
和
vulkan-smoketest
VII.I 使用较新的内核进行测试(截至 2018-11-19)
我尝试按照上述步骤启动各种内核。
要安装其他内核,我使用了Ubuntu 内核更新实用程序:
sudo apt-add-repository -y ppa:teejee2008/ppa
sudo apt update
sudo apt install ukuu
以下是我的测试总结:
4.15.0
WORKING!
Ubuntu 18.04.1 LTS 默认内核
4.17.5
WORKING!
内核用于这个视频
4.18.0
WORKAROUND!
Ubuntu 19.10 Disco 当前默认内核(2018-11-19)
4.18.15
WORKAROUND!
最新的 4.18.x 内核对 amdgpu 进行了更改
4.18.19
WORKAROUND!
最新的 4.18.x 内核
4.19
FAILURE!
黑屏或 dmesg:
[drm:dm_pp_get_static_clocks [amdgpu]] *ERROR* DM_PPLIB: invalid powerlevel state: 0!
4.19.1
FAILURE!
黑屏或 dmesg:
drm:dm_pp_get_static_clocks [amdgpu]] *ERROR* DM_PPLIB: invalid powerlevel state: 0!
drm:amdgpu_vce_ring_test_ring [amdgpu]] *ERROR* amdgpu: ring 12 test failed
drm:amdgpu_device_init.cold.28 [amdgpu]] *ERROR* hw_init of IP block <vce_v2_0> failed -110
amdgpu 0000:05:00.0: amdgpu_device_ip_init failed
amdgpu 0000:05:00.0: Fatal error during GPU init
4.19.2
FAILURE!
dmesg:
Direct firmware load for amdgpu/hawaii_mc.bin failed with error -2
@笔记:我还没有对内核的错误进行更多调查4.19.x
。
VII.II 解决方法
4.18-4.18.19
要使4.18
内核工作:
备份您当前的固件文件:
sudo cp -r /lib/firmware /lib/firmware-$(uname -r)
从以下网址下载 Ubuntu 19.10 Disco 的 Linux 固件(当前 Disco 版本默认使用内核 4.18.0)https://packages.ubuntu.com/en/disco/linux-firmware或者:
wget http://archive.ubuntu.com/ubuntu/pool/main/l/linux-firmware/linux-firmware_1.176.tar.gz
提取文件:
tar -xvzf linux-firmware_1.76.tar.gz
进入新的固件目录:
cd linux-firmware
安装固件:
sudo make install
重启
reboot
答案2
VII.II 使用较新的内核进行测试(截至 2020-01-01)
以下是我的测试总结:
4.18.16
WORKING!
Mint 19.1 具有所有提到的内核参数并且 Radeon 被列入黑名单
4.18.17 - 4.18.20
BLACKSCREEN!
固件更新未能解决问题
4.18.17 - 4.18.20
NOT TESTED!
省略 dpm 内核参数
4.20.12
WORKING!
dpm 内核参数省略
5.00.00
WORKING!
dpm 内核参数省略
5.2.21
RECOMMENDED!
WORKING!
amdgpu.dpm=1 已修复并可正常工作
VIII 编写风扇控制服务以修复卡顿问题并实现静音游戏
warning: many gpus have a maximum temperature of 95°C / 203°F
exceeding that can damage your gpu, look at your config twice!
编写一个服务,文件名为:amdgpu-fancontrol.service
[Unit] Description=amdgpu-fancontrol [Service] Type=simple ExecStart=/usr/bin/amdgpu-fancontrol [Install] WantedBy=multi-user.target
将服务放入
/etc/systemd/system
从 github 获取脚本:关联
如果需要,可以更改脚本的参数
4.1.如果您还有集成显卡,请将所有数字从零改为一。
/sys/class/drm/card1/device/hwmon/hwmon1/
4.2. 更改温度/转速映射。风扇速度的变化确实会影响渲染。因此,值应保持不变,以便中间不发生插值。最后一个值将被选为过热保护的最大风扇速度。
TEMPS=( 60000 65000 80000 95000 96000 )
PWMS=( 170 170 170 170 255 )
4.3 检查目录以确保其存在
将脚本放入 /usr/bin/amdgpu-fancontrol
激活服务
sudo systemctl daemon-reload sudo systemctl enable amdgpu-fancontrol.service sudo systemctl start amdgpu-fancontrol.service