HOWTO:CD-Writing

作者:Winfried Trper [MAILTO] [email protected]

最新版本:v2.9.3, 23 July

轉為 Wiki: Ping (ping 'at' pingyeh 'dot' net), 2003 年 11 月 27 日


這一份文件處理在 LINUX 裏寫 CDs 的事兒‧



  1. 簡介
    1. 版本聲明 ( 這段不譯 )
    2. Suggested readings
    3. 名詞解釋 ( 這段不譯 )
    4. 支援的光碟燒錄器
    5. 支援的特性
    6. 通訊論壇
    7. 可得性
  2. 設定你的 Linux 系統來燒錄光碟
    1. 設定 Linux 核心
      1. 給 2.2 系統的特別提示
      2. 給 2.0 系列的特別提示
    2. 硬體和 devicefiles
      1. IDE/ATAPI 光碟燒錄器
      2. SCSI 光碟燒錄器
      3. 一般 SCSI devices
      4. 平行埠的光碟燒錄器
    3. 取得軟體來燒錄光碟
      1. 命令列工具
      2. Graphical user interfaces (optional)
  3. 燒錄光碟
    1. 燒錄光碟片 (純資料)
      1. 建立光碟影像檔
      2. 測試光碟影像檔
      3. 寫入光碟影像到光碟中
    2. 燒錄音樂光碟
    3. 混合式光碟
  4. 常問問題及答案
    1. "燒錄程序有多敏感"
    2. "fragmentation 會否影響輸出呢?"
    3. "是否可以將光碟影像檔儲存在 UMSDOS 檔案系統中呢? "
    4. "有無方法可以克服 iso9660 的限制?"
    5. "怎樣讀取及寫入音樂光碟?"
    6. "啟動系統後怎樣找尋SCSI-devices?"
    7. "可以進行一對一的光碟複製?"
    8. "Linux 可不可以讀取 Joliet 光碟?"
    9. "怎樣用可寫光碟機讀取光碟?"
    10. "怎樣放多些資料到光碟中?"
    11. "How to make bootable CD-ROMs?"
    12. "How to make CD-ROMs writable somehow?"
    13. "Is it possible to use several writers at once?"
    14. "Which media is the best?"
  5. 問題解決
    1. 在 Linux 下不行
    2. Error-message: No read access for 'dev=2,0'.
    3. 它不能在 DOS 一使用
    4. 燒錄過程中有 SCSI 錯誤
  6. 嗚謝 (這段不譯)

1. 簡介

現在有很多人使用 Linux 來燒錄光碟是因為它比較穩定和 容易。沒有藍色畫面和沒有找出軟硬體組合的困難。只要 你一旦正確設定好之後就能使用。這份 CD-Writing HOWTO 解釋了怎樣設定,怎樣將資料放上光碟上以及介紹一些有 趣的程式。

1.1. 版本聲明 ( 這段不譯 )

Copyright Winfried Trper 1996,1997,1998,1999. All rights reserved.

Redistribution and use, with or without modification, are permitted provided that the name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.

The author disclaims all warranties with regard to this document, including all implied warranties of merchantability and fitness for a certain purpose; in no event shall the author be liable for any special, indirect or consequential damages or any damages whatsoever resulting from loss of use, data or profits, whether in an action of contract, negligence or other tortious action, arising out of or in connection with the use of this document.

Short: read and use at your own risk.

1.2. Suggested readings

這網址 [WWW] CD-R FAQ 裏有一般的 FAQ 關於空白光碟,光碟燒錄器和燒錄光碟所需的軟 件。

要令你的光碟能夠讀取光碟,你起碼要看 Linux CD-ROM HOWTO Linux SCSI HOWTO 和 Linux Kernel HOWTO.

1.3. 名詞解釋 ( 這段不譯 )

CD-ROM stands for Compact Disc Read Only Memory, a storage medium utilizing an optical laser to sense microscopic pits on a silver shimmering disk. The silver shimmering comes from an aluminized layer which is the carrier. The pits represent the bits of the information (in some way) and are so petite that some billions of them fit on the disc. Thus a CD is a mass-storage medium.

The term CD-R is a short form of CD-ROM recordable and refers to a CD that doesn't have those "microscopic pits" on it's surface. Thus it's empty. Instead of the silver aluminium layer a CD-R has a special film (colored) into which "microscopic pits" can be burned in. This is done by giving the laser which normally only senses the pits a little bit more power so he burns the pits. This action can only be taken once on a CD-R, although you can leave out some areas for later writing, creating a so called multi-session CD.

