外置USB光驱及刻录机的驱动
USB光驱与其它的USB存储设备使用类似,只不过USB光驱会被识别为SCSI光驱,如/dev/sr0或/dev/scd0等设备,它需要sr_mod.o(SCSI CD-ROM设备)驱动模块。
# modprobe sr_mod //如果sr_mod模块没有编译,请重新编译内核,在SCSI部分
# mount -t iso9660 /dev/scd0 /mnt/cdrom
|
关于外置刻录机驱动详见本刊今年第8期“Linux完全驱动(二)”:
# mkisofs -Jv -V examplecd -o example.iso /root/
|
将/root/目录下的文件做成一个名叫example.iso的光盘镜像文件,该文件的卷标为examplecd;还可通过下面命令将该文件加载到/mnt/iso文件夹中。
# mkdir /mnt/iso
# mount -t iso9660 -o loop example.iso /mnt/iso
|
在调整完/mnt/iso文件的内容后使用下面命令:
最后使用cdrecord命令刻录:
查看SCSI总线中刻录机的配置信息:
Cdrecord 2.0 (i686-pc-linux-gnu) Copyright
(C) 1995-2002 J?rg Schilling
Linux sg driver version: 3.1.25
Using 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.c
1.75 02/10/21 Copyright 1997 J. Schilling').
scsibus0:
0,0,0 0) 'HL-DT-ST' 'RW/DVD GCC-4240N' 'E112' Removable CD-ROM
0,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) *
|
从上面可以看到目前光驱在SCSI总线的参数,然后根据参数输入下面的命令刻录光盘:
# cdrecord -v -eject speed=24 dev=0,0,0 example.iso
|
“speed=24”是以24速来刻录光盘,“dev=”后加上刚才显示的刻录机的SCSI参数。如果是外置DVD,则应使用dvdrecord命令,其用法与cdrecord相同。
# rpm -ivh dvdrecord-0.1.2-12.i386.rpm
# man dvdrecord 查看帮助
|
USB鼠标和键盘的驱动
1.鼠标的驱动
在Red Hat Linux中,可以使用mouseconfig命令来配置鼠标,选择USB接口鼠标即可,如图5所示。

图5 使用mouseconfig配置USB接口鼠标
如果使用手动的方式来配置,可以人工加入以下模块:
# modprobe hid
# modprobe input
# modprobe usbmouse
# modprobe mousedev
|
2.USB键盘的驱动
# modprobe hid
# modprobe input
# modprobe usbkbd
# modprobe keybdev
|
IEEE1394设备的驱动
IEEE1394又称Firewire(火线)、i-Link(Sony的叫法),它跟USB接口类似,目前可以提供400Mb/s的带宽,虽然在理论上它较USB 2.0的480Mb/s的速度慢一些,但是在实际使用中,Firewire要比USB 2.0的设备快不少,所以仍然有很多设备配备这种接口,如DV(数字摄像机)和移动硬盘等。
与USB相比,Firewire的通用性不够强,得到的支持也较少。一般主板上不带该Firewire的芯片,通常是购买带1394接口的PCI卡来支持1394的设备。对于1394设备,Linux内核2.4.10之后的版本都可以支持。IEEE1394的驱动放在以下位置:
# ls /lib/modules/2.XXX/kernel/drivers/ieee1394
amdtp.o dv1394.o ieee1394.o raw1394.o video1394.o
cmp.o eth1394.o ohci1394.o sbp2.o
|
IEEE1394的驱动方式较USB大同小异,只是首先加载的是对1394总线的驱动(ieee1394.o)和1394芯片的驱动(ohci1394.o)。如果使用1394卡连接DV,那么需要1394视频驱动(video1394.o)和DV视频I/O驱动(dv1394.o);如果需要访问的是1394外接硬盘或CD-ROM、刻录机等,则需要对SBP-2协议的支持(sbp2.o);如果使用1394接口的以太网卡,则需要加载驱动eth1394.o。
如果没有某种设备的驱动,则可以重新编译内核模块,选择以下模块:
# cd /usr/src/linux-2.XXX
# make xconfig
|
选择其中的IEEE1394选项,如图6所示,然后重新编译模块:
# make dep
# make modules
# make modules_install
|
驱动IEEE1394接口的硬盘或光驱时,需要预先加载的驱动有ieee1394.o和ohci1394.o:
上面代码会将两样驱动全部装载上,因为ohci1394依赖于ieee1394。
硬盘需要的驱动是sbp2.o,插入硬盘后它应该会自动加载。与USB设备相同,硬盘会被模拟成SCSI设备,请留意屏幕上显示的信息,看看是被模拟为sda还是其它的设备。使用以下命令使用硬盘:
# mkdir /mnt/1394
# mount -t vfat /dev/sda1 /mnt/1394
|

IEEE1394光驱应该使用设备为/dev/scd0,如果在插入设备时没有自动加载,则可以试着手动加载sbp2模块及SCSI模块:
scsi_mod.o 对SCSI设备的支持; sd_mod.o 对SCSI硬盘支持模块,对应硬盘;
sr_mod.o 对SCSI光盘支持模块,对应光驱;
sg.o SCSI序列的通用支持模块。
IEEE1394光驱驱动与USB下相应的设备驱动非常相似,这里就不再赘述了。
现在各种移动设备层出不穷,花样繁多,目前国内网站上的资料不是很全,使用google搜索英文网站往往能得到许多自己需要的东西。
优盘或USB硬盘常见问题解决方法
1. 加载/dev/sda1时出错
这是因为较早的优盘不分区,它们使用/dev/sda,也有可能使用/dev/sda2或sda3等设备文件,请仔细观察fdisk -l /dev/sda的输出结果,看一看优盘的分区到底是哪一个。
2. 主机中已有SCSI或USB设备
主机中已经有SCSI或USB设备,比如/dev/sda硬盘或另一个优盘,这时可以尝试sdb或sdc等设备。实际上每一次在插入优盘时可以留意一下屏幕上显示的信息,那个优盘被转换成哪一个sd设备。
3. 优盘插入后没有反应,访问/dev/sd设备也没有反应
这时可以查看相关模块是否已经加载,如果没有加载可以手动加载,然后重新插入该设备,看看是否有反应:
# modprobe ehci-hcd; modprobe usb-uhci; modprobe usb-storage.o
# modprobe ide-scsi; modprobe scsi_mod.o; modprobe sd_mod.o
|
4. 设备驱动已经加载,如何知道访问哪个设备文件
对比加载驱动前和加载驱动后的/proc/devices文件,多出的那一行就是这种驱动程序注册的主设备号。例如,对比OV511加载前后/proc/devices文件的变化,就会发现多出如下一行:
# cat /proc/devices
Character devices:
...
81 video_capture
...
|
上面代码表示C型设备、主设备号为81的设备文件是访问OV511驱动的入口,再对照/usr/src/Documentation/devices.txt中查找C类型的主设备号81,就可以知道对应如下设备文件:
81 char video4linux
0 = /dev/video0 Video capture/overlay device
|
上面简要介绍了Linux下常用的USB、IEEE1394、PCMCIA设备驱动的安装与配置,希望能对读者安装与使用这些设备提供帮助。
|