跳转到主要内容
x

SuperMicro X10SDV-TLN4F上使用独立显卡Radeon RX 560

X10SDV-TLN4F是超微公司2015年推出的低功耗服务器ITX主板(45W,完全可以做NAS系统使用),CPU为主板集成(Intel® Xeon® processor D-1541)。该主板使用中最大的性能弱点,是它的集成显卡ASPEED Graphics。该显卡实在太老旧,在Deepin Linux下几乎寸步难行(可参考这里的惨痛教训记录,不过Ubuntu Linux会好很多)。为此,购买了Radeon RX 560独立显卡进行替换使用。不过,如果只是把显卡查到PCI插槽,是无法工作的。下面是该显卡在X10SDV-TLN4F主板上和Deepin 20系统上的使用记录。

1. 使用独立显卡的BIOS设置

重新启动主板,将BIOS中的VGA Priority [Onboard])(板载)修改为"VGA Priority [Offboard](外接)"。注意,显卡到显示器使用HDMI接线。

2. 操作系统安装和驱动安装

Windows系统的安装不在此说明。这里主要说明Deepin 20系统安装中的使用问题(相当于Ubuntu Linux 18.04)。Deepin Linux 20系统安装后,经常出现如下的花瓶障碍:

error-driver

出现这个故障的原因在于所安装的内核版本其所含显卡驱动造成的问题。解决的办法,要么安装更高版本的内核和驱动firmware,如linux-image-5.13.13和linux-firmware(1.197),要么安装AMD公司提供的闭源驱动。

1. 首先升级系统,升级内核版本

sudo apt-get update && sudo apt-get upgrade -y

sudo apt-get install linux-image-5.13.13-amd64-desktop

2. 在上述基础上,下载安装闭源驱动

以Radeon RX 560显卡驱动安装为例。首先下载驱动安装包,下载地址在https://www.amd.com

页面打开后,点开页面中Ubuntu x86 64-Bit标签,选择Radeon™ Software for Linux® Driver for Ubuntu 20.04下载即可。下载后,安装其中的amdgpu-dkms、amdgpu-dkms-firmware和xserver-xorg-amdgpu-video-amdgpu即可。

安装上述包后,还需执行这样的命令:

sudo update-initramfs -k all -u -v

radeon-560 Driver

下载后解压,可看到amdgpu-dkms_5.11.19.98-1290604_all.deb、amdgpu-dkms-firmware_5.11.19.98-1290604_all.deb、xserver-xorg-amdgpu-video-amdgpu_19.1.0-1290604_amd64.deb。打开它们进行安装即可。

或者使用包里的amdgpu-install、amdgpu-pro-install两个安装脚本。

使用安装脚本,需要进行如下的操作过程:

560-18.04

执行安装脚本:sudo ./amdgpu-pro-install

打开终端下,执行脚本。但可能会报这样的错误“Unsupported DEB-based OS: /etc/os-release ID 'Ubuntu'”,出现这个原因,是该脚本具有如下的代码行进行判断:

