xorg 6.9 和7.0 都可以用 *.run 包装.
安装驱动, 编译内核模块就不说了. 说说如果出现问题, 原因可能在哪:
1. 确保 fglrx 模块已经加载
lsmod | grep fglrx 有结果.
如果 modprobe fglrx 出错, dmesg 看一下,
基本上都是因为内核太新, fglrx 无法编译,
可以试试换更高版本的 fglrx , 也可以到 http://ati.cchtml.com/ 找找看有没有补丁.
2. 保证运行程序链接的是 fglrx 的 libGL.so.1
只要 glxinfo 中有 ATI 出现就对了.
fglrx 的安装程序默认会覆盖 mesa 的 libGL.so.1.
但我是手动安装, fglrx 在 /usr/lib/X11R6/fglrx/libGL.so.1, 然后用 ldconfig 实现两者共存, 可以切换.
这就必须要使 ldd `which glxinfo`中 libGL.so.1 指向正确的文件
3. 保证挂载了/dev/shm
echo tmpfs /dev/shm tmpfs defaults 0 0 >>/etc/fstab
mount /dev/shm
mount | grep shm
4. 如果上面的都对了, fglrxinfo 还是 mesa
看看 glxinfo , 显示 OpenGL 各组件的版本, 正常的是 :
glx server : SGI
glx client : ATI
OpenGL verdor : ATI
但 lfs 有可能是
glx server : SGI
glx client : ATI
OpenGL verdor : Mesa
这证明前3步都对了, 关键的 2. 确实链接的是 fglrx 的 libGL.so.1
你要确保 /usr/X11R6/lib/dri 和/usr/X11R6/lib/drivers 下面, fglrx 的几个 .so 文件确实在里面.
然后 ldd 上面提到的fglrx 的几个 .so 文件. 很可能就发现原因. 里面的一个文件是链接到 libstdc++.so.5 的, 但 LFS 默认是没有的.
解决方法就是用 gcc3 的包编译一个 libstdc++.so.5 , 你也可以试试从某个distro拷贝一个, 我从 mdv2006 拷贝的 libstdc++.so.5 工作正常, 我想是因为 mdv2006 和我的 lfs 用的都是 gcc4 的原因.
这是 lfs 这种没有包管理器特有的问题, 非常难以发现.

