[LinuxFocus-icon]
首页  |  站点地图  |  索引  |  搜索

新闻 | 过往期刊 | 链接 | 关于LF
This document is available in: English  Castellano  ChineseGB  Deutsch  Francais  Nederlands  Portugues  Russian  Turkce  

[Photo of the Authors]
by Katja and Guido Socher
<katja(at)linuxfocusorg, guido(at)linuxfocus.org>

About the authors:

Katja 是LinuxFocus的德国编辑。她喜欢Tux、电影、照相和大海。 Katja的主页

Guido是一个长期的Linux爱好者,他非常喜欢Linux,因为它是由一群真诚开放的人设计,这也是为什么我们称之为开放源代码的原因之一。Guido的主页


目录:

 

Linux下刻录光盘

[Illustration]

摘要:

本文讲述了怎样在Linux环境下刻录光盘。



可能你已经读过Katja在我们过去刊物上发表的A whole new world这篇文章,现在我们继续Linux旅程。假如现在你有大量的声音和图像资料,你想把它们带回家,想象一下你该怎么来处理这件事情。把这所有的这些东西刻录到光盘上就是一个好主意,本文将告诉你怎么来刻录光盘。

 

你需要什么?

硬件配置:
当然Linux必须已经安装好了并且在你的计算机上跑着,还要有一个光盘刻录机来完成工作。
如果你有一个SCSI刻录机的机会,那就非常棒了,你的刻录机可以被Linux核心可以直接识别出。你仅是检查你的SCSI卡是否被Linux支持就行了(参见 Linux支持的硬件库 )。所有的SCSI光盘刻录机都可以在Linux下工作。
如果是ATAPI/IDE接口的刻录机,你就不得不配置SCSI接口模拟了,使你的刻录机看上去象SCSI 设备,尽管硬件上的物理连接是通过IDE总线。xcdroast里面的README.atapi文件中作为例子描述了如何配置,我们也推 荐你阅读 linuxdoc.org 里面的CD Writing HOWTO章节。
对于USB刻录机请参考 mobilix.org/linux_usb_cd.html 里面的USB-CD Writer HOWTO章节。
由于我们都仅有使用SCSI接口刻录机的经验,因此本文所讲述的有关你容只能在SCSI刻录机上重现 。

光盘刻录软件:
如果要刻录光盘你需要以下程序:

  1. cdrecord: 这个程序实际上与刻录机通讯。
  2. mkisofs: 制作数据光盘是需要这个程序。用于生成一个叫ISO映像的光盘文件系统映像。
  3. cdda2wav: 从音乐光盘中读取数字音乐数据需要它。
上面这三个软件都包含在cdrtools这个包里面,你可以从www.xcdroast.org 或者ftp.fokus.gmd/pub/unix/cdrecord/下载。
有了这些工具你就已经可以采用命令行来刻录光盘了。如果你想要一个更加漂亮友好的图形界面 的话,此外你还需要一个前台软件。虽然有很多前台软件可供利用,不过这篇文章中只讨论xcdroast( http://www.xcdroast.org )和koncd( http://www.koncd.org/ )。xcdroast似乎是用得最多的前台了,我们喜欢用koncd 是因为它确实简单易用。

安装

在大多数情况下xcdroast已经安装在你的计算机上了,至少Redhat发布版本已经采用pam-library库编译了,这就意味着如果你想要刻录光盘它就总向你要root密码,你或许不希望把root密码给每一个想刻录光盘的用户吧。第二个缺点是不允许通过网络启动这个程序。因此,最好从http://www.xcdroast.org下载最新版本。这里有预编译好的包供大多公开发行版本直接利用。
koncd可以从www.koncd.org下载。最近版本的koncd依赖于QT/KDE的新特点。如果你不想在升级QT和KDE库上花费时间你可以用旧一点版本的koncd。在这篇文章中采用的是koncd-0.7.5运行在redhat7.1下。
 

普通用户(非root用户)刻录光盘

要刻录光盘你首先要有用于硬件通讯的/dev/sg*下这些设备文件的写权力。但是cdrecord也使用了一些要求root权限的实时扩展以避免在刻录过程中缓冲区欠载。最好的解决办法是在cdrecord和cdda2wav上使用SUID。啊哈?SUID?不用担心。如果你想准确了解SUID是什么,你可以阅读Guido写的 文件权限 这篇文章,现在你只要输入下面两条命令然后又忘记它就足够了,呵呵。:-)

