工作中遇到装有A卡的笔记本运行startx后无法进入图形桌面,好生头痛<p>    手动运行startx,发现Xorg打印了大量错误,其中一条信息如下:</p>
modprobe:Error:could not insert ‘fglrx’:Function not implemented


        网上查了下,是AMD显卡驱动没有装上,于是下载了amd驱动源码编译。我下载的驱动源码是fglrx.13.0,进入目录后一般以root用户直接运行./make.sh即可(可能遇到需要从fglrx13.0/patch/获得补丁文件对fglrx打补丁)。但是问题笔记本和我用的ubuntu的内核不是同一个,这时,编译生成的fglrx.ko是无法再问题笔记本上运行的,分析他的makefile文件(位于fglrx13.0/2.6.x/),他通过变量

KDIR=/lib/modules/$(KVER)/build


指定内核源码树的位置,因此,对于要编译生成不同内核版本的fglrx.ko,需要修改这个变量的路径,使之指向正确的源码树。

KDIR=~/Desktop/linux-3.16.0


编译完后,将fglrx.ko文件复制到问题机/lib/modules/`uname -r`//kernel/drivers/video下,然后运行depmod -ae,(通过modinfo fglrx.ko 发现fglrx.ko依赖于amd_iommu_v2.ko)。重启机器,还是有问题:

radeon 0000:01:00.0:Direct firmware load failed with error -2


看架势是radeon驱动加载固件时失败了,百度找到下面链接:

​About Firmware​

按他的说法,固件应该不依赖内核,是独立运行的二进制文件,可以直接拷贝到/lib/firmware下使用。本着将信将疑的态度,尝试着把ubuntu发行版中固件一股脑的拷贝到问题笔记本/lib/firmware下,然后开机startx后果然可以进入桌面!

    你以为,就这么结束了?问题还曲折着!第二天开那问题机,居然又进不了桌面,这回又报错:

drm: radeon_acpi_init Error: Cannot find a backlight controller


​Error: Cannot find backlight controller for radeon acpi graphics card​


这个网址建议把kernel启动项参数从"quiet splash" 改为"nomodeset"。阿门,暂时又可以了。顺便来看下nomodeset是什么意思:

​Why do I need "nomodeset" in my dual-boot (F16, CentOS-6.2) grub?​

Setting "nomodeset" disables KMS. Kernel Mode Setting (KMS) provides faster mode switching for X and console. 
It also provides native-resolution VTs on some laptops and netbooks which, prior to this, would use some standard mode,
e.g. 800×600 on a 1024×600 panel.

看意思是禁用内核对Xorg加速设置。

希望后面别再出错了