function os_release() {
    if [[ -r  /etc/os-release ]]; then
        . /etc/os-release

        case "$ID" in
        (ubuntu|linuxmint|debian)
            :
            ;;
        *)
            echo "Unsupported DEB-based OS: `
                `/etc/os-release ID '$ID'" | stderr
            exit 1
            ;;
        esac
    else
        echo "Unsupported OS" | stderr
        exit 1
    fi
}

系统版本标识修改

从上面代码可以看出,脚本会首先判断系统版本标识,如果不是ubuntu、linuxmint、debian就会报不支持系统的错误。为此,需要进行系统版本的修改:

sudo nano /etc/os-release

打开该文档后,将相应的内容进行修改保存,如下:

os-release-edit

安装闭源驱动

sudo ./amdgpu-pro-install -y 提供Base kernel、 Accelerated graphics、 Mesa multimedia、Pro OpenGL、Pro Vulkan组件安装;
sudo ./amdgpu-pro-install -y --opencl=pal,legacy提供Base kernel、Accelerated graphics、Mesa multimedia、Pro OpenGL、Pro Vulkan和Pro OpenCL组件安装;
sudo ./amdgpu-pro-install -y --opencl=pal,legacy --headless则提供Only base kernel和Pro OpenCL (headless mode)组件安装。
sudo ./amdgpu-pro-install --uninstall用于安装失败后进行卸载。

sudo ./amdgpu-pro-install -y --opencl=pal,legacy                                                                                        
deb [ trusted=yes ] file:/var/opt/amdgpu-pro-local/ ./
获取:1 file:/var/opt/amdgpu-pro-local ./ InRelease
忽略:1 file:/var/opt/amdgpu-pro-local ./ InRelease
获取:2 file:/var/opt/amdgpu-pro-local ./ Release [816 B]
命中:3 http://mirrors.aliyun.com/ubuntu bionic InRelease
获取:2 file:/var/opt/amdgpu-pro-local ./ Release [816 B]
命中:4 http://mirrors.aliyun.com/ubuntu bionic-security InRelease
命中:5 http://mirrors.aliyun.com/ubuntu bionic-updates InRelease
获取:6 file:/var/opt/amdgpu-pro-local ./ Release.gpg
忽略:6 file:/var/opt/amdgpu-pro-local ./ Release.gpg
获取:7 file:/var/opt/amdgpu-pro-local ./ Packages [115 kB]
命中:8 http://mirrors.aliyun.com/ubuntu bionic-proposed InRelease
命中:9 http://mirrors.aliyun.com/ubuntu bionic-backports InRelease
命中:10 https://community-store-packages.deepin.com/appstore eagle InRelease
命中:11 https://community-packages.deepin.com/printer eagle InRelease                                        
正在读取软件包列表... 完成                                                                                   
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
为 amdgpu-pro-pin 选定了版本 20.40-1147287 (localhost [all])
下列软件包是自动安装的并且现在不需要了:
  ocl-icd-libopencl1
使用'sudo apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
  amdgpu-pro-pin
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 55 个软件包未被升级。
需要下载 0 B/6,076 B 的归档。
解压缩后会消耗 35.8 kB 的额外空间。
获取:1 file:/var/opt/amdgpu-pro-local ./ amdgpu-pro-pin 20.40-1147287 [6,076 B]
正在选中未选择的软件包 amdgpu-pro-pin。
(正在读取数据库 ... 系统当前共安装有 237848 个文件和目录。)
准备解压 .../amdgpu-pro-pin_20.40-1147287_all.deb  ...
正在解压 amdgpu-pro-pin (20.40-1147287) ...
正在设置 amdgpu-pro-pin (20.40-1147287) ...
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  ocl-icd-libopencl1
使用'sudo apt autoremove'来卸载它(它们)。
下列【新】软件包将被安装:
  amdgpu-pin
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 55 个软件包未被升级。
需要下载 0 B/2,776 B 的归档。
解压缩后会消耗 28.7 kB 的额外空间。
获取:1 file:/var/opt/amdgpu-pro-local ./ amdgpu-pin 20.40-1147287 [2,776 B]
正在选中未选择的软件包 amdgpu-pin。
(正在读取数据库 ... 系统当前共安装有 237864 个文件和目录。)
准备解压 .../amdgpu-pin_20.40-1147287_all.deb  ...
正在解压 amdgpu-pin (20.40-1147287) ...
正在设置 amdgpu-pin (20.40-1147287) ...
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
下列软件包是自动安装的并且现在不需要了:
  ocl-icd-libopencl1
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  amdgpu-core amdgpu-dkms-firmware amdgpu-lib amdgpu-pro-core glamor-amdgpu gst-omx-amdgpu
  libdrm-amdgpu-amdgpu1 libdrm-amdgpu-amdgpu1:i386 libdrm-amdgpu-common libdrm-amdgpu-radeon1
  libdrm-amdgpu-radeon1:i386 libdrm2-amdgpu libdrm2-amdgpu:i386 libegl1-amdgpu-mesa libegl1-amdgpu-mesa:i386
  libegl1-amdgpu-mesa-drivers libegl1-amdgpu-mesa-drivers:i386 libegl1-amdgpu-pro libegl1-amdgpu-pro:i386
  libgbm1-amdgpu libgbm1-amdgpu:i386 libgl1-amdgpu-mesa-dri libgl1-amdgpu-mesa-dri:i386
  libgl1-amdgpu-mesa-glx libgl1-amdgpu-mesa-glx:i386 libgl1-amdgpu-pro-appprofiles libgl1-amdgpu-pro-dri
  libgl1-amdgpu-pro-dri:i386 libgl1-amdgpu-pro-ext libgl1-amdgpu-pro-glx libgl1-amdgpu-pro-glx:i386
  libglapi-amdgpu-mesa libglapi-amdgpu-mesa:i386 libglapi1-amdgpu-pro libglapi1-amdgpu-pro:i386
  libgles1-amdgpu-mesa libgles1-amdgpu-mesa:i386 libgles2-amdgpu-mesa libgles2-amdgpu-mesa:i386
  libgles2-amdgpu-pro libgles2-amdgpu-pro:i386 libllvm10.0-amdgpu libllvm10.0-amdgpu:i386
  libomxil-bellagio-bin libomxil-bellagio0 libosmesa6-amdgpu libosmesa6-amdgpu:i386 libwayland-server0:i386
  libxatracker2-amdgpu libxatracker2-amdgpu:i386 mesa-amdgpu-omx-drivers mesa-amdgpu-va-drivers
  mesa-amdgpu-va-drivers:i386 mesa-amdgpu-vdpau-drivers mesa-amdgpu-vdpau-drivers:i386
  xserver-xorg-amdgpu-video-amdgpu
建议安装:
  libglide3 libglide3:i386 libomxil-bellagio0-components-base
推荐安装:
  libtxc-dxtn-s2tc0 | libtxc-dxtn0 libtxc-dxtn-s2tc0:i386 | libtxc-dxtn0:i386
下列【新】软件包将被安装:
  amdgpu amdgpu-core amdgpu-dkms amdgpu-dkms-firmware amdgpu-lib amdgpu-lib32 amdgpu-pro amdgpu-pro-core
  amdgpu-pro-lib32 glamor-amdgpu gst-omx-amdgpu libdrm-amdgpu-amdgpu1 libdrm-amdgpu-amdgpu1:i386
  libdrm-amdgpu-common libdrm-amdgpu-radeon1 libdrm-amdgpu-radeon1:i386 libdrm2-amdgpu libdrm2-amdgpu:i386
  libegl1-amdgpu-mesa libegl1-amdgpu-mesa:i386 libegl1-amdgpu-mesa-drivers libegl1-amdgpu-mesa-drivers:i386
  libegl1-amdgpu-pro libegl1-amdgpu-pro:i386 libgbm1-amdgpu libgbm1-amdgpu:i386 libgl1-amdgpu-mesa-dri
  libgl1-amdgpu-mesa-dri:i386 libgl1-amdgpu-mesa-glx libgl1-amdgpu-mesa-glx:i386
  libgl1-amdgpu-pro-appprofiles libgl1-amdgpu-pro-dri libgl1-amdgpu-pro-dri:i386 libgl1-amdgpu-pro-ext
  libgl1-amdgpu-pro-glx libgl1-amdgpu-pro-glx:i386 libglapi-amdgpu-mesa libglapi-amdgpu-mesa:i386
  libglapi1-amdgpu-pro libglapi1-amdgpu-pro:i386 libgles1-amdgpu-mesa libgles1-amdgpu-mesa:i386
  libgles2-amdgpu-mesa libgles2-amdgpu-mesa:i386 libgles2-amdgpu-pro libgles2-amdgpu-pro:i386
  libllvm10.0-amdgpu libllvm10.0-amdgpu:i386 libomxil-bellagio-bin libomxil-bellagio0 libosmesa6-amdgpu
  libosmesa6-amdgpu:i386 libwayland-server0:i386 libxatracker2-amdgpu libxatracker2-amdgpu:i386
  mesa-amdgpu-omx-drivers mesa-amdgpu-va-drivers mesa-amdgpu-va-drivers:i386 mesa-amdgpu-vdpau-drivers
  mesa-amdgpu-vdpau-drivers:i386 vulkan-amdgpu-pro xserver-xorg-amdgpu-video-amdgpu
升级了 0 个软件包,新安装了 62 个软件包,要卸载 0 个软件包,有 55 个软件包未被升级。
需要下载 74.1 kB/114 MB 的归档。
解压缩后会消耗 968 MB 的额外空间。
您希望继续执行吗? [Y/n] y

正确安装,可以看到如上的安装信息反馈。如果发生错误,可以在终端下执行sudo ./amdgpu-pro-install --uninstall来卸载,排除相关错误后再进行。直到回到上述显示是否希望继续执行。并在最后看到这样的信息反馈:

正在设置 amdgpu-dkms (1:5.6.14.224-1147287) ...
Loading new amdgpu-5.6.14.224-1147287 DKMS files...
Building for 5.4.0-52-generic
Building for architecture x86_64
Building initial module for 5.4.0-52-generic
Done.
Forcing installation of amdgpu

amdgpu.ko:
Running module version sanity check.
 - Original module
   - Found /lib/modules/5.4.0-52-generic/updates/amdgpu.ko
   - Storing in /var/lib/dkms/amdgpu/original_module/5.4.0-52-generic/x86_64/
   - Archiving for uninstallation purposes

......

......

......

Running the post_install script:

depmod...

DKMS: install completed.

重新更新内核,加载amd闭源驱动模块

sudo update-initramfs -u

或者使用下面命令,将相关驱动加入到内核中:

sudo update-initramfs -k all -u -v

需要注意,执行该命令,可能会出现W: Possible missing firmware /lib/firmware/amdgpu/navi12_gpu_info.bin for module amdgpu等系列错误,此时要确认firmware-amd-graphics是否安装。如果安装,仍然出现这样的错误,可以考虑从https://github.com/M-Bab/linux-kernel-amdgpu-binaries/或者https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/amdgpu处下载这些文件到/lib/firmware/amdgpu下。当然,也可直接这个压缩包(firmware-bin.zip),然后将解压后的文件,拷贝至/lib/firmware/amdgpu/下。

F. 重启系统,查看显卡驱动切换效果:

lspci -k | grep -EA3 'VGA|Display'

若看到的信息中有VGA compatible controller字样,表明驱动为开源驱动。未能得到切换,前述安装出现问题。

当然,也可采用下面的命令来查看是否有对应的信息输出,如有也表明驱动加载的为开源驱动:

lsmod | grep amdgpu
lsmod | grep radeon

G. 此时试试Deepin显卡驱动管理器,进行诊断(这个工具目前不支持AMD显卡闭源驱动切换)

sudo apt-get install deepin-graphics-driver-manager

H. OpenGL相关信息

glxinfo | grep "OpenGL renderer"  #查看OpenGL渲染引擎信息
glxinfo | grep "OpenGL version"   #查看OpenGL版本

后记

1)AMD开源驱动有radeon和amdgpu两种。其中,radeon主要用于老显卡,amdgpu主要用于新显卡。同时,AMD官方闭源驱动为 amd-gpu-pro。绝大多数场景(OpenGL),开源驱动性能接近(甚至好于)闭源驱动,兼容性好于闭源驱动。不过,OpenGL等专业计算性能弱于闭源驱动。Linux内核一般包含了AMD开源驱动,同时Xserver提供的包有:xserver-xorg-video-radeon,xserver-xorg-video-ati,xserver-xorg-video等包。

2)屏蔽开源驱动,使用amd-gpu开源驱动:

echo "blacklist radeon" | sudo tee --append /etc/modprobe.d/blacklist.conf echo "options amdgpu si_support=1 cik_support=1" | sudo tee --append /etc/modprobe.d/amdgpu.conf sudo update-initramfs -u

2)OpenGL场景中,闭源驱动实际上已经提供了相应的3D渲染接口。此时,不需要安装其他开源OpenGL相关接口,如Mesa(开源OpenGL最标准的一种接口)。

3)如果使用开源驱动,需要开启OpenGL,那么开启Mesa驱动,可能是一种选择。具体参考这个页面提及到的办法(实际上Deepin 20默认安装的AMD-GPU驱动已经具备了Mesa渲染特性)

4)为了防止一些错误信息的出现,可以提前安装这样几个软件包:

sudo apt-get install console-setup plymouth-themes

 

参考

SUPERMICRO SuperServer 7048GR-TR - VGA Priority 设置 [Offboard]: https://blog.csdn.net/chengyq116/article/details/83187348

ImageXpress® Micro or Nano: Enable or disable VGA display on the acquisition computer: http://mdc.custhelp.com/app/answers/detail/a_id/20878/~/imagexpress%C2%AE-micro-or-nano%3A-enable-or-disable-vga-display-on-the-acquisition

Ubuntu显卡驱动配置:https://www.jianshu.com/p/574f7b1a3b1f

Linux下的AMD显卡驱动概览: https://www.nomox.cn/post/amdgpu-drives-on-ubuntu1804/