The CD-ROM rewritable (short: CD-RW) was developed to come around the limitation of CD-R media. Here the laser can not even burn pits into the media, but it can also melt the media back into it's original state. This is possible, because the laser does not really burn holes into the media - you do not see a puff of smoke while burning and no voice from above tells you "target destroyed". What the laser really does is to trigger a phase change, thus the name "phase change devices" for CD-RW-writers. An example for a very similar technique used in daily life is the cleaning car in an ice-hockey stadion: during the pauses of the game, the car drives over the ice and fills the scratches in the ice (-> bits containing some sort of information about the game... hehehe) with melted splinter.

This HOWTO deals with the task of writing CD-Rs and CD-RWs. Welcome on board, captain.

1.4. 支援的光碟燒錄器

你可以在這裏得到一個詳盡可用及不可用在各 unix 作業系統的型號列表 [WWW] http://www.guug.de:8080/cgi-bin/winni/lsc.pl.

以下是一個能夠在 cdrecord 下使用的型號撮寫列表:

Table 1: CD-writers supported under Linux

如果你的硬件不被支援的話,你仍然可以用 Linux 來建立光碟影像檔不 過你需要用 DOS 的軟件來將這個光碟影像檔燒錄至 CD-R ‧

1.5. 支援的特性

現在有兩類的工具用作燒錄 CD-Rs :硬體驅動程式和資料格式化 。硬體驅動程式支援以下的功能:

Table 2:

cdwrite 是一個舊的軟件,在這裏提出只不 過是為了完整而已。請使用 cdrecord 來代替 ,因為它能支援較多的光碟燒錄器和它有較多的功 能。資料格式化的目的是要組織光碟上的資料 ( 放 一個檔案系統在光碟上 )

Table 3:

ISO 9660 檔案系統和 Extended-2 檔案系統的最大分別在於,一旦 你將資料寫入光碟內就不能作修改。ISO 9660 檔案系統的限制有 以下幾個:

RockRidge 是一個能令 ISO-9660 檔案系統支援長檔名及較 深層目錄結構的延伸。當你在 DOS 或 Windows 底下讀取光碟時這 些延伸都是不可用的。

El Torito 是一個能夠燒錄開機光碟的延伸。你的個人電腦 基本輸入/輸出系統也必須支援這個特性。粗略地說,光碟唯讀記 憶體開始的 1.44 Mbyte 含有由你供給的軟磁片磁盤影像。基本輸 入/輸出系統會把這個影像當作軟磁片般啟動它。

HFS 能讓 macintosh 讀取光碟內的資料,如果光碟內的資料 是 HFS 檔案系統的話‧( 這是 MacOS 的原生檔案系統 )。

Joliet 把長檔名帶到 Windows 的新版本中 (95, 98, NT)‧據作 者所知,暫時沒有一種工具能夠令 DOS 及 Windows 3.11 支援長檔 名。

部分 2.8 把提到的軟體都一一列出。

1.6. 通訊論壇

如果你想參加開發團隊 (有一個主動 幫助 他們的心), 電郵至 [MAILTO] [email protected] 和在電郵內容寫上 subscribe。

1.7. 可得性

這份文件的最新版本可經常在這裏獲得 [WWW] http://www.guug.de/~winni/linux/.

2. 設定你的 Linux 系統來燒錄光碟

如果你成功設定你的硬體和你 Linux 系統的其餘部份, 命令

章節的目的是要在設定你的 Linux 系統時導引你,因此最後你會看到 如下的訊息:

Listing 1: Detecting devices on your SCSI-bus

這個例子是由 J顤g Schilling 偍供的,你現在會看到一共有四個可燒 錄器。雖然你現在是不能分別那一個光碟機是否為一個可寫入光碟 機,不過你可以在產品的識別號中看出它是一個唯讀、可寫或是可 重寫光碟機。

2.1. 設定 Linux 核心

一個 Linux 核心可以包含很多驅動程式和功能。你可以將那些驅動程式 編譯進核心影像中或者你可以將它們編譯成模組,然後待有需要的時候 才將它們載入核心中。而建議的方法是將必不可少的驅動程式編譯進核 心。舉例,如果你有一個 IDE 的 Harddisk,那你一定將IDE Harddisk 的驅動程式編譯進核心中 ( 不要編譯成模組 )。

現存有三類的光碟燒錄器:SCSI,IDE/ATAPI 和外置平行埠。表格四展示出 怎樣設定 Linux 的核心來支援這幾種光碟燒錄器。表格的第一列是設定選單 ,你可以在這樣找到有關的設定。表格的第二列是功能說明。表格的第三列是 模組名稱。

Y 代表是和意味著你應該把這個怪獸放入核心。M 代表模組和意味著你應該把它 編譯成模組。 Y/M 代表你可以在兩者之間任擇其一。空的設定就千萬不要改動, 不改動它可以令你能成功編譯核心的機會增加。

