日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

Linux下设备驱动

發(fā)布時(shí)間:2024/8/1 linux 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux下设备驱动 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本講主要概述Linux設(shè)備驅(qū)動(dòng)框架、驅(qū)動(dòng)程序的配置文件及常用的加載驅(qū)動(dòng)程序的方法;并且介紹Red Hat Linux安裝程序是如何加載驅(qū)動(dòng)的,通過了解這個(gè)過程, 我們可以自己將驅(qū)動(dòng)程序放到引導(dǎo)盤中;安裝完系統(tǒng)后,使用kudzu自動(dòng)配置硬件程序。

Linux設(shè)備驅(qū)動(dòng)概述

1. 內(nèi)核和驅(qū)動(dòng)模塊
操作系統(tǒng)是通過各種驅(qū)動(dòng)程序來駕馭硬件設(shè)備,它為用戶屏蔽了各種各樣的設(shè)備,驅(qū)動(dòng)硬件是操作系統(tǒng)最基本的功能,并且提供統(tǒng)一的操作方式。正如我們查看屏幕上的文檔時(shí),不用去管到底使用nVIDIA芯片,還是ATI芯片的顯示卡,只需知道輸入命令后,需要的文字就顯示在屏幕上。硬件驅(qū)動(dòng)程序是操作系統(tǒng)最基本的組成部分,在Linux內(nèi)核源程序中也占有較高的比例。

Linux內(nèi)核中采用可加載的模塊化設(shè)計(jì)(LKMs ,Loadable Kernel Modules),一般情況下編譯的Linux內(nèi)核是支持可插入式模塊的,也就是將最基本的核心代碼編譯在內(nèi)核中,其它的代碼可以選擇是在內(nèi)核中,或者編譯為內(nèi)核的模塊文件。

如果需要某種功能,比如需要訪問一個(gè)NTFS分區(qū),就加載相應(yīng)的NTFS模塊。這種設(shè)計(jì)可以使內(nèi)核文件不至于太大,但是又可以支持很多的功能,必要時(shí)動(dòng)態(tài)地加載。這是一種跟微內(nèi)核設(shè)計(jì)不太一樣,但卻是切實(shí)可行的內(nèi)核設(shè)計(jì)方案。

我們常見的驅(qū)動(dòng)程序就是作為內(nèi)核模塊動(dòng)態(tài)加載的,比如聲卡驅(qū)動(dòng)和網(wǎng)卡驅(qū)動(dòng)等,而Linux最基礎(chǔ)的驅(qū)動(dòng),如CPU、PCI總線、TCP/IP協(xié)議、APM(高級(jí)電源管理)、VFS等驅(qū)動(dòng)程序則編譯在內(nèi)核文件中。有時(shí)也把內(nèi)核模塊就叫做驅(qū)動(dòng)程序,只不過驅(qū)動(dòng)的內(nèi)容不一定是硬件罷了,比如ext3文件系統(tǒng)的驅(qū)動(dòng)。

理解這一點(diǎn)很重要。因此,加載驅(qū)動(dòng)時(shí)就是加載內(nèi)核模塊。下面來看一下有關(guān)模塊的命令,在加載驅(qū)動(dòng)程序要用到它們:lsmod、modprob、insmod、rmmod、modinfo。

lsmod 列出當(dāng)前系統(tǒng)中加載的模塊,例如:

#lsmod (與cat /proc/modules 得出的內(nèi)容是一致的)Module Size Used by Not taintedradeon 115364 1agpgart 56664 3nls_iso8859-1 3516 1 (autoclean)loop 12120 3 (autoclean)smbfs 44528 2 (autoclean)parport_pc 19076 1 (autoclean)lp 9028 0 (autoclean)parport 37088 1 (autoclean) [parport_pc lp]autofs 13364 0 (autoclean) (unused)ds 8704 2yenta_socket 13760 2pcmcia_core 57184 0 [ds yenta_socket]tg3 55112 1sg 36940 0 (autoclean)sr_mod 18104 0 (autoclean)microcode 4724 0 (autoclean)ide-scsi 12208 0scsi_mod 108968 3 [sg sr_mod ide-scsi]ide-cd 35680 0cdrom 33696 0 [sr_mod ide-cd]nls_cp936 124988 1 (autoclean)nls_cp437 5148 1 (autoclean)vfat 13004 1 (autoclean)fat 38872 0 (autoclean) [vfat]keybdev 2976 0 (unused)mousedev 5524 1hid 22212 0 (unused)input 5888 0 [keybdev mousedev hid]ehci-hcd 20104 0 (unused)usb-uhci 26412 0 (unused)usbcore 79392 1 [hid ehci-hcd usb-uhci]ext3 91592 2jbd 52336 2 [ext3]



上面顯示了當(dāng)前系統(tǒng)中加載的模塊,左邊數(shù)第一列是模塊名,第二列是該模塊大小,第三列則是該模塊使用的數(shù)量。

如果后面為unused,則表示該模塊當(dāng)前沒在使用。如果后面有autoclean,則該模塊可以被rmmod -a命令自動(dòng)清洗。rmmod -a命令會(huì)將目前有autoclean的模塊卸載,如果這時(shí)候某個(gè)模塊未被使用,則將該模塊標(biāo)記為autoclean。如果在行尾的[ ]括號(hào)內(nèi)有模塊名稱,則括號(hào)內(nèi)的模塊就依賴于該模塊。例如:

cdrom 34144 0 [sr_mod ide-cd]



其中ide-cd及sr_mod模塊就依賴于cdrom模塊。

系統(tǒng)的模塊文件保存在/lib/modules/2.4.XXX/kerne目錄中,根據(jù)分類分別在fs、net等子目錄中,他們的互相依存關(guān)系則保存在/lib/modules/2.4.XXX/modules.dep 文件中。

需要注意,該文件不僅寫入了模塊的依存關(guān)系,同時(shí)內(nèi)核查找模塊也是在這個(gè)文件中,使用modprobe命令,可以智能插入模塊,它可以根據(jù)模塊間依存關(guān)系,以及/etc/modules.conf文件中的內(nèi)容智能插入模塊。比如希望加載ide的光驅(qū)驅(qū)動(dòng),則可運(yùn)行下面命令:

# modprobe ide-cd



此時(shí)會(huì)發(fā)現(xiàn),cdrom模塊也會(huì)自動(dòng)插入。

insmod也是插入模塊的命令,但是它不會(huì)自動(dòng)解決依存關(guān)系,所以一般加載內(nèi)核模塊時(shí)使用的命令為modprobe。

rmmod可以刪除模塊,但是它只可以刪除沒有使用的模塊。

Modinfo用來查看模塊信息,如modinfo -d cdrom,在Red Hat Linux系統(tǒng)中,模塊的相關(guān)命令在modutils的RPM包中。

2.設(shè)備文件

當(dāng)我們加載了設(shè)備驅(qū)動(dòng)模塊后,應(yīng)該怎樣訪問這些設(shè)備呢?Linux是一種類Unix系統(tǒng),Unix的一個(gè)基本特點(diǎn)是“一切皆為文件”,它抽象了設(shè)備的處理,將所有的硬件設(shè)備都像普通文件一樣看待,也就是說硬件可以跟普通文件一樣來打開、關(guān)閉和讀寫。

系統(tǒng)中的設(shè)備都用一個(gè)設(shè)備特殊文件代表,叫做設(shè)備文件,設(shè)備文件又分為Block(塊)型設(shè)備文件、Character(字符)型設(shè)備文件和Socket(網(wǎng)絡(luò)插件)型設(shè)備文件。Block設(shè)備文件常常指定哪些需要以塊(如512字節(jié))的方式寫入的設(shè)備,比如IDE硬盤、SCSI硬盤、光驅(qū)等。

而Character型設(shè)備文件常指定直接讀寫,沒有緩沖區(qū)的設(shè)備,比如并口、虛擬控制臺(tái)等。Socket(網(wǎng)絡(luò)插件)型設(shè)備文件指定的是網(wǎng)絡(luò)設(shè)備訪問的BSD socket 接口。

#ls -l /dev/hda /dev/video0 /dev/logbrw-rw---- 1 root disk 3, 0 Sep 15 2003 /dev/hdasrw-rw-rw- 1 root root 0 Jun 3 16:55 /dev/logcrw------- 1 root root 81, 0 Sep 15 2003 /dev/video0



上面顯示的是三種設(shè)備文件,注意它們最前面的字符,Block型設(shè)備為b,Character型設(shè)備為c,Socket設(shè)備為s。

由此可以看出,設(shè)備文件都放在/dev目錄下,比如硬盤就是用/dev/hd*來表示,/dev/hda表示第一個(gè)IDE接口的主設(shè)備,/dev/hda1表示第一個(gè)硬盤上的第一個(gè)分區(qū);而/dev/hdc 表示第二個(gè)IDE接口的主設(shè)備。可以使用下面命令:

#dd if=/dev/hda of=/root/a.img bs=446 count=1



把第一個(gè)硬盤上前446個(gè)字節(jié)的MBR信息導(dǎo)入到a.img文件中。
對(duì)于Block和Character型設(shè)備,使用主(Major)和輔(minor)設(shè)備編號(hào)來描述設(shè)備。主設(shè)備編號(hào)來表示某種驅(qū)動(dòng)程序,同一個(gè)設(shè)備驅(qū)動(dòng)程序模塊所控制的所有設(shè)備都有一個(gè)共同的主設(shè)備編號(hào),而輔設(shè)備編號(hào)用于區(qū)分該控制器下不同的設(shè)備,比如,/dev/hda1(block 3/1)、/dev/hda2(block 3/2 )和/dev/hda3( block3/3 )都代表著同一塊硬盤的三個(gè)分區(qū),他們的主設(shè)備號(hào)都是3,輔設(shè)備號(hào)分別為1、2、3。 這些設(shè)備特殊文件用mknod命令來創(chuàng)建:

# mknod harddisk b 3 0



我們就在當(dāng)前位置創(chuàng)建出一個(gè)與 /dev/hda一樣的、可以訪問第一個(gè)IDE設(shè)備主硬盤的文件,文件名叫做harddisk。

使用下面命令可以查看設(shè)備編號(hào):

#file /dev/hda/dev/hda: block special (3/0)



其中Block代表/dev/hda是系統(tǒng)的Block型(塊型)設(shè)備文件,它的主設(shè)備編號(hào)為3,輔設(shè)備編號(hào)為0。

#ls -l /dev/hda /dev/hdbbrw-rw---- 1 root disk 3, 0 Sep 15 2003 /dev/hdabrw-rw---- 1 root disk 3, 64 Sep 15 2003 /dev/hdb



使用ls -l也可以看到設(shè)備編號(hào),/dev/hdb代表第一個(gè)IDE接口的從設(shè)備(Slave)也是Block設(shè)備,編號(hào)為(3/64),還有另外一種設(shè)備文件是/dev/tty*。使用如下命令:

#echo "hello tty1" > /dev/tty1



將字符串“hello tty1”輸出到/dev/tty1代表的第一個(gè)虛擬控制臺(tái)上,此時(shí)按“Alt + F1”可以看到該字符出現(xiàn)在屏幕上,這個(gè)特殊的文件就代表著我們的第一虛擬控制臺(tái)。

#file /dev/tty1/dev/tty1: character special (4/1)



由上可以看到,它的類型為Character 型(字符型)設(shè)備文件,主設(shè)備號(hào)為4,輔設(shè)備號(hào)為1。同樣,/dev/tty2代表著第二個(gè)虛擬控制臺(tái),是Character設(shè)備,編號(hào)為 (4/2)。

當(dāng)將/dev/cdrom加載到/mnt/cdrom中時(shí),只要訪問/mnt/cdrom系統(tǒng)就會(huì)自動(dòng)引入到/dev/cdrom對(duì)應(yīng)的驅(qū)動(dòng)程序中,訪問實(shí)際的數(shù)據(jù)。

有關(guān)設(shè)備文件的編號(hào)可以看內(nèi)核文檔/usr/src/linux-2.*/Documentation/devices.txt 文件(在Kernel的源文件解包后的Documentation目錄中),其中詳細(xì)敘述了各種設(shè)備文件編號(hào)的意義。
3.使用/proc目錄中的文件監(jiān)視驅(qū)動(dòng)程序的狀態(tài)

通過設(shè)備文件怎樣訪問到相應(yīng)的驅(qū)動(dòng)程序呢?它們中間有一個(gè)橋梁,那就是proc文件系統(tǒng),它一般會(huì)被加載到/proc目錄。訪問設(shè)備文件時(shí),操作系統(tǒng)通常會(huì)通過查找/proc目錄下的值,確定由哪些驅(qū)動(dòng)模塊來完成任務(wù)。如果proc文件系統(tǒng)沒有加載,訪問設(shè)備文件時(shí)就會(huì)出現(xiàn)錯(cuò)誤。

Linux系統(tǒng)中proc文件系統(tǒng)是內(nèi)核虛擬的文件系統(tǒng),其中所有的文件都是內(nèi)核中虛擬出來的,各種文件實(shí)際上是當(dāng)前內(nèi)核在內(nèi)存中的參數(shù)。它就像是專門為訪問內(nèi)核而打開的一扇門,比如訪問/proc/cpuinfo文件,實(shí)際上就是訪問目前的CPU的參數(shù),每一次系統(tǒng)啟動(dòng)時(shí)系統(tǒng)都會(huì)通過/etc/fstab中設(shè)置的信息自動(dòng)將proc文件系統(tǒng)加載到/proc目錄下:

# grep proc /etc/fstabnone /proc proc defaults 0 0此外,也可以通過mount命令手動(dòng)加載:# mount -t proc none /proc



通過/proc目錄下的文件可以訪問或更改內(nèi)核參數(shù),可以通過/proc目錄查詢驅(qū)動(dòng)程序的信息。下面先讓我們看一下/proc目錄中的信息:

# ls /proc1 4725 5032 5100 5248 5292 crypto kcore partitions14 4794 5044 5110 5250 5293 devices kmsg pci2 4810 5075 5122 5252 5295 dma ksyms self3 4820 5079 5132 5254 5345 driver loadavg slabinfo4 4831 5080 5151 5256 6 execdomains locks stat4316 4910 5081 5160 5258 7 fb lvm swaps4317 4912 5082 5170 5262 70 filesystems mdstat sys4318 4924 5083 5180 5271 8 fs meminfo sysrq-trigger4319 4950 5084 5189 5287 9 ide misc sysvipc4620 4963 5085 5232 5288 apm interrupts modules tty4676 5 5086 5242 5289 bus iomem mounts uptime4680 5005 5087 5244 5290 cmdline ioports mtrr version4706 5018 5088 5246 5291 cpuinfo irq net



需要知道的是,這些文件都是實(shí)時(shí)產(chǎn)生的虛擬文件,訪問它們就是訪問內(nèi)存中真實(shí)的數(shù)據(jù)。這些數(shù)據(jù)是實(shí)時(shí)變化產(chǎn)生的,可以通過以下命令來查看文件的具體值:

# cat /proc/interruptsCPU00: 50662 XT-PIC timer1: 3 XT-PIC keyboard2: 0 XT-PIC cascade5: 618 XT-PIC ehci-hcd, eth18: 1 XT-PIC rtc9: 0 XT-PIC usb-uhci, usb-uhci11: 50 XT-PIC usb-uhci, eth012: 16 XT-PIC PS/2 Mouse14: 8009 XT-PIC ide015: 0 XT-PIC ide1NMI: 0ERR: 0



其它文件的含意見表1所示。

/proc/sys目錄下的文件一般可以直接更改,相當(dāng)于直接更改內(nèi)核的運(yùn)行參數(shù),例如:

# echo 1 > /proc/sys/net/ipv4/ip_forward



上面代碼可以將內(nèi)核中的數(shù)據(jù)包轉(zhuǎn)發(fā)功能打開。

另外,Linux系統(tǒng)中提供一些命令來查詢系統(tǒng)的狀態(tài),如free可以查看目前的內(nèi)存使用情況,ide_info可以查看ide設(shè)備的信息,例如:

#ide_info /dev/had



類似的命令還有scsi_info,可以查看SCSI設(shè)備的信息。這些命令一般也是查詢/proc目錄下的文件,并返回結(jié)果。
系統(tǒng)初始化過程驅(qū)動(dòng)程序的安裝

在Linux安裝過程中,系統(tǒng)上的硬件會(huì)被檢測(cè),基于檢測(cè)到的結(jié)果安裝程序會(huì)決定哪些模塊需要在引導(dǎo)時(shí)被載入。Red Hat的安裝程序?yàn)閍naconda,它提供了自動(dòng)檢測(cè)硬件,并且安裝的機(jī)制。

但是,如果計(jì)算機(jī)內(nèi)的某些硬件沒有默認(rèn)的驅(qū)動(dòng)程序,比如一塊SCSI卡,我們可以在啟動(dòng)后的boot提示符下,輸入“l(fā)inux dd”,在加載完內(nèi)核后,系統(tǒng)會(huì)自動(dòng)提示插入驅(qū)動(dòng)盤,這時(shí)就有機(jī)會(huì)把該硬件的Linux驅(qū)動(dòng)程序裝入。

如果在安裝系統(tǒng)時(shí),某種硬件總是因?yàn)橹袛鄾_突(ISA總線的設(shè)備較常見,比如一塊ISA網(wǎng)卡)沒法正常驅(qū)動(dòng),或者是缺少驅(qū)動(dòng)程序,那么可以在boot提示符下輸入“l(fā)inux noprobe”。在這種模式下,安裝程序不會(huì)自動(dòng)配置找到的硬件,可以自己來選擇現(xiàn)有驅(qū)動(dòng),配置驅(qū)動(dòng)程序的參數(shù),或者選擇用光盤或軟盤加載驅(qū)動(dòng)程序。

