Slackware: ATI SlackBuild (ENG)

From cchtml.com
Revision as of 13:25, 25 January 2008 by 151.66.33.40 (talk)

Introduction

This wiki explains how to install the proprietary ATI drivers in a Slackware Linux distribution, creating, thanks to a SlackBuild, packages that can be installed through the installpkg command.
This wiki DOES NOT explain how to improve performance. In particular, It provides only a minimal description of how to set up the X.Org server with the only purpose of loading the proprietary drivers (a description on how to configure the X.Org server to increase performance can be found here). All commands starting with a '#' must be executed with root rights, while commands beginning with '$' can be performed by a user without such rights.

Proprietary ATI Drivers and ATI Catalyst

Since 21 November 2007, ATI drivers have changed the name and the number version. The new drivers, which were first mentioned only as Proprietary ATI Driver, are now called ATI Catalyst. Moreover, the version number has passed from 8.XX.X to 7.XX.

When in this wiki we will talk about drivers version <8.37.6, we will refer implicitly to the old driver, such as Proprietary ATI Driver, while the new ATI Catalyst have a number version >= 8.37.6, even if, for instance, have a release number 7.11.

Getting all the necessary

The proprietary ATI drivers can be downloaded from the official web site, after selecting the Linux x86 operating system (or Linux x86_64) and selecting your video card, pressing the “go” button takes you directly into the download page from which you can download the installer (which henceforth we call installer.run).
Since drivers also contain a kernel module which will be compiled directly on your system, you'll need the kernel source currently installed in the system as well.

 NOTE: Drivers for x86 and x86_64 architectures are equivalent.
The installer contains files for both architectures, then It will be the compilation process and the package creation process to choose the appropriate files. This means that the SlackBuild will be good for Slackware and for Slackware 64-bit portings (Slamd64, Bluewhite64, etc. ...).

Important notice

If the downloaded driver version is less than 8.37.6, then you need to know from now that it will not work onto X.Org 7.2 server (or 1.3).

How to create Slackware packages

The packages creation follows two different ways depending on whether you use the official driver version < 8.37.6 or >= 8.37.6. or new ATI Catalyst. The first way uses what is called external SlackBuild while the second way what we will call internal SlackBuild. In both cases the two packages will be created and they can be installed by Slackware installpkg utility. So let's see the two cases saying that the program that here is called installer.run is the installer downloaded from ATI web site.

 NOTE: The external SlackBuild use is not limited to the driver <8.37.6 but you can use it 
 (and at times we will see that It's the only alternative) with all versions of ATI drivers.

Drivers version <8.37.6 (external SlackBuild)

For these types of drivers I've created an external SlackBuild for Slackware and I made a package that can be found at: http://www.cli.di.unipi.it/~tomasi/ati-slack-packager/ati- slack-packager-current-noarch-1.tgz To create Slackware packages simply run:

 # installpkg ati-slack-packager-current-noarch-1.tgz 
 # sh installer.run -- buildpkg custom-package/Slackware

Drivers version >= 8.37.6 or new ATI Catalyst (internal SlackBuild)

For these drivers I've sent the SlackBuild directly to ATI that has insert it inside the installer, then simply run:

 # sh installer.run --buildpkg Slackware/All

What do created packages contain?

The two packages created by SlackBuild, that we'll call fglrx-module and fglrx-x contain, respectively, the kernel module and the X.Org server driver currently installed in the system. In this way, if you upgrade the kernel or the X.Org server, you can create only one package.

Creating only fglrx-module package

To create just the package containing the kernel module for the currently installed kernel, simply run the installer with the Only_Module option So with external SlackBuild:

 # sh installer.run --buildpkg custom-package/Only_Module

With internal SlackBuild:

 # sh installer.run --buildpkg Slackware/Only_Module

Creating only fglrx-x package

To create just the package containing the X.Org driver currently installed in your system, simply run installer with Only_X option With external SlackBuild:

 # sh installer.run --buildpkg custom-package/Only_X

With internal SlackBuild:

 # sh installer.run --buildpkg Slackware/Only_X

Minimal X.Org server configuration

Once installed the two indicated packages, you must tell to the X.Org server to use ATI proprietary drivers, to do this we must check if the xorg.conf file, which is usually located in the /etc/X11/ directory, contains the following items:

 Section "Module"
       ...
       Load    "dri"
       Load    "glx"
       ...
 EndSection
 Section "Device"
       ...
       Driver  "fglrx"
       ...
 EndSection
 Section "DRI"
       Group   0
       Mode    0666
 EndSection 

Installation checking

To see if proprietary ATI drivers are properly installed run the command:

 $ fglrxinfo

On my computer the output is: display::0.0 screen: 0

 OpenGL vendor string: ATI Technologies Inc.
 OpenGL renderer string: ATI Mobility Radeon X1400
 OpenGL version string: 2.0.6650 (8.39.4)

Remove installed packages

To remove installed packages you can use the removepkg utility. However, there are aspects that should be considered:

  • The packages' removing don't delete fglrx's driver configuration files, these files are located in /etc/ati directory
 NOTE: The /etc/ati/custom-package directory, if exists, contains the external SlackBuild and therefore should not be deleted.
  • The fglrx-x package contains ATI's OpenGL libraries, and these libraries are located in the same directory of the Mesa libraries, so when you install the fglrx-x package Mesa OpenGL libraries are overridden. To restore the situation you should simply reinstall the package containing these libraries, like:

&nbsp:&nbsp:x11
for slackware 11, or:
&nbsp:&nbsp:mesa
for slackware 12.

Known problems

FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'paravirt_ops'

The error occurs during module compilation and It's due to the fact that the kernel was compiled with the option of paravirtualization active. This option among other things, prevents to load, and then to compile, modules that do not have the GPL license. Since that ATI drivers don't have this type of license, they aren't compiled. To work around this problem you can: