用FreeBSD刻录汽车用MP3光盘

用FreeBSD刻录汽车用MP3光盘
From : http://blog.chinaunix.net/u/29188/showart_2181534.html
 
  以前用老婆的电脑(WinXP)刻录过MP3光盘,后来由于病毒呀,越来越慢呀等各种各样的原因,把她的电脑换成了Ubuntu9,但再次刻录MP3光盘时,却发现Ubuntu刻出的MP3光盘拿到汽车上放不出来,由于对Linux不熟悉和并且用得也是Ubuntu自带的光盘刻录软件,所以就懒得去研究什么原因。今天由于要给朋友刻两张央广国学堂的录音MP3光盘,于是就想试试用我笔记本(神舟 W230R)上的FreeBSD来刻录。
  想搜一下关于MP3光盘的格式资料,发现除了各种各样现成的刻录软件外,都没有很具体地说明MP3光盘是什么样格式,当然从网络上的一些线索中也知道了,MP3光盘实际上就是纯数据光盘,并不是什么特殊的音乐光盘。于是抱着试试的想法,开始了第一次用FreeBSD刻录光盘的经历。

1, 首先是如何创建光盘映像(xxx.iso),就是安装 cdrtools套件,并使用其中的mkisofs了,
  $cd /usr/ports/sysutils/cdrtools
  $sudo make install clean
  $rehash

man了mkisofs后,发现还真是复杂,有太多的options,仔细研究后终于确定了一组options,比如:

  $mkisofs -J -r -V GXT01 -o GXT01.iso GXT01

按照mkisofs man的解释,-J 可以刻录出windows可以识别的Joliet格式,-r 可以刻录出Unix可以识别 Rock Ridge格式。-V是卷标。

2, 创建MP3的目录,比如建立一个temp目录,并在里面为每一张光盘建立一个子目录。 为了保险起见,最好不要在子目录里再创建下层子目录了(似乎也没有那个必要)

  $mkdir temp
  $cd temp
  $mkdir GXT01
  $mkdir GXT02

然后copy MP3文件到每个子目录,并确保每个光盘目录下的内容不超过光盘的容量,我的光盘容量是700M。所以在copy过程中估摸着,经常用du查看目录的大小,差不多快 600多兆就可以了,因为光盘的容量计算是以1000做1K,而不是1024作1K。

3, 使用mkisofs创建iso文件(可能的话并用各种操作系统来测试这个光盘映像)。我用FreeBSD装载GXT01.iso,没有任何问题,但用虚拟的WinXP装载,却发现FreeBSD下所有的中文文件名,在WinXP里都是乱码,继续研究mkisofs,准备加两个参数 -input-charset utf8 -output-charset utf8 来试试,但发现mkisofs不支持utf8,在网上搜了一下,发现要使用 cdrtools-cjk才支持utf8。于是卸掉cdrtools,重新安装cdrtools-cjk。

  $cd /usr/ports/sysutils/cdrtools
  $sudo make deinstall
  $cd ../cdrtools-cjk
  $sudo make install clean
  $cd
  $cd temp
  $mkisofs -J -r -input-charset utf8 -output-charset utf8 -V GXT01 -o GXT01.iso GXT01

这次创建的iso在虚拟的WinXP下可以正常看到中文文件名了。

4, 准备刻盘。就用cdrtools里的 cdrecord,按照cdrecord的man,首先要定位机器上的刻录设备。
 
  $sudo cdrecord -scanbus

用这个命令,我发现我的系统没有找到刻录设备,看了FreeBSD的手册后,发现是内核配置少了几项,在内核配置里加上以下几项后,重新编译安装内核。

  device        atapicam # Access ATAPI device via SCSI sub system
  device        cd
  device        pass

内核升级后,dmesg可以看到(原来我的的确看不到有关cd0的信息)
  $dmesg | grep cd
  acd0: DVDR <HL-DT-ST DVDRAM GSA-T40N/JQ01> at ata0-master UDMA33
  acd0: FAILURE - INQUIRY ILLEGAL REQUEST asc=0x24 ascq=0x00 sks=0x40 0x00 0x01
  cd0 at ata0 bus 0 scbus1 target 0 lun 0
  cd0: <HL-DT-ST DVDRAM GSA-T40N JQ01> Removable CD-ROM SCSI-0 device
  cd0: 33.000MB/s transfers
  cd0: Attempt to query device size failed: NOT READY, Medium not present
 
再找刻录设备

  $sudo cdrecord -scanbus
  Cdrecord-Clone 2.01 (i386-unknown-freebsd8.0) Copyright (C) 1995-2004 Jörg      
  Using libscg version 'schily-0.8'.
  scsibus1:
    1,0,0    100) 'HL-DT-ST' 'DVDRAM GSA-T40N ' 'JQ01' Removable CD-ROM
    1,1,0    101) *
    1,2,0    102) *
    1,3,0    103) *
    1,4,0    104) *
    1,5,0    105) *
    1,6,0    106) *
    1,7,0    107) *
  $

可以看到设备号是 dev=1,0,0

5, 刻录。放入空白盘片后,准备刻录,cdrecord的options太复杂,很多专业的概念搞不清楚,于是按照man里的例子就用最简单的选项来刻录。

  $sudo cdrecord -v speed=8 dev=1,0,0 driveropts=burnfree GXT01.iso

几分钟后,就刻好了,先在本机上mount一下试试,

  $sudo mount_cd9660 /dev/acd0 /mnt
  $ls /mnt

可以读到了,再拿到老婆的Ubuntu上也可以读到盘。

  最后拿到车上(我的车是现代途胜,不知道其它车型的MP3支持如何)一试,发现可以用,而且也能显示中文歌曲名。到此,终于在FreeBSD里第一次刻录光盘,并成功刻录了MP3光盘。感觉到以前用Windows刻录时,到处找软件,找破解的那个费劲样,现在用FreeBSD虽然麻烦一点但也做到了,而且还很有成就感,故随笔一篇以备下次刻录参考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值