外置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文件的内容后使用下面命令:
# umount /mnt/iso
最后使用cdrecord命令刻录:
# cdrecord -scanbus
查看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 查看帮助
光驱的驱动及刻录机的使用
1.光驱的驱动过程
编译内核时,在A TA/IDE/MFM/RLL选单中都会有IDE/ATAPI CDROM support的选项,通常所见到的内核都将这个部分编译在了内核中,所以不需设置光驱就可以使用。
下面看一下系统启动时光驱是如何驱动的:
# dmesg |grep CD
hdc: HL-DT-STCD-RW/DVD-ROM GCC-4240N, ATAPI CD/DVD-ROM drive
Uniform CD-ROM driver Revision: 3.12
一般的通用CD/DVD-ROM驱动程序就可以将光驱驱动起来,不需要特别的配置。
如果遇到的是SCSI光驱,则一般的内核也可以驱动,因为在编译内核时,一般会将SCSI的内容编译出来。
如果没有SCSI的光驱驱动,则可以自己手动编译。
make menuconfig(或xconfig)时,在SCSI support 选单中只要将SCSI support设置为“Y”或“M”(Y代表该部分编译在内核中,M表示该部分编译为内核模块);SCSI CD-ROM support设置为“Y”或“M”;SCSI generic support设置为“Y”或“M”,这样就可以驱动SCSI接口的光驱了。
2.CD/DVD刻录机的驱动及使用
现在CD或DVD刻录机越来越普及,那么在Linux下如何使用内置的CD或DVD刻录机呢?默认的情况下,系统会将刻录机视作只读的驱动器,只加载普通的CD/DVD-ROM驱动,光驱无法写入。
因此,需要用ide-scsi 伪设备驱动程序来驱动刻录机,将普通的IDE接口的设备模拟成一个SCSI接口的设备,这时才能向其中刻录。
我们可以使用三种方式来实现将IDE光驱模拟为SCSI光驱。
假设使用GRUB作为bootloader,刻录机安装在第二个IDE接口,是主设备,则它默认应该为/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)直接编译内核
不编译ATA/IDE/MFM/RLL选单中的IDE/A TAPI CDROM support部分,但是要编译对SCSI 光驱的支持。
上面三种方法都是不希望系统用自带的普通CD/DVD-ROM驱动程序去驱动刻录机,希望将刻录机模拟成一个SCSI设备,其中第一种方法最简单,成功后就可以通过以下命令来刻录CD或DVD光盘。
# mkisofs -Jv -V examplecd -o example.iso /root/
将/root/目录下的文件做成一个名叫example.iso的光盘镜像文件,该文件的卷标为xamplecd。
还可通过命令将该文件加载到/mnt/iso文件夹中,可以自由添加删除镜像中的文件,但要注意不要超过光盘的容量。
# mkdir /mnt/iso
# mount -t iso9660 -o loop example.iso /mnt/iso
调整/mnt/iso文件的内容:
# umount /mnt/iso
最后使用cdrecord命令来刻录:
# cdrecord -scanbus
查看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参数。