当前位置: 首页>>技术教程>>正文


在Linux上,使RX 480与AMDGPU一起运行

, ,
AMD的RX 480上市已经有一个多星期了,那一周Linux游戏玩家一直在大声疾呼或询问该卡是否以及如何在他们喜欢的发行版上工作。当然,Ubuntu 16.04已获得AMD专有的Pro驱动程序的正式支持,但是其他所有人又如何呢?如果您想使用已经使用了很长时间的AMDGPU开源驱动程序呢?好吧,这绝对有可能,但这并不是那么容易。

警告:这是龙,大龙。它们几乎是您希望在Mereen周围飞来飞去的那种,因此,如果您不想失去安装和一些眉毛的机会,请立即回头。

基础

要使RX 480正常运行,需要使用AMDGPU驱动程序的各个部分是非常新的,以至于它们都在候选版本和Git存储库中。因此,本指南将重点介绍Debian Sid,Ubuntu 16.04和Arch Linux。在其他地方也有可能,但是这三者可能会变得最简单,最令人沮丧。

要使RX 480运行,需要有一个基本方法,所有方法都始于包含固件支持的内核构建。最好的方法是使用一直致力于Polaris支持的开发人员的4.7版本候选。下一个难题是Mesa 12.1。目前只有Git可用。最后两件事是等于或高于2.4.68的libdrm版本和等于或高于1.1.0的xf86-video-amdgpu(程序包名称因发行版而略有不同)。如果它们是从源代码构建的,则还需要LLVM和Clang 3.7或更高版本。

构建内核

获取来源

使RX 480与AMDGPU配合使用的第一步是获得支持它的内核。通过Git可以使用内核的一个分支,它将完美地运行。创建一个工作目录并在其中克隆分支。

git clone -b drm-fixes-4.7 git://people.freedesktop.org/~agd5f/linux

这将需要几分钟的时间才能完成,但是之后,该源将在一个名为linux。在继续之前,请从Alex Deucher的存储库中获取Polaris固件blob。在这里能找到它这里。北极星10斑点是RX 480所需的斑点。将斑点放在哪里有两个选择,一个是在firmware包含内核源代码的目录或位于以下目录的根目录中/lib/firmware两种方式都创建一个名为amdgpu放进去。在Arch上,它实际上可能已经存在了。更新:截至目前,内核4.7-rc7也支持AMDGPU。您可以使用以下来源,并改用它。

配置内核

Arch Linux用户应切换到此部分有关传统内核构建的Arch文档。重新发明轮子没有意义。你可以找到它这里。对于Debian和Ubuntu,首先需要安装一些软件包。


# apt-get install build-essential gcc-multilib linux-headers ncurses-dev xz-utils fakeroot kernel-package
# apt-get build-dep linux

完成后,cd进入文件夹。您可以选择完全从头配置内核,也可以复制现有配置。要复制配置,请运行:

# cp /boot/config-$(uname -r) .config

无论哪种方式,当您准备配置内核时,请运行make menuconfig。本指南不会太过深入地介绍内核配置。如果您不太满意,请返回并复制配置。


Processor type and features  - - - >
	[*] MTRR (Memory Type Range Register) support

Device Drivers  - - - >
	Generic Driver Options  - - - >
	-*- Userspace firmware loading support
	# If you wish to compile the firmware in use the below, if not, don’t.
	[*] Include in-kernel firmware blobs in kernel binary
	(amdgpu/polaris10_ce.bin amdgpu/polaris10_mc.bin amdgpu/polaris10_me.bin amdgpu/polaris10_mec2.bin amdgpu/polaris10_mec.bin amdgpu/polaris10_pfp.bin amdgpu/polaris10_rlc.bin 
amdgpu/polaris10_sdma1.bin amdgpu/polaris10_sdma.bin amdgpu/polaris10_smc.bin amdgpu/polaris10_smc_sk.bin amdgpu/polaris10_uvd.bin amdgpu/polaris10_vce.bin)
	# Either way point this at where you chose to put the firmware
	(/lib/firmware) Firmware blobs root directory
	# For many of the following options you can choose between compiling in or modules
Graphics support  - - - >
	 Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
	 AMD GPU
	[*] Enable amdgpu for CIK parts
 Sound card support  - - - >
 Advanced Linux Sound Architecture  - - - >
[*]  PCI sound devices  - - - >
HD-Audio  - - - >
	 HD Audio PCI
	[*] Support initialization patch loading for HD-audio
	 Your sound card
	 Build HDMI/DisplayPort HD-audio codec supported
	(2048)  Pre-allocated buffer size for HD-audio driver

以上是AMDGPU工作所需的一组配置选项。内核的其余部分取决于您。在Debian上,如果您复制了配置,则其中一位开发人员决定要求使用密钥来构建内核。要解决此问题(可能有更安全的方法来解决此问题),请在.config。要找到它,只需在支持搜索和搜索的编辑器中打开文件@debian

编译和安装内核