要檢查那些驅動程式在你的核心中 ( 不論是靜態或動態載入的 ),你可以看這個 檔案 /dev/devices 。要檢查那些模組已載入,你可以用 'lsmod'。要檢查有那些 模 可以 載入的話,鍵入'modprobe -l'。如果你需要的模組不在你的 系統的話,你就要重新編譯核心及安裝它。你可以參考 Kernel-HOWTO 來幫助你重 新編譯核心。有關怎樣處理核心模組的最新資訊,可以參考 Module-HOWTO。

Table 4:

如困你成功建立或找到所需的模組之後,你可將它們的名稱加入 /etc/modules或 由自動工具來載入它們 (kmod,kerneld)。如果你不肯定的話,請參考 Linux 套件 中的說明檔。

"SCSI hostadaptor emulation" 這個功能在之前的版本是叫做 "SCSI emulation" ( 大概是 2.0.36 )。如困你打開這個選項,你就要將IDE/ATAPI 光碟的驅動程式 編譯成模組。要不然你就要將它取消和使用 SCSI 的光碟驅動程式。因為 2.2 系列 的核心已不能同時使用 IDE 和 SCSI 的驅動程式在同一個硬體上 ( 如困你是使用 2.0.36 核心的話,請看以下的說明 )。

Loopback device 是一個選擇性的功能,它能幫你在燒錄影像之前測試一下你的 影像檔。

如果你要讀取光碟,那你就需要 ISO 9660 檔案系統的支援。這個驅動程式已自 動包含RockRidge 延伸。如果你需要MS Joliet 光碟延伸,你便需要編譯它為模 組然後載入它。

在任何的情況下你都需要一個低階的驅動程式。低階是指那個驅動程式會直接與硬 體溝通。至於 SCSI 和平行埠,有很多低階的驅動程式可用,請看以下的說明。

2.1.1. 給 2.2 系統的特別提示

在核心版本 2.2.1 中,不要同時打開CONFIG_SCSI_MULTI_LUN 和ide-scsi support 這兩個選項,因為 ide-scsi 有蟲而至不能這樣做。無論如何,都建議大家都把核心 升級為 2.2.5 。

一些用戶報告說已編譯好的 cdrecord 和 2.2 核心有衝突。這是 Linux 核心的 問題。解決的方法如下:

2.1.2. 給 2.0 系列的特別提示

在核心 2.0.31 以前是有很多蟲引至不能讀取光碟中最後一個檔案。請升級到核 心 2.0.36。

對於 2.0.36 或以上的版本,你可以選擇那種驅動程式(IDE or SCSI) 在那個 ATAPI-device上使用。更精確地說,你可以加入"SCSI emulation" 這個功能到 你的核心中和你可以在核心命令列中給特定的 device 啟動模擬 ( 在系統啟動 前或啟動中 )。舉例,如果你的光碟燒錄器有這個 devicefile /dev/hdb,這樣 加入以下的句子 hdb=ide-scsi。

Listing 2: Example configuration for lilo (/etc/lilo.conf)

Listing 3: Example configuration for chos (/etc/chos.conf)

2.2. 硬體和 devicefiles

在你安裝所有必需的驅動程式以後, 重新這個新核心。它應該有你在往後部份所需 要的所有功能。

[ 如果你是 devfs 的使用者,你就不需要理會以下手動設定 device files 的步 驟,因為 devfs 會為你辦理一切的事情。]

進入 /dev 目錄然後檢查一下你有沒有 loopback devices。 雖然這不是太大問題如果你沒有這些 devices,但是有了它們就會方便一些 (請看 3.5 )‧ 如果你有它們的話你會看到 ls 指令顯示loop0-loop7:

Listing: devicefiles for loopback

如果你沒有這些 device-files 的話,你可以用/dev/MAKEDEV-script 來建立它們:

Listing: commands to create loopback devices

如果你有loop 模組編譯進核心,最後的指令你才可以成功執行。你在這 裏看到有關怎樣處理 loop-devicefiles 的方法你同樣可以應用在其他 devicefiles 中(sg*, pg*, hd*, ...) 不過在以後的章節就不會明確說明。

2.2.1. IDE/ATAPI 光碟燒錄器

ATAPI 代表 "SCSI 的命令在 IDE-bus 上執行"。換句話說,你的IDE/ATAPI 光碟燒錄器會說 SCSI 協定(不過帶有一些限制),那即是它會模擬成好像一個 SCSI光碟燒錄器一樣。

在 Linux 底下只要你運用"SCSI (hostadaptor) emulation" 這個核心功能那你 就可以令你的 IDE 光碟燒錄器出現如同 SCSI-devices 那樣。如果你使 ide-scsi 核心模組活動起來的話,你就會好像擁有一個 SCSI 光碟燒錄器那樣。

