Linux - SoftwareThis forum is for Software issues.
Having a problem installing a new program? Want to know which application is best for the job? Post your question in this forum.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
I have a laptop with a Radeon 6770M graphics card along with an Integrated Intel card from my i7. I am running Arch on this computer. With the Catalyst drivers set up from the catalyst repository, the only problem stopping X from working is the Intel drivers. Xorg is looking for the intel driver instead of the fglrx driver.
Output from startx:
Code:
Using config file: "/etc/X11/xorg.conf"
Using config directory: "/etc/X11/xorg.conf.d"
failed to load module: "intel" (module does not exist, 0)
fglrx(0): Invalid BIOS Signature!
fglrx(0): GetBIOSParameter failed
fglrx(0): PreInitAdapter failed
fglrx(0): PreInit failed
Screen(s) found, but none have a usable configuration.
I know that I have loaded the fglrx modules because I edited this script to work with fglrx and intel. Here is my script:
Code:
#!/bin/bash
#
# glselect - switch between intel and fglrx gl libraries
#
newlib="$1"
if [[ "$newlib" = "intel" ]]
then
ln -sf libGL.so.1.2 /usr/lib/libGL.so
ln -sf libGL.so.1.2 /usr/lib/libGL.so.1
ln -sf libglx.xorg /usr/lib/xorg/modules/extensions/libglx.so
elif [[ "$newlib" = "fglrx" ]]
then
ln -sf /usr/lib64/fglrx/libGL.so.1.2 /usr/lib/libGL.so
ln -sf /usr/lib64/fglrx/libGL.so.1.2 /usr/lib/libGL.so.1
ln -sf /usr/lib/xorg/modules/extensions/fglrx/fglrx-libglx.so /usr/lib/xorg/modules/extensions/libglx.so
elif [[ "$newlib" = "show" ]]
then
if [[ `readlink /usr/lib/libGL.so` = "libGL.so.1.2" ]]
then
echo "intel"
elif [[ `readlink /usr/lib/libGL.so` = "/usr/lib64/fglrx/libGL.so.1.2" ]]
then
echo "fglrx"
else
echo "You have not setup symlinks yet."
exit 1
fi
else
echo "Usage: glselect [ intel | fglrx | show ]"
fi
exit
I also modified the switchlibGL and switchlibglx files accordingly. With the symlinks being right, and PowerXpress changing the configuration to fglrx, and loading the module, startx should have worked. But the intel driver gets in the way. Xorg is still looking for an intel driver, and after blacklisting and modesetting it, it still will not work. Any help appreciated.
P.S: Arch does not allow the intel driver to be installed at the same time as the catalyst driver
Yes, BusID for the ATI card is 1:0:0 and is listed in xorg.conf as "PCI1:0:0". BIOS setting is there for nothing. It does not affect Linux in any shape or form. It only applies to Switchable Graphics mode for ATI/Intel cards. This mode allows for seamless switching of graphics cards based on application needs. I am not interested in using this and it only works on Windoze anyway.
Alex
**EDIT**
In /var/log/Xorg.0.log (log file for X server), I found a line that said the following:
Quote:
(--) Chipset supported AMD Graphics Processor (0x6740) found
(II) fglrx: intel VGA device detected, load intel driver
(II) LoadModule: "intel"
(WW) Warning: Couldn't open module "intel"
Catalyst is trying to load an Intel driver for an Intel card while acknowledging the AMD card...
**EDIT**
This is probably an Arch-specific problem involving dependency issues in pacman between catalyst* and xf86-video-intel. The reason it works in my Fedora is because xserver-xorg-drv-intel (Fedora package) does not interfere with the catalyst stuff. The easiest way to solve this in Arch is to **NOT** install from the repository but from the binary blob AMD provides. This way, there is no going through dependency hell in pacman. After I installed the binaries and symlinked many, many libraries from /usr/lib64 to /usr/lib, I was presented with yet another problem. Now, I get a Xorg backtrace, looking like this:
The fglrx libs in /usr/lib are not 32-bit. They are 64-bit. It's just that Arch is weird and looks for libs in /usr/lib for 64-bit stuff. There is an explicit lib32 folder with 32-bit stuff.
Alex
Last edited by abrinister; 12-19-2011 at 07:52 PM.
I got rid of Arch and installed Fedora 16. I installed the ATI drivers on Fedora 16 and on reboot, X gave me the backtrace error. HOWEVER, when I installed Fedora 14 over again (boot partition deleted by accident), on reboot after fglrx installed, it booted. I did the same exact thing on both. This leads me to believe that this problem is related to the 3.1.5 kernel series, which Fedora 16 and Arch use. Will try to compile older kernel and will report results.
Thanks for letting me know about how arch does libraries. I suppose the logic is that on a 64 bit distro, 32 bit libraries are the exception. When we get to 128 bit, and have a tri-arch chip, maybe we will have /lib32, /lib64, /lib128!
No problem! I'm now seeing if Ubuntu 11.10 freaks out with fglrx. If it does, I will def go with an older, 2.6.39 (?) kernel to see if it is a 3.0 problem.
I actually managed to solve this problem by removing the binary drivers from the AMD website (actually, I had to reinstall because I somehow broke libkmod). I installed the ones from the [catalyst] repository, installed xorg-server and friends from [xorg111], and copied /usr/lib/fglrx to /usr/lib64/fglrx. I also had to changed the xorg-server-1.12 PKGBUILD to ignore some of its dependencies so that it would actually build. One of the chief annoying ones was libgl (which conflicts with catalyst anything). Also, I had to change the switchlibGL script:
Quote:
#!/bin/bash
# switchlibGL
#
# Copyright (c) 2011 Advanced Micro Devices, Inc.
#
# Purpose:
# For switch between AMD and Intel graphic driver library.
#
# Usage:
# switchlibGL amd|intel|query
# amd: switches to the AMD version of libGL.
# intel: switches to the open-source version of libGL .
# query: checks, which version is currently active and prints either "amd"
# or "intel" or "unknown" on the standard output.
# must be root to execute this script
ARCH=`uname -m`
E_ERR=1
# Check if root
if [ "`whoami`" != "root" ]; then
echo "Must be root to run this script." 1>&2
exit $E_ERR
fi
# One parameter
if [ $# -ne 1 ]; then
echo "Usage: `basename $0` amd|intel|query " 1>&2
echo "Please choose one parameter " 1>&2
exit $E_ERR
fi
# Switch to right mode
case "$1" in
"amd" )
glselect amd
;;
"intel" )
glselect intel
;;
"query" )
current=`glselect show`
case "$current" in
"amd" )
echo "amd"
;;
"intel" )
echo "intel"
;;
esac
;;
* ) echo "Usage: `basename $0` amd|intel|query" 1>&2; exit $E_ERR;;
# other than amd|intel|query parameter report an error
esac
# A zero return value from the script upon exit indicates success.
exit 0
Also had to change the glselect script accordingly:
Quote:
#!/bin/bash
#
# glselect - switch between intel and fglrx gl libraries
#
newlib="$1"
if [[ "$newlib" = "intel" ]]
then
ln -sf libGL.so.1.2 /usr/lib/libGL.so
ln -sf libGL.so.1.2 /usr/lib/libGL.so.1
ln -sf libglx.xorg /usr/lib/xorg/modules/extensions/libglx.so
elif [[ "$newlib" = "amd" ]]
then
ln -sf /usr/lib64/fglrx/libGL.so.1.2 /usr/lib/libGL.so
ln -sf /usr/lib64/fglrx/libGL.so.1.2 /usr/lib/libGL.so.1
ln -sf /usr/lib/xorg/modules/extensions/fglrx/fglrx-libglx.so /usr/lib/xorg/modules/extensions/libglx.so
elif [[ "$newlib" = "show" ]]
then
if [[ `readlink /usr/lib/libGL.so` = "libGL.so.1.2" ]]
then
echo "intel"
elif [[ `readlink /usr/lib/libGL.so` = "/usr/lib64/fglrx/libGL.so.1.2" ]]
then
echo "amd"
else
echo "You have not setup symlinks yet."
exit 1
fi
else
echo "Usage: glselect [ intel | amd | show ]"
fi
exit
Finally, I had to copy switchlibGL to switchlibglx in the same directory (/usr/lib64/fglrx). It is supposed to be the same file because they do the same things.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.