以前用老婆的电脑(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虽然麻烦一点但也做到了,而且还很有成就感,故随笔一篇以备下次刻录参考。
|