2.2.2. SCSI 光碟燒錄器

請確定你的光碟燒錄器能夠被你電腦的基本輸入/輸出系統支援。事情就變得冇意思 如果你擁有硬件而電腦又不能支援它。

如困你想將你的 SCSI-drive 連接至你電腦的平行埠上的話,你需要特別的纜線 和特別的核心驅動程式。看這個網址 [WWW] http://www.torque.net/parport/parscsi.html 以取得更多的資料。

2.2.3. 一般 SCSI devices

/dev/sd* 和 /dev/sr* 這些 devicefiles 是用來存取 SCSI 硬碟和 SCSI 光碟 驅動器不過 SCSI 光碟驅動器的存取只限於 block-oriented 資料傳送。這使 它們那麼快速和適合於資料存儲。不過驅動光碟燒錄器的雷射是一件更加複雜的 事情,而不是block-oriented 資料傳送那麼簡單。要使 sd* 和 sr* devices 保 持乾淨和快速,一種新的裝置 ─ generic SCSI-devices就衍生出來。 因為所有對 SCSI 硬體的操作都可以透過 generic devices 來達成而它們又沒有 特定的目的所以它們就叫做 generic‧

如果你要找這些 device,你可以到 /dev 的目錄:

如果你沒有這些 device-files ,你可以在用下列的 script 來建立它們the /dev/MAKEDEV-script:

2.2.4. 平行埠的光碟燒錄器

真對不起,我沒有這方面的解決方案。 請看 [WWW] http://www.torque.net/parport/paride.html 或你本區的檔案/usr/src/linux/Documentation/paride.txt.

2.3. 取得軟體來燒錄光碟

你可以在這裏找到一系列燒錄光碟的軟件 [WWW] http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html.The CD building project for UNIX

2.3.1. 命令列工具

你需要以下程式包之中任擇其一來產生光碟原型:

[WWW] ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/ (mkisofs)

(mkhybrid)

視你的光碟燒錄器型號而定,你需要以下其中之一個程式來將光碟原型寫入:

[WWW] ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ (cdrecord)

千萬不要相信mkisofs 舊的說明檔,它說你需要 cdwrite 版本 1.5 ,你只需要 cdrecord 就好了。注意:cdrecord 所包括的 mkiosfs 有一些附加的功能‧

2.3.2. Graphical user interfaces (optional)

Front-ends 在 Linux 中真的只是 front-ends。即是你仍然需要安裝命令列工具, 不過你可以用一個較好的介面而已。

X-CD-Roast 是一個在 Linux 下容易燒錄光碟的程式集。它結合了 cdrecord 和 mkisofs 在一個美麗的介面以中。

BurnIT 是一個 cdrecord, mksiofs and cdda2wav-0.95 的 JAVA front-end ,,這使它成為一個在 Unix 平台下完整的光碟燒錄包裝,你可以在這裏取得:

3. 燒錄光碟

"If to smoke you turn I shall not cease to fiddle while you burn." (Roman emperor Nero about burning his own classic-CDs, AD64. He misunderstood it completely.)

在 Linux 下燒錄光碟有以下兩個步驟:

這一章會詳盡講解燒錄資料及音樂光碟的步驟。

3.1. 燒錄光碟片 (純資料)

請留意,由於收集軟件所需的時間總會比預計中的長,故此有一個需要考慮的 問題,便是後期才找到的檔案不能寫入原先燒錄過或已完成燒錄的光碟。

!- 可重寫光碟隨時都可以在空餘的位置寫入資料,只要你沒有關閉光碟,再在光 碟開一個區域,變成multi-session 光碟,便可寫入資料,不過這個做法也 有缺點,就是會浪費檔案目錄表的空間。 --> 還要緊記光碟中有一定容量的空間會用作儲存ISO-9660-檔案系統的資料,通 常會用上數MB,所以一隻650MB的光碟,實際上只有約620MB可用。

3.1.1. 建立光碟影像檔

任何一種儲存媒體,不論軟片,硬碟,抑或光碟,在使用前都必須先建立 檔案系統,在DOS而言即格式化,使其擁有一個檔案系統。這個檔案系統 將會用作組織及合併儲存媒體上的檔案。

一般用來格式化硬碟機分割區的工具都會先寫入一個空的檔案系統到硬碟分割區中, 然後它便會被掛上和在使用者有需的時才抄寫檔案在其中。不過一隻可燒錄光碟只能 寫入一次,如果我們寫入一個空的檔案系統,它就會被格式化 ─ 不過它永遠都會是 一隻空的光碟。可重寫的光碟都是一樣的,因為你不能改變 arbritary sectors ,不 過你可以消除整隻光碟的內容。

