![我觉得我使用的是 radeon 而不是 amdgpu?我该如何更改?](https://linux22.com/image/894328/%E6%88%91%E8%A7%89%E5%BE%97%E6%88%91%E4%BD%BF%E7%94%A8%E7%9A%84%E6%98%AF%20radeon%20%E8%80%8C%E4%B8%8D%E6%98%AF%20amdgpu%EF%BC%9F%E6%88%91%E8%AF%A5%E5%A6%82%E4%BD%95%E6%9B%B4%E6%94%B9%EF%BC%9F.png)
所以我在 17.04 上,我知道 amdgpu-pro 在 4.10 内核上不可用。但我很好奇我运行的是什么,所以我使用了
lspci -k | grep -EA3 'VGA|3D|Display'
然后它又回来了
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii XT / Grenada XT [Radeon R9 290X/390X]
Subsystem: ASUSTeK Computer Inc. R9 290X DirectCU II OC
Kernel driver in use: radeon
Kernel modules: radeon, amdgpu
那么这是否意味着我有 amdgpu 但正在使用 radeon?我似乎找不到有关如何在驱动程序之间切换的信息。我还有其他相关问题,是否有人知道 oibaf 作为替代方案,或者是否有人可以告诉我是否值得努力回滚内核?我主要将其用作游戏装备,而 radeon 的兼容性非常差。我宁愿不必回到 16.10,只是因为 amd 似乎不喜欢我们这些 linux 用户。
答案1
新方法不需要将任何模块列入黑名单。您只需向内核发送两个参数:
适用于加勒比群岛 GPU
radeon.cik_support=0 amdgpu.cik_support=1
对于 Sea Islands GPU
radeon.si_support=0 amdgpu.si_support=1
我个人喜欢将其添加为默认值,因此我编辑 /etc/default/grub,然后将内核参数添加到 GRUB_CMDLINE_LINUX_DEFAULT,如下所示:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="radeon.cik_support=0 amdgpu.cik_support=1 radeon.si_support=0 amdgpu.si_support=1"
GRUB_CMDLINE_LINUX=""
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
记得跑更新 grub并重新启动系统以使更改生效。
我可以确认这适用于自 17.10 以来运行 Ubuntu 的 390x。还尝试了 18.04、18.10、19.04、19.10、20.04,因为我一直在使用它们。(我相信你也可以在 17.04 上做同样的事情)
或者,如果您想启用新的动态电源管理和显示代码实验性支持,您还需要添加以下几行
amdgpu.dc=1
amdgpu.dpm=1
有关 DC 代码的更多信息,请查看以下链接: https://wiki.archlinux.org/index.php/AMDGPU#AMD_DC
从我个人使用 390x 卡的经验来看,DC 代码不稳定,我不得不禁用它才能获得稳定的内核。过去几个月我都没有尝试启用它,所以我不知道 DC 中的这个错误是否已修复。
答案2
将其列入黑名单确实奏效了。我现在正在运行 AMDGPU,至少在专业版推出之前。我将列出这些步骤作为答案,以防其他人来寻找答案。
内核模块内置的黑名单是在启动时完成的,因此 grub 会负责这项工作。编辑
/ect/default/grub
使用您选择的编辑器并添加
modprobe.blacklist=radeon
将 GRUB_CMDLINE_LINUX_DEFAULT 添加到任何可能已经存在的内容旁边,例如 quiet splash。然后,保存更改并更新 grub。
sudo update-grub2
重新启动后,您应该使用 AMDGPU 而不是 radeon。我应该强调确保您的卡兼容,否则将您的 gfx 模块列入黑名单可能会导致问题。
答案3
我能够按照以下步骤安装 amd 开源(radeon)驱动程序
- 更新内核至4.16以上:
- 添加以下内核参数,分隔符为空格:
radeon.cik_support=0
radeon.si_support=0
amdgpu.si_support=1
amdgpu.cik_support=1
amdgpu.dc=1
amdgpu.dpm=1
- 将 GPU 的电源状态设置为性能:
- 安装 Vulkan 驱动程序:
- 检查驱动程序:
lspci -nnk | grep -i vga -A3 | grep 'in use'
- 使用以下工具检查 openGL:
glxinfo | grep "OpenGL version