Installing the Proprietary AMD Catalyst 14.12 (fglrx) driver on Fedora 21 with Linux Kernel 4.04

Update:  See the next post in the series for full installation instructions for Fedora 22!

Process Development Summary

Below, find the updated installation instructions for the AMD Catalyst 14.12 (fglrx) driver on Fedora 21 with kernel version 4.0.4-201.fc21.x86_64.

A very grateful thanks to not only Philm of the Manjaro team for providing the solution to the problems which occurred when attempting to install the Catalyst driver using the 3.17 and 3.19 versions of the Linux kernel, but also to recent blog contributor Kenguru, who provided two patch files resolving the additional issues encountered when attempting to install the Catalyst driver using kernel version 4.04.  And last, but not least, thanks to Jacob Yates, who pointed out the simple solution to the Catalyst installation application’s complaint that one is not meeting the necessary prerequisites (see below).  Thanks to longtime blog contributors such as Gil and Duane, and the greatest thanks to every unsung hero I didn’t mention.

It’s really fun to have such valuable contributors coming together to solve a community’s problems, so thanks everyone.

The process remains very similar to past processes, but I have compiled all the above-mentioned patches into a single file for ease of use, and I have rewritten the procedure accordingly.  There is also an additional step introduced for the 4.04 kernel given the problem solved by Jacob, as mentioned above.

Prerequisite Discussion

Universal Package Prerequisites

As stated by the “installer.html” document provided by the driver, the prerequisites are as follows:

  • GCC version 3.3.3 or higher.
  • Kernel headers or kernel sources matching version of the kernel you’re running.
    Please consult to documentation for your distribution how to get and install this.
  • XFree86 version 4.1.X, 4.2.X, 4.3.X, or XOrg version 6.8.X (Fedora 20 does not use XFree86) or higher.

Heed the warning:

  • If you have multiple version of X Window System installed on your computer the installer will try to detect the default X, and install the driver for the detected version. However, you could experience problems trying to run other versions of X after this. Also, if your X Window System is installed into a nonstandard location, installation of the driver could be either problematic or incomplete.

With a fully up-to-date Fedora 21 installation, perform the following command to acquire the requisite packages:

yum install gcc kernel-headers kernel-devel

Fedora 21 Products and the Proprietary AMD Catalyst Graphics Driver

So, as you are likely aware, the Catalyst driver does not work with GNOME.  As you may also be aware, Fedora 21 Workstation, the product designed for the purposes you’re most likely to have in mind if you’re using your system like a normal person, integrates GNOME into the OS more than previous Fedora iterations.  In fact, if you’re using Fedora 21 Workstation, you won’t even see the GNOME Desktop Environment group in yum – it’s hidden by default.  Removing the GNOME Desktop Environment from the Workstation implementation is difficult and attempts to install alternate Desktop Environments currently meet with package conflict issues.

Using GNOME with the AMD Catalyst Driver on Fedora 21

Thanks to reader Fox for directing me to Red Hat intern Levente Kurusa’s guide which allows users to install the Catalyst driver on a system running GNOME.  The problem is, as you might expect, it’s quite the burdensome process.  In my estimation, it’s easier to simply use KDE, but if you’re really attached to GNOME, you might give his method a try.

Using KDE With Fedora 21

The best course of action for someone interested in running KDE in Fedora 21 is to either install the KDE Spin or upgrade from a version of Fedora 20 already using KDE with the nonproduct product option.

Now, if you’re like me and you accidentally upgraded to Fedora 21 Workstation (and therefore now have GNOME on your system), you’ll find that certain issues occur (see the link above) and changing Fedora 21 products is not easy.  I haven’t yet really dug into the product architecture so I don’t have the best answer regarding the move from Workstation to Nonproduct, but you can still install KDE (see the “changing Fedora 21 products is not easy” link above) and keep GNOME on your system for times during kernel upgrades (and therefore the required uninstallation and reinstallation of the Catalyst driver) when you need a GNOME fix or something.  Just make sure you use KDM as your Desktop Manager (I haven’t tested the procedure on Fedora 21, but I suspect it’s identical to the procedure I laid out in the original post on this subject way back in March of 2014 – let me know if it doesn’t work for you), ’cause the GNOME Desktop Manager (GDM) breaks with the Catalyst driver, as well.

