如果你成功設定你的硬體和你 Linux 系統的其餘部份, 命令
cdrecord - scanbus
會給你看到一個可寫入裝置的列表。 這個
章節的目的是要在設定你的 Linux 系統時導引你,因此最後你會看到
如下的訊息:
shell> cdrecord -scanbus
Cdrecord release 1.7a1 Copyright (C) 1995-1998 J顤g Schilling
scsibus0:
0) 'Quantum ' 'XP34300 ' 'F76D' Disk
1) 'SEAGATE ' 'ST11200N ' '8334' Disk
2) *
3) 'TOSHIBA ' 'MK537FB/ ' '6258' Disk
4) 'WANGTEK ' '5150ES SCSI-36 ' 'ESB6' Removable Tape
5) 'EXABYTE ' 'EXB-8500-85QUE ' '0428' Removable Tape
6) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
7) *
scsibus1:
100) 'Quantum ' 'XP31070W ' 'L912' Disk
101) *
102) *
103) 'TEAC ' 'CD-R55S ' '1.0H' Removable CD-ROM
104) 'MATSHITA' 'CD-R CW-7502 ' '4.02' Removable CD-ROM
105) *
106) 'YAMAHA ' 'CDR400t ' '1.0d' Removable CD-ROM
107) *
Listing 1: Detecting devices on your SCSI-bus
這個例子是由 J顤g Schilling 偍供的,你現在會看到一共有四個可燒 錄器。雖然你現在是不能分別那一個光碟機是否為一個可寫入光碟 機,不過你可以在產品的識別號中看出它是一個唯讀、可寫或是可 重寫光碟機。
一個 Linux 核心可以包含很多驅動程式和功能。你可以將那些驅動程式 編譯進核心影像中或者你可以將它們編譯成模組,然後待有需要的時候 才將它們載入核心中。而建議的方法是將必不可少的驅動程式編譯進核 心。舉例,如果你有一個 IDE 的 Harddisk,那你一定將IDE Harddisk 的驅動程式編譯進核心中 ( 不要編譯成模組 )。
現存有三類的光碟燒錄器:SCSI,IDE/ATAPI 和外置平行埠。表格四展示出 怎樣設定 Linux 的核心來支援這幾種光碟燒錄器。表格的第一列是設定選單 ,你可以在這樣找到有關的設定。表格的第二列是功能說明。表格的第三列是 模組名稱。
Y 代表是和意味著你應該把這個怪獸放入核心。M 代表模組和意味著你應該把它 編譯成模組。 Y/M 代表你可以在兩者之間任擇其一。空的設定就千萬不要改動, 不改動它可以令你能成功編譯核心的機會增加。
要檢查那些驅動程式在你的核心中 ( 不論是靜態或動態載入的 ),你可以看這個 檔案 /dev/devices 。要檢查那些模組已載入,你可以用 'lsmod'。要檢查有那些 模 可以 載入的話,鍵入'modprobe -l'。如果你需要的模組不在你的 系統的話,你就要重新編譯核心及安裝它。你可以參考 Kernel-HOWTO 來幫助你重 新編譯核心。有關怎樣處理核心模組的最新資訊,可以參考 Module-HOWTO。
Sect. Description Module SCSI IDE PP
------------------------------------------------------------
BLOCK Enhanced IDE/MFM/RLL... Y
BLOCK IDE/ATAPI CDROM ide-cd M/N/Y
BLOCK SCSI hostadaptor emulation ide-scsi M
BLOCK Loopback device loop M M M
PARIDE Parallel port IDE device paride Y/M
PARIDE Parallel port ATAPI CD-ROMs M
PARIDE Parallel port generic ATAPI M
PARIDE (select a low-level driver) Y
SCSI SCSI support scsi_mod Y/M Y/M
SCSI SCSI CD-ROM support sr_mod Y/M Y/M
SCSI Enable vendor-specific Y Y
SCSI SCSI generic support sg Y/M Y/M
SCSI (select a low-level driver) Y
FS ISO 9660 CDROM filesystem iso9660 Y Y Y
FS Microsoft Joliet cdrom... joliet M M M
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.2.1 中,不要同時打開CONFIG_SCSI_MULTI_LUN 和ide-scsi support 這兩個選項,因為 ide-scsi 有蟲而至不能這樣做。無論如何,都建議大家都把核心 升級為 2.2.5 。
一些用戶報告說已編譯好的 cdrecord 和 2.2 核心有衝突。這是 Linux 核心的 問題。解決的方法如下:
在核心 2.0.31 以前是有很多蟲引至不能讀取光碟中最後一個檔案。請升級到核 心 2.0.36。
對於 2.0.36 或以上的版本,你可以選擇那種驅動程式(IDE or SCSI) 在那個
ATAPI-device上使用。更精確地說,你可以加入"SCSI emulation" 這個功能到
你的核心中和你可以在核心命令列中給特定的 device 啟動模擬 ( 在系統啟動
前或啟動中 )。舉例,如果你的光碟燒錄器有這個 devicefile /dev/hdb,這樣
加入以下的句子 hdb=ide-scsi
。
image=/boot/zImage-2.0.36
label=Linux
read-only
append="hdb=ide-scsi"
Listing 2: Example configuration for lilo (/etc/lilo.conf)
linux "Linux 2.0.36" {
image=/boot/zImage-2.0.36
cmdline= root=/dev/hda5 readonly hdb=ide-scsi
}
Listing 3: Example configuration for chos (/etc/chos.conf)
在你安裝所有必需的驅動程式以後, 重新這個新核心。它應該有你在往後部份所需 要的所有功能。
[ 如果你是 devfs 的使用者,你就不需要理會以下手動設定 device files 的步 驟,因為 devfs 會為你辦理一切的事情。]
進入 /dev
目錄然後檢查一下你有沒有 loopback devices。
雖然這不是太大問題如果你沒有這些 devices,但是有了它們就會方便一些 (請看
3.5 )‧ 如果你有它們的話你會看到 ls
指令顯示loop0
-loop7
:
shell> cd /dev
shell> ls loop*
loop0 loop1 loop2 loop3 loop4 loop5 loop6 loop7
Listing: devicefiles for loopback
如果你沒有這些 device-files 的話,你可以用/dev/MAKEDEV
-script
來建立它們:
shell> cd /dev/
shell> modprobe loop
shell> ./MAKEDEV loop
Listing: commands to create loopback devices
如果你有loop
模組編譯進核心,最後的指令你才可以成功執行。你在這
裏看到有關怎樣處理 loop-devicefiles 的方法你同樣可以應用在其他 devicefiles
中(sg*, pg*, hd*, ...) 不過在以後的章節就不會明確說明。
ATAPI 代表 "SCSI 的命令在 IDE-bus 上執行"。換句話說,你的IDE/ATAPI 光碟燒錄器會說 SCSI 協定(不過帶有一些限制),那即是它會模擬成好像一個 SCSI光碟燒錄器一樣。
在 Linux 底下只要你運用"SCSI (hostadaptor) emulation" 這個核心功能那你 就可以令你的 IDE 光碟燒錄器出現如同 SCSI-devices 那樣。如果你使 ide-scsi 核心模組活動起來的話,你就會好像擁有一個 SCSI 光碟燒錄器那樣。
請確定你的光碟燒錄器能夠被你電腦的基本輸入/輸出系統支援。事情就變得冇意思 如果你擁有硬件而電腦又不能支援它。
如困你想將你的 SCSI-drive 連接至你電腦的平行埠上的話,你需要特別的纜線 和特別的核心驅動程式。看這個網址 http://www.torque.net/parport/parscsi.html 以取得更多的資料。
/dev/sd* 和 /dev/sr* 這些 devicefiles 是用來存取 SCSI 硬碟和 SCSI 光碟 驅動器不過 SCSI 光碟驅動器的存取只限於 block-oriented 資料傳送。這使 它們那麼快速和適合於資料存儲。不過驅動光碟燒錄器的雷射是一件更加複雜的 事情,而不是block-oriented 資料傳送那麼簡單。要使 sd* 和 sr* devices 保 持乾淨和快速,一種新的裝置 ─ generic SCSI-devices就衍生出來。 因為所有對 SCSI 硬體的操作都可以透過 generic devices 來達成而它們又沒有 特定的目的所以它們就叫做 generic‧
如果你要找這些 device,你可以到 /dev 的目錄:
shell> cd /dev
shell> ls sg*
sg0 sg1 sg2 sg3 sg4 sg5 sg6 sg7
如果你沒有這些 device-files ,你可以在用下列的 script 來建立它們the /dev/MAKEDEV
-script:
shell> cd /dev/
shell> ./MAKEDEV sg
真對不起,我沒有這方面的解決方案。 請看 http://www.torque.net/parport/paride.html 或你本區的檔案/usr/src/linux/Documentation/paride.txt.
你可以在這裏找到一系列燒錄光碟的軟件 http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html.The CD building project for UNIX
你需要以下程式包之中任擇其一來產生光碟原型:
ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/ (mkisofs)ftp://ftp.ge.ucl.ac.uk/pub/mkhfs (mkhybrid)
視你的光碟燒錄器型號而定,你需要以下其中之一個程式來將光碟原型寫入:
ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/ (cdrecord)
千萬不要相信mkisofs
舊的說明檔,它說你需要 cdwrite
版本 1.5
,你只需要 cdrecord 就好了。注意:cdrecord 所包括的 mkiosfs 有一些附加的功能‧
Front-ends 在 Linux 中真的只是 front-ends。即是你仍然需要安裝命令列工具, 不過你可以用一個較好的介面而已。
X-CD-Roast 是一個在 Linux 下容易燒錄光碟的程式集。它結合了 cdrecord
和 mkisofs
在一個美麗的介面以中。
http://www.fh-muenchen.de/home/ze/rz/services/projects/xcdroast/e_overview.html
BurnIT 是一個 cdrecord, mksiofs and cdda2wav-0.95 的 JAVA front-end ,,這使它成為一個在 Unix 平台下完整的光碟燒錄包裝,你可以在這裏取得:
http://sunsite.auc.dk/BurnIT/