定制引導(dǎo)盤

系統(tǒng)啟動(dòng)時(shí)是如何加載驅(qū)動(dòng)的?下面讓我們來看一下Red Hat的安裝光盤是怎樣引導(dǎo)的。當(dāng)Linux安裝光盤啟動(dòng)時(shí),加載位于光盤上isolinux中的內(nèi)核文件vmlinuz,內(nèi)核運(yùn)行完畢后,又將initrd.img的虛擬文件系統(tǒng)加載到內(nèi)存中。這個(gè)文件為ext2文件系統(tǒng)的鏡像,經(jīng)過gzip壓縮,可以通過以下步驟查看該鏡像中的內(nèi)容:

# mount /mnt/cdrom# mkdir /mnt/imgdir# gunzip < /mnt/cdrom/isolinux/initrd.img > /ext2img# mount -t ext2 -o loop /ext2img /mnt/imgdir# cd /mnt/imgdir# ls -Fbin@dev/etc/linuxrc@lost+found/modules/proc/sbin/tmp/var/# cd modules# lsmodule-infomodules.cgzmodules.depmodules.pcimappcitable



其中modules.dep為模塊的注冊(cè)文件,同時(shí)有各種模塊的依存關(guān)系。modules.cgz為cpio的打包文件,實(shí)際的各種驅(qū)動(dòng)模塊就在該文件中。我們可以通過以下命令解包:

# cpio -idmv < modules.cgz



由此可以看到,解包出來的目錄2.4.21-4XXX。進(jìn)入該目錄下的i386目錄,就可以看到當(dāng)前啟動(dòng)盤中支持的所以驅(qū)動(dòng)程序:

# ls3c59x.o3w-xxxx.o8139cp.o8139too.o8390.oaacraid.oacenic.oaic79xx.o……



若希望在系統(tǒng)中加入需要的驅(qū)動(dòng)程序,可以相應(yīng)地修改這些文件,比如在modules.dep中加入該模塊的名字和依存關(guān)系,將編譯好的驅(qū)動(dòng)模塊文件加入modules.cgz中,這樣就可以制定自己的安裝光盤。

硬盤上的系統(tǒng)啟動(dòng)過程與上面類似,但是initrd的鏡像文件要更簡(jiǎn)單些,一般在initrd-2.4.XXX.img的虛擬文件系統(tǒng)中,只會(huì)在/lib目錄下包含ext3.o jbd.o lvm-mod.o等少數(shù)文件,用來驅(qū)動(dòng)硬盤上的ext3的文件系統(tǒng)。加載文件系統(tǒng)后,就可以使用/lib/modules/2.4.XXX/下的modules.dep文件及Kernel目錄中的各種驅(qū)動(dòng)文件。

自動(dòng)配置安裝

如果安裝完Linux系統(tǒng)后,又添加了新的硬件,那么系統(tǒng)必須載入正確的驅(qū)動(dòng)程序才可以使用它。在Red Hat Linux中,可以使用kudzu來配置硬件。這是PnP設(shè)備的檢測(cè)程序,當(dāng)系統(tǒng)使用新硬件引導(dǎo)后,運(yùn)行kudzu(默認(rèn)會(huì)自動(dòng)運(yùn)行),如果新硬件被支持,那么它就會(huì)被自動(dòng)檢測(cè)到。該程序還會(huì)為它配置驅(qū)動(dòng)模塊,把結(jié)果寫入到文件/etc/sysconfig/hwconf中,kudzu可以通過對(duì)比這個(gè)文件發(fā)現(xiàn)新安裝的硬件,并進(jìn)行配置;也可以通過編輯模塊配置文件/etc/modules.conf來手工指定加載模塊。

Kudzu服務(wù)默認(rèn)每次啟動(dòng)時(shí)都要運(yùn)行,如果需要縮短啟動(dòng)時(shí)間,使用下面命令可以停止系統(tǒng)啟動(dòng)時(shí)的kudzu服務(wù):

# chkconfig kudzu off



如果要安裝新的硬件,可以手動(dòng)運(yùn)行kudzu程序。

# kudzu



那么kudzu程序如何認(rèn)識(shí)硬件的呢?可以查看/usr/share/hwdata/目錄下的文件,根據(jù)這些文件中的PnP信息,kudzu可以識(shí)別各種硬件設(shè)備。

以上介紹了Linux下驅(qū)動(dòng)程序的大體結(jié)構(gòu)、主要的加載方式和相關(guān)配置文件,在安裝Linux時(shí)加載驅(qū)動(dòng)程序,并且根據(jù)需要定制自己的引導(dǎo)盤,在安裝完成后安裝新的、即插即用硬件。下一講開始,我們將學(xué)習(xí)具體硬件驅(qū)動(dòng)的安裝方法。

前一節(jié)Linux培訓(xùn)園地:Linux下設(shè)備完全驅(qū)動(dòng)之一,大家看過之后相信一定印象深刻。這一節(jié)首先講述IDE硬盤及光驅(qū)的設(shè)置、IDE刻錄機(jī)的使用,以及如何安裝SCSI硬盤驅(qū)動(dòng)。然后介紹以太網(wǎng)卡驅(qū)動(dòng)模塊的加載及網(wǎng)絡(luò)接口的啟功過程,如何調(diào)整網(wǎng)卡的參數(shù),Modem、ADSL和寬帶的驅(qū)動(dòng)安裝,以及PPP連接的設(shè)置等。

IDE硬盤及光驅(qū)

1.IDE設(shè)備的驅(qū)動(dòng)過程

操作系統(tǒng)首先是安裝在塊設(shè)備上,沒有對(duì)塊設(shè)備的支持系統(tǒng)就無法啟動(dòng),所以首先介紹常見塊設(shè)備的安裝。硬盤就是最常見的塊設(shè)備,普通PC上的硬盤通常是IDE接口的,而服務(wù)器上的硬盤通常是SCSI接口的。

一般內(nèi)核中內(nèi)置對(duì)通用IDE控制芯片的支持。下面看一下IDE硬盤在內(nèi)核中的驅(qū)動(dòng)過程,dmesg命令可以看到內(nèi)核在啟功和加載內(nèi)核模塊時(shí)的信息:

# dmesg | less



在Linux內(nèi)核啟動(dòng)過程中,可以發(fā)現(xiàn)內(nèi)核首先驅(qū)動(dòng)初始化CPU、內(nèi)存、系統(tǒng)時(shí)鐘部分,接著加載PCI總線的驅(qū)動(dòng),然后就加載了通用的IDE驅(qū)動(dòng)程序:

Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4



接著初始化IDE的控制器,IDE控制器集成在Intel的ICH4南橋芯片組中,IDE控制芯片驅(qū)動(dòng)加載后,進(jìn)行初始化傳輸模式:

ICH4: chipset revision 1ICH4: not 100% native mode: will probe irqs lateride0: BM-DMA at 0xbfa0-0xbfa7, BIOS settings: hda:DMA, hdb:pioide1: BM-DMA at 0xbfa8-0xbfaf, BIOS settings: hdc:DMA, hdd:pio



該驅(qū)動(dòng)程序會(huì)向核心中注冊(cè)主設(shè)備號(hào)為3的block型設(shè)備。可以看到,在IDE控制器初始化時(shí),占用的I/O資源及分配給它的中斷號(hào):

ide0 at 0x1f0-0x1f7,0x3f6 on irq 14ide1 at 0x170-0x177,0x376 on irq 15



接著使用IDE控制器查找連接在IDE接口上的設(shè)備,如果檢查到硬盤則加載IDE硬盤的驅(qū)動(dòng)程序,設(shè)置了該硬盤的基本參數(shù),設(shè)置傳輸方式為UDMA(100),也就是ATA100(100Mb/s的傳輸速度),并且根據(jù)這個(gè)驅(qū)動(dòng)程序檢測(cè)硬盤上的分區(qū):

hda: attached ide-disk driver.hda: host protected area => 1hda: 78140160 sectors (40008 MB) w/7898KiB Cache, CHS=4864/255/63, UDMA(100)ide-floppy driver 0.99.newidePartition check:hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 hda9 >

/dev/hda代表第一個(gè)IDE接口的主設(shè)備,它的設(shè)備號(hào)為block(3/0),而/dev/hda1是這塊硬盤的第一個(gè)分區(qū),設(shè)備編號(hào)是 block (3/1);/dev/hdb代表第一個(gè)IDE接口的從設(shè)備,設(shè)備編號(hào)為 block(3/64)。

由此我們可以看到,內(nèi)核默認(rèn)可以支持1~63個(gè)分區(qū),其中第一個(gè)邏輯分區(qū)的編號(hào)肯定為/dev/hda5。但是,在/dev目錄下查找有hda1~hda32,共32個(gè)分區(qū)文件,如果需要更多的分區(qū),就需要使用mknod命令來創(chuàng)建更多的設(shè)備文件。

/dev/hdc是第二個(gè)IDE接口的主設(shè)備;/dev/hdd是第二個(gè)IDE接口的從設(shè)備。

2.安裝、升級(jí)常見的IDE驅(qū)動(dòng)程序

通用的IDE控制器可以通過內(nèi)核這樣加載起來,如果遇到一些較新的芯片組,當(dāng)前的內(nèi)核無法完全發(fā)揮出新硬件的性能,這時(shí)就要向內(nèi)核中打補(bǔ)丁,例如,2.4.20-8的內(nèi)核就無法支持VIA VT8237芯片組中的IDE ATA133方式,需要向內(nèi)核中打補(bǔ)丁。

先到VIA的網(wǎng)站上下載相關(guān)補(bǔ)丁,網(wǎng)址為http://www.viaarena.com/?PageID=297#ATA,注意要選擇適合當(dāng)前自己內(nèi)核的驅(qū)動(dòng),接下來是升級(jí)內(nèi)核,給內(nèi)核打補(bǔ)丁。

# rpm -ivh kernel-source-<Kernel Version>.i386.rpm



安裝需要版本的源代碼包。把剛才鏈接中的補(bǔ)丁下載,將這個(gè)patch文件解開:

# tar xzvf VIA IDE ATA133 Patch 8237 ver0.8.gz



進(jìn)入解包出來的目錄,將需要的patch文件cp到 /usr/src目錄:

# cp <Linux OS>-patch-<Kernel Version> /usr/src



Kernel Version代表內(nèi)核的版本號(hào),Linux OS代表不同的Linux系統(tǒng)。

# cd /usr/src# patch -p0 < <Linux OS>-patch-<Kernel Version>



將patch打入內(nèi)核中,重新編譯內(nèi)核:

# cd /usr/src/linux-<Kernel Version>



編輯 Makefile文件,把 "EXTRAVERSION=" 改成 "EXTRAVERSION=-test",這是給新的內(nèi)核命名。

# cp /boot/config-XXX .config# make menuconfig ( config 或 xconfig也可以 )



確定 "ATA/IDE/MFM/RLL support/IDE,ATA and ATAPI Block devices"中的"VIA82CXXX chipset support"被選中。

開始編譯內(nèi)核:

# make dep# make clean# make bzImage# make modules# make modules_install# cp arch/i386/boot/bzImage (或 vmlinuz-test) /boot/vmlinuz-test# cp /boot/initrd-< Kernel Version >.img /boot/initrd-test.img



編輯 /boot/grub/grub.conf文件,在最后添加下面三行:

title linux-testkernel /boot/vmlinuz-test ro root=/dev/hda1initrd /boot/initrd-test.img



重新啟動(dòng)系統(tǒng),使用剛剛編譯的內(nèi)核就會(huì)發(fā)現(xiàn)啟動(dòng)信息中多出一行“l(fā)inux-test”。留意啟動(dòng)時(shí)的信息,就會(huì)發(fā)現(xiàn)有下面一行信息:

"VP_IDE: VIA vt8237 (rev 00) IDE UDMA133 Controller on pci00:0f.1"



如果正常啟動(dòng),各種服務(wù)也都沒有問題,那么以后就可以用這個(gè)新的內(nèi)核了。可以用# hdparm -i命令來調(diào)整硬盤的傳輸方式,檢查硬盤目前的傳輸模式。

/dev/hda:Model=IC25N040ATCS05-0, FwRev=CS4OA63A, SerialNo=CLP429F4HALVPAConfig={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4BuffType=DualPortCache, BuffSize=7898kB, MaxMultSect=16, MultSect=16CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78140160IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}PIO modes: pio0 pio1 pio2 pio3 pio4DMA modes: mdma0 mdma1 mdma2UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 //這里顯示所支持的硬盤傳輸模式AdvancedPM=yes: mode=0x80 (128) WriteCache=enabledDrive conforms to: ATA/ATAPI-5 T13 1321D revision 3:* signifies the current active mo



查看一下當(dāng)前硬盤的工作模式,如果不是ATA133,則可以靈活使用控制硬盤傳輸模式的命令:

# hdparm -d1 /dev/hda //enable DMA 模式# hdparm -d0 /dev/hda //disable DMA 模式# hdparm -X70 /dev/hda //將傳輸模式切換到UDMA 6 -ATA133模式



-X后數(shù)字16~18代表SDMA 0~2,32~34代表MDMA 0~2,64~70代表UDMA 0~6。

將最后一行加入到/etc/rc.d/rc.sysinit或/etc/rc.d/rc.local文件中,可以讓硬盤每次啟動(dòng)都工作在ATA133下。
3.安裝nforce芯片組的驅(qū)動(dòng)程序

AMD64平臺(tái)的nforce系列芯片組性能強(qiáng)勁,雖然可以用常規(guī)的方法加以驅(qū)動(dòng),但有可能無法發(fā)揮新設(shè)備的特性,或者該芯片組的網(wǎng)卡、聲卡無法使用。nVIDIA提供了更方便的RPM文件供使用,其中一些是源代碼tar文件,需要進(jìn)行編譯;有些是RPM包,直接進(jìn)行安裝就可以了。

nforce芯片組在Linux下驅(qū)動(dòng)的下載地址為http://www.nvidia.com/object/linux_nforce_1.0-0275.html,其中包含了內(nèi)核的補(bǔ)丁、芯片組中對(duì)網(wǎng)卡及聲卡的驅(qū)動(dòng)程序。下載經(jīng)過編譯的RPM包可以直接安裝:

# rpm -ivh NVIDIA_nforce.athlon.rpm



如果使用的不是SuSE或Red Hat Linux系統(tǒng),也可以下載帶有源代碼的.src.rpm包經(jīng)過編譯后再安裝:

# rpm -ivh NVIDIA_nforce.src.rpm//將驅(qū)動(dòng)程序的源程序文件安裝到系統(tǒng)中# cd /usr/src/redhat/SPECS# rpmbuild -bb NVIDIA_nforce.specs//編譯源驅(qū)動(dòng)程序,編譯成可直接使用的rpm文件# cd /usr/src/redhat/RPM/i386///根據(jù)具體包的不同,也可能是i686、noarch等# rpm -ivh NVIDIA_nforce.i386.rpm//程序自動(dòng)安裝包內(nèi)的驅(qū)動(dòng)程序,并利用RPM包中的腳本自動(dòng)配置



光驅(qū)的驅(qū)動(dòng)及刻錄機(jī)的使用

1.光驅(qū)的驅(qū)動(dòng)過程

編譯內(nèi)核時(shí),在ATA/IDE/MFM/RLL選單中都會(huì)有IDE/ATAPI CDROM support的選項(xiàng),通常所見到的內(nèi)核都將這個(gè)部分編譯在了內(nèi)核中,所以不需設(shè)置光驅(qū)就可以使用。下面看一下系統(tǒng)啟動(dòng)時(shí)光驅(qū)是如何驅(qū)動(dòng)的:

# dmesg |grep CDhdc: HL-DT-STCD-RW/DVD-ROM GCC-4240N, ATAPI CD/DVD-ROM driveUniform CD-ROM driver Revision: 3.12



一般的通用CD/DVD-ROM驅(qū)動(dòng)程序就可以將光驅(qū)驅(qū)動(dòng)起來,不需要特別的配置。如果遇到的是SCSI光驅(qū),則一般的內(nèi)核也可以驅(qū)動(dòng),因?yàn)樵诰幾g內(nèi)核時(shí),一般會(huì)將SCSI的內(nèi)容編譯出來。



如果沒有SCSI的光驅(qū)驅(qū)動(dòng),則可以自己手動(dòng)編譯。make menuconfig(或xconfig)時(shí),在SCSI support 選單中只要將SCSI support設(shè)置為“Y”或“M”(Y代表該部分編譯在內(nèi)核中,M表示該部分編譯為內(nèi)核模塊);SCSI CD-ROM support設(shè)置為“Y”或“M”;SCSI generic support設(shè)置為“Y”或“M”,這樣就可以驅(qū)動(dòng)SCSI接口的光驅(qū)了。
2.CD/DVD刻錄機(jī)的驅(qū)動(dòng)及使用

現(xiàn)在CD或DVD刻錄機(jī)越來越普及,那么在Linux下如何使用內(nèi)置的CD或DVD刻錄機(jī)呢?默認(rèn)的情況下,系統(tǒng)會(huì)將刻錄機(jī)視作只讀的驅(qū)動(dòng)器,只加載普通的CD/DVD-ROM驅(qū)動(dòng),光驅(qū)無法寫入。