chmod 4111 /usr/bin/cdrecord
chmod 4111 /usr/bin/cdda2wav

大家都知道使用SUID具有一定潜在的安全风险,不过跟把root口令告诉每一个想要刻录光盘的用户来说它的安全风险绝对的少。
如果你的光盘刻录机已经被正确地识别出来了,现在你就可以测试一下。只要运行:

cdrecord -scanbus

如果一切正常的话你应该看到类似于下面的输出:

0,6,0 6) 'PLEXTOR ' 'CD-ROM PX-W8220T ' '1.03' Removable CD-ROM

上面那些数字和描述可能随着你的硬件安装不同而不同。
你也可以在xcdroast或者koncd两者之一的SETUP按钮上单击以下,它们会检测你的刻录机是否被正确识别。
现在让我们最后开始刻录光盘了。
 

刻录光盘的一般注意事项

刻录光盘的四个必要步骤:
  1. 必须选择你要刻录到光盘上的数据/音乐。
  2. 必须给将要被刻录的光盘设置一些选项。例如如果你想刻录一张音乐光盘你就应该在TAO和DAO模式之间选择,如果刻录一张数据光盘,你就要设置一些文件系统的选项。
  3. 你必须创建一个用于将要被刻录到光盘上的文件的映像目录。如果你仅想把一张光盘完全复制到另外一张光盘你用"write on the fly"就够了,否则你必须先在硬盘上创建一个映像。
    映像目录是将要写入光盘的数据临时存储的地方。对于音乐光盘来说它们是索引文件和饱含音乐的WAV文件,对于数据光盘来说是一个叫ISO映像的大文件。
  4. 正式开始刻录光盘拉。
光盘一般需要是一次性地写入,并且在写的过程中数据流不能被干扰。由于实时扩展缓冲区欠载导致刻坏光盘这仅是视窗用户的一个问题。在Linux环境下你不用真的需要防止缓存欠载(BURN proof)。在光盘刻录机里面有一种叫做先进先出(FIFO)的特殊缓冲区用来补偿小的干扰,在linux下这就通常足以避免刻录失败。尽管如此,你仍要小心谨慎,不要干那些占用CPU资源太多的工作。你可以浏览网页、编译软件...........但删除大的文件就可能出现问题,也许它足够干扰刻录写的过程,从而导致刻坏光盘。
如果你担心缓冲欠载的话你可以在真正刻录光盘之前采用模拟写入(假写入)选项在刻录光盘之前首先测试光盘写入是否工作。刻录过程被采用真实数据测试,但是刻录机里面的激光头是关闭的。首先运行一次测试总比刻坏一张光盘以后重新来过好得多的。
实际上你通常必须一次性地刻录,这就意味着如果你拉了某些东西,即使是一个很小的文件的话你都得重新刻录一次。当然也有你能过后再添加一些东西的多段刻录的可能性,不过我们在这里不讨论这种方法,因为多段刻录在很多光盘刻录机上不能读盘,有时候这也未必是真的,如果一张光盘的价钱低到我们绝对没有理由不用这种方法的程度。
 

设置

当你启动koncd或者xcdroast的时候你就会看到它们都有一个setup的按钮。在这里你可以发现你的刻录机是否被正确识别出来以及设置一些普通选项。
[xcdroast: run as root to configure] 现在让我们来看看xcdroas和koncd的设置过程:
 

(单纯的)音乐(音频)光盘

这里你应该先考虑一点格式上的问题。如果要歌曲是从另外一张音乐光盘上来的就没有问题了,你可以仅继续拷贝这张光盘就行了。但是另外你得注意到cdrecord可以识别AU和WAV文件格式并且自动把它们转换到CD播放器可以播放的正确的格式,但是对于其它格式你就要先把它们转换到WAV格式了,不然刻录好后听到的只有噪音了。转换MP3格式到WAV格式你可以采用下面的命令行:
mpg123 -w /tmp/song.wav song.mp3
这就可以让你用MP3音乐制作普通音乐光盘了。这样做虽然会占用更多的磁盘空间,不过这样做出来的CD几乎可以在任何一个CD播放器上播放。
在最后刻录光盘的时候你可以选择是否你希望拷贝是TAO或者DAO模式。在TAO模式中,你将在每首歌之间有2秒的停顿,而在DAO模式中不会有这样的间隔停顿,这使DAO模式是现场音乐记录的模式选择。TAO(=Track at Once)轨道刻录,DAO(=Disk at Once)整盘刻录。
你可以完整地拷贝一张光盘,或者混合从不同光盘来的歌曲,也可以是其它声音文件例如从互联网上下载来的。