所以我們需要一個工具能夠一邊抄寫檔案一邊建立檔案系統在 光碟中‧這工具叫做 mkisofs‧以下就是這工具的使用 例子:

'-r' 選項設定所有在光碟中的檔案為公眾可讀和開啟 Rock Ridge 延伸。 這是很多人想要的東西不過使用前你必須肯定知道你自己在做什麼。 (提示:沒有 '-r' 選項的話那個 mount-point 就會變成 private_collection!)。

mkisofs 會嘗試將所有檔案的轉為 DOS 的8.3格式以確保最高的兼容性。 若遇上命名衝突 (不同檔案有相同的名稱),這時就會在檔案中使用數字而有關該檔 案的資料就會在 STDERR (通常都是螢幕) 中顯示。 不要擔心:在 Linux 中你永遠 不會看到 8.3 格式的檔案因為 Linux 會使用 Rock Ridge 延伸而所有檔案的資料都 會在 Rock Ridge 延伸中 (使用權限,檔案名稱,等等)。

到現在你可能會問為什麼 mkisofs 的輸出不直接寫入可寫光碟機中。這有 兩個原因:

會在下面講述怎樣燒錄一隻光碟。

有些人可能會想不如建立一個獨立的分割區來寫入影像以代替檔案。 我並不贊同這同方法因為如果你寫入到錯誤的分割區(由打字錯誤所造成)的話 ,你便會遺失整個 Linux 系統 (我就試過這情況)。再者,這樣做會造成磁碟 空間浪費因為光碟影像是一種暫時性的資料,當它被燒錄到光碟後它便可以刪 除。不過用硬碟分割區可以節省你刪除一個 650 MB 檔案的時間。 (不過如果 你有一個額外的分割區可以令你節省刪除影像檔的時間。)

3.1.2. 測試光碟影像檔

Linux 可以好似磁碟分割區般將檔案掛上。這是一個很好用的功能它可以用來 檢查目錄配置和檔案使用權限是不是你所要求那樣。雖然現在的光碟很便宜, 但是燒錄過程依然是很費時的,所以你起碼需要做一個快速的測試。

要將 光碟影像檔 掛上 /cdrom ,請用以下的指令

你現在可以在 /cdrom 底下檢查下你的檔案 ─ 現在的位置便是它 們在真正光碟中的位置。要卸除光碟影像檔,你只需要打 umount /cdrom 。(警告:如果你是使用 Linux 核心 2.0.31 或以前的版本,你就有可能看不見 最後的幾個檔案。 請使用較新的核心。 The option -pad for cdrecord applies to audio-CDs only and the optional option -pad for mkisofs requires a patch, which is as much work to apply than to upgrade to a bug-free Linux-kernel.)

注意:

比較舊的 mount 是不能處理 loopback-devices。如果你是使用舊的 mount 的話現在是時候更新你的 Linux 了。

有很多人都建議我增加一些關於如何取得最新 mout 工具的資料 在這份 mini-HOWTO 中。但我都一一拒絕。如困你的 Linux 套件 附送了舊版本的 mount:報告這是一個臭蟲。如果你的 你的 Linux 套件是不能輕易升級,報告這是一個臭蟲。

如果我將所有有關怎樣更正設計不良 Linux 套件的資料,這份 mini-HOWTO 就會變得很長及很難閱讀。

3.1.3. 寫入光碟影像到光碟中

沒有太多的東西要做。如果你未試過這個指令,現在是時候試下試了

這個指令會告訴你你的可寫光碟機是掛在那個 SCIS-device 中。所有 其他的嘗試方法都已經被刪除 (尤其是關於 generic SCSI devices 命 名規則 (naming scheme) 的危險方法)。

不過在介紹最後一個指今前先讓我提醒你件事,因為可寫入光碟機的緩 衝區是很少,所以它要求所輸入的資料流是連續的。正因如此,在燒錄 的過程中是不可中斷的,否則會燒錄失敗。如果你刪除一個很大的檔案 就會很容易中斷資料流。例如:你刪除一個 650 MB 大小檔案的時候, 核心便需要更新硬碟大約 650,000 個 blocks (假設你的檔案系統是 1k 一個 block 的話) 這需要很長的時間和很可能會令資料流延遲幾 秒。不過,如果在一部很快的電腦上看電郵,瀏覽網頁或甚至編譯核心 都不會影響燒錄程序。

請注意世上是沒有一個燒錄器可以重置雷射的位置和它不能返回 受干擾的點上再次進行燒錄。所以何任的震動或撞擊都能使你正 在燒錄的光碟受到破壞。

如果你準備好的話,你可以下以下的指今:

