Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236221
  • 博文数量: 49
  • 博客积分: 1035
  • 博客等级: 少尉
  • 技术积分: 477
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-14 17:23
文章分类

全部博文(49)

文章存档

2015年(15)

2014年(6)

2011年(1)

2008年(3)

2007年(11)

2006年(13)

我的朋友

分类: LINUX

2006-08-02 18:07:56

图形化的界面能让我们方便地享用Linux的强大功能,而且现在Linux的图形化界面已经越来越完善。Linux中经常使用的图形显示系统是X-Window,但是由于其与常见的MS Windows系统有很大的差异,所以在使用时常会遇到一些问题,比如无法驱动显卡、显示器参数错误、花屏和图形界面无法启动等。

因此,本文将在简介X-Window的基础上,介绍如何安装常见显卡和声卡的驱动程序、相关的配置文件,以及参数调整等内容。

X-Window概述

X-Window是一套显示系统,包括Server端和Client端,他们之间使用X协议互相通信。X诞生于1984年,在较短的时间内它就发布到了11个版本—X11。X11经过多年的发展,现在已经发布到X11R6。

X Client将希望显示的图形发送到X Server,X Server将图形显示在显示器上,同时为X Client提供鼠标、键盘的输入服务。因为C/S结构,可以将X的Server和Client分别运行在两台计算机上,甚至可以安装一些软件,让Windows作为X Server,让Linux作为Client,将KDE或GNOME等桌面环境显示到Windows主机上来。

图1所示让Windows作为X Server



使用Xmanager 1.3.9,在Windows XP上运行X Server,然后运行一台Linux主机下的startkde,将KDE桌面环境显示在Windows XP下。

使用startx命令可以启动X-Window系统。实际上,是在一台计算机上同时运行Server和Client,在运行startx之后,首先启动的是XFree86,它是Linux平台上最常用的X Server端;然后,又运行X的Client程序,如startkde(KDE的启动脚本)或gnome-session(GNOME的启动脚本)。

它们利用X协议连接本机的X Server,将图形显示出来。

Linux上经常使用的X

Server程序就是XFree86,它的任务是驱动显示卡、显示器、鼠标、键盘等设备,为X Client提供显示、输入服务等。

XFree86的主要文件目录如下:

XFree86文件所在的主要目录为/usr/X11R6;

XFree86的可执行程序文件目录为/usr/X11R6/bin;

XFree86自带的驱动程序所在目录为/usr/X11R6/lib/modules/drivers;

X的配置文件及启动脚本所在目录为/etc/X11;

XFree86的启动配置文件目录为/etc/X11/XF86Config或XF86Config-4,如果这两个文件都存在,XF86Config-4文件优先。

XFree86自带了一些设备的驱动,具体位置在/usr/X11R6/lib/modules/drivers,如果机器显示卡太新,无法使用X-Window,比如使用了Intel的855GM芯片组中集成的显卡无法启动X,则可以考虑升级XFree86。

当前XFree86成熟的版本是4.3,最新的版本4.4正在完善之中。从以下的链接中可获得4.3版的XFree86所支持的所有显卡列表。

XFree86官方版本下载网站是 ,中国的镜像网站是。

也可以从中科红旗网站下载。

下载后安装tgz包:

# tar zxvf XFree86_driver4.3.tgz
            # sh install.sh


安装Intel i865G芯片组显卡驱动

Intel i865G是一种比较新的显卡芯片组,它内置了显示模块,但是安装较早的Linux版本X-Window有可能无法启动。处理这个问题的方法是,一种是直接升级到XFree86 4.3;另一种是通过Intel官方的网站 intel.com/scripts-df/support_ intel.asp?iid=HPAGE+header_support_download&下载驱动程序。

在该链接的下载页面可以选择下载RPM包,也可以选择下载tar.gz的压缩文档。尽管这两种的安装方式略有不同,但是经过以下三步基本上可以让显卡在X-Window中正常使用。

1.安装驱动程序

(1)选择下载RPM包:

# rpm -Uvh --force intelgraphics_ 20040607_i386.rpm



(2)选择下载的是tar.gz压缩包要执行下面代码:

# tar xzvf IntelGraphics_060704.tar.gz
            # cd dripkg
            # ./install.sh



