ATi / Radeon Graphics (newer chipsets - fixed my X1250 graphics)
Took me quite a while, and I'm a n00b with Linux, but I got it working through boot on my laptop into KDE. There were numerous files needed and some mods to others required. I worked with the "USB" distro as I could modify its contents on a WinXP desktop, use the "make_iso.bat" file and burn the ISO file to a DVD (the USB distro is too big for a CD), using a DVD-RW until I got it right for my laptop machine. Note that two lines in the "make_iso.bat" file need to be corrected (already posted to the forum elsewhere):
This is what I did to get it all working for a laptop with an ATi XPress1250 that uses shared RAM for graphics, including the Catalyst Control Panel:
Downloaded several versions of ATi graphics driver installs from ATi's site (listed from oldest to newest release). I got several as I didn't know if one would work better than the next:
These are all executable ".run" installers. However, one of the options when executed is building distribution packages. These only show support for a couple versions of Linux, and Slackware isn't one of them. However these do support quite a few other Linux distros. Run from a command line with the "--listpkg" switch lists all the distribution packages it can generate and the command line needed to do so. Although Slackware packages are not shown on the graphical panel, if run from a command line with the switch "--buildpkg Slackware/All" it will build two ".tgz" files, one with the basic drivers (the smaller file), and the other with controls (the larger file). These can be converted for Slax use by using the "tgz2lzm" command on both of them.
- ati-driver-installer-8.443.1-x86.x86_64.run (listed as 7.12 Catalyst)
I got everything working with the first three listed, but never was able to make the Slackware distribution packages made using the newest "7.12" release work properly. I'm currently using the 7.11 release. YMMV. It did work when installed from a command line instead of Slackware package generation. I suspect something is "broken" in its Slackware distribution package generator. YMMV.
Simply placing the two files into the "modules" directories will load them, but when it boots up, it will still dump out to a command prompt. The ATi drivers must be initialized with the following command line:
aticonfig --initial --force
The "--force" switch is optional, but I had some problems early one if it was left off. It forces the initialization of the ATi "fglrx" drivers in the "xorg.conf" file. Entering this manually turned into a PITA, as did the need to manually log on. This led to creating a small "aticonfig.sh" script file, and modifying both the "isolinux.cfg" and "syslinux.cfg" files. Initially the "aticonfig.sh" file only contained a single line (more about several lines added to it later):
aticonfig --initial --force
I placed this file in the "rootcopy" directory. A number of "autoexec" portions of the "APPEND" entries in the "isolinux.cfg" and "syslinux.cfg" files were then modified, and I eliminated the "VESA" and "nVidia" boot options entirely. This "autoexec=" is from the first option that boots into KDE, and note that it eliminates the original "xconf" and replaces it with ATi's command line to configure the file for the ATi drivers, and it calls it using the shell file that has been copied to the root:
This finally got me booting into KDE, and for me it was at the highest resolution of 1280x800. However, in order to change the graphics resolution, the ATi Catalyst Control Center is needed, and although it was present on the start menu, it would not start. It was missing some file package dependencies. To get that working took some reading of ATi's installation notes, and finding some Slackware packages it needed. The ATi Catalyst Control Center is dependent on:
A little poking around in the libraries once it was booted found the BT3 Beta distro came with the gcc 4.1.2 C library already, it only needed the C++ module added, and I found it and a compact QT library for Slackware 12 on the Slackware package distribution site (gcc-g++-4.1.2-i486-1.tgz and qt-3.3.8-i486-5_slack12.0.tgz). Both of these were converted to Slax "lzm" files by placing the "tgz" files into the "rootcopy" directory, and using the "tgz2lzm" command on them. The resulting "lzm" versions were then placed into the "modules" directory. The backward compatibility file turned out to be very hard to find, but finally located a "cxxlibs-6.0.8-i486-4.tgz" file, also on the Slackware package site (under Slackware 12). If "amdcccle" (name of Catalyst Control Center binary) is entered on a command line, a specific, older C++ file library (version 5) cannot be found. The problem with the "cxxlibs-6.0.8-i486-4.tgz" is where it wants to place its files -- under the "usr/lib" directory in the "i486-slackware-linux" subdirectory (in "usr/i486-slackware-linux/lib" instead of "usr/lib"). This doesn't work as "amdcccle" for the C++ files it needs in the "usr/lib" directory. The file structure inside the "tgz" had to be modified along with its "doinst.sh" shell script that installs the files. I had to pace the "tgz" in the rootcopy directory, unpack the "tgz" archive (using ark), move the C++ files to the "usr/lib" directory, modify the "doinst.sh" shell script accordingly (to put the new files into the "usr/lib" directory), repack it into a "tgz" archive, and then use the "tgz2lzm" command to make an "lzm" out of it. Once it was placed into the "modules" directory, along with the QT and gcc-g++ libraries, the ATi Catalyst Control Center came to life.
- Qt (library)
- gcc-g++ (C++ library)
- cxxlibs (a Slackware file for backward compatibility with previous gcc-g++ libraries)
The final fix took care of the fact that the integrated X1250 graphics uses POSIX "shared RAM" for graphics, and it needs to be enabled. It will work without it, but can cause some problems with 2D and 3D rendering resulting in error messages. This isn't enabled in the Slax distro, and the ATi drivers don't take care of it either. To allocate RAM for the X1250's 2D/3D graphics, I added some commands to the original "aticonfig.sh" script file so that it now reads (and it needs to be all on a single line):
echo "tmpfs /dev/shm tmpfs defaults 0 0" >> /etc/fstab; mount /dev/shm; mount | grep "shm"; aticonfig --initial --force
What this does (commands separated by ";"):
Since the "fstab" file is created during boot-up long before this script is run, there's no need to check to see if it already exists (if it doesn't, there's something more seriously wrong that getting the POSIX shared RAM enabled).
- Appends "tmpfs /dev/shm tmpfs defaults 0 0" to the "fstab" file found in the "etc" directory to create it
- Mounts the "shm" (shared memory) to make it available for use
- Executes a "grep" command to verify it's done (this was purely for my debugging while it was booting)
- Executes the original "aticonfig --initial --force" command to configure the ATi graphics in the "xorg.conf" file at the end
While poking around through the Slackware 12 packages, I found Mesa 7.02 had been released (mesa-7.0.2-i486-1.tgz). Converted it to an "lzm" and replaced version 7.01 with it (the ATi graphics drivers need libraries inside Mesa). Works with 7.01, but while I was at it doing everything else, why not? This one was easy.
While poking around the X.org site, I found a very newly released "xf86-video-radeonhd-1.0.0-i486-1.tgz" package for newer ATi/Radeon chipsets, including the chipset used in my X1250 graphics. Made an "lzm" from it and placed it in the "modules" directory also (very small file).
Files Added To Modules Directory:
File Deleted From Modules Directory:File Created and Added To Copyroot Directory:Files Modified:
- fglrx-module-8.XX.X-x86-1_kernel_126.96.36.199.lzm (drivers; version depends on which ATi driver package was used)
- fglrx-x710-8.XX.X-x86-1.lzm (Catalyst Control Center; version depends on which ATi driver package was used)
- xf86-video-radeonhd-1.0.0-i486-1.lzm (from X.org site for newer Radeon chipsets)
- qt-3.3.8-i486-5_slack12.0.lzm (QT library)
- gcc-g++-4.1.2-i486-1.lzm (C++ library)
- cxxlibs-6.0.8-i486-4.lzm (C++ backward compatibility files -- as modified to fix it)
Slackware 12 Package Repository:
- cxxlibs-6.0.8-i486-4.lzm (correct its internal directory structure and install)
- isolinux.cfg (execute the aticonfig.sh script to configure the ATi drivers and enabling POSIX shared RAM)
- syslinux.cfg (execute the aticonfig.sh script to configure the ATi drivers and enabling POSIX shared RAM)
- (cannot post URL's yet -- Google "Slackware" and on their home page is a link to the package repositories)
I realize this does not create a "universal" bootable DVD, and likely some of my mods, especially with how I implemented the "aticonfig.sh" scripting, and modified the "isolinux.cfg" and "syslinux.cfg" files. Perhaps someone less n00b than I with Linux can make this cleaner. However, it's how I fixed BT3 Beta to fully boot on my HP 6515b laptop with its ATi X1250 integrated graphics.
Last but NOT least -- if I've posted this in the wrong place, please move it.
Excellent work. Very detailed explanation and fix. I realize its not a bug however I feel it deserves a place in the fix section. I would encourage anyone else in the same situation to give this a try and give us some feedback.
Thanks -- Plus More Info about ATi
As a footnote -- and why I dove so deep into the fix -- the ATi X1250 is limited to 60 Hz and it uses POSIX shared memory. Uncertain but suspect it's not the only ATi laptop graphics chipset that has this limitation (among their newer chipsets).
Generic VESA at 75 Hz bombed out to a command line (the "bash"). Until at least the ATi Slackware drivers were in the modules directory I couldn't get it into a GUI at all using any of the startup options, or the "xconf" command followed by a "startx." I agree that it's not a problem with BackTrack's specific tools. It's Slackware and Slax not handling newer ATi chipsets very well. The two most important things that got the KDE GUI working well (1) Getting the ATi drivers into the modules directory (the smaller ATi file) and (2) enabling the POSIX Shared Memory (/dev/shm) support.
Problems found with the C++ backward compatibility library (cxxlibs-6.0.8-i486-4.tgz):
I believe this library was originally created by someone to fix the C++ backward compatibility problem with a Slackware /x64 distro, not a 32-bit, and that's why the original "tgz" I found put the C++ libraries where it did. To the best of my knowledge, nobody ever uploaded one that was "fixed" (for 32-bit distros ??) to a Slackware repository.
The newer ATi laptop graphics are a real headache to get working in many Linux distros that use X11, especially the "Live" ones for which a permanent one-time install (using the ".run" file) isn't very feasible. In my "Google" searches for a fix, I found quite a few postings in many forums about newer ATi chipset problems. None of them had very satisfactory replies to them. Found bits, pieces and clues here and there. Many had zero (useful) replies.
Thanks - and Happy Holidays!
Is it necessary to add all of those modules to get the ati video card working? Or is there one module I can add that will suffice? I am using a mobility radeon x1400. All I need is to get into KDE, i don't need compiz to work. Thank you in advance!
Originally Posted by jalind
Originally Posted by gangstazar
You can type in the commands contained in the "aticonfig.sh" script manually at the command prompt, and then start KDE, but it became a PITA for me to execute them when I booted into BackTrack. It's why I wrote the script and modified the two "cfg" files to run it.
- Both "fglrx" driver files (from ATi -- don't use the "current" one, use the one just prior to it -- the 7.11 Catalyst -- there's a link below the current driver download on ATi's site that lists prior releases with links for them -- I had nothing but trouble with the 7.12 Catalyst -- and you'll have to build the "tgz" modules, then convert them to "lzm" modules, from the downloaded "run" file -- as I described above).
- Keep the "Mesa" file (you can use the existing 7.01 if you want).
- Build the "aticonfig.sh" script to initialize the drivers and enable POSIX shared RAM.
- Modify the syslinux.cfg and isolinux.cfg files to execute that script during startup.
The "radeonhd" file from X.org isn't essential, and everything else was done to get the Control Panel functioning. BTW, I'm not using compiz either.
I've not yet gotten compiz to work properly -- not with the driver "packages" I created -- but that said, I haven't experimented enough with it to see if some mods to the isolinux and syslinux "cfg" files would fix that. When I last tried it, I got some error messages about the xorg configuration file having an error in it (presumably after executing compiz and aticonfig [instead of xconf]). Wasn't high on my list of things to get working. There's one idea I've got -- calling startx instead of kdm at the end of everything -- that I may try in the next day or two.
Originally Posted by RageLtMan
Tried a number of things -- all no go. Went to Compiz web site and did some deeper searching. Seems the problem of newer ATi graphics chipsets (that must use the ATi proprietary drivers) and Compiz is well-known, and "it's being worked on." My take on it: Linux tends to lag some with hardware support unless the vendor makes the effort to provide it. In this case there's Linux drivers for the newer chipsets, and they work, but apparently not with Compiz (yet -- which Compiz will have to take the lead in fixing).
I do not have the hard ware to test this so I can't confirm it validity.
tested this with my dell e1705 with an ati x1400 and it worked like a charm thanks !