因此,需要用ide-scsi 偽設(shè)備驅(qū)動(dòng)程序來驅(qū)動(dòng)刻錄機(jī),將普通的IDE接口的設(shè)備模擬成一個(gè)SCSI接口的設(shè)備,這時(shí)才能向其中刻錄。我們可以使用三種方式來實(shí)現(xiàn)將IDE光驅(qū)模擬為SCSI光驅(qū)。假設(shè)使用GRUB作為bootloader,刻錄機(jī)安裝在第二個(gè)IDE接口,是主設(shè)備,則它默認(rèn)應(yīng)該為/dev/hdc 。

(1)更改/boot/grub/grub.conf文件在kernel /boot/vmlinuz-2.XXX ro root=/dev/hda1之后,添hdc=ide-scsi。

(2)更改 /etc/modules.conf文件添加下面兩行:

ide-cd ignore=\"hdc\"ide-scsi



(3)直接編譯內(nèi)核

不編譯ATA/IDE/MFM/RLL選單中的IDE/ATAPI CDROM support部分,但是要編譯對(duì)SCSI光驅(qū)的支持。

上面三種方法都是不希望系統(tǒng)用自帶的普通CD/DVD-ROM驅(qū)動(dòng)程序去驅(qū)動(dòng)刻錄機(jī),希望將刻錄機(jī)模擬成一個(gè)SCSI設(shè)備,其中第一種方法最簡(jiǎn)單,成功后就可以通過以下命令來刻錄CD或DVD光盤。

# mkisofs -Jv -V examplecd -o example.iso /root/



將/root/目錄下的文件做成一個(gè)名叫example.iso的光盤鏡像文件,該文件的卷標(biāo)為xamplecd。

還可通過命令將該文件加載到/mnt/iso文件夾中,可以自由添加刪除鏡像中的文件,但要注意不要超過光盤的容量。

# mkdir /mnt/iso# mount -t iso9660 -o loop example.iso /mnt/iso



調(diào)整/mnt/iso文件的內(nèi)容:

# umount /mnt/iso



最后使用cdrecord命令來刻錄:

# cdrecord -scanbus



查看SCSI總線中刻錄機(jī)的配置信息:

Cdrecord 2.0 (i686-pc-linux-gnu) Copyright (C) 1995-2002 J?rg SchillingLinux sg driver version: 3.1.25Using libscg version 'schily-0.7'cdrecord: Warning: using inofficial libscg transport code version(schily - Red Hat-scsi-linux-sg.c-1.75-RH '@(#)scsi-linux-sg.c1.75 02/10/21 Copyright 1997 J. Schilling').scsibus0:0,0,0 0) 'HL-DT-ST' 'RW/DVD GCC-4240N' 'E112' Removable CD-ROM0,1,0 1) *0,2,0 2) *0,3,0 3) *0,4,0 4) *0,5,0 5) *0,6,0 6) *0,7,0 7) *



可以看到目前的光驅(qū)在SCSI總線的參數(shù),然后根據(jù)參數(shù)來輸入下面的命令刻錄光盤:

# cdrecord -v -eject speed=24 dev=0,0,0 example.iso



speed=24是以24倍速來刻錄光盤,dev=后加上剛才顯示的刻錄機(jī)的SCSI參數(shù)。

SCSI設(shè)備驅(qū)動(dòng)過程

下面以Adaptec SCSI RAID 3200S卡為例,介紹SCSI RAID卡的驅(qū)動(dòng)過程。這是常見的帶RAID功能的SCSI卡。在大部分編譯好的內(nèi)核中,都會(huì)編譯對(duì)SCSI設(shè)備的支持。但是需要知道,內(nèi)核中只是支持通用的SCSI總線,而具體的SCSI卡還需要加載相應(yīng)的驅(qū)動(dòng)程序。SCSI芯片驅(qū)動(dòng)的安裝比較特殊,下面分成兩種情況敘述。

1. Linux系統(tǒng)的啟動(dòng)文件就是在SCSI硬盤上

這種情況下,SCSI設(shè)備的驅(qū)動(dòng)程序不能像普通的驅(qū)動(dòng)程序來安裝。因?yàn)槿绻到y(tǒng)啟動(dòng)時(shí)沒有加載SCSI卡的驅(qū)動(dòng)程序,那么根本無法訪問其它的Linux系統(tǒng)文件,所以必須在內(nèi)核啟動(dòng)后立刻就加載該設(shè)備的驅(qū)動(dòng)程序。以下是在Red Hat系統(tǒng)中具體的安裝過程。

(1)從Adaptec網(wǎng)站http://www.adaptec.com/worldwide/support/driverdetail.jsp?sess=no&language=English+US&cat=/Product/ASR-3200S&filekey=dpt_i20-drv_2.5.0-rh9-i686.img 下載Adaptec SCSI RAID 3200S卡針對(duì)Red Hat 9.0的驅(qū)動(dòng)程序,大家可以看到這是一個(gè).img的鏡像文件。

(2)將該鏡像文件寫入軟盤中。Linux下可以用下面命令:

# dd if=dpt_i20-drv_2.5.0-rh9-i686.img of=/dev/fd0



或者

# cat dpt_i20-drv_2.5.0-rh9-i686.img > /dev/fd0



在Windows下利用Red Hat第一張安裝光盤中的/CDROM/dosutils/rawrite.exe程序。

(3)在啟動(dòng)Red Hat安裝過程時(shí),boot提示符出現(xiàn)時(shí)進(jìn)入安裝模式:

boot: linux dd



(4)按照向?qū)崾?#xff0c;將剛才制作的驅(qū)動(dòng)軟盤插入。

以后的安裝過程就沒有什么不同了。安裝向?qū)?shí)際上將軟盤上的驅(qū)動(dòng)程序放到了initrd的RAMDISK(內(nèi)存磁盤鏡像)文件中,每次內(nèi)核啟動(dòng)后,都最先加載這個(gè)內(nèi)存虛擬硬盤的鏡像,利用里面的SCSI驅(qū)動(dòng)程序來驅(qū)動(dòng)SCSI RAID卡和卡上連接的硬盤。
2. Linux系統(tǒng)已經(jīng)安裝到一個(gè)IDE的硬盤上

這種情況跟其它的驅(qū)動(dòng)程序沒有太大的區(qū)別,用modprobe或insmod將SCSI卡的驅(qū)動(dòng)模塊加載到內(nèi)存中。(1)查看系統(tǒng)是否能訪問PCI設(shè)備:

# lspci -v | grep -i i2o



(2)從Adaptec網(wǎng)站http://www.adaptec.com/worldwide/support/driverdetail.jsp?sess=no&language=English+US&cat=/Product/ASR-3200S&filekey=dpt_i20-drv_2.5.0-rh9.rpm下載驅(qū)動(dòng)程序,檢驗(yàn)是否可以加載模塊。

# rpm -ivh dpt_i20-drv_2.5.0-rh9.rpm# modprobe dpt_i2o



(3)察看是否可以訪問/dev/sda設(shè)備,或者已經(jīng)創(chuàng)建好/dev/md0設(shè)備。

加載以太網(wǎng)卡驅(qū)動(dòng)模塊及參數(shù)調(diào)整

1.以太網(wǎng)卡的驅(qū)動(dòng)過程

處理網(wǎng)絡(luò)方面任務(wù)是Linux的長(zhǎng)項(xiàng),僅僅一兩兆的Linux內(nèi)核就可以對(duì)TCP/IP有很好的支持。下面首先了解一下最常見的網(wǎng)絡(luò)設(shè)備—以太網(wǎng)卡的驅(qū)動(dòng)過程。

在內(nèi)核加載后,雖然已經(jīng)有了對(duì)TCP/IP協(xié)議的支持,但是具體的網(wǎng)絡(luò)接口設(shè)備的驅(qū)動(dòng)并沒有加載。在內(nèi)核啟動(dòng)后,將硬盤上的根分區(qū)mount到系統(tǒng)中,系統(tǒng)就會(huì)查找模塊配置文件/etc/modules.conf,并按照該文件記錄的內(nèi)容來加載模塊:

# cat /etc/modules.confalias eth0 8139tooalias sound-slot-0 i810_audiopost-install sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -L >/dev/null 2>&1 || :pre-remove sound-slot-0 /bin/aumix-minimal -f /etc/.aumixrc -S >/dev/null 2>&1 || :alias usb-controller usb-uhcialias usb-controller1 ehci-hcd



上面代碼表示加載8139too模塊,我的網(wǎng)卡是8139的100Mb以太網(wǎng)芯片,并將該模塊取別名叫做eth0。這表示第一個(gè)以太網(wǎng)的網(wǎng)絡(luò)接口,以后只要訪問eth0,就是訪問這塊網(wǎng)卡。然后系統(tǒng)會(huì)在/lib/modules/2.4XXX/的modules.deps中查找該模塊的具體位置:

# grep 8139too /lib/modules/2.4.21-4.EL/modules.dep/lib/modules/2.XXX/kernel/drivers/net/8139too.o:/lib/modules/2.4.21-4.EL/kernel/drivers/net/mii.o/lib/modules/2.4.21-4.EL/kernel/lib/crc32.o



以上內(nèi)容在同一行中,表示8139too模塊依存于mii模塊和crc32模塊,8139too模塊的具體位置在/lib/modules/2.XXX/kernel/drivers/net/8139too.o,所有系統(tǒng)內(nèi)置的網(wǎng)絡(luò)驅(qū)動(dòng)程序都在/lib/modules/2.XXX/kernel/drivers/net目錄下。

驅(qū)動(dòng)模塊加載完成之后,可以直接通過命令ifconfig來設(shè)置網(wǎng)卡的IP地址,:

# ifconfig eth0 192.168.1.1



這樣設(shè)置的IP地址重啟后就會(huì)失效,使用netconfig命令可以永久更改IP地址:

# netconfig# service network restart 或者# /etc/rc.d/init.d/network restart`



那么系統(tǒng)每次啟動(dòng)時(shí)是怎樣配置網(wǎng)絡(luò)的呢?在Linux系統(tǒng)中,網(wǎng)絡(luò)作為一項(xiàng)服務(wù)被加載,配置文件是/etc/rc.d/init.d/network,在該文件中可以看到系統(tǒng)啟動(dòng)網(wǎng)絡(luò)接口、綁定IP地址、設(shè)定靜態(tài)路由的過程,這個(gè)文件通過調(diào)用/etc/sysconfig/network-scripts/ifcfg-*的幾個(gè)文件來配置各個(gè)網(wǎng)卡的IP地址。比如有eth0,則會(huì)生成一個(gè)文件ifcfg-eth0,系統(tǒng)每次啟動(dòng)時(shí)自動(dòng)綁定eth0的IP地址:

# cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=noneIPADDR=192.168.0.1NETMASK=255.255.255.0TYPE=Ethernet



以上就為eth0設(shè)備綁定了192.168.0.1的IP地址。

# cat /etc/sysconfig/network-scripts/ifcfg-eth0:1DEVICE=eth0:1ONBOOT=yesBOOTPROTO=noneIPADDR=192.168.1.1NETMASK=255.255.255.0TYPE=Ethernet



以上的ifcfg-eth0:1文件為eth0設(shè)定了第二個(gè)IP地址192.168.1.1,這個(gè)文件是我添加的,注意DEVICE=eth0:1 跟上一個(gè)文件是不一樣的。
2.安裝3COM 3CR990網(wǎng)卡驅(qū)動(dòng)程序

我們可以看到,系統(tǒng)內(nèi)置的網(wǎng)卡驅(qū)動(dòng)程序在/lib/modules/2.4.XXX/kernel/drivers/net目錄下,如果網(wǎng)卡不在默認(rèn)支持的硬件中,可以用以下方法來安裝網(wǎng)卡驅(qū)動(dòng)。

比如,我們有一塊3COM 3CR990網(wǎng)卡,可以到3COM網(wǎng)站上下載針對(duì)2.4內(nèi)核的驅(qū)動(dòng)http://support.3com.com/infodeli/tools/nic/linux/3c990-1.0.0a.tar.gz。然后解壓縮下載的文檔到解開的目錄中:

#t tar xvfz 3c990-1.0.0a.tar.gz# make



此時(shí)當(dāng)前文件下將會(huì)生成3c990.o的驅(qū)動(dòng)模塊。

# modprobe ./3c990.o



看一下該模塊是否可以被正常加載,如果沒有問題,就更改/etc/modules.conf文件和/lib/modules/2.XXX/modules.dep文件,讓模塊每次啟動(dòng)時(shí)加載:

# echo “alias eth0 3c990” >> /etc/modules.conf# cp ./3c990.o /lib/modules/2.XXX/kernel/drivers/net# echo "/lib/modules/2.XXX/kernel/drivers/net/3c990.o:" >> /lib/modules/2.XXX/modules.deps



3.調(diào)整以太網(wǎng)卡的參數(shù)

有時(shí)在加載完網(wǎng)卡的驅(qū)動(dòng)后,如果網(wǎng)卡的狀態(tài)不正確,比如驅(qū)動(dòng)起一塊網(wǎng)卡,但是它在100Mb的速度上工作很不穩(wěn)定,就可以使用mii-tool命令調(diào)整以太網(wǎng)卡的屬性。目前多數(shù)以太網(wǎng)卡為10BaseT與100BaseTx的10Mb/100Mb自適應(yīng)網(wǎng)卡,也有較新的支持1000BaseT的千兆以太網(wǎng)卡。

下面介紹mii-tool命令的一些用法:

(1)顯示當(dāng)前網(wǎng)卡所使用的以太網(wǎng)類型,目前這塊網(wǎng)卡使用的是100baseTx的全雙工工作方式。

# mii-tooleth0: negotiated 100baseTx-FD flow-control, link ok



(2)顯示當(dāng)前的網(wǎng)卡支持的所有以太網(wǎng)類型。

# mii-tool -veth0: negotiated 100baseTx-FD flow-control, link okproduct info: vendor 00:08:18, model 22 rev 2basic mode: autonegotiation enabledbasic status: autonegotiation complete, link okcapabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HDadvertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-controllink partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control



(3)強(qiáng)制eth0使用10baseT-FD的方式(10Mb全雙工的方式)工作。

# mii-tool -F 10baseT-FD eth0



(4)解除eth0的強(qiáng)制狀態(tài),讓eth0自動(dòng)偵測(cè)使用什么方式通信。

# mii-tool -Rresetting the transceiver...


Modem和ADSL驅(qū)動(dòng)安裝及PPP連接設(shè)置

1.外置Modem的驅(qū)動(dòng)程序安裝

Modem分為外置和內(nèi)置兩種。比較而言,外置的Modem配置較容易,使用方便。Modem一般接在串口上,在Linux中串口對(duì)應(yīng)的設(shè)備文件為/dev/ttyS*,如果是COM1口,則對(duì)應(yīng)/dev/ttyS0。如果不知道連接的是哪一個(gè)COM口,可以先給Modem加電,用以下命令測(cè)試:

# echo AT > /dev/ttyS0



如果Modem的TR燈亮,則表明該Modem接到COM1口上;如果不亮,再試一下/dev/ttyS1文件。知道了Modem連接的是哪一個(gè)串口后,就可以撥號(hào)了。撥號(hào)的過程實(shí)際上是通過Modem建立PPP(點(diǎn)對(duì)點(diǎn)通信協(xié)議)的連接。

在命令行下,可以使用pppd進(jìn)行撥號(hào),常見的Linux系統(tǒng)中會(huì)安裝這個(gè)撥號(hào)程序,大家可以看一下/etc/ppp目錄下是否有相關(guān)的腳本文件,如果沒有可以下載并安裝ppp包ftp://cs.anu.edu.au/pub/software/ppp。將包安裝后,可以查找ppp-on和ppp-on-dialer文件,把文件復(fù)制到/etc/ppp文件夾下,修改ppp-on文件如下幾個(gè)地方:

TELEPHONE=270 //ISP提供的上網(wǎng)電話號(hào)碼ACCOUNT=user //ISP提供的賬號(hào)名稱PASSWORD=123 //登錄密碼LOCAL_IP=0.0.0.0 //PPP連接的IP地址,0.0.0.0表示由ISP動(dòng)態(tài)分配REMOTE_IP=0.0.0.0 //遠(yuǎn)端IP地址,一般為0.0.0.0NETMASK=255.255.255.0export TELEPHONE ACCOUNT PASSWORD \DIALER_SCRIPT=/etc/ppp/ppp-on-dialer \ //查找另一個(gè)必須的配置腳本exec /usr/sbin/pppd lock modem crtscts /dev/ttyS0 115200 \ //設(shè)置COM口及速度asyncmap 0 kdebug 4 \$LOCAL_IP:$REMOTE_IP noipdefault netmask $NETMASK defaultroute \connect $DIALER_SCRIPT&



給這個(gè)文件加上執(zhí)行權(quán)限:

# chmod 700 ppp-on# ./ppp-on



這樣就可以撥號(hào)上網(wǎng)了。這種方法可以適用于多數(shù)的Linux系統(tǒng),如果是Red Hat Linux,可以使用redhat-config-network命令輕松地在文本界面上配置撥號(hào)連接,如圖1。

?

圖1 文本界面下的redhat-config-network





如果啟動(dòng)了X-Window,GNOME與KDE都自帶圖形界面的撥號(hào)程序。

2.內(nèi)置Modem驅(qū)動(dòng)程序的安裝

內(nèi)置Modem比起外置的Modem配置要麻煩一些,下面在Dell D600筆記本安裝內(nèi)置Modem的驅(qū)動(dòng)程序。到下面網(wǎng)址下載驅(qū)動(dòng)http://www.linuxant.com /drivers/hsf/full/downloads.php,選定適合本系統(tǒng)內(nèi)核版本的驅(qū)動(dòng)程序,下載后是一個(gè)RPM包。

