Chinaunix首页 | 论坛 | 博客
  • 博客访问: 147113
  • 博文数量: 26
  • 博客积分: 385
  • 博客等级: 一等列兵
  • 技术积分: 257
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-03 00:46
文章分类

全部博文(26)

文章存档

2015年(1)

2014年(10)

2012年(5)

2011年(10)

我的朋友

分类: LINUX

2011-11-26 14:19:24

来源:
-----------------------------------------------------------------------------
mk27's Avatar
Offline
Registered User
 
Join Date: Dec 2008
Posts: 82
linuxfedorafirefox
How to install ATI Catalyst drivers on F14
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 ).
__________________
My nifty gtk text and manpage viewer:
Last edited by mk27; 7th February 2011 at 02:51 PM.
------------------------------------------------------------------------
简单指南参考:

总结:ATI显卡驱动的安装用到了内核源码,因此,在正常安装之前,需要检查kernel版本号,并检查安装kernel-devel及kernel-headers,要求其版本号和kernel完全一致。然后可以正常运行安装。


可辅助参考如下链接

阅读(2519) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~