為了增加可讀性,可寫入光碟機的資訊都儲存在這三個環境變數中: SCSI_BUS, SCSI_ID, SCSI_LUN。而選項 -data 則是用來燒錄資料光 碟用的。

如果你是使用 cdrecord 來覆寫 CD-RW,你一定要用 "blank= . . ." 來刪除所有舊有內容。請看 man-page 來學習有什麼方法來清除所有 CD-RW 的所有內容。

如果你有一部 400 Mhz 電腦,你可以將 mkisofs 的輸出直接輸出至 cdrecord 中:

第一個指令只是用來檢查一下光碟影像的內容並沒有實質用途 (你需要用 cdrecord-distribution 中的 mkisofs 才可使用這個指令)。你的可寫入 光碟可能不需要知道光碟影像檔的大小,這樣你便不需要下這個指令。輸 出的大小必需用 tsize-parameter 來傳遞給 cdrecord。 (這個數字是儲 存 IMG_SIZE 這個環境變數中)。最後的指令是用 pipe 來串連 mkisofs 和 cdrecord 這兩個指令。

3.2. 燒錄音樂光碟

要燒錄一隻音樂光碟的步驟與燒錄資料光碟的步驟都大同小異。 最主要的二個分別之一是音樂光碟包含音軌,而這些音軌必需組織成 獨立的影像。所以如果你想燒錄十條音軌的話,你就要建立十個影像 檔。另一個分別是光碟影像的格式不是 ISO-9660 (或者你想要的格或), 不過它是 "16 bit stereo samples in PCM coding at 44100 samples/second (44,1 kHz)".

其中一個軟件叫做 sox 它可以將音樂檔案轉為所需的格式。 它的用法是很簡單直接:

這個指令會將 killing-my-software 這首歌由 WAV 格式轉為 CDR 格式。 請看 man-page 來取得更多有關 sox 所確認的格式及延伸檔名。因為轉變 過程需要耗用硬碟空間,所以 cdrecord 已內建支援 WAV 和 AU 格式了。 所以如果你的音樂檔案有 .wav 或 .au (and the samplerate "stereo, 16 bit, 44,1 kHz")延伸的話,你便不需要做人手轉換。

如果你有用 -audio 選項,cdrecord 就會將影像檔燒錄成音軌。而其他的選項 就如同燒錄一般資料一樣 (除非你有非特別的要求)。以下三個指令都是相同的不 過它們讀取不同音樂檔案格式:

其中一個特別例子是 MPEG-3 檔案,它可以用 "mpg123 -s track1.mp3 > track.cdr" 來轉換成所需要的格式。另一個方法是用 "8hz-mp3" 來轉換成 WAV 檔案格式。

如果你現在燒錄音樂光碟的話,你會發現音軌之間會有 2 秒的延遲。 如果你的可寫入光碟機支援 "disc at once" (DAO) 的話,你可以嘗試用最新的 cdrecord 來解決此一問題。

3.3. 混合式光碟

沒有太多要說。只示範了怎樣混合使用 -data 和 -audio 選項以達到燒錄混合光碟:

4. 常問問題及答案

4.1. "燒錄程序有多敏感"

答案:這就要看你的燒錄器了。通常較新的型號都會有 1MB 或更多,這樣它便可以 支持 1-2 秒沒有資料。如果你想得到更多的資料你可以問生產商或看看硬體手冊。

不管那些資料緩衝器的大小如何你都需要保證一個長時間 300 kb/s 或 600 kb/s 的經常 輸出。

一些硬碟密集的工作例如更新 locate-資料庫。 減低 maxium flow rate 就肯定會損壞你的光碟;你最好在燒錄光碟前用 cron, at 或 anacron 來檢查一下你有否執行這些工作。

另一方面,有些人說他們能一面編譯核心一面燒錄光碟都沒有任何問題。 的確你要一部很快的機器才能做這個實驗。

4.2. "fragmentation 會否影響輸出呢?"

Fragmentation 通常都不會影響輸出。不過你可以很容易制造 pathological cases of fragmentation 來減低你的硬碟輸出大約 100 kbyte/second。所以千萬不要這樣做。:-)

是的,你的硬碟會 fragmented 經過經年的使用。如果越快fragmented,那檔案系統便越 滿。經常保持 10% 或 20% 的空間,這樣燒錄光碟便沒有問題了。

如果你不肯定的話你可以看看啟動時的訊息,你就可以看到你的檔案系統有幾多磁碟空間 fragmentation 的百份比。你可以用一個非常危險的指令

在這個範例中磁碟空間似乎非常鬆散 ─ 不過這裏只有 73 個非常小的檔案在這 個檔案系統中,所以這個只不過是一個很少的值。