#rpm-ivhhsfmodem-6.03.00lnxt04061800full _k2.4.21_4.EL-1rh.i686.rpm... ...Config for modem unit 0: /dev/ttySHSF0Device instance: 0-PCI-8086:24c6-14f1:5422HW revision : CXT22HW profile name: hsfmc97ichRegistration ID: 115C-247C-BFC0License owner : unknownLicense key : FREELicense status : FREE (max 14.4kbps data only)Current region : CHINA (T.35 code: 0026)The /dev/modem alias (symlink) points to /dev/ttySHSF0……



由上可以看到,安裝程序自動(dòng)建立了一個(gè)設(shè)備文件/dev/ttySHSF0,并且為它創(chuàng)建了名叫/dev/modem的軟鏈接文件,這個(gè)文件與其它的ttyS文件的類型是不同的:

# ls /dev/ttyS0 -lcrw-rw---- 1 root uucp 4, 64 Sep 15 2003 /dev/ttyS# ls /dev/ttySHSF0 -lcrw-rw-rw- 1 root root 240, 64 Jun 29 02:36 /dev/ttySHSF0



由上可以看到,/dev/ttySHSF0文件不是標(biāo)準(zhǔn)的COM口,而是該驅(qū)動(dòng)程序自己注冊(cè)的240類型的驅(qū)動(dòng)程序。

實(shí)際上,驅(qū)動(dòng)內(nèi)置Modem的過程是先加載驅(qū)動(dòng)程序,模擬一個(gè)ttyS的串口設(shè)備文件,然后像給普通外置Modem建立PPP鏈接那樣,為內(nèi)置的Modem建立撥號(hào)連接,不過這時(shí)要選定/dev/modem作為設(shè)備文件。

3.ADSL及寬帶連接驅(qū)動(dòng)

ADSL設(shè)備通常是通過以太網(wǎng)卡來?yè)芴?hào),建立PPP鏈接,這時(shí)的PPP協(xié)議叫做PPPoE,就是PPP over Ethernet(在以太網(wǎng)上的點(diǎn)對(duì)點(diǎn)通信協(xié)議),一般不需要任何ADSL Modem的驅(qū)動(dòng),只需直接建立PPPoE連接。

在命令行下,下載ADSL撥號(hào)程序rp-pppoe,可以通過http://www.linuxsir.org/postnuke/modules.php?op=modload&name=Downloads&file=index&req=getit&lid=242下載, 或者直接下載RPM包http://www.neweasier.com/software.html?class=4 。

配置非常簡(jiǎn)單,下載包解壓縮后直接運(yùn)行下面代碼:

# ./go



則出現(xiàn)PPPoE配置向?qū)?#xff0c;會(huì)提示輸入用戶名和密碼,然后使用以下命令建立連接:

# adsl-start



或者

# ifup ppp0



系統(tǒng)中會(huì)在配置完后出現(xiàn)一個(gè)SysV的服務(wù):

# chkconfig --list adsladsl 0:off 1:off 2:off 3:off 4:off 5:off 6:off# chkconfig adsl on



這樣以后每次啟動(dòng)就會(huì)啟用ADSL撥號(hào)。

如果不用rp-pppoe的向?qū)?#xff0c;也可以在X-Window中直接使用下面命令(如圖2):

#neat

圖2 X-Window中運(yùn)行網(wǎng)絡(luò)配置工具



或者

#redhat-config-network



上面兩個(gè)命令是Red Hat Linux中的命令,可以在圖形界面下建立PPPoE的連接,其它版本的Linux也應(yīng)該有自己的ADSL撥號(hào)程序。

如圖3所示中,單擊上面的“New”建立新連接,如VPN、eth、ISDN、Modem等,則出現(xiàn)圖4所示頁(yè)面。

圖3 單擊建立新連接



圖4里的xDSL并不是只有ADSL等DSL的連接,一般的PPPoE連接都可以使用,比如即使是建立類似網(wǎng)通的寬帶LAN接入形式也應(yīng)該選擇這一項(xiàng)。單擊“Forward”進(jìn)行下一步。

圖4 選擇xDSL連接,建立PPPoE連接



輸入ADSL或LAN寬帶接入的連接信息,如圖5所示。然后單擊“Forward”。

建立好了鏈接后,在/etc/sysconfig/network-scripts/ 目錄中會(huì)出現(xiàn)ifcfg-ppp0的文件,可以通過以下命令讓系統(tǒng)通過ADSL撥號(hào)上網(wǎng),建立寬帶連接;也可以用剛才的向?qū)芴?hào)上網(wǎng),如圖6。

# ifup ppp0



有些地方提供LAN寬帶接入方式也需要進(jìn)行撥號(hào),如北京網(wǎng)通LAN接入寬帶,它實(shí)際上使用跟ADSL一樣的PPPoE協(xié)議,建立連接時(shí)與ADSL的撥號(hào)方式一樣,也可以用rp-pppoe或redhat-config-network來建立撥號(hào)連接,運(yùn)行向?qū)r(shí)沒有區(qū)別。

圖5 輸入ADSL或LAN寬帶接入的連接信息

圖6 建立PPPoE連接先選中PPP0再單擊上面的Activate按鈕



4.常見故障處理

如果在配置網(wǎng)絡(luò)時(shí)出現(xiàn)問題,可遵循以下步驟檢查:

(1)用ifconfig看一下網(wǎng)絡(luò)接口是否啟動(dòng),IP地址是否綁定,如果網(wǎng)絡(luò)接口沒有啟動(dòng)。例如,PPP0沒有啟動(dòng),可使用ifup ppp0命令。如果IP地址沒有綁定,使用命令ifconfig eth0 192.168.1.1設(shè)置地址;也可以使用命令netconfig設(shè)置IP地址、網(wǎng)關(guān)及DNS服務(wù)器的地址。然后用service network restart重啟網(wǎng)絡(luò)。

(2)如果網(wǎng)絡(luò)接口及IP沒有問題,但是不能上網(wǎng),可使用ping 211.XXX的一個(gè)外網(wǎng)地址,如果能通,則應(yīng)該是DNS服務(wù)器的問題,更改/etc/resolv.conf文件中的nameserver的地址,換一個(gè)能用的DNS服務(wù)器的地址。

(3)如果都沒有問題就是ping不通外網(wǎng)的IP,可使用命令route -n看一下默認(rèn)網(wǎng)關(guān)是否正確,如果不正確使用route del/add來設(shè)置默認(rèn)網(wǎng)關(guān),使用netconfig可以永久更改默認(rèn)網(wǎng)關(guān)。

從上面的講解中可以看到,我們遇到的情況可能是千差萬別的,安裝的方式也是多種多樣的。但是,不論哪一種設(shè)備應(yīng)該首先理解這種設(shè)備的驅(qū)動(dòng)方式,然后再來了解具體的驅(qū)動(dòng)程序。

圖形化的界面能讓我們方便地享用Linux的強(qiáng)大功能,而且現(xiàn)在Linux的圖形化界面已經(jīng)越來越完善。Linux中經(jīng)常使用的圖形顯示系統(tǒng)是X-Window,但是由于其與常見的MS Windows系統(tǒng)有很大的差異,所以在使用時(shí)常會(huì)遇到一些問題,比如無法驅(qū)動(dòng)顯卡、顯示器參數(shù)錯(cuò)誤、花屏和圖形界面無法啟動(dòng)等。

因此,本文將在簡(jiǎn)介X-Window的基礎(chǔ)上,介紹如何安裝常見顯卡和聲卡的驅(qū)動(dòng)程序、相關(guān)的配置文件,以及參數(shù)調(diào)整等內(nèi)容。

X-Window概述

X-Window是一套顯示系統(tǒng),包括Server端和Client端,他們之間使用X協(xié)議互相通信。X誕生于1984年,在較短的時(shí)間內(nèi)它就發(fā)布到了11個(gè)版本—X11。X11經(jīng)過多年的發(fā)展,現(xiàn)在已經(jīng)發(fā)布到X11R6。

X Client將希望顯示的圖形發(fā)送到X Server,X Server將圖形顯示在顯示器上,同時(shí)為X Client提供鼠標(biāo)、鍵盤的輸入服務(wù)。因?yàn)镃/S結(jié)構(gòu),可以將X的Server和Client分別運(yùn)行在兩臺(tái)計(jì)算機(jī)上,甚至可以安裝一些軟件,讓W(xué)indows作為X Server,讓Linux作為Client,將KDE或GNOME等桌面環(huán)境顯示到Windows主機(jī)上來。

圖1所示讓W(xué)indows作為X Server



使用Xmanager 1.3.9,在Windows XP上運(yùn)行X Server,然后運(yùn)行一臺(tái)Linux主機(jī)下的startkde,將KDE桌面環(huán)境顯示在Windows XP下。

使用startx命令可以啟動(dòng)X-Window系統(tǒng)。實(shí)際上,是在一臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行Server和Client,在運(yùn)行startx之后,首先啟動(dòng)的是XFree86,它是Linux平臺(tái)上最常用的X Server端;然后,又運(yùn)行X的Client程序,如startkde(KDE的啟動(dòng)腳本)或gnome-session(GNOME的啟動(dòng)腳本)。

它們利用X協(xié)議連接本機(jī)的X Server,將圖形顯示出來。

Linux上經(jīng)常使用的X

Server程序就是XFree86,它的任務(wù)是驅(qū)動(dòng)顯示卡、顯示器、鼠標(biāo)、鍵盤等設(shè)備,為X Client提供顯示、輸入服務(wù)等。

XFree86的主要文件目錄如下:

XFree86文件所在的主要目錄為/usr/X11R6;

XFree86的可執(zhí)行程序文件目錄為/usr/X11R6/bin;

XFree86自帶的驅(qū)動(dòng)程序所在目錄為/usr/X11R6/lib/modules/drivers;

X的配置文件及啟動(dòng)腳本所在目錄為/etc/X11;

XFree86的啟動(dòng)配置文件目錄為/etc/X11/XF86Config或XF86Config-4,如果這兩個(gè)文件都存在,XF86Config-4文件優(yōu)先。

XFree86自帶了一些設(shè)備的驅(qū)動(dòng),具體位置在/usr/X11R6/lib/modules/drivers,如果機(jī)器顯示卡太新,無法使用X-Window,比如使用了Intel的855GM芯片組中集成的顯卡無法啟動(dòng)X,則可以考慮升級(jí)XFree86。

當(dāng)前XFree86成熟的版本是4.3,最新的版本4.4正在完善之中。從以下的鏈接中可獲得4.3版的XFree86所支持的所有顯卡列表http://xfree86.linuxforum.net/4.3.0/RELNOTES2.html#3。

XFree86官方版本下載網(wǎng)站是http://www.xfree86.org/downloads.html ,中國(guó)的鏡像網(wǎng)站是http://xfree86.linuxforum.net/downloads.html。

也可以從中科紅旗網(wǎng)站http://www.redflag-linux.com/source/download/XFree86_driver4.3.tgz下載。

下載后安裝tgz包:

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


安裝Intel i865G芯片組顯卡驅(qū)動(dòng)

Intel i865G是一種比較新的顯卡芯片組,它內(nèi)置了顯示模塊,但是安裝較早的Linux版本X-Window有可能無法啟動(dòng)。處理這個(gè)問題的方法是,一種是直接升級(jí)到XFree86 4.3;另一種是通過Intel官方的網(wǎng)站http://downloadfinder. intel.com/scripts-df/support_ intel.asp?iid=HPAGE+header_support_download&下載驅(qū)動(dòng)程序。

在該鏈接的下載頁(yè)面可以選擇下載RPM包,也可以選擇下載tar.gz的壓縮文檔。盡管這兩種的安裝方式略有不同,但是經(jīng)過以下三步基本上可以讓顯卡在X-Window中正常使用。

1.安裝驅(qū)動(dòng)程序

(1)選擇下載RPM包:

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



(2)選擇下載的是tar.gz壓縮包要執(zhí)行下面代碼:

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



這時(shí)程序?qū)⒆詣?dòng)安裝,安裝程序?qū)⒏?usr/X11R6/modules/drivers/i810_drv.o的驅(qū)動(dòng)程序,使其支持新的i865G芯片組中的顯卡。



圖2 使用redhat-config-xfree86



2.選擇驅(qū)動(dòng)程序



有三種方法可以選擇驅(qū)動(dòng)程序:

(1)如果是Red Hat系統(tǒng)則可以運(yùn)行下面代碼:

# redhat-config-xfree86


圖2顯示為使用redhat-config-xfree86。這個(gè)命令可以自動(dòng)偵測(cè)顯卡、配置分辨率和色深,以及選擇Advanced頁(yè)面,然后單擊Video Card的Configure按鈕,選擇正確的顯卡。但是,如果是Red Hat Linux 8.0之前版本,則沒有這個(gè)命令,應(yīng)該運(yùn)行下面代碼:

# Xconfigurator



這樣程序會(huì)一步步提示選擇正確的驅(qū)動(dòng)程序。

這兩種方法都會(huì)將結(jié)果寫入/etc/X11/XF86Config配置文件。

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

直接更改XFree86的配置文件這種方法在Linux系統(tǒng)中比較通用,運(yùn)行下面命令:

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



在其中找到下面代碼,將Driver后面改為i810,表示使用i810_drv.o驅(qū)動(dòng)程序:

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.9VertRefresh 50.0 - 70.0Option "dpms"EndSection



上面這個(gè)部分是設(shè)置顯示器的類型,不知道自己的顯示器叫什么名字沒關(guān)系,但需要將顯示器的垂直刷新率和水平刷新率正確設(shè)置,這兩個(gè)參數(shù)可以查看顯示器的說明書。以上是15英寸顯示器最常用的頻率,如果這個(gè)參數(shù)設(shè)置錯(cuò)誤,顯示器就會(huì)花屏或黑屏。

Section "Screen"Identifier "Screen0"Device "Videocard0"Monitor "Monitor0"DefaultDepth 16SubSection "Display"Depth 16Modes "1024x768" "800x600" "640x480" //默認(rèn)會(huì)使用最高的分辨率EndSubSectionEndSection
這里是設(shè)置顯示模式的地方,包括屏幕的分辨率和色深,默認(rèn)使用最高的分辨率。如果想使用較低的分辨率,那么將高分辨率刪除就可以了,在這個(gè)配置文件中顯示器會(huì)使用“1024×768”分辨率,色深是16位色。有關(guān)XF86Config文件的詳解可以參看它的man page:

# man XF86Config


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

運(yùn)行下面命令:

# XFree86 -configure


XFree86將自動(dòng)偵測(cè)顯卡及顯示器,在用戶的主目錄下生成一個(gè)名叫XF86Config.new的文件。可以用以下命令測(cè)試這個(gè)文件運(yùn)行是否正常:

# XFree86 -xf86config ~/XF86Config.new


這個(gè)代碼是指定X Server使用 ~/XF86Config.new作為配置文件。

如果有白色X型的光標(biāo)顯示,就可以按“Ctrl+Alt+Backspace”結(jié)束X。然后運(yùn)行下面的命令,用新的配置文件來替換系統(tǒng)配置文件。

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


3.啟動(dòng)X-Window

運(yùn)行startx,啟動(dòng)X-Window。這種方式依賴于控制臺(tái)(tty),將X-Window作為當(dāng)前控制臺(tái)的Shell子進(jìn)程來運(yùn)行。

另一種方法是運(yùn)行桌面管理程序gdm(GNOME桌面管理程序)、kdm(KDE的桌面管理程序)或xdm(XFree86的桌面管理程序)。這種方式不依賴于當(dāng)前的Shell,即使當(dāng)前Shell關(guān)閉,X-Window一樣會(huì)繼續(xù)運(yùn)行。

以上三步是Linux下安裝X-Window顯卡驅(qū)動(dòng)程序的通常步驟,絕大多數(shù)顯卡都可以經(jīng)過以上的步驟正常使用,所不同的是下載地址和具體的驅(qū)動(dòng)程序的生成方式可能不一樣。 比如,筆記本電腦上常用的Intel 815集成顯卡的安裝,我們同樣可從Intel網(wǎng)站上下載815顯卡部分的RPM包,網(wǎng)址為http://downloadfinder.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


然后重復(fù)以上的第二至第三步:

# redhat-config-xfree86 //選擇正確的驅(qū)動(dòng)程序# startx //啟動(dòng)X-Window


安裝其它顯卡的驅(qū)動(dòng)

1. 安裝GeForce FX 6800顯卡驅(qū)動(dòng)

如果購(gòu)買了GeForce FX 6800顯卡(包含其它nVIDIA顯卡),希望玩玩剛剛發(fā)布的DOOM3,結(jié)果卻發(fā)現(xiàn)X-Window無法啟動(dòng),這時(shí)可以去nVIDIA網(wǎng)站http://www.nvidia.com/object/linux.html下載最新的顯卡驅(qū)動(dòng)。

nVIDIA的Linux驅(qū)動(dòng)程序做得相當(dāng)精細(xì),下載后得到文件NVIDIA-Linux-x86-1.0-6106-pkg1.run,運(yùn)行它就可以看到一個(gè)tui(文本用戶界面):

# chmod 700 NVIDIA-Linux-x86-1.0-6106-pkg1.run //設(shè)置執(zhí)行權(quán)限# ./ NVIDIA-Linux-x86-1.0-6106-pkg1.run. //運(yùn)行安裝程序


