2008年12月28日星期日

关于intel 915集成显卡驱动的笔记

按照intel官方主页上的提示,装了n久,试验了n久,成功了一小部分,记下。
显卡驱动的安装分成4个部分:
1. 内核相关部分的drm支持,可以用三种方法安装
a) 编译内核的时候加入drm支持,一般在 Devices Drivers --> Graphic Drivers --> DRM下面,编译进内核或编译成module(即m)均可
b) 安装x11-base/x11-drm包,注意此时内核中的drm支持应该去掉,否则包安装失败(本人的是gentoo,其他的如Debian,Suse或FC也有相对应的包,安装上即可)。
c) 到代码仓库中git出源代码来安装。
# git clone git://anongit.freedesktop.org/git/mesa/drm
这个drm文件夹下包含了两个东东,一个是libdrm,步骤2要用; 一个是drm内核驱动,此部分关注。
# cd drm/linux-core
# make
# cp *.ko /lib/modules/`uname -r`/kernel/drivers/char/drm/
接着修改/libmodules/`uname -r`/modules.dep文件,照着文件的格式来作,将modules都添入,使得kernel能找到它们。a)和b)中这一步已经自动做好了,所以不用手工改这个文件。
这三种方法得到的都是如i810.ko, i915.ko, i835.ko, intel.ko之类的文件,用modprobe可以加载之。

2. libdrm的安装, 可用两种方法做:
a) 源代码安装。1 c)中的代码中包含了libdrm,所以直接编译:
# cd drm
# ./autogen.sh --prefix=/usr --exec-prefix=lib # 加上两个prefix主要是用来覆盖系统原有的libdrm.so等库文件
# make && make install
b) 包安装(同样这里是gentoo的,其它系统类似)。
# emerge libdrm
此步生成的文件是libdrm.so, libdrm.la, libdrm...等一系列库文件。

3. xorg intel显卡2D驱动的安装,同样两种方法都可以:
a) 源代码安装
# git clone git://anongit.freedesktop.org/git/drivers/xf86-video-intel
# ./configure --prefix=${XORG_DIR}
# make && make install
注意,这里XORG_DIR是xorg-server被安装的主目录,我的系统上是/usr/X11R6
b) 包安装
# emerge -av xf86-video-intel
此步生成的文件是xorg的intel显卡2D驱动,形如intel_drv.so, i810_drv.so。
还有一个要注意的问题是,如果第2步中使用的是源代码安装,第3步中的./configure或者是emerge可能会有错误,抱怨libdrm没有安装,这主要是因为虽然安装了,但package系统没有找到它。所以为了能找到它,需要
# pkg-config /lib/pkgconfig
来更新libdrm库的信息。然后用
# pkg-config --modversion libdrm
来看看libdrm库文件的版本号,输出正确版本号,说明信息更新。然后在安装3就可以了。我的系统libdrm库安装在/lib下,所以pkg信息就在目录/lib/pkgconfig下。实际上是一个.pc文件,对于libdrm库,就是libdrm.pc。

4. xorg 下显卡3D驱动
同样用包安装(emerge mesa) 或者 源代码安装(git clone git://anongit.freedesktop.org/git/mesa/mesa; ./configure; make && make install)

至此全部安装完毕,将xorg.conf文件中的显卡module的driver改成intel,将"load dri" 以及"load glx"前面的"#"去掉。重新启动X,happy
另外可以用glxgears以及glxinfo来测试显卡性能以及dri打开与否。这两个东东是要安装的(emerge mesa-util?忘掉了,差不多吧8-/)

-----------------------------------------------------------------------------------------------
另外几个问题:
1) gentoo中自动加载模块可以放到/etc/modules.autoload.d/kernel-2.6文件中,如intel-agp
2) 好相不同的内核驱动放置的目录不同,新内核如我的2.6.27-r5内核,i810.ko放在/lib/modules/`uname -r`/kernel/drivers/gpu/drm/目录下,而老内核放在/lib/modules/`uname -r`/kernel/drivers/char/drm/目录下,这个问题其实困扰了我很久。
3) 手工加内核模块进/lib/modules/`uname -r`/目录下,一定记住加完后更新/lib/modules/`uname -r`/modules.dep文件,我现在只知道手工更新文件,是否能自动更新?待求解
4) 我的intel 915G显卡glxgears测试下来,竟然只有260多fps,虽然看见dri=yes了,估计还只是software的dri,硬件dri还没有搞定,实在是太难弄了。

And now, my X can't work properly once again (after a recompilation of my kernel). Terrible thing, terrible things all!