这时程序将自动安装,安装程序将更新/usr/X11R6/modules/drivers/i810_drv.o的驱动程序,使其支持新的i865G芯片组中的显卡。



图2 使用redhat-config-xfree86



2.选择驱动程序



有三种方法可以选择驱动程序:

(1)如果是Red Hat系统则可以运行下面代码:

# redhat-config-xfree86


图2显示为使用redhat-config-xfree86。这个命令可以自动侦测显卡、配置分辨率和色深,以及选择Advanced页面,然后单击Video Card的Configure按钮,选择正确的显卡。但是,如果是Red Hat Linux 8.0之前版本,则没有这个命令,应该运行下面代码:

# Xconfigurator



这样程序会一步步提示选择正确的驱动程序。

这两种方法都会将结果写入/etc/X11/XF86Config配置文件。

(2)直接更改XFree86的配置文件

直接更改XFree86的配置文件这种方法在Linux系统中比较通用,运行下面命令:

# vi /etc/X11/XF86Config
            或者
            XF86Config-4



在其中找到下面代码,将Driver后面改为i810,表示使用i810_drv.o驱动程序:

Section "Device"
            Identifier  "Videocard0"
            Driver      "i810"
            VendorName  "Videocard vendor"
            BoardName   "Intel 865"
            EndSection



该配置文件中其它需要注意的地方如下:

Section "Monitor"
            Identifier   "Monitor0"
            VendorName   "Monitor Vendor"
            ModelName    "Unknown monitor"
            HorizSync    31.5 - 37.9
            VertRefresh  50.0 - 70.0
            Option	    "dpms"
            EndSection



上面这个部分是设置显示器的类型,不知道自己的显示器叫什么名字没关系,但需要将显示器的垂直刷新率和水平刷新率正确设置,这两个参数可以查看显示器的说明书。以上是15英寸显示器最常用的频率,如果这个参数设置错误,显示器就会花屏或黑屏。

Section "Screen"
            Identifier "Screen0"
            Device     "Videocard0"
            Monitor    "Monitor0"
            DefaultDepth     16
            SubSection "Display"
            Depth     16
            Modes    "1024x768" "800x600" "640x480"   //默认会使用最高的分辨率
            EndSubSection
            EndSection
这里是设置显示模式的地方,包括屏幕的分辨率和色深,默认使用最高的分辨率。如果想使用较低的分辨率,那么将高分辨率删除就可以了,在这个配置文件中显示器会使用“1024×768”分辨率,色深是16位色。有关XF86Config文件的详解可以参看它的man page:

# man XF86Config


(3)让XFree86自己生成XF86Config文件

运行下面命令:

# XFree86 -configure


XFree86将自动侦测显卡及显示器,在用户的主目录下生成一个名叫XF86Config.new的文件。可以用以下命令测试这个文件运行是否正常:

# XFree86 -xf86config  ~/XF86Config.new


这个代码是指定X Server使用 ~/XF86Config.new作为配置文件。

如果有白色X型的光标显示,就可以按“Ctrl+Alt+Backspace”结束X。然后运行下面的命令,用新的配置文件来替换系统配置文件。

# cp ~/XF86Config.new /etc/X11/XF86Config


3.启动X-Window

运行startx,启动X-Window。这种方式依赖于控制台(tty),将X-Window作为当前控制台的Shell子进程来运行。

另一种方法是运行桌面管理程序gdm(GNOME桌面管理程序)、kdm(KDE的桌面管理程序)或xdm(XFree86的桌面管理程序)。这种方式不依赖于当前的Shell,即使当前Shell关闭,X-Window一样会继续运行。

以上三步是Linux下安装X-Window显卡驱动程序的通常步骤,绝大多数显卡都可以经过以上的步骤正常使用,所不同的是下载地址和具体的驱动程序的生成方式可能不一样。
比如,笔记本电脑上常用的Intel 815集成显卡的安装,我们同样可从Intel网站上下载815显卡部分的RPM包,网址为intel.com/scripts-df/filter_results.asp?strOSs=39&strTypes= DRV%2CARC&ProductID=797&OSFullName= Linux*&submit=Go%21。

# rpm -ivh xfcom_i810-1.2-3.i386.rpm


然后重复以上的第二至第三步:

# redhat-config-xfree86  //选择正确的驱动程序
            # startx                 //启动X-Window