程序?qū)?huì)一步步提示安裝nVIDIA的驅(qū)動(dòng)。該驅(qū)動(dòng)包含兩部分:一部分是內(nèi)核驅(qū)動(dòng),用于命令行界面的驅(qū)動(dòng),在安裝這部分時(shí),如果不是它支持的幾種內(nèi)核版本需要編譯內(nèi)核;另一部分是針對(duì)XFree86的驅(qū)動(dòng)。

運(yùn)行中常常出現(xiàn)的錯(cuò)誤是在編譯內(nèi)核時(shí)找不到內(nèi)核的源文件,用以下方法可以解決這個(gè)問題。先下載安裝Kernel的源文件:

# rpm -ivh kernel-sourceXXX.rpm //在Red Hat安裝光盤上或者# tar zxvf linux-2.XXX.tar.gz //可以從網(wǎng)上下載,比如kernel.org


指定源文件位置:

# ./ NVIDIA-Linux-x86-1.0-6106-pkg1.run. --kernel-source-path=<kernel 源文件目錄的位置>

安裝驅(qū)動(dòng)程序后,如果有問題可以參考剛才安裝Inter i865顯示驅(qū)動(dòng)的方法,來調(diào)整顯卡的驅(qū)動(dòng)和參數(shù),運(yùn)行 redhat-config-xfree86、XFree86 -configure或直接更改/etc/X11下的XF86Config文件。另外,如果希望直接得到nVIDIA的驅(qū)動(dòng)程序,不想自動(dòng)安裝,可以運(yùn)行以下命令將包中的文件解開。

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


在./NVIDIA-Linux-x86-1.0-6106-pkg1/usr/share/doc目錄下,有一個(gè)XF86Config.example的文件,如果遇到XF86Config文件配置有問題,可以直接查看該文件中的顯卡驅(qū)動(dòng)部分內(nèi)容。

2.安裝ATI 9800顯卡驅(qū)動(dòng)

從下面地址http://www2.ati.com/drivers/linux/fglrx-4.3.0-3.11.1.i386.rpm可以下載ATI 9800顯卡驅(qū)動(dòng)fglrx-4.3.0-3.11.1.i386.rpm文件,然后執(zhí)行:

# rpm -Uvh --force fglrx-4.3.0-3.11.1.i386.rpm //強(qiáng)制升級(jí)/安裝驅(qū)動(dòng)程序包


注意,要看看是否有錯(cuò)誤發(fā)生,如果有請(qǐng)仔細(xì)查看出錯(cuò)信息。

# fglrxconfig //使用ATI的配置工具配置驅(qū)動(dòng)程序


該程序會(huì)提問一些問題,當(dāng)問到是否創(chuàng)建一個(gè)XF86Config-4文件時(shí),要回答“y”,這樣就可以生成新的配置文件。

# startx //重新啟動(dòng)X# fglrxinfo //可以查看驅(qū)動(dòng)程序是否安裝成功


3.常見顯卡驅(qū)動(dòng)的下載地址

◆nVIDIA顯卡驅(qū)動(dòng)程序地址http://www.nvidia.com/object/linux.html。

◆ATI顯卡驅(qū)動(dòng)程序地址http://www.ati.com/support/driver.html(ATI網(wǎng)站訪問速度較慢,可以多試幾次)。

◆VIA芯片集成顯卡驅(qū)動(dòng)程序http://www.viaarena.com/?PageID=296。

◆SIS顯卡驅(qū)動(dòng)程序地址http://www.mypcera.com/qu/2/soft1/xsis.rpm。

◆Intel芯片組顯卡驅(qū)動(dòng)程序地址http://downloadfinder.intel.com/scripts-df/support_intel.asp?iid=HPAGE+ header_support_download&。

◆Intel筆記本迅馳顯示驅(qū)動(dòng)程序地址http://downloadfinder.intel.com/scripts-df/filter_results.asp?strOSs=39&strTypes=DRV%2CARC&ProductID= 922&OSFullName= Linux*&submit=Go%21。
ATI系列筆記本驅(qū)動(dòng)程序要升級(jí)XFree86。

如果實(shí)在找不到顯卡驅(qū)動(dòng)程序,可以試著按照上面的介紹升級(jí)XFree86到4.3或4.4。它自帶有一些顯卡驅(qū)動(dòng)程序,如ATI M9000筆記本顯卡、SIS顯卡等驅(qū)動(dòng)程序。

4.內(nèi)核支持顯示模式調(diào)整

在命令行界面下,可以調(diào)整內(nèi)核的顯示模式,讓它使用較高分辨率,設(shè)置方法如下。

(1)使用GRUB作為boot loader,則運(yùn)行命令:

# vi /boot/grub/grub.conf


在kernel /vmlinuz-2.4.21-4.EL ro root=LABEL=/行后添加vga=0x314。這是設(shè)置顯示模式,vga是Kernel的參數(shù),0x314表示的是16進(jìn)制的314換算成10進(jìn)制為788,所以vga=788跟與vga=0x314是一樣的。我們把該行改為下面一行:

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


這時(shí)會(huì)發(fā)現(xiàn)Linux啟動(dòng)時(shí)顯示一個(gè)企鵝圖標(biāo),使用的是800×600分辨率,vga參數(shù)含意如表1。

(2)使用LILO作為boot loader,則在/etc/lilo.conf文件中將append處改為如下一行:

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


之后運(yùn)行下面命令:

# lilo -v


使用新的配置文件更新MBR。
常見顯卡故障的處理

當(dāng)無法啟動(dòng)X-Window時(shí),應(yīng)該仔細(xì)查看出錯(cuò)信息。以下為X-Window啟動(dòng)不成功的常見原因。

1.當(dāng)屏幕為全黑或花屏?xí)r,一般是顯示器參數(shù)設(shè)置有誤。首先應(yīng)該按“Ctrl+Alt+Backspace”,結(jié)束X-Window。然后查看顯示器說明書,在/etc/X11/XF86Config-4或XF86Config文件中,將水平和垂直刷新率改成正確的值,或者運(yùn)行redhat-config-xfree86和XFree86-configure。

2.XF86Config文件損壞或丟失,運(yùn)行redhat-config-xfree86或XFree86 -configure。

3.沒有控制臺(tái)所有權(quán)。比如,以shrek用戶登陸,然后用命令“su - joan”切換為用戶joan,這時(shí)使用startx就會(huì)出錯(cuò),提示沒有該控制臺(tái)的所有權(quán)。這時(shí),可以用exit退出joan的Shell,然后再運(yùn)行startx。

4.硬盤沒有空間。在使用KDE或GNOME時(shí),每次啟動(dòng)X-Window都要占用一定空間放臨時(shí)文件,如果/tmp或主目錄下無法寫入文件,這時(shí)X-Window就會(huì)出現(xiàn)一些奇怪的錯(cuò)誤。

5.顯卡驅(qū)動(dòng)有問題。下載安裝正確的驅(qū)動(dòng),運(yùn)行redhat-config-xfree86或XFree86 -configure。

6.xfs服務(wù)沒有啟動(dòng)。xfs是字體服務(wù),它不啟動(dòng)則X-Window無法啟動(dòng)。使用下面命令可以啟動(dòng)該服務(wù):

# service xfs start


或者

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


如果希望該服務(wù)每次自動(dòng)啟動(dòng),則使用下面命令:

#chkconfig xfs on

聲卡驅(qū)動(dòng)程序概述

Linux下聲卡的驅(qū)動(dòng)是作為普通內(nèi)核模塊來加載的,系統(tǒng)內(nèi)置的聲卡驅(qū)動(dòng)在/lib/modules/2.XXX/kernel/drivers/sound/目錄下。以下是系統(tǒng)內(nèi)置的聲卡驅(qū)動(dòng)模塊:

# ls /lib/modules/2.XXX/kernel/drivers/sound/ac97_codec.o cs4232.o forte.o uart401.oac97.o cs4281 i810_audio.o via82cxxx_audio.oad1848.o cs46xx.o maestro3.o ymfpci.oad1889.o emu10k1 rme96xx.oaudigy es1370.o soundcore.ocmpci.o es1371.o sound.o


結(jié)合前一篇所介紹的內(nèi)容可以知道,系統(tǒng)在啟動(dòng)時(shí)會(huì)通過以下兩個(gè)文件來加載模塊:/etc/modules.conf和/etc/rc.d/rc.sysinit,聲卡也是在這里加載的。如果新安裝了一塊聲卡,在Red Hat Linux中則可以使用kudzu命令來搜索聲卡,并且自動(dòng)配置。如果系統(tǒng)中沒有內(nèi)置的驅(qū)動(dòng)程序,則可以按以下步驟來安裝(以VIA的8237南橋集成聲卡為例)。

從VIA的網(wǎng)站http://www.viaarena.com/?PageID=294上下載最新的驅(qū)動(dòng)程序LinuxAudiov230.gz。

解壓縮:

# tar xzvf LinuxAudiov230.gz


編譯src.rpm包:

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


如果沒有rpmbuild命令則運(yùn)行:

# rpm --rebuild viaudiocombo-2.2-3.src.rpm# cd /usr/src/RPM/RPMS/iX86 //這里的X-Window根據(jù)機(jī)器情況而不同# rpm -ivh --force viaudiocombo-2.2-3.iX86.rpm //安裝編譯好的驅(qū)動(dòng)程序


Intel主板的集成聲卡一般使用的是i810_audio.o作為驅(qū)動(dòng),目前新版本Linux內(nèi)置的驅(qū)動(dòng)可以直接支持。
Linux“萬能聲卡驅(qū)動(dòng)”安裝

計(jì)算機(jī)中的聲卡千差萬別,除了Intel、VIA等大廠的聲卡外,大多數(shù)聲卡都沒有專門寫Linux下的聲卡驅(qū)動(dòng)程序。那么怎樣在Linux中使用找不到驅(qū)動(dòng)程序的聲卡呢?可以試一試Linux下的“萬能聲卡驅(qū)動(dòng)”,它可以驅(qū)動(dòng)大量的聲卡。

目前主要有兩種萬能聲卡驅(qū)動(dòng):一種是ALSA(Advanced Linux Sound Architecture),它采用GPL,針對(duì)Linux系統(tǒng)源代碼公開,主頁(yè)是http://www.alsa-project.org/;另一種是OSS(Open Sound System),它是商用軟件,針對(duì)主流Unix系統(tǒng),Linux也在它的支持之列,主頁(yè)是http://www.opensound.com/。

1.安裝ALSA驅(qū)動(dòng)程序

(1)查找聲卡型號(hào)

從http://www.alsa-project.org/alsa-doc/處查找是否有使用的聲卡型號(hào),如果有則一定要從此處點(diǎn)擊后面“details”鏈接來查找安裝方法。這里以安裝創(chuàng)新Soundblaster Audigy聲卡的驅(qū)動(dòng)為例,其它的聲卡請(qǐng)查看details中的具體方法。

在安裝之前需要安裝內(nèi)核的源代碼包,可以從Red Hat光盤上安裝kernel-sourceXXX.rpm包,或者從kernel.org網(wǎng)站上下載當(dāng)前系統(tǒng)版本的源代碼包。

安裝源碼包:

# rpm -ivh kernel-soureXXX.rpm


或者

# tar zxvf kernel-2.XXX.tar.gz# cd /usr/src/linux2.XXX/ //到源代碼的目錄中# cp /boot/config-2.XXX ./.config //將當(dāng)前版本的內(nèi)核配置文件拷貝至源碼目錄

(2)下載驅(qū)動(dòng)程序

從http://www.alsa-project.org/alsa/ftp/driver/下載驅(qū)動(dòng)程序alsa-dirver-1.0.6rc1.tar.bz2;從http://www.alsa-project.org/alsa/ftp/lib/下載庫(kù)文件alsa-lib-1.0.6rc1.tar.bz2;從http://www.alsa-project.org/alsa/ftp/utils/下載工具alsa-utils-1.0.6rc1.tar.bz2。

(3)安裝驅(qū)動(dòng)

# 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.confalias char-major-116 sndalias snd-card-0 snd-emu10k1# module options should go herealias char-major-14 soundcorealias sound-slot-0 snd-card-0alias sound-service-0-0 snd-mixer-ossalias sound-service-0-1 snd-seq-ossalias sound-service-0-3 snd-pcm-ossalias sound-service-0-8 snd-seq-ossalias sound-service-0-12 snd-pcm-oss


但是,ALSA驅(qū)動(dòng)后的聲卡默認(rèn)是不發(fā)聲的,可以用ALSA mixer來開啟。直接運(yùn)行以下命令可以全部開啟所有的音量:

#./audunmute


也可以使用以下命令來設(shè)置音量的大小:

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


可以編輯/etc/modules.conf文件,添加如下一行讓聲卡每次啟動(dòng)時(shí)調(diào)整音量為100%:

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

2.設(shè)置OSS聲卡驅(qū)動(dòng)

(1)從http://www.opensound.com/download.cgi選擇下載OSS的版本,如針對(duì)2.4內(nèi)核的驅(qū)動(dòng),或者針對(duì)2.6內(nèi)核的驅(qū)動(dòng)。

以下是2.4內(nèi)核驅(qū)動(dòng)的下載地址ftp://www.se.opensound.com/pub/oss/linux/oss3991e-linux-x86-v24.tar.gz。

(2)安裝驅(qū)動(dòng)程序:

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


將會(huì)自動(dòng)安裝其中包含的驅(qū)動(dòng)程序。安裝驅(qū)動(dòng)模塊前,請(qǐng)使用命令modprobe -r或rmmod把原有的驅(qū)動(dòng)程序卸載。

以上為L(zhǎng)inux聲卡驅(qū)動(dòng)的大致安裝過程。因?yàn)長(zhǎng)inux下的聲卡眾多,不可能有一個(gè)固定的安裝步驟,但大致的步驟是,先編譯出針對(duì)目前內(nèi)核版本的驅(qū)動(dòng)模塊,然后再使用insmod或modprobe加載上去,更多的是通過/etc/modules.conf文件自動(dòng)加載。

理解/etc/modules.conf文件很重要,這是大多數(shù)Linux系統(tǒng)加載模塊的文件,有些Linux是/etc/conf.modules文件。如果聲卡是非即插即用的,可以在/etc/modules.conf文件中使用options snd-card-0 io=0x300 irq=5來設(shè)置I/O資源及中斷號(hào)。
盡管各種數(shù)碼設(shè)備越來越多,但是Linux在對(duì)它們的配置上還沒有做到像Windows一樣方便,很多人正是因?yàn)樾膼鄣臄?shù)碼相機(jī)無法在Linux下使用,而不得不保留一個(gè)Windows系統(tǒng)。所以,掌握如優(yōu)盤、移動(dòng)硬盤、數(shù)碼相機(jī)等設(shè)備在Linux下的驅(qū)動(dòng)方法,對(duì)于熟練使用Linux而言是必備的技能。

這一講將會(huì)介紹常見USB、IEEE1394、PCMCIA等移動(dòng)設(shè)備的驅(qū)動(dòng)概念和安裝技巧,為讀者更好地配置和使用這些設(shè)備提供幫助。

USB設(shè)備驅(qū)動(dòng)概述

USB是通用串行總線(Universal Serial Bus),是在1994年由Intel、NEC、微軟和IBM等公司共同提出的。USB的目的在于將眾多的接口(串口、并口、PS2口等),改為通用的標(biāo)準(zhǔn)。它僅僅使用一個(gè)4針插頭作為標(biāo)準(zhǔn)插頭,并通過這個(gè)標(biāo)準(zhǔn)接頭連接各種外設(shè),如鼠標(biāo)、鍵盤、游戲手柄、打印機(jī)、數(shù)碼相機(jī)等。USB接口的特點(diǎn)是支持熱插拔,支持單接口上接多個(gè)設(shè)備等。

USB的優(yōu)點(diǎn)此處不再贅述,我們主要來看一看Linux對(duì)USB的支持。USB采用串行方式傳輸數(shù)據(jù),USB 1.1最大數(shù)據(jù)傳輸率為12Mbps,Linux內(nèi)核為2.4以上版本都可以支持。

USB 2.0規(guī)范是由USB 1.1規(guī)范演變而來的,它理論上速度較1.1提高了40倍,達(dá)到了480Mb/s,但目前常見的USB 2.0設(shè)備只能達(dá)到理論值的一半。 Linux內(nèi)核2.4.19版本開始對(duì)USB 2.0進(jìn)行支持。

除了內(nèi)核的版本要對(duì)USB接口進(jìn)行支持之外,還要確定目前的系統(tǒng)是否編譯了USB的驅(qū)動(dòng)模塊。如果讓Linux系統(tǒng)支持USB設(shè)備,還需要一些驅(qū)動(dòng)模塊。我們都知道內(nèi)置的驅(qū)動(dòng)程序一般都在 /lib/modules/2.4XXX/kernel/drivers目錄中。這個(gè)目錄中會(huì)有usb及幾個(gè)子目錄,可以從中找到以下的幾個(gè)USB關(guān)鍵基礎(chǔ)模塊:

usbcore.o 所有USB設(shè)備都需要的基本驅(qū)動(dòng)模塊;

host/ehci-hcd.o USB 2.0設(shè)備支持;

host/usb-uhci.o Intel VIA等芯片組USB部分的驅(qū)動(dòng);

host/usb-ohci.o iMac、SiS、Ali等非Intel芯片組USB部分的驅(qū)動(dòng);

storage/usb-storage.o USB接口的存儲(chǔ)設(shè)備,如移動(dòng)硬盤、U盤等都會(huì)用到;

