I decided to write this because I had a bit of a hassle, and I am sure
other people have too. AFAICT, F14 does not have any formal support
right now (no rpms, etc), and there are some pitfalls to using the ATI
installer which I am sure have resulted in system re-installs, unhappy
faces, and people stuck without a proper driver.*
This is because while the installer seems easy to use, it's unfriendly in so far as
it does not check for pre-requisite software first, and when it craps outs, it doesn't tell you anything is wrong, but it will leave your system without a functioning X server.
The first time I ran it, the GUI installer told me everything was
complete and that all I needed to do was reboot! When I did, X would
not work, and reinstalling the original xorg-ati driver, etc, did not
fix it.
Make sure you read ALL this over first BEFORE you start! Also read post #3 below
*I hate proprietary software, but GL 3D cards are pointless without the
real drivers and libraries installed. And if you want to use (or
write) serious openGL 3D software, you do need such a card.
STEP 1 Get the driver-installer
The download should be a file like "ati-driver-installer-11-1-x86.x86_64.run".
STEP 2 Get prereqs from the fedora repos
Here's the nasty pitfall: you'll need to have some fedora packages the
installer uses to build the fglrx kernel module, but it does not tell
you that, and (even worse) it will wreck your X if you don't have them.
Building kernel modules requires the linux kernel source code, and that
needs to be properly installed. I'm a programmer and have built
modules, so when I've used an ATI installer before, I had all that stuff
there already.
It did not occur to me that if the source were not there, the installer would go ahead and
appear to build a module anyway (which
is impossible
without the kernel source). The fact that it does not crap out with a
simple message (eg: "Can't find kernel sources, aborting") is EXTREMELY
UNPROFESSIONAL of ATI. This is like repairing someones car and
forgetting to torque the head bolts on. Either malicious or seriously
stupid.
Anyway, the upshot of that is
you must make sure everything is copacetic with the prequisites
because not only will the installer not issue a warning, it will keep
on trucking and leave you without a functioning X server when it's done.
Fedora's generally awesome yum system has a further pitfall here,
unfortunately. We want both the kernel header includes and the source
(aka. the "devel" package):
Code:
[root@localhost ati]#
yum search kernel | grep headers
kernel-headers.x86_64 : Header files for the Linux kernel for use by glibc
arm-gp2x-linux-kernel-headers.noarch : Kernel headers for Cross Compiling to
[root@localhost ati]#
yum search kernel | grep devel
kernel-debug-devel.x86_64 : Development package for building kernel modules to
kernel-devel.x86_64 : Development package for building kernel modules to match
crash-devel.i686 : kernel crash analysis utility for live systems, netdump,
crash-devel.x86_64 : kernel crash analysis utility for live systems, netdump,
...snip
If you do not have a 64 bit system the suffix will be i686 and not x86_64. Now all we need to do is "yum install", right?
Not quite. If you just installed from a live CD like I did and did not
run updates, yum fails to mention at this point that the "kernel-devel"
package is for a newer, updated kernel than the one installed by the CD.
With most stuff, it would automatically update any prereqs, but it did
not do that today with the kernel.
By default, linux will not load a module built for a different kernel
version. Also, the C compiler (IMPORTANT: see below*) uses a symbolic
link in the running kernel's module directory to find the correct
source:
Code:
[root@localhost ati]#
cd /lib/modules
[root@localhost modules]#
ls
2.6.35.10-74.fc14.x86_64 2.6.35.6-45.fc14.x86_64 fglrx
[root@localhost modules]#
uname -r
2.6.35.10-74.fc14.x86_64
I should explain this (look up cd and ls if you do not understand
them): /lib/modules contains a subdirectory for each kernel. Currently,
I have two, and so will you because you will be installing the updated
one to match the available source package.
When it comes time to run the ATI driver-installer, first check which
kernel you are running with "uname -r". Then enter the corresponding
subdirectory in /lib/modules (you can do this now anyway to get the
idea):
Code:
[root@localhost modules]#
cd 2.6.35.10-74.fc14.x86_64
[root@localhost 2.6.35.10-74.fc14.x86_64]# ls -1
build
extra
kernel
modules.alias
modules.alias.bin
...snip
Notice "build" at the top. This is a symbolic link to a directory in /usr/src which contains the source tree.
Even if that directory does not exist, the symbolic link here will. So you need to check that the link is good:
Code:
[root@localhost 2.6.35.6-45.fc14.x86_64]#
cd build
bash: cd: build: No such file or directory
That one is bad. If this is the directory for your running kernel
and you now use the ATI driver-installer, no module will be built and
the installer will overwrite crucial X libraries, etc, with stuff that
cannot work. That was what happened on my second attempt today
Here's what will happen if you have the kernel source correctly installed:
Code:
[root@localhost 2.6.35.10-74.fc14.x86_64]#
cd build
[root@localhost build]#
ls
arch drivers include kernel mm samples sound usr
block firmware init lib
...snip
So, to summarize step 2:
a) Make sure you have the latest kernel installed:
Code:
[root@localhost build]#
yum install kernel.x86_64
Setting up Install Process
Package kernel-2.6.35.10-74.fc14.x86_64 already installed and latest version
Nothing to do
If you did not, the install will also add a new entry to your grub
menu for the new kernel and use that one as a default, so reboot.
b) Now install the kernel-headers and kernel-devel package as described above.
c) Finally, check in /lib/modules/ (as above) to make sure that "build" link is good.
Now you're ready to run the ATI driver-installer.
*BTW, if you do not generally build software from source, you will probably need to install the C compiler as well:
Code:
[root@localhost ati]#
yum search gcc | grep ^gcc
gcc-gnat.x86_64 : Ada 95 support for GCC
gcc-objc.x86_64 : Objective-C support for GCC
gcc-objc++.x86_64 : Objective-C++ support for GCC
gccxml.x86_64 : XML output extension to GCC
gcc.x86_64 : Various compilers (C, C++, Objective-C, Java, ...)
gcc-c++.x86_64 : C++ support for GCC
...snip
You can check first by trying "gcc -v" at the command line (if
it's not there, you may then be able to Y/N an automatic install).
STEP 3 Run the installer!
I recommend doing this in console mode, and
temporarily setting your default runlevel to the same. There are 3 reasons for that.
First,
the GUI installer for Catalyst 11.1 is much more deceptive about it's
success. The text mode one will only say it's been successful if it
really was. Otherwise, it just ends, and you
may see some
sinister clues leftover. Unfortunately, either way (GUI or console),
the installer will probably have wrecked your X install if something
went wrong.
Second, if something goes wrong, you will still be able to use the computer after a reboot because it will not need X windows.
Third,
if something happens to something crucial later (eg, updates can
overwrite the ATI stuff), you should know how to re-install without X.
So use a text editor on /etc/inittab, which looks like this:
Code:
# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
...blah blah blah snip
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:
5:initdefault:
Change that 5 to a 3. You can change it back later.
The driver-installer file you downloaded is actually a sort of shell
script (with a ton of stuff compressed and embedded in it). It needs to
be executable, which it may not be:
Code:
[root@localhost src]#
stat ati-driver-installer-11-1-x86.x86_64.run
File: `ati-driver-installer-11-1-x86.x86_64.run'
Size: 125893511 Blocks: 245888 IO Block: 4096 regular file
Device: 802h/2050d Inode: 37716 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Nope. So:
Code:
[root@localhost src]#
chmod 700 ati-driver-installer-11-1-x86.x86_64.run
Does it (look up chmod if you do not understand). Now, if you
are sure you have read, understood, and acted on this post, you can run
the installer:
Code:
[root@localhost src]#
./ati-driver-installer-11-1-x86.x86_64.run
It's pretty simple from there. At about 80-85% on the progress
bar, the module gets built, which might take a few minutes and will max
out a processor (if you only have one, just leave everything alone until
it's finished).
Good luck! There is some good news in all this -- for my card at least,
the 11.1 driver-installer seems to have corrected some issues evidently
in 10.2 (like, I now get a higher max resolution
).
总结:ATI显卡驱动的安装用到了内核源码,因此,在正常安装之前,需要检查kernel版本号,并检查安装kernel-devel及kernel-headers,要求其版本号和kernel完全一致。然后可以正常运行安装。