Once you’ve set yourself up with KDE and KDM on Fedora 21, you’re in good shape to simply install the driver using a slightly modified version of the Fedora 20 procedure which has been presented on this site for some time:

Installation Instructions

Note:  If you’ve already followed the instructions on this blog for installing version 14.12 of the AMD Catalyst driver on Fedora 21 and you still have the driver files to which you applied any of the previous patch files, you can skip directly to step 4 below to apply the new ultra.patch file and install the driver.

1)  Download the AMD Catalyst 14.12 (fglrx) driver from AMD’s site.

2)  Change your working directory to your ~/Downloads directory and extract the amd-catalyst-14-4-linux-x86-x86-64.zip file (it will extract into a directory named fglrx-14.501.1003 in the current working directory):

$ cd ~/Downloads
$ unzip amd-catalyst-omega-14.12-linux-run-installers.zip

3)  Change your working directory to the fglrx-14.501.1003 directory and extract the driver file:

$ cd fglrx-14.501.1003/
$ sh amd-driver-installer-14.501.1003-x86.x86_64.run --extract

Here, you’ll see a message which reads something like:  “Created directory fglrx-install.wIhzk3″ and then “Verifying archive integrity… All good.” followed by a “Uncompressing AMD Catalyst(TM) Proprietary Driver-14.501.1003″ followed by a lot of dots.

4)  Now, you should see a newly created folder called fglrx-install.whateveryourcomputernamedit (mine, for example, was fglrx-install.wIhzk3).  Change your working directory appropriately and apply the ultra.patch:

$ cd fglrx-install.wIhzk3
$ mv ~/Downloads/ultra.patch.doc ~/Downloads/ultra.patch  #WordPress does not permit me to upload a .patch file, so I add the .doc extension to lazily get around that restraint
$ mv ~/Downloads/ultra.patch ./          #this is not necessary, but I do it for sanity's sake, to keep the patch file with the patched code as a reminder
$ patch -p0 < ultra.patch

If you are successful, you will see the following output:

(Stripping trailing CRs from patch; use --binary to disable.)
patching file common/lib/modules/fglrx/build_mod/kcl_acpi.c
patching file common/lib/modules/fglrx/build_mod/firegl_public.c
patching file common/lib/modules/fglrx/build_mod/kcl_str.c

If you have a unpacked .run file with previously-applied patches, you can still apply the ultra.patch – just address appropriately the prompts you receive during execution; when asked to reverse a patch operation, decline (it’s thinking you might want that since you’ve already applied the patch, as it can tell).  If you don’t feel like messing with it at all, just remove the directory containing the previously-patched content and extract a new directory from the .run file per step 3 above.

5)  As Jacob Yates points out, one must copy a header file into the build directory for the current kernel to correctly install the driver.  If this is not done, one can expect to see a message saying

Please install the required pre-requisites before proceeding with AMD Catalyst installation…Please check /usr/share/ati/fglrx-install.log for more details.

If the log file is checked, one finds:

Supported adapter detected.
Check if system has the tools required for installation.
fglrx installation requires that the system have kernel headers.  /lib/modules/4.0.4-201.fc21.x86_64/build/include/linux/version.h cannot be found on this system.
One or more tools required for installation cannot be found on the system. Install the required tools before installing the fglrx driver.
Optionally, run the installer with –force option to install without the tools.
Forcing install will disable AMD hardware acceleration and may make your system unstable. Not recommended.

To remedy this situation, simply copy the version.h header file into the build directory for the current kernel version:

$ sudo cp /usr/include/linux/version.h /lib/modules/`uname -r`/build/include/linux/

6)  Now that you’ve patched the installation package and copied the header file needed to build the module, run the installation:

$ sudo ./ati-installer.sh 14.501 --install

7)  Choose the “Install Driver 14.501 on X.Org 6.9 or later 64-bit” option from the Setup Wizard, and then simply follow the prompts.

Ensure that you do not select “Generate Distribution Specific Driver Package (Recommended)”.  This will only work if you use one of the officially supported Linux distributions listed on AMD’s site (Fedora is not included).

8)  Reboot your machine and enjoy!

Troubleshooting

Remember, if you see this message:

“Your Graphics adapter is not supported by this driver. Installation will not proceed”

Check out the post to which that link sends you for a potential resolution for your problem.  You probably have an Intel CPU with an on-die Haswell GPU combined with a Radeon GPU, but let me know if you don’t, or if you encounter an issue that that post doesn’t resolve.