hid.o USB接口的鍵盤、鼠標(biāo)等人機(jī)交互設(shè)備的基礎(chǔ)支持。

在該目錄下還有一些具體設(shè)備的驅(qū)動(dòng)程序,分別驅(qū)動(dòng)不同設(shè)備:

# ls -p /lib/modules/2.4.21-4.EL/kernel/drivers/usb/acm.o CDCEther.o hpusbscsi.o microtek.o rtl8150.o usbcore.o wacom.oaudio.o dabusb.o kaweth.o pegasus.o scanner.o usb-midi.obrlvger.o hid.o kbtab.o powermate.o serial/ usbnet.ocatc.o host/ mdc800.o printer.o storage/ uss720.o

usb-storage.o USB對(duì)與存儲(chǔ)部分的驅(qū)動(dòng)模塊;

scsi_mod.o 對(duì)SCSI設(shè)備的支持;

sd_mod.o 對(duì)SCSI硬盤支持模塊,針對(duì)USB硬盤;

sr_mod.o 對(duì)SCSI光盤支持模塊,針對(duì)USB光驅(qū);

sg.o SCSI序列的通用支持模塊;

ide-scsi.o 該模塊可以把IDE設(shè)備模擬成SCSI接口。

通過查看/lib/modules/2.XXX/modules.dep文件,可以查看上述這些模塊是否存在。一般情況下這些模塊已經(jīng)被編譯,否則需要重新編譯內(nèi)核模塊。

在正確地裝載了驅(qū)動(dòng)以后,可以通過訪問/dev/sd?設(shè)備來訪問優(yōu)盤或移動(dòng)硬盤。通常情況下,通過訪問sda1來訪問移動(dòng)硬盤或優(yōu)盤的第一個(gè)分區(qū)。在USB基本驅(qū)動(dòng)存在的情況下插入優(yōu)盤,就可以看到如下信息:

usb.c: USB device 7 (vend/prod 0xea0/0x6803) is not claimed by any active driver.Starting timer : 0 0Vendor: Netac Model: OnlyDisk Rev: 1.11Type: Direct-Access ANSI SCSI revision: 02Starting timer : 0 0Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0SCSI device sda: 32256 512-byte hdwr sectors (17 MB)sda: Write Protect is off


上面這一段是usb-storage.o和SCSI驅(qū)動(dòng)在起作用,我們可以看到優(yōu)盤被認(rèn)成是sda,要使用它可以先查看分區(qū)表:

# fdisk -l /dev/sdaDisk /dev/sda: 16 MB, 16515072 bytes2 heads, 32 sectors/track, 504 cylindersUnits = cylinders of 64 * 512 = 32768 bytesDevice Boot Start End Blocks Id System/dev/sda1 * 1 503 16080 1 FAT12# mkdir /mnt/usb# mount -t msdos /dev/sda1 /mnt/usb 該優(yōu)盤得類型為FAT12


之后就可以通過訪問/mnt/usb來訪問優(yōu)盤了。注意,如果要拔掉優(yōu)盤或移動(dòng)存儲(chǔ)設(shè)備,請(qǐng)先umount然后再拔出,這樣可以保證數(shù)據(jù)全部被寫入,否則系統(tǒng)會(huì)出錯(cuò),數(shù)據(jù)可能不完整。

# umount /mnt/usb

USB數(shù)碼相機(jī)的驅(qū)動(dòng)

數(shù)碼相機(jī)類型繁多,但是在Linux下使用數(shù)碼相機(jī)有比較簡(jiǎn)便的方法。我們知道USB接口是數(shù)碼相機(jī)的主要接口,在Linux中訪問數(shù)碼相機(jī),通常可以通過下面兩種方法。

1.使用專門軟件

Red Hat Linux中自帶的gtkam軟件是一個(gè)提供了數(shù)碼照相機(jī)圖形化界面的程序,它支持100多種數(shù)碼相機(jī)。gtkam可以直接與數(shù)碼照相機(jī)相連,允許直接打開、查看、并刪除圖像。在Red Hat 9.0的光盤中,有g(shù)tkam的RPM包:

# ls gtkam*gtkam-XXXX.i386.rpm gtkam-gimp-XXXX.i386.rpm# rpm -ivh --aid gtkam*# rpm -ivh --aid --force gphoto2-XXXX.i386.rpm


gtkam基于gphoto,有時(shí)無法使用gtkam的原因是因?yàn)間photo沒有安裝或模塊被覆蓋,所以需要重新安裝gphoto。安裝完畢后,在X-Window中運(yùn)行g(shù)tkam就可以看到如圖1所示界面。

# gtkam

圖1 gtkam界面



在圖1中,單擊gtkam的“camera”→“Add Camera”可以添加數(shù)碼相機(jī),然后在彈出的窗體中單擊“Detect”,測(cè)試數(shù)碼相機(jī)的連接類型。最后單擊“OK”,就可以看到數(shù)碼相機(jī)中的照片了。

圖2所示使用gtkam連接Kodak DX6340相機(jī),看到存儲(chǔ)卡中的照片。選擇照片,單擊保存就可以把照片保存到硬盤上。

我們也可以從http://sourceforge.net/project/showfiles.php?group_id=8874&release_id=209817獲得gtkam的最新版本及源代碼,下載后可以使用其中的install.sh來進(jìn)行安裝。

2.把數(shù)碼相機(jī)當(dāng)做是USB存儲(chǔ)設(shè)備還有一種方式就是把數(shù)碼相機(jī)當(dāng)做是USB存儲(chǔ)設(shè)備,如優(yōu)盤、讀卡器等,這樣就可以像訪問優(yōu)盤那樣來訪問數(shù)碼相機(jī):

# mount -t vfat /dev/sda1 /mnt/usb



但是,采用這種方式極有可能遇到不能支持的數(shù)碼相機(jī),比如筆者使用的Kodak DX6340數(shù)碼相機(jī),插入U(xiǎn)SB口之后出現(xiàn)以下信息:

usb.c: USB device 2 (vend/prod 0x40a/0x570)is not claimed by any active driver.



對(duì)這種問題的解決辦法不只是可以驅(qū)動(dòng)不支持的數(shù)碼相機(jī),像不支持的存儲(chǔ)設(shè)備也都可以使用,比如優(yōu)盤、讀卡器等。

(1)使用lsmod確定USB基本驅(qū)動(dòng)模塊已經(jīng)裝載,如果沒有使用以上的命令裝載:

# modprobe ehci-hcd; modprobe usb-uhci;modprobe usb-storage# modprobe ide-scsi; modprobe scsi_mod;modprobe sd_mod



(2)使用cat /proc/bus/usb/devices得到當(dāng)前系統(tǒng)USB總線上的設(shè)備信息,尤其注意Vendor、ProdID、Product等信息:

C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mAI: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hubE: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255msT: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1P: Vendor=040a ProdID=0570 Rev= 1.00S: Manufacturer=Eastman Kodak CompanyS: Product=KODAK EasyShare DX6340 Zoom Digital CameraS: SerialNumber=KCKCJ33400274

數(shù)碼相機(jī)也是一種存儲(chǔ)設(shè)備,然而對(duì)于Linux下的移動(dòng)存儲(chǔ)設(shè)備都是通過usb-storage.o驅(qū)動(dòng)的,然后模擬為 SCSI設(shè)備。如果數(shù)碼相機(jī)無法使用,通常是usb-storage驅(qū)動(dòng)未包括此廠商識(shí)別和產(chǎn)品識(shí)別信息(在類似skel_probe的USB最初探測(cè)時(shí)被屏蔽了)。對(duì)于USB存儲(chǔ)設(shè)備的硬件訪問部分,通常是一致的。所以,要支持?jǐn)?shù)碼相機(jī),僅需要修改usb-storage中關(guān)于廠商識(shí)別和產(chǎn)品識(shí)別列表部分。

USB設(shè)備識(shí)別信息中重要的部分如下:

P: Vendor=040a ProdID=0570 Rev= 1.00S: Manufacturer=Eastman Kodak CompanyS: Product=KODAK EasyShare DX6340 Zoom Digital Camera



若/proc/bus/usb下沒有相應(yīng)USB設(shè)備信息,應(yīng)輸入以下命令將USB設(shè)備文件系統(tǒng)手動(dòng)掛裝到/proc/bus/usb:

# mount -t usbdevfs none /proc/bus/usb



(3)編輯drivers/usb/storage/unusual_devs.h文件。下面是所有已知的USB產(chǎn)品登記列表,格式如下:

UNUSUAL_DEV(idVendor, idProduct, bcdDeviceMin, bcdDeviceMax,vendor_name,product_name,use_protocol, use_transport, init_function,Flags).



usb-storage.o就是根據(jù)這個(gè)列表來識(shí)別各種設(shè)備。這樣,可以將剛才/proc/bus/usb/devices文件中得出的信息添加在上面,重新編譯模塊,讓usb-storage驅(qū)動(dòng)去認(rèn)識(shí)和發(fā)現(xiàn)它。

UNUSUAL_DEV( 0x040a, 0x0570, 0x0001, 0x0001,"Eastman Kodak Company","KODAK EasyShare DX6340 Zoom Digital Camera",US_SC_SCSI, US_PR_CB, NULL,US_FL_FIX_INQUIRY | US_FL_START_STOP | US_FL_MODE_XLATE ),



注意,添加以上幾句代碼的位置一定要正確。經(jīng)過比較發(fā)現(xiàn),usb-storage驅(qū)動(dòng)對(duì)所有注冊(cè)都是按idVendor、 idProduct數(shù)值從小到大排列的,因此添加代碼也要放在相應(yīng)位置。

(4)重新編譯模塊,之后插入的數(shù)碼相機(jī)就可以像其它優(yōu)盤一樣作為USB存儲(chǔ)設(shè)備去訪問。

# make dep# make modules# make modules_install

USB攝像頭的驅(qū)動(dòng)

在內(nèi)核源文件中,自帶了一部分?jǐn)z像頭的驅(qū)動(dòng),目前大量的雜牌攝像頭都可以使用OV511的驅(qū)動(dòng)模塊。如果USB攝像頭無法使用,則可以試試重新編譯模塊。下面就以一個(gè)沒有驅(qū)動(dòng)程序的攝像頭為例,嘗試使用OV511驅(qū)動(dòng)模塊驅(qū)動(dòng)。

1. 獲取內(nèi)核源碼

先從Red Hat光盤或kernel.org獲取當(dāng)前版本的內(nèi)核源碼,并安裝:

# rpm -ivh kernel-source-2.XXX.rpm



或者

# tar zxvf linux-2.XXX.tar.gz



2. 運(yùn)行

到源碼目錄中運(yùn)行:

# make menuconfig



或者

# make xconfig //需要在X-Window下



3. 選擇USB的模塊
選擇USB的模塊如圖3所示。

選擇要編譯的驅(qū)動(dòng)可以查看說明書,確定攝像頭芯片是什么型號(hào),如圖4所示,選定OV511攝像頭的支持。在USB support下可以選擇多種驅(qū)動(dòng)的模塊,比如常用的OV511芯片的攝像頭驅(qū)動(dòng)、USB打印機(jī)的驅(qū)動(dòng)等。

圖3 編譯內(nèi)核選擇USB support

圖4 在USB support下可選擇多種驅(qū)動(dòng)模塊



4. 保存、編譯和安裝

# make dep# make modules# make modules_install



5. 加載驅(qū)動(dòng)

# modprobe ehci-hcd# modprobe usb-uhci# modprobe ov511cat /proc/devices



接著運(yùn)行g(shù)nomemeeting等工具,選擇/dev/video0或/dev/video1作為攝像頭設(shè)備文件,這樣攝像頭就可以使用了。

外置USB光驅(qū)及刻錄機(jī)的驅(qū)動(dòng)

USB光驅(qū)與其它的USB存儲(chǔ)設(shè)備使用類似,只不過USB光驅(qū)會(huì)被識(shí)別為SCSI光驅(qū),如/dev/sr0或/dev/scd0等設(shè)備,它需要sr_mod.o(SCSI CD-ROM設(shè)備)驅(qū)動(dòng)模塊。









# modprobe sr_mod //如果sr_mod模塊沒有編譯,請(qǐng)重新編譯內(nèi)核,在SCSI部分# mount -t iso9660 /dev/scd0 /mnt/cdrom



關(guān)于外置刻錄機(jī)驅(qū)動(dòng)詳見本刊今年第8期“Linux完全驅(qū)動(dòng)(二)”:

# mkisofs -Jv -V examplecd -o example.iso /root/



將/root/目錄下的文件做成一個(gè)名叫example.iso的光盤鏡像文件,該文件的卷標(biāo)為examplecd;還可通過下面命令將該文件加載到/mnt/iso文件夾中。

# mkdir /mnt/iso# mount -t iso9660 -o loop example.iso /mnt/iso



在調(diào)整完/mnt/iso文件的內(nèi)容后使用下面命令:

# umount /mnt/iso



最后使用cdrecord命令刻錄:

# cdrecord -scanbus



查看SCSI總線中刻錄機(jī)的配置信息:

Cdrecord 2.0 (i686-pc-linux-gnu) Copyright(C) 1995-2002 J?rg SchillingLinux sg driver version: 3.1.25Using libscg version 'schily-0.7'cdrecord: Warning: using inofficiallibscg transport code version(schily - Red Hat-scsi-linux-sg.c-1.75-RH '@(#)scsi-linux-sg.c1.75 02/10/21 Copyright 1997 J. Schilling').scsibus0:0,0,0 0) 'HL-DT-ST' 'RW/DVD GCC-4240N' 'E112' Removable CD-ROM0,1,0 1) *0,2,0 2) *0,3,0 3) *0,4,0 4) *0,5,0 5) *0,6,0 6) *0,7,0 7) *



從上面可以看到目前光驅(qū)在SCSI總線的參數(shù),然后根據(jù)參數(shù)輸入下面的命令刻錄光盤:

# cdrecord -v -eject speed=24 dev=0,0,0 example.iso



“speed=24”是以24速來刻錄光盤,“dev=”后加上剛才顯示的刻錄機(jī)的SCSI參數(shù)。如果是外置DVD,則應(yīng)使用dvdrecord命令,其用法與cdrecord相同。

# rpm -ivh dvdrecord-0.1.2-12.i386.rpm# man dvdrecord 查看幫助
USB鼠標(biāo)和鍵盤的驅(qū)動(dòng)

1.鼠標(biāo)的驅(qū)動(dòng)

在Red Hat Linux中,可以使用mouseconfig命令來配置鼠標(biāo),選擇USB接口鼠標(biāo)即可,如圖5所示。


圖5 使用mouseconfig配置USB接口鼠標(biāo)
# mouseconfig


如果使用手動(dòng)的方式來配置,可以人工加入以下模塊:

# modprobe hid# modprobe input# modprobe usbmouse# modprobe mousedev


2.USB鍵盤的驅(qū)動(dòng)

# modprobe hid# modprobe input# modprobe usbkbd# modprobe keybdev

IEEE1394設(shè)備的驅(qū)動(dòng)

IEEE1394又稱Firewire(火線)、i-Link(Sony的叫法),它跟USB接口類似,目前可以提供400Mb/s的帶寬,雖然在理論上它較USB 2.0的480Mb/s的速度慢一些,但是在實(shí)際使用中,Firewire要比USB 2.0的設(shè)備快不少,所以仍然有很多設(shè)備配備這種接口,如DV(數(shù)字?jǐn)z像機(jī))和移動(dòng)硬盤等。

與USB相比,Firewire的通用性不夠強(qiáng),得到的支持也較少。一般主板上不帶該Firewire的芯片,通常是購(gòu)買帶1394接口的PCI卡來支持1394的設(shè)備。對(duì)于1394設(shè)備,Linux內(nèi)核2.4.10之后的版本都可以支持。IEEE1394的驅(qū)動(dòng)放在以下位置:

# ls /lib/modules/2.XXX/kernel/drivers/ieee1394amdtp.o dv1394.o ieee1394.o raw1394.o video1394.ocmp.o eth1394.o ohci1394.o sbp2.o


IEEE1394的驅(qū)動(dòng)方式較USB大同小異,只是首先加載的是對(duì)1394總線的驅(qū)動(dòng)(ieee1394.o)和1394芯片的驅(qū)動(dòng)(ohci1394.o)。如果使用1394卡連接DV,那么需要1394視頻驅(qū)動(dòng)(video1394.o)和DV視頻I/O驅(qū)動(dòng)(dv1394.o);如果需要訪問的是1394外接硬盤或CD-ROM、刻錄機(jī)等,則需要對(duì)SBP-2協(xié)議的支持(sbp2.o);如果使用1394接口的以太網(wǎng)卡,則需要加載驅(qū)動(dòng)eth1394.o。

如果沒有某種設(shè)備的驅(qū)動(dòng),則可以重新編譯內(nèi)核模塊,選擇以下模塊:

# cd /usr/src/linux-2.XXX# make xconfig


選擇其中的IEEE1394選項(xiàng),如圖6所示,然后重新編譯模塊:

# make dep# make modules# make modules_install


驅(qū)動(dòng)IEEE1394接口的硬盤或光驅(qū)時(shí),需要預(yù)先加載的驅(qū)動(dòng)有ieee1394.o和ohci1394.o:

# modprobe ohci1394


上面代碼會(huì)將兩樣驅(qū)動(dòng)全部裝載上,因?yàn)閛hci1394依賴于ieee1394。