安装其它显卡的驱动

1. 安装GeForce FX 6800显卡驱动

如果购买了GeForce FX 6800显卡(包含其它nVIDIA显卡),希望玩玩刚刚发布的DOOM3,结果却发现X-Window无法启动,这时可以去nVIDIA网站下载最新的显卡驱动。

nVIDIA的Linux驱动程序做得相当精细,下载后得到文件NVIDIA-Linux-x86-1.0-6106-pkg1.run,运行它就可以看到一个tui(文本用户界面):

# chmod 700 NVIDIA-Linux-x86-1.0-6106-pkg1.run   //设置执行权限
            # ./ NVIDIA-Linux-x86-1.0-6106-pkg1.run.         //运行安装程序


程序将会一步步提示安装nVIDIA的驱动。该驱动包含两部分:一部分是内核驱动,用于命令行界面的驱动,在安装这部分时,如果不是它支持的几种内核版本需要编译内核;另一部分是针对XFree86的驱动。

运行中常常出现的错误是在编译内核时找不到内核的源文件,用以下方法可以解决这个问题。先下载安装Kernel的源文件:

#  rpm -ivh kernel-sourceXXX.rpm   //在Red Hat安装光盘上
            或者
            #  tar zxvf linux-2.XXX.tar.gz   //可以从网上下载,比如kernel.org


指定源文件位置:

# ./ NVIDIA-Linux-x86-1.0-6106-pkg1.run. --kernel-source-path=

安装驱动程序后,如果有问题可以参考刚才安装Inter i865显示驱动的方法,来调整显卡的驱动和参数,运行 redhat-config-xfree86、XFree86 -configure或直接更改/etc/X11下的XF86Config文件。另外,如果希望直接得到nVIDIA的驱动程序,不想自动安装,可以运行以下命令将包中的文件解开。

# ./ NVIDIA-Linux-x86-1.0-6106-pkg1.run -x


在./NVIDIA-Linux-x86-1.0-6106-pkg1/usr/share/doc目录下,有一个XF86Config.example的文件,如果遇到XF86Config文件配置有问题,可以直接查看该文件中的显卡驱动部分内容。

2.安装ATI 9800显卡驱动

从下面地址可以下载ATI 9800显卡驱动fglrx-4.3.0-3.11.1.i386.rpm文件,然后执行:

# rpm -Uvh --force fglrx-4.3.0-3.11.1.i386.rpm  //强制升级/安装驱动程序包


注意,要看看是否有错误发生,如果有请仔细查看出错信息。

# fglrxconfig 	//使用ATI的配置工具配置驱动程序


该程序会提问一些问题,当问到是否创建一个XF86Config-4文件时,要回答“y”,这样就可以生成新的配置文件。

# startx     //重新启动X
            # fglrxinfo  //可以查看驱动程序是否安装成功


3.常见显卡驱动的下载地址

◆nVIDIA显卡驱动程序地址。

◆ATI显卡驱动程序地址(ATI网站访问速度较慢,可以多试几次)。

◆VIA芯片集成显卡驱动程序。

◆SIS显卡驱动程序地址。

◆Intel芯片组显卡驱动程序地址intel.com/scripts-df/support_intel.asp?iid=HPAGE+ header_support_download&。

◆Intel笔记本迅驰显示驱动程序地址intel.com/scripts-df/filter_results.asp?strOSs=39&strTypes=DRV%2CARC&ProductID= 922&OSFullName= Linux*&submit=Go%21。
ATI系列笔记本驱动程序要升级XFree86。

如果实在找不到显卡驱动程序,可以试着按照上面的介绍升级XFree86到4.3或4.4。它自带有一些显卡驱动程序,如ATI M9000笔记本显卡、SIS显卡等驱动程序。

4.内核支持显示模式调整

在命令行界面下,可以调整内核的显示模式,让它使用较高分辨率,设置方法如下。

(1)使用GRUB作为boot loader,则运行命令:

# vi /boot/grub/grub.conf


在kernel /vmlinuz-2.4.21-4.EL ro root=LABEL=/行后添加vga=0x314。这是设置显示模式,vga是Kernel的参数,0x314表示的是16进制的314换算成10进制为788,所以vga=788跟与vga=0x314是一样的。我们把该行改为下面一行:

kernel /vmlinuz-2.4.21-4.EL ro root=LABEL=/ vga=0x314


这时会发现Linux启动时显示一个企鹅图标,使用的是800×600分辨率,vga参数含意如表1。

(2)使用LILO作为boot loader,则在/etc/lilo.conf文件中将append处改为如下一行:

append=" root=LABEL=/ vga=0x314"


之后运行下面命令:

#  lilo -v


使用新的配置文件更新MBR。
常见显卡故障的处理

当无法启动X-Window时,应该仔细查看出错信息。以下为X-Window启动不成功的常见原因。

1.当屏幕为全黑或花屏时,一般是显示器参数设置有误。首先应该按“Ctrl+Alt+Backspace”,结束X-Window。然后查看显示器说明书,在/etc/X11/XF86Config-4或XF86Config文件中,将水平和垂直刷新率改成正确的值,或者运行redhat-config-xfree86和XFree86-configure。

2.XF86Config文件损坏或丢失,运行redhat-config-xfree86或XFree86 -configure。

3.没有控制台所有权。比如,以shrek用户登陆,然后用命令“su - joan”切换为用户joan,这时使用startx就会出错,提示没有该控制台的所有权。这时,可以用exit退出joan的Shell,然后再运行startx。

4.硬盘没有空间。在使用KDE或GNOME时,每次启动X-Window都要占用一定空间放临时文件,如果/tmp或主目录下无法写入文件,这时X-Window就会出现一些奇怪的错误。

5.显卡驱动有问题。下载安装正确的驱动,运行redhat-config-xfree86或XFree86 -configure。

6.xfs服务没有启动。xfs是字体服务,它不启动则X-Window无法启动。使用下面命令可以启动该服务:

# service xfs start


或者

# /etc/rc.d/init.d/xfs start


如果希望该服务每次自动启动,则使用下面命令:

#chkconfig xfs on

声卡驱动程序概述

Linux下声卡的驱动是作为普通内核模块来加载的,系统内置的声卡驱动在/lib/modules/2.XXX/kernel/drivers/sound/目录下。以下是系统内置的声卡驱动模块:

# ls /lib/modules/2.XXX/kernel/drivers/sound/
            ac97_codec.o  cs4232.o	forte.o	      uart401.o
            ac97.o        cs4281    i810_audio.o  via82cxxx_audio.o
            ad1848.o      cs46xx.o  maestro3.o    ymfpci.o
            ad1889.o      emu10k1   rme96xx.o
            audigy        es1370.o  soundcore.o
            cmpci.o       es1371.o  sound.o


结合前一篇所介绍的内容可以知道,系统在启动时会通过以下两个文件来加载模块:/etc/modules.conf和/etc/rc.d/rc.sysinit,声卡也是在这里加载的。如果新安装了一块声卡,在Red Hat Linux中则可以使用kudzu命令来搜索声卡,并且自动配置。如果系统中没有内置的驱动程序,则可以按以下步骤来安装(以VIA的8237南桥集成声卡为例)。

从VIA的网站上下载最新的驱动程序LinuxAudiov230.gz。

解压缩:

# tar xzvf LinuxAudiov230.gz


编译src.rpm包:

# rpmbuild --rebuild viaudiocombo-2.2-3.src.rpm


如果没有rpmbuild命令则运行:

# rpm --rebuild viaudiocombo-2.2-3.src.rpm
            # cd /usr/src/RPM/RPMS/iX86   //这里的X-Window根据机器情况而不同
            # rpm -ivh --force viaudiocombo-2.2-3.iX86.rpm   //安装编译好的驱动程序


Intel主板的集成声卡一般使用的是i810_audio.o作为驱动,目前新版本Linux内置的驱动可以直接支持。
Linux“万能声卡驱动”安装

计算机中的声卡千差万别,除了Intel、VIA等大厂的声卡外,大多数声卡都没有专门写Linux下的声卡驱动程序。那么怎样在Linux中使用找不到驱动程序的声卡呢?可以试一试Linux下的“万能声卡驱动”,它可以驱动大量的声卡。

目前主要有两种万能声卡驱动:一种是ALSA(Advanced Linux Sound Architecture),它采用GPL,针对Linux系统源代码公开,主页是;另一种是OSS(Open Sound System),它是商用软件,针对主流Unix系统,Linux也在它的支持之列,主页是。