Advertisements
This entry was posted in Information Technology and tagged , , . Bookmark the permalink.

14 Responses to Installing the Proprietary AMD Catalyst 14.12 (fglrx) driver on Fedora 21 with Linux Kernel 4.04

  1. On Fedora 22 my GPU hangs, even with amdconfig –initial.

    I fixed my removing the fglrx modules by doing
    ctrl+alt+F2 and logging in as root and running.
    #sh fglrx-uninstall.sh –force

  2. Juan P. Berdejo says:

    Xorg catches segmentation fault after installing fglrx on Fedora 22. The installation runs without problem, but after reboot Xorg don’t work.

  3. Gil says:

    Are you sure to use Xorg ? I heard it can possibily be wayland

    • JPBerdejo says:

      Yes, I’m sure:
      [ 31.351]
      X.Org X Server 1.17.1
      Release Date: 2015-02-10
      [ 31.351] X Protocol Version 11, Revision 0
      [ 31.351] Build Operating System: 3.19.5-200.fc21.x86_64
      [ 31.351] Current Operating System: Linux localhost.localdomain 4.0.4-301.fc22.x86_64 #1 SMP Thu May 21 13:10:33 UTC 2015 x86_64
      [ 31.351] Kernel command line: BOOT_IMAGE=/vmlinuz-4.0.4-301.fc22.x86_64 root=/dev/sda8 ro rhgb quiet LANG=en_US.UTF-8
      [ 31.351] Build Date: 19 May 2015 08:29:46AM
      [ 31.351] Build ID: xorg-x11-server 1.17.1-12.fc22

  4. Gil says:

    Ah btw I tested this method with kernels 3.15 to 3.19 it works fine too.

  5. gtrue says:

    Hi,
    Thank you for checking on this. Just wanted to give you a feedback that all the steps worked fine till the end, but after rebooting, cursor just kept blinking at top left and that is it. I had to log through the console to uninstall everything.

    Running Fedora 22, KDE spin here, kernel 4.0.4. I saw you are going to check on F22 tonight.

  6. BK says:

    I just completed this with kernel 4.0.0-202 all works fine again,

  7. I guess RPMFusion should donate something to Author of This blog for the work he has invested. And definitely this should land in RPMFusion as patched installer, if AMD will not care about Xserver 1.1.7 support… 🙂

  8. Romain says:

    Thanks for the instructions !

    I’ve used them to install the 15.05 driver that was posted a few days onto Fedora 21 with 4.0.4 kernel.

    I’ve modified your patch so that it applies against the 15.05 driver. One of the 3 files(kcl_acpi.c) no longer needs patching in 15.05. I’ve published the updated patch here : https://gist.github.com/romainguinot/448abbfeea48c8ec713b

    Let me know,
    Thanks,
    Romain.

  9. Gil says:

    Thanks to all !!

  10. Gil says:

    Hi everybody, it’s me again 🙂
    I just updated my Fedora 21 system with a 4.1.4-100 kernel and one more time, the kernel module does not compile.
    Here what I get:

    CC [M] /var/lib/dkms/fglrx/15.101.1001/build/2.6.x/firegl_public.o
    /var/lib/dkms/fglrx/15.101.1001/build/2.6.x/firegl_public.c: In function ‘KCL_InstallInterruptHandler’:
    /var/lib/dkms/fglrx/15.101.1001/build/2.6.x/firegl_public.c:3471:22: erreur: ‘IRQF_DISABLED’ undeclared (first use in this function)
    ((useMSI) ? (IRQF_DISABLED | IRQF_NOBALANCING) : (IRQF_SHARED)),
    ^
    /var/lib/dkms/fglrx/15.101.1001/build/2.6.x/firegl_public.c:3471:22: note: each undeclared identifier is reported only once for each function it appears in
    /var/lib/dkms/fglrx/15.101.1001/build/2.6.x/firegl_public.c:3475:1: attention : contrôle a atteint la fin non void de la fonction [-Wreturn-type]
    }
    ^
    scripts/Makefile.build:258: recipe for target ‘/var/lib/dkms/fglrx/15.101.1001/build/2.6.x/firegl_public.o’ failed
    make[2]: *** [/var/lib/dkms/fglrx/15.101.1001/build/2.6.x/firegl_public.o] Error 1

    So what’s up, Doctor ?

    thanks

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s