Slackware: ATI SlackBuild (ENG): Difference between revisions
(Corrected grammer: "don't start" should be "doesn't start") |
|||
(35 intermediate revisions by 13 users not shown) | |||
Line 1: | Line 1: | ||
<!-- Per http://wiki.cchtml.com/index.php/Slackware:_ATI_SlackBuild_(ENG) --> | |||
2KjaBI I really like and appreciate your blog post.Thanks Again. Much obliged. | |||
TGnBU6 I loved your article. Keep writing. | |||
BVDVcH I appreciate you sharing this blog. Great. | |||
= How to create Slackware packages = | |||
== ATI Proprietary drivers or ATI Catalyst < 11.3 == | |||
For these drivers will be produced two packages (see [[#What do created packages contain?]]). | |||
=== Drivers version < 8.37.6 (external SlackBuild) === | |||
For these types of drivers I've created an '''external SlackBuild''' for Slackware and I made [http://www.slacky.eu/~spina/fglrx/ati-slack-packager-1.1.9-noarch-1.tgz this package]. | |||
To create Slackware packages simply run: | To create Slackware packages simply run: | ||
#> installpkg ati-slack-packager-1.1.9-noarch-1.tgz | |||
#> sh ati-driver-installer-<version>-x86.x86_64.run -- buildpkg custom-package/Slackware | |||
=== Drivers version >= 8.37.6 or new ATI Catalyst (internal SlackBuild) === | === Drivers version >= 8.37.6 or new ATI Catalyst (internal SlackBuild) === | ||
For these drivers I've sent the SlackBuild directly to ATI which inserted it into the installer, then simply run: | For these drivers I've sent the SlackBuild directly to ATI which inserted it into the installer, then simply run: | ||
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg Slackware/All | |||
or, if drivers are quite recent, it suffices: | or, if drivers are quite recent, it suffices: | ||
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg | |||
Otherwise, in order to create and install directly the packages you can use (always with recent versions of the driver): | Otherwise, in order to create and install directly the packages you can use (always with recent versions of the driver): | ||
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildandinstallpkg | |||
此处的意思是:如果是新装的系统,直接运行本处的最后一个命令即可同时完成创建包和安装包的过程。 | 此处的意思是:如果是新装的系统,直接运行本处的最后一个命令即可同时完成创建包和安装包的过程。 | ||
== What do created packages contain? == | === 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 | 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''': | So with '''external SlackBuild''': | ||
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg custom-package/Only_Module | |||
With internal SlackBuild: | With '''internal SlackBuild''': | ||
#> sh ati-driver-installer-<version>-x86.x86_64.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''': | With '''external SlackBuild''': | ||
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg custom-package/Only_X | |||
With '''internal SlackBuild''': | With '''internal SlackBuild''': | ||
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg Slackware/Only_X | |||
(如果进行了上一小节的 --buildandinstallpkg则本小节的命令可不必再执行) | (如果进行了上一小节的 --buildandinstallpkg则本小节的命令可不必再执行) | ||
== Minimal X.Org server configuration | 接下来,执行 | ||
#> sh ati-driver-installer-<version>-x86.x86_64.run | |||
即可进入ATI配置的界面,完成显卡的简单配置。 | |||
== ATI Catalyst >= 11.3 == | |||
Since these drivers the '''internal SlackBuild''' make only one package, named ''fglrx-<version>-<architecture>-<release>.tgz'', that you can create with: | |||
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg | |||
You can also make and install the package directly with: | |||
#> sh ati-driver-installer-<versione>-x86.x86_64.run --buildandinstallpkg | |||
= 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: | 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 "dri" | ||
Load "glx" | Load "glx" | ||
... | ... | ||
EndSection | |||
Section "Device" | |||
... | ... | ||
Driver "fglrx" | Driver "fglrx" | ||
... | ... | ||
EndSection | |||
Section "DRI" | |||
Group 0 | Group 0 | ||
Mode 0666 | Mode 0666 | ||
EndSection | |||
{{Useful Information|Note|The command: | |||
#> aticonfig --initial | |||
can help you. Do '''aticonfig''' without options for more infos.}} | |||
= Installation checking = | |||
To see if proprietary ATI drivers are properly installed run the command: | To see if proprietary ATI drivers are properly installed run the command: | ||
$> fglrxinfo | |||
On my computer the output is: | 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: | == ATI Proprietary drivers or ATI Catalyst < 11.3 == | ||
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 | * The packages' removing don't delete fglrx's driver configuration files, these files are located in ''/etc/ati'' directory | ||
{{Be Careful|Be Careful|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: | * 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: | ||
::x11 | |||
for | :for Slackware 11, or: | ||
& | ::mesa | ||
:for Slackware 12. | |||
== ATI Catalyst >= 11.3 == | |||
During installation of the package ''fglrx-<version>-<architecture>-<release>.tgz'' some libraries that would be overwritten are renamed as FGL.renamed.library_name. Due to remove this package “cleanly” you should do: | |||
#> aticonfig --uninstall | |||
or, directly with the script: | |||
#> /usr/share/ati/amd-uninstall.sh | |||
or, also with any installer >= 11.3, with: | |||
#> ati-driver-installer-<versione>-x86.x86_64.run --uninstall | |||
Will remain only the directory ''/etc/ati'' with the configuration files. | |||
= Patching the drivers = | = Patching the drivers = | ||
Ati drivers are usually not compatible with brand new version of kernel linux. | Ati drivers are usually not compatible with brand new version of kernel linux. You often need to patch the driver so that you can create the kernel module successfully. Since Ati Catalyst > 8.11 you can patch Ati drivers within the '''internal SlackBuild''' before that same SlackBuild compiles the kernel module. | ||
You often need to patch the driver so that you can create the kernel module successfully. | |||
Since Ati Catalyst > 8.11 you can patch Ati drivers within the | |||
In order to do that, you just have to create (or download from the Internet) a patch and rename it like this: | |||
''/etc/ati/patch/patch-ATI_DRIVER_VERSION-KERNEL_VERSION'' | |||
''/etc/ati/patch/patch-ATI_DRIVER_VERSION-KERNEL_VERSION'' | |||
where: | |||
ATI_DRIVER_VERSION must be equal to the output of: | |||
$> sh ati-driver-installer-<version>-x86.x86_64.run -i | head -n1 | cut -d'-' -f2 | |||
KERNEL_VERSION must be equal to the output of: | |||
$> uname -r | |||
If ''/etc/ati/patch'' doesn't exist, it must be made. | |||
For example, if the former command outputs "8.55" and the latter "2.6.27.6", you need to name the patch ''/etc/ati/patch/patch-8.56-2.6.27.6''. | For example, if the former command outputs "8.55" and the latter "2.6.27.6", you need to name the patch ''/etc/ati/patch/patch-8.56-2.6.27.6''. | ||
The ''internal | The '''internal SlackBuild''' will find the patch automatically and, if the command '''patch''' is installed, it will run: | ||
# patch < /etc/ati/patch/patch-8.56-2.6.27.6 | #> patch -p0 < /etc/ati/patch/patch-8.56-2.6.27.6 | ||
== Patches == | |||
Here some patches and how to use there: | |||
=== ATI Catalyst 10.3, 10.4 and kernel == 2.6.33.x === | |||
Download the [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.3-4_with_2.6.33.x.diff patch] into ''/tmp'', so: | |||
* For '''Catalyst 10.3''' do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.3-4_with_2.6.33.x.diff /etc/ati/patch/patch-8.712-$(uname -r) | |||
#> sh ati-driver-installer-10-3-x86.x86_64.run --buildpkg | |||
* For '''Catalyst 10.4''' do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.3-4_with_2.6.33.x.diff /etc/ati/patch/patch-8.723-$(uname -r) | |||
#> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg | |||
== Known problems == | === ATI Catalyst 10.4, 10.5 and kernel == 2.6.34 === | ||
=== FATAL: modpost: GPL-incompatible module fglrx.ko uses GPL-only symbol 'paravirt_ops' | Download the [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.4-5_with_2.6.34.diff patch] into ''/tmp'', so: | ||
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: | * For '''Catalyst 10.4''' do: | ||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.4-5_with_2.6.34.diff /etc/ati/patch/patch-8.723-$(uname -r) | |||
#> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg | |||
* For '''Catalyst 10.5''' do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.4-5_with_2.6.34.diff /etc/ati/patch/patch-8.732-$(uname -r) | |||
#> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg | |||
=== ATI Catalyst 10.9 and Slackware64 13.1 or current === | |||
Download the [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.9_with_Slackware64-13.1.diff patch] into ''/tmp'', so to do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.9_with_Slackware64-13.1.diff /etc/ati/patch/patch-8.771-$(uname -r) | |||
#> sh ati-driver-installer-10-9-x86.x86_64.run --buildpkg | |||
at one point the installer asks: | |||
<PRE> | |||
can't find file to patch at input line 4 | |||
Perhaps you should have used the -p or --strip option? | |||
The text leading up to this was: | |||
-------------------------- | |||
|diff -ru ./2.6.x/Makefile ../../../../../../fglrx-install.uZLF8t/common/lib/modules/fglrx/build_mod//2.6.x/Makefile | |||
|--- ./2.6.x/Makefile 2010-09-01 16:05:31.000000000 +0200 | |||
|+++ ../../../../../../fglrx-install.uZLF8t/common/lib/modules/fglrx/build_mod//2.6.x/Makefile 2010-09-23 08:47:24.000000000 +0200 | |||
-------------------------- | |||
File to patch: | |||
</PRE> | |||
insert: | |||
./2.6.x/Makefile | |||
=== ATI Catalyst 10.10, 10.11 and kernel == 2.6.36.x === | |||
Download the [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.10-11_with_2.6.36.x.diff patch] into ''/tmp'', so: | |||
* For '''Catalyst 10.10''' do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.10-11_with_2.6.36.x.diff /etc/ati/patch/patch-8.783-$(uname -r) | |||
#> sh ati-driver-installer-10-10-x86.x86_64.run --buildpkg | |||
* For '''Catalyst 10.11''' do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.10-11_with_2.6.36.x.diff /etc/ati/patch/patch-8.791-$(uname -r) | |||
#> sh ati-driver-installer-10-11-x86.x86_64.run --buildpkg | |||
=== ATI Catalyst 10.10, 10.11 e 10.12 e kernel == 2.6.37.x === | |||
Download the [http://www.slacky.eu/~spina/fglrx/patch/fglrx_10.10-12_with_2.6.37.x.diff patch] into ''/tmp'', so: | |||
* For '''Catalyst 10.10''' do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.783-$(uname -r) | |||
#> sh ati-driver-installer-10-10-x86.x86_64.run --buildpkg | |||
* For '''Catalyst 10.11''' do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.791-$(uname -r) | |||
#> sh ati-driver-installer-10-11-x86.x86_64.run --buildpkg | |||
* For '''Catalyst 10.12''' do: | |||
#> mkdir -p /etc/ati/patch/ | |||
#> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.801-$(uname -r) | |||
#> sh ati-driver-installer-10-12-x86.x86_64.run --buildpkg | |||
= Known problems = | |||
== error: implicit declaration of function 'lock_kernel' and error: implicit declaration of function 'unlock_kernel' == | |||
You need to enable the '''Big Kernel Lock''' in your kernel configuration. You find it under the '''Kernel hacking''' menu. You can check if this option is enable with: | |||
$> zcat /proc/config.gz | grep BKL | |||
CONFIG_BKL=y | |||
== 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: | |||
==== Disable kernel paravirtualization option ==== | ==== Disable kernel paravirtualization option ==== | ||
The paravirtualization option is called '''CONFIG_PARAVIRT''' and generally is in the '''Processor type and features''' kernel submenu. | The paravirtualization option is called '''CONFIG_PARAVIRT''' and generally is in the '''Processor type and features''' kernel submenu. | ||
==== Patch ATI drivers ==== | ==== Patch ATI drivers ==== | ||
This operation is illegal because It changes the type of license issued by ATI in a GPL license. I wrote the | This operation is illegal because It changes the type of license issued by ATI in a GPL license. I wrote the patch: | ||
[http://www.slacky.eu/~spina/fglrx/patch/ati_to_gpl.patch ati_to_gpl.patch] (md5sum: 4207f41a71035dc2eed3ea9346b881bb) | |||
but I do not take any responsibility, I do not use It and I discourage the use in order to prefer the alternative to disable the paravirtualization kernel option. To use this patch You need to: | |||
'''External SlackBuild''' | |||
* Copy the patch in the ''/etc/ati/custom-package/patch'' directory | * Copy the patch in the ''/etc/ati/custom-package/patch'' directory | ||
''Internal | '''Internal SlackBuild''' (only with Ati Catalyst > 8.11): | ||
* Copy the patch in the ''/etc/ati/patch'' directory (if it doesn't exist you must create it) | * Copy the patch in the ''/etc/ati/patch'' directory (if it doesn't exist you must create it) | ||
The SlackBuild will find and apply the patch automatically. In order to uninstall it you simply need to delete it. | The SlackBuild will find and apply the patch automatically. In order to uninstall it you simply need to delete it. In order to uninstall the patch simply delete It from ''/etc/ati/custom-package/patch'' directory. | ||
== Using GLX_SGIX_pbuffer FGLTexMgr: open of shared memory object failed (Permission denied) __FGLTexMgrCreateObject: __FGLTexMgrSHMmalloc failed!!! == | |||
This problem is due to the lack of SHM filesystem (now called tmpfs), that is virtual memory filesystem. To work around this problem you must: | |||
* Add into ''/etc/fstab'' file the following line: | |||
shm /dev/shm tmpfs defaults 0 0 | |||
* Then mount the filesystem through: | |||
#> mount /dev/shm | |||
Obviously the kernel must be predisposed for the "mounting" of this filesystem, in particular the kernel option that must be enabled is '''CONFIG_TMPFS''' that is generally placed in '''File system --> Pseudo filesystems''' submenu. However all the compiled kernel generally have this option enabled. | |||
== kernel includes at /lib/modules/`uname -r`/build/include do not match current kernel == | |||
The complete mistake is something like this: | |||
Error: | |||
kernel includes at /lib/modules/`uname -r`/build/include do not match current kernel. | |||
they are versioned as "" | |||
instead of "`uname -r`". | |||
you might need to adjust your symlinks: | |||
- /usr/include | |||
The complete mistake is something like this: | - /usr/src/linux | ||
The error, also if explained, could be not clear. In practice It results from the fact that the symbolic link: | |||
/lib/modules/`uname -r`/source | |||
/lib/modules/`uname -r`/build | |||
The error, also if explained, could be not clear. In practice It results from the fact that the symbolic link: | |||
/lib/modules/`uname -r`/source | |||
/lib/modules/`uname -r`/build | |||
don't point to the directory where are inserted the current kernel sources (which is generally ''/usr/src/linux- 'uname-r'''). It happens to those who use a kernel contained in Slackware, so I will try to explain It in terms of Slackware "packages". This can happen: | don't point to the directory where are inserted the current kernel sources (which is generally ''/usr/src/linux- 'uname-r'''). It happens to those who use a kernel contained in Slackware, so I will try to explain It in terms of Slackware "packages". This can happen: | ||
* because the kernel source were not installed. In this case should be enough to install the source package which can be found in Slackware k/ directory. However, It is not granted that the problem will be solved, You'll need to see the second reason why there is an error. | * because the kernel source were not installed. In this case should be enough to install the source package which can be found in Slackware k/ directory. However, It is not granted that the problem will be solved, You'll need to see the second reason why there is an error. | ||
* because sources (also if installed) do not reflect the settings of the current kernel. The new Slackware 12 has some precompiled | * because sources (also if installed) do not reflect the settings of the current kernel. The new Slackware 12 has some precompiled kernels (which means different settings), while just a single package for the sources (unless seeing the branch extra/). In particular, the sources are for the SMP kernel and so if you use a non-SMP kernel can appear this error. To avoid this, after making sure that the package source has been installed, do simply the following: | ||
#> cd /usr/src/linux | |||
#> cp /boot/config .config | |||
#> make | |||
running make, in addition to compiling the kernel modules (which we will not use), some header files are regenerated, and they will reflect the kernel configuration (as | :running make, in addition to compiling the kernel modules (which we will not use), some header files are regenerated, and they will reflect the kernel configuration (as it's set in the .config file). | ||
This "bug" in 8.39.4 drivers results from the fact that ATI developers don't update the packager maintainers before the official releases. It should be nice first if they did test us official releases in order to certify the proper functioning of the scripts for creating packages. To solve the problem | == Driver 8.39.4 logo == | ||
This "bug" in 8.39.4 drivers results from the fact that ATI developers don't update the packager maintainers before the official releases. It should be nice first if they did test us official releases in order to certify the proper functioning of the scripts for creating packages. To solve the problem it's necessary to use the '''external SlackBuild''' as described here. | |||
Many users of the X.Org 7.2 (or 1.3) server version fail to start properly the Catalyst. The command to run the Catalyst is: | |||
== amdcccle doesn't start on Slackware 12 == | |||
Many users of the X.Org 7.2 (or 1.3) server version fail to start properly the Catalyst. The command to run the Catalyst is: | |||
#> amdcccle | |||
For this problem it seems there is no solution yet, but we are working on to solve it. | For this problem it seems there is no solution yet, but we are working on to solve it. | ||
= Useful links = | |||
The discussion thread from which it was derived this article: | The discussion thread from which it was derived this article: | ||
http://www.slacky.eu/forum/viewtopic.php?t=18134&highlight= | http://www.slacky.eu/forum/viewtopic.php?t=18134&highlight= | ||
An alternative to official ATI drivers | |||
http://www. | An alternative to official ATI drivers: | ||
A wiki in italian about installing and configuring ATI drivers (open source and proprietary) | http://www.x.org/wiki/radeon | ||
A wiki in italian about installing and configuring ATI drivers (open source and proprietary): | |||
http://www.slacky.eu/wikislack/index.php?title=Installazione_driver_ATI_su_Slackware_GNU/Linux | http://www.slacky.eu/wikislack/index.php?title=Installazione_driver_ATI_su_Slackware_GNU/Linux | ||
= | = Acknowledgement = | ||
Thank you at Ezio Ghibaudo and Federico Rota who have started this wiki and for help with the SlackBuild. Thanks also at all the [http://www.slacky.eu/ Italian Slackware Community] users for their feedback and support. | |||
[[User:Spina|Spina]] |
Latest revision as of 03:37, 20 March 2014
2KjaBI I really like and appreciate your blog post.Thanks Again. Much obliged.
TGnBU6 I loved your article. Keep writing.
BVDVcH I appreciate you sharing this blog. Great.
How to create Slackware packages
ATI Proprietary drivers or ATI Catalyst < 11.3
For these drivers will be produced two packages (see #What do created packages contain?).
Drivers version < 8.37.6 (external SlackBuild)
For these types of drivers I've created an external SlackBuild for Slackware and I made this package.
To create Slackware packages simply run:
#> installpkg ati-slack-packager-1.1.9-noarch-1.tgz #> sh ati-driver-installer-<version>-x86.x86_64.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 which inserted it into the installer, then simply run:
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg Slackware/All
or, if drivers are quite recent, it suffices:
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg
Otherwise, in order to create and install directly the packages you can use (always with recent versions of the driver):
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildandinstallpkg
此处的意思是:如果是新装的系统,直接运行本处的最后一个命令即可同时完成创建包和安装包的过程。
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 ati-driver-installer-<version>-x86.x86_64.run --buildpkg custom-package/Only_Module
With internal SlackBuild:
#> sh ati-driver-installer-<version>-x86.x86_64.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 ati-driver-installer-<version>-x86.x86_64.run --buildpkg custom-package/Only_X
With internal SlackBuild:
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg Slackware/Only_X
(如果进行了上一小节的 --buildandinstallpkg则本小节的命令可不必再执行)
接下来,执行
#> sh ati-driver-installer-<version>-x86.x86_64.run
即可进入ATI配置的界面,完成显卡的简单配置。
ATI Catalyst >= 11.3
Since these drivers the internal SlackBuild make only one package, named fglrx-<version>-<architecture>-<release>.tgz, that you can create with:
#> sh ati-driver-installer-<version>-x86.x86_64.run --buildpkg
You can also make and install the package directly with:
#> sh ati-driver-installer-<versione>-x86.x86_64.run --buildandinstallpkg
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
Invite You to Test Hosting Service
Hi, I'm Terra from the American Hosting Association.
I’m reaching out to you because we are looking for bloggers/site owners like you to test the Bluehost hosting service.
Bluehost is an excellent hosting service recommended by WordPress.org
Fr.ee WordPress Migration|30-Day Hosting Money-back Guarantee
You can visit https://www.myloginsecurity.com/hosting/ if you are interested.
Thank you for your time,
Terra Michealson
^^^^^^^^ Unsubscribe: https://www.myloginsecurity.com/unsubscribe
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
ATI Proprietary drivers or ATI Catalyst < 11.3
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
Be Careful: |
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:
- x11
- for Slackware 11, or:
- mesa
- for Slackware 12.
ATI Catalyst >= 11.3
During installation of the package fglrx-<version>-<architecture>-<release>.tgz some libraries that would be overwritten are renamed as FGL.renamed.library_name. Due to remove this package “cleanly” you should do:
#> aticonfig --uninstall
or, directly with the script:
#> /usr/share/ati/amd-uninstall.sh
or, also with any installer >= 11.3, with:
#> ati-driver-installer-<versione>-x86.x86_64.run --uninstall
Will remain only the directory /etc/ati with the configuration files.
Patching the drivers
Ati drivers are usually not compatible with brand new version of kernel linux. You often need to patch the driver so that you can create the kernel module successfully. Since Ati Catalyst > 8.11 you can patch Ati drivers within the internal SlackBuild before that same SlackBuild compiles the kernel module.
In order to do that, you just have to create (or download from the Internet) a patch and rename it like this:
/etc/ati/patch/patch-ATI_DRIVER_VERSION-KERNEL_VERSION
where:
ATI_DRIVER_VERSION must be equal to the output of:
$> sh ati-driver-installer-<version>-x86.x86_64.run -i | head -n1 | cut -d'-' -f2
KERNEL_VERSION must be equal to the output of:
$> uname -r
If /etc/ati/patch doesn't exist, it must be made.
For example, if the former command outputs "8.55" and the latter "2.6.27.6", you need to name the patch /etc/ati/patch/patch-8.56-2.6.27.6.
The internal SlackBuild will find the patch automatically and, if the command patch is installed, it will run:
#> patch -p0 < /etc/ati/patch/patch-8.56-2.6.27.6
Patches
Here some patches and how to use there:
ATI Catalyst 10.3, 10.4 and kernel == 2.6.33.x
Download the patch into /tmp, so:
- For Catalyst 10.3 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.3-4_with_2.6.33.x.diff /etc/ati/patch/patch-8.712-$(uname -r) #> sh ati-driver-installer-10-3-x86.x86_64.run --buildpkg
- For Catalyst 10.4 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.3-4_with_2.6.33.x.diff /etc/ati/patch/patch-8.723-$(uname -r) #> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg
ATI Catalyst 10.4, 10.5 and kernel == 2.6.34
Download the patch into /tmp, so:
- For Catalyst 10.4 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.4-5_with_2.6.34.diff /etc/ati/patch/patch-8.723-$(uname -r) #> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg
- For Catalyst 10.5 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.4-5_with_2.6.34.diff /etc/ati/patch/patch-8.732-$(uname -r) #> sh ati-driver-installer-10-4-x86.x86_64.run --buildpkg
ATI Catalyst 10.9 and Slackware64 13.1 or current
Download the patch into /tmp, so to do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.9_with_Slackware64-13.1.diff /etc/ati/patch/patch-8.771-$(uname -r) #> sh ati-driver-installer-10-9-x86.x86_64.run --buildpkg
at one point the installer asks:
can't find file to patch at input line 4 Perhaps you should have used the -p or --strip option? The text leading up to this was: -------------------------- |diff -ru ./2.6.x/Makefile ../../../../../../fglrx-install.uZLF8t/common/lib/modules/fglrx/build_mod//2.6.x/Makefile |--- ./2.6.x/Makefile 2010-09-01 16:05:31.000000000 +0200 |+++ ../../../../../../fglrx-install.uZLF8t/common/lib/modules/fglrx/build_mod//2.6.x/Makefile 2010-09-23 08:47:24.000000000 +0200 -------------------------- File to patch:
insert:
./2.6.x/Makefile
ATI Catalyst 10.10, 10.11 and kernel == 2.6.36.x
Download the patch into /tmp, so:
- For Catalyst 10.10 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.10-11_with_2.6.36.x.diff /etc/ati/patch/patch-8.783-$(uname -r) #> sh ati-driver-installer-10-10-x86.x86_64.run --buildpkg
- For Catalyst 10.11 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.10-11_with_2.6.36.x.diff /etc/ati/patch/patch-8.791-$(uname -r) #> sh ati-driver-installer-10-11-x86.x86_64.run --buildpkg
ATI Catalyst 10.10, 10.11 e 10.12 e kernel == 2.6.37.x
Download the patch into /tmp, so:
- For Catalyst 10.10 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.783-$(uname -r) #> sh ati-driver-installer-10-10-x86.x86_64.run --buildpkg
- For Catalyst 10.11 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.791-$(uname -r) #> sh ati-driver-installer-10-11-x86.x86_64.run --buildpkg
- For Catalyst 10.12 do:
#> mkdir -p /etc/ati/patch/ #> mv /tmp/fglrx_10.10-12_with_2.6.37.x.diff /etc/ati/patch/patch-8.801-$(uname -r) #> sh ati-driver-installer-10-12-x86.x86_64.run --buildpkg
Known problems
error: implicit declaration of function 'lock_kernel' and error: implicit declaration of function 'unlock_kernel'
You need to enable the Big Kernel Lock in your kernel configuration. You find it under the Kernel hacking menu. You can check if this option is enable with:
$> zcat /proc/config.gz | grep BKL CONFIG_BKL=y
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:
Disable kernel paravirtualization option
The paravirtualization option is called CONFIG_PARAVIRT and generally is in the Processor type and features kernel submenu.
Patch ATI drivers
This operation is illegal because It changes the type of license issued by ATI in a GPL license. I wrote the patch:
ati_to_gpl.patch (md5sum: 4207f41a71035dc2eed3ea9346b881bb)
but I do not take any responsibility, I do not use It and I discourage the use in order to prefer the alternative to disable the paravirtualization kernel option. To use this patch You need to:
External SlackBuild
- Copy the patch in the /etc/ati/custom-package/patch directory
Internal SlackBuild (only with Ati Catalyst > 8.11):
- Copy the patch in the /etc/ati/patch directory (if it doesn't exist you must create it)
The SlackBuild will find and apply the patch automatically. In order to uninstall it you simply need to delete it. In order to uninstall the patch simply delete It from /etc/ati/custom-package/patch directory.
This problem is due to the lack of SHM filesystem (now called tmpfs), that is virtual memory filesystem. To work around this problem you must:
- Add into /etc/fstab file the following line:
shm /dev/shm tmpfs defaults 0 0
- Then mount the filesystem through:
#> mount /dev/shm
Obviously the kernel must be predisposed for the "mounting" of this filesystem, in particular the kernel option that must be enabled is CONFIG_TMPFS that is generally placed in File system --> Pseudo filesystems submenu. However all the compiled kernel generally have this option enabled.
kernel includes at /lib/modules/`uname -r`/build/include do not match current kernel
The complete mistake is something like this:
Error: kernel includes at /lib/modules/`uname -r`/build/include do not match current kernel. they are versioned as "" instead of "`uname -r`". you might need to adjust your symlinks: - /usr/include - /usr/src/linux
The error, also if explained, could be not clear. In practice It results from the fact that the symbolic link:
/lib/modules/`uname -r`/source /lib/modules/`uname -r`/build
don't point to the directory where are inserted the current kernel sources (which is generally /usr/src/linux- 'uname-r'). It happens to those who use a kernel contained in Slackware, so I will try to explain It in terms of Slackware "packages". This can happen:
- because the kernel source were not installed. In this case should be enough to install the source package which can be found in Slackware k/ directory. However, It is not granted that the problem will be solved, You'll need to see the second reason why there is an error.
- because sources (also if installed) do not reflect the settings of the current kernel. The new Slackware 12 has some precompiled kernels (which means different settings), while just a single package for the sources (unless seeing the branch extra/). In particular, the sources are for the SMP kernel and so if you use a non-SMP kernel can appear this error. To avoid this, after making sure that the package source has been installed, do simply the following:
#> cd /usr/src/linux #> cp /boot/config .config #> make
- running make, in addition to compiling the kernel modules (which we will not use), some header files are regenerated, and they will reflect the kernel configuration (as it's set in the .config file).
Driver 8.39.4 logo
This "bug" in 8.39.4 drivers results from the fact that ATI developers don't update the packager maintainers before the official releases. It should be nice first if they did test us official releases in order to certify the proper functioning of the scripts for creating packages. To solve the problem it's necessary to use the external SlackBuild as described here.
amdcccle doesn't start on Slackware 12
Many users of the X.Org 7.2 (or 1.3) server version fail to start properly the Catalyst. The command to run the Catalyst is:
#> amdcccle
For this problem it seems there is no solution yet, but we are working on to solve it.
Useful links
The discussion thread from which it was derived this article: http://www.slacky.eu/forum/viewtopic.php?t=18134&highlight=
An alternative to official ATI drivers: http://www.x.org/wiki/radeon
A wiki in italian about installing and configuring ATI drivers (open source and proprietary): http://www.slacky.eu/wikislack/index.php?title=Installazione_driver_ATI_su_Slackware_GNU/Linux
Acknowledgement
Thank you at Ezio Ghibaudo and Federico Rota who have started this wiki and for help with the SlackBuild. Thanks also at all the Italian Slackware Community users for their feedback and support.