现在已经配置了内核,现在该构建内核软件包了。为此,请运行以下两个命令。


$ make-kpkg clean
$ fakeroot make-kpkg --initrd --revision=1.0.AMDGPU kernel_image kernel_headers -j 9

-j 9应该是系统上的CPU核心数加一。这将有助于减少冗长的内核编译过程。编译后,将在构建的父目录中找到两个.deb软件包。cd进入该目录,然后以根用户身份安装软件包。


# dpkg -i linux-image-4.7*.deb
# dpkg -i linux-headers-4.7*.deb

创建的确切软件包名称将与上面的名称稍有不同,但是上面的命令应该可以使用。如果没有,您始终可以输入软件包的全名。安装软件包后,请确保已正确安装软件包,然后重新启动。

台面

绝对最新的Mesa(撰写本文时为12.1)才能使AMDGPU正常工作。安装Mesa的最佳方法因所使用的发行版而异,因此下一部分将按发行版进行细分。

德比安

Debian没有Mesa 12.1的打包版本,因此必须直接从Git存储库中提取并构建。在此之前,请确保已安装所有用于构建Mesa的依赖项。


# apt-get build-dep mesa
# apt-get install llvm-3.9 llvm-3.9-dev clang-3.9 clang-3.9-dev libxvmc-dev libxcb-xvmc0-dev libvdpau-dev libomxil-bellagio-dev

尝试跑步llvm-config。如果这不起作用,则需要将llvm-config-3.9链接到llvm-config。

ln -s /usr/bin/llvm-config-3.9 /usr/bin/llvm-config

选择一个目录以将Mesa存储库克隆并克隆到其中。然后cd进入Mesa目录。


$ git clone git://anongit.freedesktop.org/mesa/mesa
$ cd mesa

进入目录后,配置,编译和安装Mesa。


$ ./autogen.sh --prefix=/usr --enable-texture-float --libdir=/usr/lib/x86_64-linux-gnu/ --with-gallium-drivers=radeonsi,swrast --with-egl-platforms=drm,x11 --enable-glx-tls --enable-shared-glapi 
--enable-glx --enable-driglx-direct --enable-gles1 --enable-gles2 --enable-gbm --enable-openmax --enable-xa --enable-osmesa --with-radeonsi-llvm-compiler --enable-sysfs --enable-vdpau --enable-xvmc 
--enable-openmax --enable-nine
$ make -j9
# make install

那个荒谬的长配置字符串基本上只是将Mesa配置为包括RadeonSI驱动程序和有用的添加,这将使它更加完整。再次-j9引用CPU内核数加1。好消息是,在这些命令之后,将安装Mesa。坏处是它不会采用.deb格式,也不会易于管理。

的Ubuntu

在Ubuntu上,使用Padoka PPA使得安装最新版本的Mesa的过程变得非常容易。只需添加PPA,更新并安装台面。


$ sudo add-apt-repository ppa:paulo-miguel-dias/mesa
$ sudo apt-get update
$ sudo apt-get install mesa

Arch Linux

欢迎回到Arch用户!您没有Ubuntu员工那么容易,但是AUR中有可用的软件包。在执行此操作之前,请确保您的计算机已设置为使用AUR,并且您已经sudo在您的用户帐户上进行设置。本指南还假定正在使用以下软件包制作软件包:

$ makepkg -sri

按照出现的顺序从AUR中拉出并安装以下软件包。


llvm-svn
lib32-llvm-svn
mesa-git
lib32-mesa-git

谨防。这将需要时间。 LLVM是很大的软件。如果由于某些原因未自动安装某些软件包,则它们将位于各自的版本文件夹中,并且可以手动安装。

# pacman -U package-name.pkg.tar.xz

安装Libdrm /AMDGPU

快完成了!剩下要做的就是安装libdrm和xf86-video-amdgpu。此时,所有三个发行版的软件包管理器都应该可以轻松使用它们。Debian和Ubuntu

# apt-get install libdrm-amdgpu1 libdrm2 xserver-xorg-video-amdgpu

Arch Linux

# pacman -S libdrm xf86-video-amdgpu

安装软件包后,您可以使用一些Xorg配置进行编写。对于AMDGPU,这似乎不是强制性的,但可以为某些选项提供帮助,例如DRI。此基本配置应该起作用。


Section "Device"
    Identifier "AMDGPU"
    Driver "amdgpu"
    Option "AccelMethod" "glamor"
    Option "DRI" "3"
EndSection

写入并保存后,您可以重新启动计算机,查看是否一切正常。这些驱动程序当然是非常实验性的。可能存在错误,配置错误或任何其他问题。但是,如果它们确实起作用,您将是第一个享受几乎完全开放源代码驱动程序堆栈的人,可以轻松与封闭源代码选项相媲美。很明显,如果这些驱动程序可以在主流代码中保持更新,那么AMD将来将成为Linux用户的强大选择。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/10864.html,未经允许,请勿转载。