如何

如何

我无法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内核工作:

  1. 备份您当前的固件文件:

    sudo cp -r /lib/firmware /lib/firmware-$(uname -r)
    
  2. 从以下网址下载 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
    
  3. 提取文件:

    tar -xvzf linux-firmware_1.76.tar.gz
    
  4. 进入新的固件目录:

    cd linux-firmware
    
  5. 安装固件:

    sudo make install
    
  6. 重启

    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! 
  1. 编写一个服务,文件名为:amdgpu-fancontrol.service

    [Unit]
    Description=amdgpu-fancontrol
    
    [Service]
    Type=simple
    ExecStart=/usr/bin/amdgpu-fancontrol
    
    [Install]
    WantedBy=multi-user.target
    
  2. 将服务放入

    /etc/systemd/system
    
  3. 从 github 获取脚本:关联

  4. 如果需要,可以更改脚本的参数

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 检查目录以确保其存在

  1. 将脚本放入 /usr/bin/amdgpu-fancontrol

  2. 激活服务

    sudo systemctl daemon-reload
    sudo systemctl enable amdgpu-fancontrol.service
    sudo systemctl start amdgpu-fancontrol.service
    

相关内容