硬盤需要的驅(qū)動(dòng)是sbp2.o,插入硬盤后它應(yīng)該會(huì)自動(dòng)加載。與USB設(shè)備相同,硬盤會(huì)被模擬成SCSI設(shè)備,請(qǐng)留意屏幕上顯示的信息,看看是被模擬為sda還是其它的設(shè)備。使用以下命令使用硬盤:
# mkdir /mnt/1394# mount -t vfat /dev/sda1 /mnt/1394
IEEE1394光驅(qū)應(yīng)該使用設(shè)備為/dev/scd0,如果在插入設(shè)備時(shí)沒有自動(dòng)加載,則可以試著手動(dòng)加載sbp2模塊及SCSI模塊:

scsi_mod.o 對(duì)SCSI設(shè)備的支持; sd_mod.o 對(duì)SCSI硬盤支持模塊,對(duì)應(yīng)硬盤;

sr_mod.o 對(duì)SCSI光盤支持模塊,對(duì)應(yīng)光驅(qū);

sg.o SCSI序列的通用支持模塊。

IEEE1394光驅(qū)驅(qū)動(dòng)與USB下相應(yīng)的設(shè)備驅(qū)動(dòng)非常相似,這里就不再贅述了。

現(xiàn)在各種移動(dòng)設(shè)備層出不窮,花樣繁多,目前國(guó)內(nèi)網(wǎng)站上的資料不是很全,使用google搜索英文網(wǎng)站往往能得到許多自己需要的東西。

優(yōu)盤或USB硬盤常見問題解決方法

1. 加載/dev/sda1時(shí)出錯(cuò)

這是因?yàn)檩^早的優(yōu)盤不分區(qū),它們使用/dev/sda,也有可能使用/dev/sda2或sda3等設(shè)備文件,請(qǐng)仔細(xì)觀察fdisk -l /dev/sda的輸出結(jié)果,看一看優(yōu)盤的分區(qū)到底是哪一個(gè)。

2. 主機(jī)中已有SCSI或USB設(shè)備

主機(jī)中已經(jīng)有SCSI或USB設(shè)備,比如/dev/sda硬盤或另一個(gè)優(yōu)盤,這時(shí)可以嘗試sdb或sdc等設(shè)備。實(shí)際上每一次在插入優(yōu)盤時(shí)可以留意一下屏幕上顯示的信息,那個(gè)優(yōu)盤被轉(zhuǎn)換成哪一個(gè)sd設(shè)備。

3. 優(yōu)盤插入后沒有反應(yīng),訪問/dev/sd設(shè)備也沒有反應(yīng)

這時(shí)可以查看相關(guān)模塊是否已經(jīng)加載,如果沒有加載可以手動(dòng)加載,然后重新插入該設(shè)備,看看是否有反應(yīng):

# modprobe ehci-hcd; modprobe usb-uhci; modprobe usb-storage.o# modprobe ide-scsi; modprobe scsi_mod.o; modprobe sd_mod.o


4. 設(shè)備驅(qū)動(dòng)已經(jīng)加載,如何知道訪問哪個(gè)設(shè)備文件

對(duì)比加載驅(qū)動(dòng)前和加載驅(qū)動(dòng)后的/proc/devices文件,多出的那一行就是這種驅(qū)動(dòng)程序注冊(cè)的主設(shè)備號(hào)。例如,對(duì)比OV511加載前后/proc/devices文件的變化,就會(huì)發(fā)現(xiàn)多出如下一行:

# cat /proc/devicesCharacter devices:...81 video_capture...


上面代碼表示C型設(shè)備、主設(shè)備號(hào)為81的設(shè)備文件是訪問OV511驅(qū)動(dòng)的入口,再對(duì)照/usr/src/Documentation/devices.txt中查找C類型的主設(shè)備號(hào)81,就可以知道對(duì)應(yīng)如下設(shè)備文件:

81 char video4linux0 = /dev/video0 Video capture/overlay device


上面簡(jiǎn)要介紹了Linux下常用的USB、IEEE1394、PCMCIA設(shè)備驅(qū)動(dòng)的安裝與配置,希望能對(duì)讀者安裝與使用這些設(shè)備提供幫助。


<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script> 閱讀(1386) | 評(píng)論(0) | 轉(zhuǎn)發(fā)(2) | 0

上一篇:利用U盤加載控制器驅(qū)動(dòng)來安裝Linux系統(tǒng)

下一篇:如何編寫Linux下的設(shè)備驅(qū)動(dòng)程序

相關(guān)熱門文章
  • 3d打印機(jī)軟件僅售1606元...
  • objet3d打印機(jī)便捷地將信息拖...
  • 科技感導(dǎo)航按鈕 三星Objet光敏...
  • uPrint SE打印機(jī)使打印機(jī)足夠...
  • KTV包房裝修設(shè)計(jì)如何對(duì)音響調(diào)...
  • linux 常見服務(wù)端口
  • 【ROOTFS搭建】busybox的httpd...
  • 什么是shell
  • linux socket的bug??
  • linux的線程是否受到了保護(hù)?...
  • 請(qǐng)教想查12個(gè)月的數(shù)據(jù)條數(shù),看...
  • new/delete 和malloc/free 有...
  • ubuntu下hadoop環(huán)境的搭建...
  • 求助:如何用Linux架設(shè)ISATAP...
  • redhat圖形界面不出先登錄界面...
給主人留下些什么吧!~~ 評(píng)論熱議

總結(jié)

以上是生活随笔為你收集整理的Linux下设备驱动的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

