当前位置:Linux教程 - Linux综合 - 一步一步如何在Linux下刻录数据光盘

一步一步如何在Linux下刻录数据光盘

  本着让Linux精神发扬光大宗旨,我将部门原来的Windows2000服务器上所有的数据与提供的服务全部迁移到新建的Linux服务器上。在我即将要把这台老Windows2000服务器扔到一个阴暗的小角落的时候,眼前一亮,忽然发现这台破机器上还有一个Sony光盘刻录机。我一向有取它人所弃,变废为宝的习惯,所以自然不能放过这个好东东。    如何在Linux下使用刻录机呢?我搜遍网上资料库,也没有能找到一个比较有效及全面的教材。无奈之下,只能闭关一个人瞎琢磨一番,当我抽完第7根香烟的时候,一个为sUCcess的字符串终于出现屏幕上。我惊喜不已,大声尖叫一下,吓得身边正在美食的老兄,手指一抖,一块好大的肥肉落在地上。此兄心痛不已,对我龇牙咧嘴下止,并向上天发誓:三日内必取我的项上人头,决不失言,否则……。此及后话,我就不再多言,进入我们的主题吧。    硬件环境:  cpu:    Inter Pentium2 400  mem:    384MB  cdrom:   ASUS  cdr:    SONY    软件环境:  os:     Redhat 7.0  kernel:   2.2.16    在Linux下实现光盘刻录的软件最著名的工具是cdrecord。实际上它是一个工具包,其中包括cdreocrd, mkisofs, cdda2wav。dda2wav是针对于刻录Audio CD的,不在这篇文章的说明范围之内。我们重点是说明cdrecord,mkisofs的用法,以用如何配置SCSI与IDE设备。许多图形界面的光盘刻录软件其实在底层调用的就是cdrecord,这些软件我们可以在www.linuxbyte.net中找到,并且下载使用它们。在Linux系统中,cdrecord是与SCSI通用设备一起工作的,我想大部份读者用的都是IDE光盘刻录机,所以配置的关键就是将IDE设备摸拟成SCSI设备。要想将IDE设备摸拟成SCSI设备,系统内核就必须支持ATAPI-SCSI emulation或SCSI host adapter emulation,如果你的系统内核现在还不是这样配置的,那么你就需要重新编译内核并且升级它。幸好,我手中上使用的这个Linux版本就已经默认支持了。    第一步,我们应该知道我们的光驱与刻录机对应是IDE哪一个通道,在Linux下是使用哪一个设备名。因为我们要在系统引导时让系统内核知道哪些设备需要模拟成SCSI设备,我们就得传递一些参数给系统内核,具体做法如下:    编辑lilo.conf文件,给Linux引导模块增加一行参数。    append = "hdb=ide-scsi hdd=ide-scsi"    执行lilo命令,进行回写操作。    hdx是指光驱或刻录机在Linux下对应的IDE设备名。如果你打算进行光盘数据直接刻录时就需要如上的两个字段,因为cdrecord在读写数据时要求两个设备都为SCSI接口的。但是如果你只是通过先生成ISO中间文件,然后再刻录这种形式的话,就只要指定其中一个字段就行了。如下:    append = "hdd=ide-scsi"    第二步,当重新引导系统完毕后,我们现在需要做得是将sg与ide-scsi这两个内核驱动模块加载到系统内核里去,并为它们设定SCSI设备名。sg是指SCSI设备驱动模块,ide-scsi是指IDE设备摸拟SCSI设备驱动模块。操作如下:    modprobe sg  modprobe ide-scsi    执行这两个操作后,我们执行lsmod命令,查询系统内核已加载模块信息,对我们操作的结果进行验证,显示信息如下:    Module Size Used by  ide-scsi 7336 0 (autoclean)  sg 15704 0 (unused)  vfat 9404 0 (autoclean) (unused)  fat 30688 0 (autoclean) [vfat]  soundcore 2596 0 (autoclean) (unused)  autofs 9124 1 (autoclean)  lockd 31176 1 (autoclean)  sunrpc 52964 1 (autoclean) [lockd]  3c59x 19844 1 (autoclean)  agpgart 18600 0 (unused)  usb-uhci 19052 0 (unused)  usbcore 42088 1 [usb-uhci]    执行上面的操作后,我们就可以察看内核数据映像文件,得到设备更详细的资料,最重要的是IDE模拟设备对应SCSI设备的id号。    cat /proc/scsi/scsi  -------------------------------------------------------------------  Attached devices:  Host: scsi0 Channel: 00 Id: 00 Lun: 00  Vendor: ASUS Model: CD-S400/A Rev: 2.0S  Type: CD-ROM ANSI SCSI revision: 02  Host: scsi0 Channel: 00 Id: 01 Lun: 00  Vendor: SONY Model: CD-RW CRX100E Rev: 1.0m  Type: CD-ROM ANSI SCSI revision: 02    当然,你的显示内容可能有所不同,但形式应是一样的。    系统即然已经认出来了我们模拟的SCSI设备,但是我们还是要提供SCSI设备名映射它们,以便能让刻录软件能够使用。现好内核系统在加载sg时,就自动将/dev/sg0,/dev/sg1与我们的设备建立的对应关系。    现在你可以使用scsi_info这个命令察看得到SCSI设备信息。    scsi_info /dev/sg0  ---------------------------------------------------------------  SCSI_ID="0,0,0"  MODEL="ASUS CD-S400/A"  FW_REV="2.0S"    scsi_info /dev/hdd  ---------------------------------------------------------------  SCSI_ID="0,1,0"  MODEL="SONY CD-RW CRX100E"  FW_REV="1.0m"    这时我们已经正确地加载了这些设备。    第三步,如果你是使用图形界面的操作软件,以下的内容你就不必再继续往下看了,你只要按照软件的提示,填入一些相应的参数,就可以执行操作了。我们在这里重点讲得是如何在命令行模式下进行操作。不管是你是想选择文件进行刻录,还是直接进行光盘数据刻录,我们都需要生成一个中间ISO文件。生成ISO文件的任务就接给mkisofs这个命令来完成了,请输入如下命令:    mkisofs -r -o temp/aaa.iso data/    具体参数解释如下:  -r 支持长文件名  -o 指定输出目标文件    目标目录最后在新生成光盘中做为根目录存在,里面存放的是你需要刻录的数据。这个目标目录最好是新建的,千万不用选择/tmp或用户主目录,因为这些目录内会有一些临时文件或隐含文件存在。我刚开始不知道,最后才发现新刻录的光盘里根目录下有一些莫名其妙的文件。如果你是从光盘直接生成ISO文件,就需要用到dd这个命令了。请键入如下命令:    dd if=/dev/cdrom of=temp/aaa.iso    具体参数解释如下:  if 接定数据源设备  of 接定目录文件    生成的ISO文件,随时通过以下的命令进行验证,查看结果是否是我们所想要的。    mount aaa.iso -r -o loop /mnt/test    可写光盘的容量都是有限的,所以我们必须提前知道我们生成ISO文件的大小,否则会在刻盘时发生错误,到时候后悔也来不及了。直接察看ISO文件大小是可以的,但是我们要生成以后才知道,在这里我来告诉大家一个小技巧,如何察看一个目录,以及这个目录下所有的子目录中的文件大小的总和:    du -m    最后一行数据就行了,数据单位是MB。    第四步,就也是最后一步了,我们只需要用cdrecord命令进行光盘刻录就行了。请键入如下命令:    cdrecord -v speed =2 dev=0.1.0 test/aaa.iso    具体参数解释如下:  -v 进行数据校验  speed 指定刻录机写盘的速度  dev 指定刻录机的SCSI设备的ID号。  -dummy 虚拟操作。
[1] [2] 下一页 

(出处:http://www.sheup.com)


上一页 [1] [2]