1.安装ALSA驱动程序

(1)查找声卡型号

从alsa-doc/处查找是否有使用的声卡型号,如果有则一定要从此处点击后面“details”链接来查找安装方法。这里以安装创新Soundblaster Audigy声卡的驱动为例,其它的声卡请查看details中的具体方法。

在安装之前需要安装内核的源代码包,可以从Red Hat光盘上安装kernel-sourceXXX.rpm包,或者从kernel.org网站上下载当前系统版本的源代码包。

安装源码包:

# rpm -ivh kernel-soureXXX.rpm


或者

# tar zxvf kernel-2.XXX.tar.gz
            # cd /usr/src/linux2.XXX/       //到源代码的目录中
            # cp /boot/config-2.XXX ./.config   //将当前版本的内核配置文件拷贝至源码目录

(2)下载驱动程序

从alsa/ftp/driver/下载驱动程序alsa-dirver-1.0.6rc1.tar.bz2;从alsa/ftp/lib/下载库文件alsa-lib-1.0.6rc1.tar.bz2;从alsa/ftp/utils/下载工具alsa-utils-1.0.6rc1.tar.bz2。

(3)安装驱动

# cd /usr/src
            # mkdir alsa
            # cd alsa
            # cp alsa* ./
            # tar -xjvf alsa-driver-1.0.6rc1.tar.bz2
            # cd alsa-driver-1.0.6rc1
            # ./configure --with-cards=emu10k1 --with-sequencer=yes;
            # make
            # make install
            # chmod a+rw /dev/dsp /dev/mixer /dev/sequencer /dev/midi


安装lib包和utils包:

# cd ..
            # tar -jxvf alsa-lib-1.0.6rc1.tar.bz2
            # cd alsa-lib-1.0.6rc1
            # ./configure
            # make
            # make install
            # cd ..
            # tar -jxvf alsa-utils-1.0.6rc1.tar.bz2
            # cd alsa-utils-1.0.6rc1
            # ./configure
            # make
            # make install


(4)更改配置文件

# vi /etc/modules.conf
            alias char-major-116 snd
            alias snd-card-0 snd-emu10k1
            # module options should go here
            alias char-major-14 soundcore
            alias sound-slot-0 snd-card-0
            alias sound-service-0-0 snd-mixer-oss
            alias sound-service-0-1 snd-seq-oss
            alias sound-service-0-3 snd-pcm-oss
            alias sound-service-0-8 snd-seq-oss
            alias sound-service-0-12 snd-pcm-oss


但是,ALSA驱动后的声卡默认是不发声的,可以用ALSA mixer来开启。直接运行以下命令可以全部开启所有的音量:

#./audunmute


也可以使用以下命令来设置音量的大小:

# amixer -c 0 sset 'Master',0 100%,100% unmute
            # amixer -c 0 sset 'PCM ',0 100% unmute


可以编辑/etc/modules.conf文件,添加如下一行让声卡每次启动时调整音量为100%:

post-install snd-card-0 amixer -c 0 sset 'Master',
            0 100%,100% unmute && amixer -c 0 sset 'PCM ',
            0 100% unmute

2.设置OSS声卡驱动

(1)从download.cgi选择下载OSS的版本,如针对2.4内核的驱动,或者针对2.6内核的驱动。

以下是2.4内核驱动的下载地址ftp://。

(2)安装驱动程序:

# tar zxvf oss3991e-linux-x86-v24.tar.gz
            #./oss-install


将会自动安装其中包含的驱动程序。安装驱动模块前,请使用命令modprobe -r或rmmod把原有的驱动程序卸载。

以上为Linux声卡驱动的大致安装过程。因为Linux下的声卡众多,不可能有一个固定的安装步骤,但大致的步骤是,先编译出针对目前内核版本的驱动模块,然后再使用insmod或modprobe加载上去,更多的是通过/etc/modules.conf文件自动加载。

理解/etc/modules.conf文件很重要,这是大多数Linux系统加载模块的文件,有些Linux是/etc/conf.modules文件。如果声卡是非即插即用的,可以在/etc/modules.conf文件中使用options snd-card-0 io=0x300 irq=5来设置I/O资源及中断号。
阅读(1349) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~