午夜精品电影 | 黄色国产区 | 二区精品视频 | 视频在线一区二区三区 | 亚州性色 | www激情网 | 亚洲欧美激情插 | 成人黄色av免费在线观看 | 91精品婷婷国产综合久久蝌蚪 | 亚洲精品国精品久久99热 | 开心激情五月婷婷 | 精品国产精品久久一区免费式 | 激情视频一区二区三区 | 天堂网一区 | 国产精品久久久久久久久久久久久久 | 久久视频在线视频 | 狠狠躁夜夜躁人人爽视频 | 久久国产影院 | 日韩精品一区二区三区免费观看 | 亚洲黄色av | 精品在线不卡 | 激情视频综合网 | 免费91在线观看 | 色人久久| 国产高清成人 | 日韩特级黄色片 | 永久黄网站色视频免费观看w | 亚洲区精品视频 | 天天综合在线观看 | 久久 地址 | 天天射天天干天天插 | 高潮久久久久久久久 | 国产精品高潮呻吟久久久久 | 日本黄色免费在线 | av爱干| 日韩中文字幕免费视频 | 丁香影院在线 | 免费黄色av.| 日韩欧美一区二区不卡 | 亚洲高清视频在线观看 | 99国内精品 | 免费视频三区 | 在线免费av网 | 国产午夜精品视频 | 六月婷婷久香在线视频 | 九九一级片| 久久国产色 | 99久久国产免费看 | 玖玖精品视频 | 国产少妇在线观看 | 亚洲国产影院av久久久久 | 国产电影黄色av | 亚洲免费公开视频 | 日韩av看片| www.亚洲黄色 | 久久久精品久久 | 国产精品手机视频 | 狠狠久久伊人 | 国产一区二区不卡视频 | 人人射| 欧美一二三区播放 | 久久精品波多野结衣 | 国产精品国产三级国产aⅴ无密码 | 欧美a级在线播放 | 国产日韩视频在线播放 | 中文字幕中文字幕 | 97碰碰精品嫩模在线播放 | 免费观看一级成人毛片 | 久久午夜电影网 | 中文字幕在线观看免费观看 | 探花在线观看 | 六月丁香激情综合色啪小说 | 成人久久 | 一区二区三区动漫 | 97av精品| 日本一区二区三区免费观看 | 天天曰视频 | 天天射天天做 | 不卡电影免费在线播放一区 | 免费av在| 999久久久久久久久 69av视频在线观看 | 久久精品电影网 | 2000xxx影视 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 久久成人麻豆午夜电影 | 久热爱 | 国产特级毛片aaaaaa高清 | 99免费看片 | 精品a在线| 九九视频精品免费 | 91九色自拍 | 久久久wwww| 天天天天色综合 | 丁香久久激情 | 精品96久久久久久中文字幕无 | 国产激情电影综合在线看 | 四虎国产 | 精品三级av | 三级黄色片子 | 91九色pron| 日日综合网 | 久草www | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 中文国产在线观看 | 亚洲国产精品久久久久久 | 2024国产精品视频 | 久久夜夜操 | 日韩视频在线观看免费 | 欧美成人性网 | 亚洲欧美日韩一二三区 | 欧美精品少妇xxxxx喷水 | 青草视频网 | 国产精品一区二区三区电影 | 97在线观看免费 | 日本3级在线观看 | 日本最新高清不卡中文字幕 | 午夜久操 | 国产成人a亚洲精品 | 精品亚洲男同gayvideo网站 | 午夜日b视频 | 中文字幕免费高清在线观看 | 亚洲精品一区二区三区新线路 | 色噜噜在线观看 | 高清中文字幕av | 五月婷婷影院 | 五月婷婷在线视频观看 | 日日干综合 | 天天摸天天舔天天操 | 国产精品久久久久久久电影 | 丁香av在线 | 五月激情站 | 不卡视频一区二区三区 | 欧美在线99 | 97碰碰碰| 日韩视频一区二区三区在线播放免费观看 | 日韩一区二区在线免费观看 | 亚洲天堂网在线视频 | 久久9999久久免费精品国产 | 四虎亚洲精品 | 一区二区三区国 | 在线视频你懂得 | 91精品国产高清自在线观看 | 国产美女视频免费 | 一区二区三区四区五区在线 | 成人综合婷婷国产精品久久免费 | 日韩欧在线 | 国产精品乱码久久 | 亚洲尺码电影av久久 | 中文电影网 | 日韩在线视频免费播放 | 国产手机视频在线播放 | av播放在线| 2019国产精品 | 一区二区 不卡 | 麻豆影视在线播放 | 在线观看视频色 | 黄色电影网站在线观看 | 中文字幕一区二区在线播放 | 美女黄频在线观看 | 又黄又网站 | a视频免费 | 日韩在线免费小视频 | 成人h电影| 久久精品久久久精品美女 | 精品字幕| 欧美一区在线观看视频 | 五月在线视频 | 欧洲精品视频一区二区 | 四虎影院在线观看av | 国产91精品一区二区 | 人人干97 | 久久久久久久亚洲精品 | 久久久亚洲电影 | 国产视频69 | 99热播精品 | 91视频在线免费看 | 免费h视频 | 91av美女| 久久久久久久久网站 | 精品主播网红福利资源观看 | 成人精品国产 | www.com黄色| 黄色片免费看 | 99超碰在线播放 | 黄色片视频在线观看 | 久久久久女教师免费一区 | 中文欧美字幕免费 | 国产91在线看 | 国产中文在线播放 | 国产高清不卡一区二区三区 | 日韩和的一区二在线 | 精品黄色在线 | 欧美,日韩 | 狠狠操狠狠干天天操 | 日本精品久久久久久 | 国产精品成人一区二区三区吃奶 | 三级黄色网络 | 四虎精品成人免费网站 | www视频免费在线观看 | 国产精品久久久久永久免费看 | 99久久er热在这里只有精品15 | 国产精品女教师 | 成人在线视频一区 | 嫩草av在线 | 天操夜夜操 | 成人免费xyz网站 | 国产成人综 | 97av视频在线 | 91精品国产欧美一区二区 | 丁香婷婷综合激情五月色 | 在线观看国产日韩 | 亚洲精品男女 | 91成人久久| 国产精品美女视频 | 国产精品黄 | 丁香久久激情 | 中文有码在线视频 | 国产精品久久久免费 | 国产精品高清av | 亚洲精品美女久久17c | 色综合久久综合网 | 免费在线成人av电影 | 成人在线视频在线观看 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 欧美日韩在线视频观看 | 成人黄色电影在线观看 | 天天爽夜夜爽人人爽一区二区 | 亚洲国内精品在线 | 日韩免费在线视频观看 | 色噜噜狠狠狠狠色综合久不 | 日韩国产精品一区 | 少妇性色午夜淫片aaaze | 精品国产一区二区三区不卡 | 中文字幕亚洲五码 | 欧美激情综合色 | 国产专区精品视频 | 激情欧美一区二区三区免费看 | 国产成人av电影 | 成人av免费在线观看 | 在线观看免费观看在线91 | 四虎免费在线观看 | 成人毛片在线视频 | 国产91综合一区在线观看 | 又黄又爽又刺激 | 91av在线不卡| 香蕉视频在线免费 | 波多野结衣在线播放视频 | 久久综合福利 | 天天爱天天射天天干天天 | www.五月天激情 | av解说在线观看 | 97超碰中文字幕 | 日韩中文字幕一区 | 成人视屏免费看 | 香蕉视频啪啪 | 亚洲精品伦理在线 | 亚洲日本va中文字幕 | 中文字幕av全部资源www中文字幕在线观看 | 349k.cc看片app| 国内精品福利视频 | 精品国产电影一区 | 国产精品麻豆一区二区三区 | 婷婷在线视频观看 | 国产一级二级av | 欧美日韩免费一区 | 午夜私人影院 | 中文字幕av一区二区三区四区 | 安徽妇搡bbbb搡bbbb | 国产精品99久久免费观看 | 国产精品久久av | 国产99精品在线观看 | 国产美女精品视频 | 日韩av看片 | 久久免费精彩视频 | 国产麻豆精品免费视频 | 丁香九月激情综合 | 日韩精品一区二区三区中文字幕 | 韩国av一区二区三区在线观看 | 成人毛片一区二区三区 | 国产一区二区在线免费视频 | 久久久久蜜桃 | 超碰97成人 | 国产中文字幕在线播放 | 国产黄色免费观看 | 午夜av不卡 | 久久精品国产免费看久久精品 | 国产手机精品视频 | 不卡的av片 | 91精品免费在线 | 91桃色视频 | 欧美性脚交 | 九九久久影视 | 中文字幕在线观看免费 | 国产日韩在线播放 | 国产精品com | 久久久网页 | 高清av网站 | 天天干人人干 | 久久精品高清视频 | 日本精a在线观看 | 人人搞人人爽 | 麻豆视频在线观看免费 | 免费看色的网站 | 欧美日韩精品在线视频 | 精选久久 | 91av网站在线观看 | 日本久久91 | 中文一区在线观看 | 欧美久久久久久久久中文字幕 | 免费的黄色av| 激情网综合 | 午夜精品一区二区三区免费 | 国产精品99蜜臀久久不卡二区 | 91精品啪在线观看国产81旧版 | 国产免费资源 | 国产一区在线视频观看 | 美女黄视频免费看 | 国产18精品乱码免费看 | 久久久久久久久久久久亚洲 | 青青草久草在线 | 亚洲黄色区 | 最近久乱中文字幕 | 欧美另类交在线观看 | www色av| 天天色天天爱天天射综合 | 日韩中午字幕 | 97精品视频在线播放 | 麻豆视频91 | 香蕉久久久久久av成人 | 日韩69视频 | 成人超碰在线 | 999一区二区三区 | 国精产品一二三线999 | 国产精品久久久久久久久久 | 中文字幕资源网 国产 | 久久久精品成人 | 97超碰在线免费观看 | 欧美日韩国产页 | 日韩中文字幕第一页 | 亚洲精品国产精品乱码不99热 | 香蕉视频最新网址 | 婷婷99| 国产在线观| 国产夫妻自拍av | 国产一区二区高清不卡 | 日韩精品一区电影 | 成全免费观看视频 | 免费黄色看片 | 天堂av官网| 色视频 在线 | 色网站在线看 | 国产成人精品一区二区三区福利 | 伊人色**天天综合婷婷 | 99re热精品视频 | 日韩av影片在线观看 | 韩国中文三级 | 欧美精彩视频在线观看 | 高清不卡免费视频 | 欧美一区二区三区不卡 | www.com黄色| 免费在线观看成人 | 欧美狠狠操 | 亚洲精品日韩一区二区电影 | 国产精品毛片一区 | 久久精品国产第一区二区三区 | 精品自拍sae8—视频 | 国内精品久久久久影院一蜜桃 | 欧美精品中文在线免费观看 | 亚洲精品美女久久久久 | 色欧美综合 | 久久这里只有精品首页 | 又黄又爽又刺激视频 | 成 人 黄 色视频免费播放 | 天天草天天摸 | 精品一区免费 | 国产视频一二三 | 免费av网站观看 | 女人高潮一级片 | 激情九九 | 国产视频在线免费观看 | 久久69精品 | .国产精品成人自产拍在线观看6 | 成人日批视频 | 深爱激情亚洲 | 久久久这里有精品 | 天天摸天天操天天舔 | 日韩免费一区二区三区 | 亚洲一区二区三区精品在线观看 | 国产一区国产二区在线观看 | 伊人va | 三级av在线免费观看 | 国产高清不卡一区二区三区 | 国产成视频在线观看 | 操夜夜操 | 久久久久女教师免费一区 | 人人爽人人爽人人 | 国产一二区在线观看 | 99热9| 国产一区二区久久久 | 亚洲欧美日韩一二三区 | 久99久视频 | 人人干天天射 | 91麻豆看国产在线紧急地址 | 激情五月激情综合网 | 日日操天天操狠狠操 | 亚洲毛片视频 | 久久国产精品99精国产 | 国产精品一区二区电影 | 91精品国产三级a在线观看 | 亚洲精品福利在线观看 | 日韩在线观看视频中文字幕 | 久久久久99精品成人片三人毛片 | 婷婷五月色综合 | 免费观看久久久 | 亚洲成人免费观看 | 国产精品成久久久久 | 国产精品久久久久久模特 | 最新精品视频在线 | 国产精品成人久久久久久久 | 亚洲精品黄色在线观看 | 成人欧美一区二区三区在线观看 | 成人h在线观看 | 黄色片免费电影 | 欧美日韩精品在线视频 | 免费观看91视频 | 中文字幕av免费在线观看 | 天天伊人狠狠 | 亚洲热视频| 国产精品第一视频 | 日韩精品欧美视频 | 黄色一级动作片 | 国产在线观看免费 | 97在线观看免费视频 | 亚洲精品午夜国产va久久成人 | 成人中文字幕+乱码+中文字幕 | 国产精品亚洲视频 | 日韩电影在线一区二区 | 欧美精品免费一区二区 | av在线不卡观看 | 久久久久区 | 在线观看一区二区精品 | 色永久免费视频 | 亚洲男人天堂2018 | 欧美日韩免费一区二区三区 | 五月激情六月丁香 | 国产视频在线观看一区 | 五月婷婷激情六月 | 成人小电影在线看 | 亚洲h色精品 | 久久精品视频在线 | 日韩av在线免费播放 | 日韩乱理| 91看毛片| 亚洲精品1区2区3区 超碰成人网 | 狠狠狠色丁香婷婷综合久久88 | 探花视频免费观看高清视频 | 美女国产 | 免费看一级特黄a大片 | 婷婷亚洲五月色综合 | 日韩二区在线播放 | 在线免费三级 | 国产亚洲一区二区三区 | 国产精品福利小视频 | 免费看网站在线 | 玖玖爱免费视频 | 欧美一区二区日韩一区二区 | 伊人午夜 | 日本中文字幕网 | 国产精品激情偷乱一区二区∴ | 久久99精品国产麻豆婷婷 | 成人久久18免费网站图片 | 亚洲欧美视频 | 精品毛片在线 | 五月综合久久 | 黄色成人av | 久久激情视频网 | 国产精品久久一区二区无卡 | 91精彩视频在线观看 | 天天草综合网 | www色| 香蕉国产91| 亚洲人av免费网站 | 五月视频 | 日韩久久午夜一级啪啪 | 中文在线字幕免费观 | 亚洲黄色在线免费观看 | 色欲综合视频天天天 | 欧美日韩一区二区三区免费视频 | 91在线免费视频观看 | 99久久精品免费 | 激情久久一区二区三区 | 亚洲国产欧美在线看片xxoo | 99热这里是精品 | 欧美精品在线一区二区 | 亚洲国产精品999 | 日日操天天操狠狠操 | av免费观看网址 | 黄污视频网站大全 | 国产色资源 | 中文字幕在线播放视频 | 久久精彩视频 | av片子在线观看 | 色激情在线 | 亚洲精选视频免费看 | 久久免费片 | 日韩精品在线视频 | 九九久久国产 | 网站在线观看你们懂的 | av在线a| 免费观看国产精品 | 在线看小早川怜子av | 黄色免费网站下载 | 黄色一级动作片 | 国产精品18久久久久白浆 | 超碰日韩| 亚洲国产精品视频在线观看 | 激情网五月 | 欧美精品xxx | 亚洲天天 | 99精品国产成人一区二区 | 六月婷婷网 | 久久综合狠狠综合久久综合88 | 丁香综合 | 亚洲高清国产视频 | 免费网址在线播放 | 亚洲精品97| 一级淫片在线观看 | 亚洲 精品在线视频 | 日韩高清免费电影 | 亚洲视频免费在线观看 | 4hu视频 | 四季av综合网站 | 日韩一级成人av | 国产亚洲婷婷免费 | 免费av在线网站 | 精品国产人成亚洲区 | 国产一级片不卡 | 99久久精品免费一区 | 月丁香婷婷 | 久久成人在线视频 | 天天狠狠干 | 欧美二区视频 | 亚洲精品小视频在线观看 | 日韩精品久久中文字幕 | 在线观看黄色小视频 | 91成人破解版 | 日产乱码一二三区别免费 | www五月婷婷 | 亚洲一区视频在线播放 | 亚洲毛片一区二区三区 | 久久国产一二区 | 天天色天天色天天色 | 日韩美视频 | 人人超碰人人 | www.在线看片.com | 久久精品香蕉 | 国产黄色av | 色资源网在线观看 | 一级片免费在线 | 国产成人在线免费观看 | 新版资源中文在线观看 | 伊人久久av| 久久免费资源 | 中文字幕一区二区三区四区在线视频 | 欧美久久久久久久久久久久久 | 精品国产一区二区三区蜜臀 | 国产精品久久网 | 视频在线99re| 欧美另类一二三四区 | 九九九九九国产 | 亚洲精品字幕 | 久久精品一区二 | 九九视频精品在线 | 天天爽天天做 | 天天色综合1 | 日一日干一干 | 亚洲精品久久久久久久蜜桃 | 天天天天爱天天躁 | 国产精品免费成人 | 天天干天天拍天天操 | 成人免费看视频 | 国产资源网 | 欧美整片sss | 欧美一级日韩三级 | av软件在线观看 | 人人添人人澡人人澡人人人爽 | 四虎国产永久在线精品 | 狠狠色丁香婷婷综合视频 | 国产一区免费在线观看 | 91精品一区二区三区蜜臀 | a黄色一级片 | 亚洲va在线va天堂va偷拍 | 国产在线精品播放 | 日本99干网| 热久久电影 | 日韩精品不卡在线 | 欧美日韩免费观看一区=区三区 | 久久精品视频2 | 午夜99| 亚洲精品在线免费看 | 日韩在线中文字幕视频 | 久久成人免费电影 | 久久精品三 | 在线超碰av| 国产一区在线免费观看视频 | 天天色欧美 | 国产精品久久久久久久久大全 | 久久精品免费播放 | 日日夜夜操av | 国产精品久久久免费 | 精品国内自产拍在线观看视频 | 91在线操 | 久久精品99国产精品日本 | 久久精品伊人 | 精品96久久久久久中文字幕无 | a级片久久久 | 国产精品永久免费视频 | 亚洲视频在线观看免费 | 正在播放国产91 | 国产不卡在线 | 99久热在线精品 | 丁香六月久久综合狠狠色 | 992tv又爽又黄的免费视频 | 久久视频这里有精品 | 人人爽人人片 | 国产精品永久久久久久久久久 | 国产97色在线 | 免费观看成人av | 成人国产精品一区 | 国产一级大片免费看 | 国产精品视频最多的网站 | 免费黄色一区 | 中文字幕在线视频国产 | 五月天婷亚洲天综合网精品偷 | 色综合天| 成人免费视频网站在线观看 | 国产精品毛片一区视频播 | 毛片网站在线 | 成人av动漫在线 | 精品国产精品久久 | 国产一区二区在线播放 | 91在线播放国产 | 狠狠干天天| a在线观看国产 | 天天射天天干天天 | 日韩av看片 | 日韩欧美视频在线免费观看 | 色天天久久 | 成人免费在线观看av | 久久精品一区二区国产 | 久久九九影院 | 狠狠色噜噜狠狠 | 免费观看国产成人 | 999精品网 | 国产视频2 | 久久黄色片| 欧美片一区二区三区 | 亚洲精品乱码久久久久久9色 | 91麻豆精品国产91久久久更新时间 | 久久久国产成人 | 99久久精品免费 | 狠狠色丁香婷婷综合欧美 | 国产69精品久久久久99尤 | 中文字幕 第二区 | 国产视频久久 | 中文字幕在线第一页 | 精品亚洲免费 | 国产精品欧美 | a色网站| 国产精品久久久久久久久久久免费看 | 国产一卡久久电影永久 | 国产精品欧美久久久久天天影视 | 91手机在线看片 | 一区二区免费不卡在线 | 波多野结衣久久精品 | 久久久久久麻豆 | 日韩午夜精品 | 91色在线观看视频 | 99精品在线观看 | 91精品视频网站 | 国产精品日韩精品 | 九色最新网址 | 91免费视频黄 | 日韩黄色免费 | 91麻豆福利 | 日韩欧在线 | 亚洲涩涩一区 | 日韩有码中文字幕在线 | 日韩天堂在线观看 | 又粗又长又大又爽又黄少妇毛片 | 日韩精品三区四区 | 国产原创在线观看 | 中文字幕亚洲欧美 | 349k.cc看片app| av丝袜美腿| 久久国产精品99国产精 | 亚洲日本欧美 | 麻豆视频一区 | 久久桃花网| 精品国产1区2区3区 国产欧美精品在线观看 | 国产黄色看片 | 91超碰免费在线 | 国产1区2区3区精品美女 | 午夜视频在线观看一区 | 在线观看免费 | 久久99国产精品免费网站 | 91完整版 | 国产精品久久久久久久电影 | 午夜精品久久久久久久久久久 | 亚洲精品在线国产 | 成人一级片免费看 | 99精品久久久久久久久久综合 | 99999精品 | 国产精品久久久久久吹潮天美传媒 | 伊人夜夜 | 日韩大片在线免费观看 | 久久视频在线 | 91精品国产综合久久福利 | 中文字幕在线观看的网站 | 九九久久在线看 | 久久久亚洲精品 | 97色噜噜 | 在线之家免费在线观看电影 | 久久亚洲综合国产精品99麻豆的功能介绍 | 91免费高清 | 特级黄色电影 | 亚洲欧洲精品视频 | 成年人免费av网站 | 欧美亚洲成人xxx | 亚洲第一中文网 | 免费人成在线观看网站 | www.狠狠操.com | 亚洲无线视频 | 天天操天操 | 国产在线观看91 | 免费的黄色av | 欧美在线观看视频免费 | 国产精品99久久久久 | 日韩精品你懂的 | 2024国产精品视频 | 国产人成一区二区三区影院 | 精品视频一区在线 | 午夜精品久久久久久久99无限制 | 色综合 久久精品 | 欧美性久久久久久 | 亚洲1区在线 | 国产黑丝一区二区 | 91人人澡人人爽人人精品 | 日韩视 | 亚洲视频观看 | 国产精品久久久久久久久久99 | 日韩在线免费小视频 | 欧美成人一二区 | 久久国精品 | 日本xxxxav| 亚洲免费av在线 | 日韩理论片在线观看 | 精品久久久久久久久久久院品网 | 国产99区 | 精品网站999www| 中文字幕在线观看网址 | 久久精品视频免费播放 | 国产视频一区在线 | 国内丰满少妇猛烈精品播 | 992tv在线成人免费观看 | 狠狠色丁香 | 午夜av免费 | 免费在线播放视频 | 日韩免| 欧美aaaxxxx做受视频 | 久久久精品午夜 | 国产精品美女久久久久久久久久久 | 欧美亚洲国产日韩 | 国产尤物一区二区三区 | 亚洲aaa毛片| 波多野结衣精品视频 | 射综合网| 夜夜嗨av色一区二区不卡 | 一区二区三区免费在线播放 | 亚洲精品电影在线 | 成人av一区二区三区 | 亚洲影院一区 | 免费a级黄色毛片 | 在线中文字幕视频 | 日韩国产在线观看 | 国产中文字幕91 | 激情五月婷婷激情 | 日韩一级成人av | 久久久久久久久久久久99 | 国产在线观看网站 | 最新久久免费视频 | 伊人va | 六月色婷婷 | 黄色在线观看污 | 国产精品福利无圣光在线一区 | 欧美激情在线网站 | 国产99久久久精品视频 | 亚洲男模gay裸体gay | 欧美最猛性xxxxx(亚洲精品) | 精品一区二区在线免费观看 | 天天爽夜夜爽人人爽一区二区 | 成人在线免费视频观看 | 国产麻豆剧传媒免费观看 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 久久综合九色欧美综合狠狠 | 成人h视频在线 | 色在线高清| a视频在线观看免费 | av先锋影音少妇 | 国产在线国偷精品产拍 | 国产精品 视频 | 日韩欧美aaa | 2024国产精品视频 | 天天操天天摸天天爽 | 免费成人在线网站 | 国产精品久久久久久久久久久久午夜 | 18做爰免费视频网站 | 国产色女 | 久久99国产视频 | 麻豆国产精品va在线观看不卡 | 婷婷丁香狠狠爱 | 国产一区二区三区免费观看视频 | 1区2区视频 | 国产美女精品在线 | 中文字幕亚洲国产 | 国产又粗又猛又色又黄视频 | 99免费在线| 一二三精品视频 | 成年人视频在线免费 | 蜜臀aⅴ国产精品久久久国产 | 黄色在线观看网站 | 在线看国产精品 | 日本高清免费中文字幕 | 中文字幕在线国产精品 | 国产一二区视频 | 日韩精品免费一区二区在线观看 | 久久av网 | 久久天天躁狠狠躁夜夜不卡公司 | 亚洲精品高清一区二区三区四区 | 菠萝菠萝蜜在线播放 | 久久久久| 四虎永久精品在线 | 操处女逼| 国产999精品久久久久久麻豆 | 久草在线观看 | 久久成人国产精品入口 | 五月婷婷综合激情网 | av网站免费看 | 国产精品网红福利 | 超碰97在线看 | 中文字幕在线观看第二页 | 天天色影院 | 国产精品久久久久久久久久久久午夜 | 国内小视频在线观看 | 一本一本久久a久久 | 在线看国产一区 | 五月婷婷操 | 波多野结衣在线视频免费观看 | 国产精品一级在线 | 国产成人精品综合久久久久99 | 日韩精品久久久久久久电影99爱 | 精品中文字幕在线观看 | 日韩高清黄色 | 天天干天天想 | 日韩免费电影在线观看 | 91精品国产九九九久久久亚洲 | 国产国语在线 | 蜜桃av久久久亚洲精品 | 91黄色免费网站 | 色婷婷激情 | 在线观看免费 | 精品国产免费观看 | 日韩电影久久久 | 成人一区不卡 | 91精品国产99久久久久 | 亚州av免费 | 亚洲一区日韩精品 | 在线免费观看视频一区二区三区 | 国产久视频 | 国产美女免费观看 | 久久精品99国产国产精 | 欧美日韩另类在线观看 | 成人中心免费视频 | 精品国产观看 | 婷婷综合成人 | 一级黄色视屏 | 欧美激精品 | 亚洲国产午夜 | 国产黄色片免费看 | 日韩a在线观看 | 97久久久免费福利网址 | 亚洲人在线视频 | 亚洲精品乱码久久久一二三 | 亚洲精品在线一区二区 | 亚洲精品视频免费看 | 992tv在线观看 | a级国产乱理论片在线观看 特级毛片在线观看 | 国产成人精品电影久久久 | 在线成人免费 | 九九久久久 | 午夜丰满寂寞少妇精品 | 四虎影视久久久 | 在线免费观看视频一区二区三区 | 一区中文字幕在线观看 | 人人超在线公开视频 | 中文字幕永久免费 | 97视频在线观看免费 | 日韩av在线高清 | 国产高清在线永久 | 午夜视频一区二区 | 国产黄在线 | 99色人 | 91中文字幕在线观看 | 天天干人人 | 日韩久久久久久久久久久久 | 狠狠狠色丁香婷婷综合激情 | 久久艹在线 | 欧美最猛性xxxxx亚洲精品 | 婷婷精品 | av网站地址| 日本精品久久久久影院 | 久久精品国产亚洲精品2020 | 久久综合福利 | 色噜噜日韩精品欧美一区二区 | 五月天亚洲综合 | 日韩欧美高清在线 | 日韩高清激情 | 久久永久视频 | 久久精品综合网 | www.91国产| 免费观看国产视频 | 国产精品久久久久久久久久直播 | 天堂成人在线 | 久久久国产精品一区二区三区 | 中文字幕在线播放av | 亚洲一级久久 | 国产视频网站在线观看 | 伊人资源站 | 国产精品 国内视频 | 久久久久欠精品国产毛片国产毛生 | wwwwwww色 | 免费在线观看中文字幕 | 久久成人久久 | 日韩一级电影在线 | 青青看片 | 国产二区av | 国产一级片播放 | 男女全黄一级一级高潮免费看 | 爱干视频 | 韩国精品一区二区三区六区色诱 | 人人插人人舔 | 91视频xxxx| 久久精品欧美视频 | 久久久久国产精品厨房 | 国产亚洲久一区二区 | 国产很黄很色的视频 | 欧美最猛性xxxx | 国产中出在线观看 | 少妇性bbb搡bbb爽爽爽欧美 | 成人在线视频在线观看 | 久久黄色免费视频 | 99久久久成人国产精品 | 久久久精品影视 | 97色婷婷 | 国产精品久久久久一区 | 国产视频一区二区在线播放 | 国产又粗又猛又色又黄网站 | 在线中文字幕视频 | 韩日三级在线 | 99热精品免费观看 | 国产日本在线 | 在线观看亚洲专区 | 国产成人福利在线 | 国产精品久久久电影 | 视频在线99| 久久精品国亚洲 | 国产精品麻豆免费版 | 日韩精品一区二区三区免费观看 | 精品国产自 | 午夜少妇| www免费看片com | 最新国产在线观看 | 欧美精品一区二区三区四区在线 | 国产精品久久久久久影院 | 一区二区三区电影在线播 | 91在线看 | aⅴ精品av导航 | 黄色在线观看污 | 91av视频在线观看 | 黄色网在线免费观看 | 国产群p视频 | 欧美极品xxxx | 麻豆国产电影 | 婷婷五情天综123 | 免费看网站在线 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 免费观看成人网 | 91网在线看 |