让我们先来看看如何完整拷贝一张光盘来:

[xcdroast Duplicate CD]


现在让我们来看看如果你想从不同地方来的音乐刻录成一张音乐唱片你该做些什么:
 

(纯粹的)数据光盘

对于数据光盘来说需要一个文件系统,也就是我们经常说到光盘必须格式化。你必须选择你要的文件系统,这取决于你想要刻录出的光盘在什么操作系统上读。例如描述光盘文件系统的ISO-9660标准就不允许长文件名,因此针对这个标准就制定出了一些扩展标准。Linux和Unix系统可以使用RockRidge扩展标准,微软采用Joliet扩展标准。采用RockRidge格式你也可以有如同你从系统知道的那样具有权限等等。
推荐的方案是在同一张光盘上采用RockRidge和Joliet扩展标准。
如果你仅想从另外一张已经存在的光盘拷贝到一张光盘上就不用担心这么多了,因为那张光盘已经有了一个文件系统,这个也可以被拷贝的。

[xcdroast Master CD]

如果你想从你的硬盘里面拷贝数据:
[koncd Master CD]
 

备份你的home目录

基本上你可以用"纯数据光盘"下讲述的方法备份所有东西。如果你的home目录下的数据量太大以至一张光盘不能装下的话你就应该采用选择单个子目录把它们写进不同的光盘。
 

提示和窍门

在最后刻录光盘前检查ISO映像是否完好是非常有用的,可以装上ISO映像当作一个真实的光盘来做这个:

转换到root用户:su -
创建一个空目录(作为装载点): mkdir /tmp/mycd
装上ISO映像(连接ISO映像到目录): mount -o loop -t iso9660 Image.iso /tmp/mycd
现在你可以用"ls"命令检查光盘映像了: ls /tmp/mycd
如果看上去没问题的话就可以卸载它了: umount/tmp/mycd

...........然后刻录映像到你的光盘去啦。
 

命令行工具

前面我们已经讨论了用来刻录光盘的两个图形前台软件,你也能仅采用命令行来刻录光盘。如果你察看cdrecord的帮助的话你可以看到好数百条选项,啊噢......不用害怕啦。做起来比起初看上去要简单的多。下载cdrecordeasy和mkisofseasy这两个perl脚本。
它们包含在easycdscripts这个包里面 (easycdscripts下载页面)
用下面的命令解开包:

tar zxvf easycdscripts-0.1.tar.gz

现在运行命令cdrecord -scanbus。找到刻录机所在的行,记住这行开始的数字,这些数字看上去类似于0,4,0或者0,6,0......
编辑cdrecordeasy文件,在文件开始那块找到$dev=......这行,在$dev=......后面输入前面看到的数字。
现在我们的两个小脚本文件的安装就算完成了。创建一个数据光盘现在非常容易了:
  1. 拷贝所有你想刻进光盘的文件到一个目录下(例如 ~/cdrom)。今天来说硬盘非常大而且便宜,拷下几百M应该没有问题的拉。
  2. 运行命令: mkisofseasy ~/image.iso ~/cdrom
    这就把~/cdrom下的所有文件生成到一个ISO映像里面去了。
  3. 运行如下命令来刻录光盘: cdrecordeasy ~/image.iso
就这样了,是不是比刚开始看到的容易得多拉?:-)

 

参考文献

 

对这篇文章发表评论

每篇文章都有各自的反馈页面。在这个页面里,您可以提交评论,也可以查看其他读者的评论:
 反馈页面 

主页由LinuxFocus编辑组维护
© Katja and Guido Socher, FDL
LinuxFocus.org

点击这里向LinuxFocus报告错误或提出意见
翻译信息:
en --> -- : Katja and Guido Socher <katja(at)linuxfocusorg, guido(at)linuxfocus.org>
en --> zh: SunDay <alasx2000(at)hotmail.com>

2002-01-11, generated by lfparser version 2.23