現在有一個實驗性的工具軟件叫做 e2defrag 它可以用來 defragment extended-2 檔案系統。不過現在的版本在私人環境中還是不夠穩定。如果你真想 defragment 你 的檔案系統,請先備份 (最好:兩份),嘗試 restore 備份,然後建立一個新的檔案系 統 (會破壞舊有的) 最後再 restore 備份。總之這是最安全的技巧。

4.3. "是否可以將光碟影像檔儲存在 UMSDOS 檔案系統中呢? "

可以。只有一個檔案系統是不能可靠和快速來燒錄光碟的,這就是 network filesystem (NFS)。

我現在是在一部 (486/66) PC 中使用 UMSDOS 來讓Linux 和 DOS/Win 共享磁碟 空間,而這部 486 是專門來燒錄光碟用的。

4.4. "有無方法可以克服 iso9660 的限制?"

可以。你可以用任何一個檔案系統來燒錄光碟。不過你不能在其他的操作系統中使 用這隻光碟。

用這個方法就行了:

如困你想在/etc/fstab 加一個出入口給那隻光碟的話,你便需要取消對那隻光 碟的檢查,例如:

第一個零代表 "不要包含在 dumps" ,第二個零代表 "在啟動時不要檢錯誤" ( fsck 將不會檢查光碟內的錯處 ) 。

4.5. "怎樣讀取及寫入音樂光碟?"

現在有多個軟件。最新的叫作 "cdpranoia" 它可以在以下地方下載

[WWW] http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia/index.html

或者你可以嘗試 "cdda2wav" 和 "sox" 的組合,可以在 sunsite 和它的 mirror 中取得

[WWW] ftp://sunsite.unc.edu/pub/Linux/apps/sound/cdrom/cdda2wav0.71.src.tar.gz

cdda2wav 令你可以由光碟中抓取到一段特定的(或一整條)音軌然後可以 將它轉為 .wav 檔案。 sox 可以將 wav 檔案轉回音樂光碟的cdda 格式, 然後可以用 cdwrite 將它燒錄在光碟上。 如果你是使用最新版本的cdrecord ,你便不需要使用 sox 因為 cdrecord 已內置支援 .au 和 .wav 檔案。

4.6. "啟動系統後怎樣找尋SCSI-devices?"

drivers/scsi/scsi.c 有所需要的資料。

Please note that this should only be used if your add SCSI-devices at the end of the chain. Inserting new SCSI-devices into an existing chain disturbs the naming of devices (directory /dev) and may destroy the complete content of your harddisk.

4.7. "可以進行一對一的光碟複製?"

可以。不過你要注意的是如果當讀取光碟時有任何的錯誤發生,都可能令杪寫失敗。

第一個情況:你有一個可寫光碟機和一個唯讀光碟機。你可以用以下的指令

你可以從/dev/scd0 讀取資料流然後直接經由/dev/sgc 寫入光碟中。

第二個情況:你沒有另一個唯讀光碟。你便需要用可寫光碟機來讀取光碟:

這個指令等同於 mkisofs ,所以你可以用第三章所提及的方法繼續 餘下的工作。請注意這個方法是不適用於音樂光碟。

4.8. "Linux 可不可以讀取 Joliet 光碟?"

可以。最新的核心 (2.0.36 和以後) 已內置支援 joliet 格式。請記著你要在 /etc/fstab 中使用 iso9660 和 joliet 兩個選項。要取得更多資料,你可以看 [WWW] http://www-plateau.cs.berkeley.edu/people/chaffee/joliet.html.

4.9. "怎樣用可寫光碟機讀取光碟?"

就如同你使用普通唯讀光碟機一樣。沒有任何的特別。注意你要使用scd-devices (唯讀光碟機) 來讀取光碟。以下便是在/etc/fstab 中的範例:

4.10. "怎樣放多些資料到光碟中?"

用 bzip2 以取代其他的壓縮器好像 gzip 或 pkzip。這會節省30%的磁碟空間。你可以在以下地方下載

[WWW] http://www.muraroa.demon.co.uk/

Instead of writing a true audio-CD, you can optionally convert your wav-audio-files into mp3-audio-files and store them on a ISO-9660 filesystem as regular files. Usually MPEG III gives you a compression of 1:10.

Of course, most CD-players are not able to read files... this is the drawback. On the other hand, why not running the music for your next party from harddisk? 18 Gbyte are enough for 3000-4000 titles. :-)

A software MPEG III-encoder is available from

[WWW] http://www.stud.ifi.uio.no/~larsi/other/8hz-mp3-cheng.tar.gz

A MPEG III-player is available from

[WWW] http://homepages.uni-tuebingen.de/student/michael.hipp/mpg123/

For recorded speech, you may want to try to reduce its size using shorten or "GSM lossy speech compression":

[WWW] ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/

4.11. "How to make bootable CD-ROMs?"

You must have an 1.44 MB bootable floppy-disk. Create an exact image of this floppy-disk by issuing the command

Place this floppy-image into the directory holding the collection of your files (or into a subdirectory of it, just as you like). Tell mkisofs about this file with the option '-b' and also use '-c'. For details read the file README.eltorito in the mkisofs-distribution.

An interesting application for a custom bootable CD is as a virus-safe DOS- or Windows-system. It saves you the money for the harddisks (if you have a network and use samba to put the user-data on a fileserver). However, this is purely theoretical as nobody reported an actual recipe to me.

Some details about the bootable RedHat CD-ROM is available from [WWW] http://www.channel1.com/users/rodsmith/rhjol-technical.html.

4.12. "How to make CD-ROMs writable somehow?"

There is an overlay-filesystem available for Linux, which is mounted over the CD-ROM and intercepts all writing operations. New and modified files are stored elsewhere, but for the user it looks like the CD-ROM is modified. For more information, see [WWW] http://home.att.net/~artnaseef/ovlfs/ovlfs.html.

If that is not enough for your needs: wait for the UDF-filesystem to be supported by Linux or help developing it (see [WWW] http://trylinux.com/projects/udf/.

4.13. "Is it possible to use several writers at once?"

Yes. However, it has been only tested with two writers yet. And you need a kernel patch for more buffers in the SCSI-generic driver ( [WWW] ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/alpha).

4.14. "Which media is the best?"

The german computer magazine "c't" had a list of tips regarding the blank CD-Rs in their november 1996 issue:

5. 問題解決

Always remember, that you can still use corrupt CD-ROMs as coasters. :-)

5.1. 在 Linux 下不行

請先檢查你的可寫光碟機能不能在其他操作系統中使用

然後檢查以下的事情:

如果你的可寫不能在其他的操作系統中使用的話,很可能你有硬件衝 突或你買了一個壞的硬件。

If it works under the other operating system and you use loadlin to boot Linux, then that is your problem. Loadlin makes a warm-boot with most of the hardware already initialized and that confuses the Linux-kernel.

5.2. Error-message: No read access for 'dev=2,0'.

Under Linux, some versions of the C-library are incompatible (buggy), so that an application linked against one version will not work with another. An example for an error triggered by pre-compiled binaries is the following:

5.3. 它不能在 DOS 一使用

嘗試使用 Linux 。在 DOS 底下安裝及設定 SCSI 驅動程式是一件很困難的 工作。 Linux 也不是很複雜的嗎?哈!

5.4. 燒錄過程中有 SCSI 錯誤

通常這些錯誤都是由以下的狀況所做成的

在很多情況下 SCSI devices 需要由 SCSI bus 中 dis- and reconnect 自己。 如果缺少這個功能的話,有些可寫入光碟機可能在繞錄光碟時發生問題。

尤其是NCR 53c7,8xx SCSI 驅動程式會預設消除這個功能,你最好先檢查一下:

6. 嗚謝 (這段不譯)

表:感謝

人名 註記

[WWW] Alan Brown

[WWW] Art Stone had the idea to put non-ISO-9660 filesystems on a CD

[WWW] Bartosz Maruszewski reported spelling mistakes

[WWW] Bernhard Gubanka noticed the need of a recent version of mount to utilize the loopback device

[WWW] Robert Doolittle good arguments for dropping cdwrite from the HOWTO

Brian H. Toby polished the wording.

[WWW] Martin Schulze gave information about the cdwrite-mailinglist

[WWW] Dale Scheetz helped improving the section about creating the cdimage.

[WWW] Don H. Olive URL of the mkhybrid tool

[WWW] Erwin Zoer

[WWW] Gerald C Snyder tested writing of an ext2 CD-ROM (see 4.4)

[WWW] Janne Himanka pointer to kernel patch to read Joliet CD-ROMs

[WWW] Joerg Schilling information about cdrecord

[WWW] Jos van Geffen noted the problem in 4.9.

[WWW] Markus Dickebohm

[WWW] Jesper Pedersen helped to develop the recipe on 1:1 copies.

[WWW] Pierre Pfister helped to develop the recipe on 1:1 copies.

[WWW] Rick Cochran hint about dis-/reconnect disabled by default in the ncr driver

[WWW] Stephan Noy information and experience about writing audio-CDs

[WWW] Stephen Harris contributed hint about writing audio-CDs

[WWW] The Sheepy One suggested using defective CD-ROMs as coasters for drinks

[MAILTO] [email protected] Reported problem with pre-initialized writers when booting via loadlin.

End of the Linux CD-Writing HOWTO

last edited 2004-12-25 08:45:55 by PingYeh