HOWTO:The Linux CD-ROM

作者:Jeff Tranter, [MAILTO] [email protected]

最新版本:2001-07-18

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


在這份文件裡,我們說明如何安裝,設定及使用唯讀光碟機(CD-ROM)的方法。我們也列出支援的硬體,並回答一些常見的問題。 我們希望它能幫助新手快快上手,並且因此有助於讓 usenet 及通信論壇 (mailing-list) 上的訊息流量少一點。



  1. 緒論
    1. 感謝
    2. 最新版本何處尋
    3. 回饋
    4. 散布時的注意事項
  2. CD-ROM 技術
  3. 支援的硬體機種
    1. ATAPI介面唯讀光碟機
    2. SCSI介面唯讀光碟機
    3. 專屬介面唯讀光碟機
    4. 印表機介面唯讀光碟機
    5. 選擇性的驅動程式
  4. 安裝
    1. 安 裝 硬 體
    2. 設定及建立核心
    3. 建立設備檔及設定起動時參數
      1. Sbpcd 驅動程式
      2. Sonycdu535 驅動程式
      3. Cdu31a 驅動程式
      4. Aztcd 驅動程式
      5. Gscd 驅動程式
      6. Mcd 驅動程式
      7. Mcdx 驅動程式
      8. Cm206 驅動程式
      9. Optcd 驅動程式
      10. Sjcd 驅動程式
      11. Paride 驅動程式
      12. SCSI CD-ROM 驅動程式
      13. IDECD 驅動程式
    4. 起動 Linux 核心
    5. 掛上,卸下,及退出光碟片
    6. 問題與解決
      1. 第一步: 確定您用您自己編譯的核心啟動系統
      2. 第二步: 確定需要的核心驅動程式有被編譯進去
      3. 第三步: 起動時,核心有偵測到您的機器嗎?
      4. 第四步: 您能從機器上讀出資料嗎?
      5. 第五步: 您能掛上片子嗎?
      6. 消除聽音樂時的問題
      7. 要是一切都沒用呢?
  5. 應用
    1. CD唱片播放程式
    2. 相片光碟
    3. Mkisofs
    4. ISO-9660 公用程式
  6. 常見問題與解答
    1. 沒有 root 身份的人,如何掛上及卸下光碟片
    2. 為何我要卸下光碟時,卻得到 "device busy" 訊息?
    3. 我如何將 CD-ROM 用 NFS 與其它電腦共享?
    4. 我能用 CD-ROM 起動 Linux 嗎?
    5. 如何從 CD 唱片直接抓取數位音軌?
    6. 為什麼 find 命令不太正常?
    7. Linux 是否支援任何 CD-ROM 的燒錄設備?
    8. 我掛載 CD-ROM 時得到: Read-Only file system 訊息?
    9. 我關機時,為什麼托盤自動退出來?
    10. 我有一片無法掛上的``片子
    11. 多片裝 CD-ROM 在 Linux 下能用嗎 ?
    12. 我收到 `` 錯誤
    13. 我如何讀懂 IDE CD 的核心錯誤訊息?
    14. 我如何測試我的 CD-ROM 是幾倍速的呢?
    15. 裝好 Linux 後,我的 CD-ROM 不能用了
    16. 在 CD 上有隱藏檔,我沒辦法讀...
    17. 哪兒找得到CD-ROM API的文件資料?
    18. 為什麼我不能看到Windows CD-ROM的長檔名?
    19. Linux支援Microsoft的Joliet檔案系統嗎?
    20. Linux 支援 "加強" 的 CD 嗎?
    21. Linux 有沒有支援 DVD-ROM?
    22. 那 Linux 支援 CD-RW 嗎?
  7. 參考文獻
  8. 專有名詞及術語解釋

1. 緒論

這是 Linux CD-ROM HOWTO。 編寫它的目的是收集在 Linux 下安裝及設定 CDROM 時所需的一切知識,以作為快速參考之用。 它也將回答常見的問題, 也指引了其它關於唯讀光碟機的應用及技術方面的參考資料。

1.1. 感謝

這裡的很多資訊都來自 Linux 核心中的原始碼及文件,網際網路(Internet)上的 [WWW] alt.cdrom 討論區的FAQ,及 Linux 使用者的惠予。

由於有 [WWW] SGML Tools 套件,所以只要有同一份原始檔, 就可以產生好幾種不同格式的文件。

1.2. 最新版本何處尋

這份文件的新版本將定期張貼到 [WWW] comp.os.linux.answers 網路新聞組。 它們也會上載到很多包括 [WWW] ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/ 之許多保存這類資訊的匿名 ftp 站。

本文的超文件版及其它 Linux HOWTO 也在很多 WWW 網站,包括 [WWW] http://metalab.unc.edu/LDP/HOWTO/。 很多 Linux 發行套件也包含這些 HOWTO 文件, 通常放在 [WWW] /usr/doc/目錄裡, 你甚至可向一些業者購買印刷的版本。 然而有時在 CD-ROM 裡的,在 ftp 站臺上的, 或是印刷的版本已經顯得過時了。 如果在本 HOWTO 上標的日期早於六個月前, 那麼在 Internet 上可能已經有新版了。

要請您注意的是,由於網際網路的動態性質,在本文件中所有的 WWW 及 FTP 連結都可能發生改變。

本文件亦被翻譯為幾個不同語言的版本:

也可以找到其它 [WWW] Linux HOWTO 翻譯文件。 如果你把它翻成其它語言,請讓我知道,我會為它在這兒做個連結。

1.3. 回饋

這份 HOWTO 文件,需要各位讀者協助,才能越來越好用。 如果您有任何建議,修正, 或意見,請告訴作者( [WWW] [email protected])。 我將會在下一版試著加入這些意見。

(譯注: 對本中文版的意見,請告訴 [WWW] 譯者([email protected])。)

我也很樂意盡我能力回答關於唯讀光碟機及 Linux 的一般問題。 但在這之前, 請先耐心讀完這整篇 HOWTO,然後再給我關於那個問題相關的所有細節。 還有請別問我如何在非 Linux 的作業系統上使用光碟機。

如果您在唯讀光碟上或以硬拷貝形式發行此文件,請您附送我一份。 請送到我的郵遞地址。 也請考慮一下對 Linux 文件計畫作點奉獻,以支持 Linux 的免費文件。 請和 Linux HOWTO 協調人 Tim Bynum ( [WWW] [email protected] ) 聯絡以得到更多資訊。

1.4. 散布時的注意事項

Copyright (c) 1995-1999 by Jeff Tranter.

本中文版之版權為 Jeff Tranter 及 伍永康 所有(1996-1999)。

This document may be distributed under the terms set forth in the [WWW] LDP license

本文件得依照[WWW] LDP 執照的條款發行。

2. CD-ROM 技術

有一本 CD-ROM 的操作手冊這麼寫著:

(譯: " CD-ROM 是唯讀記憶體,音訊光碟系統是以做為讀取數位資料之目的而存在。 要是想聽 CD 唱片,請把耳機插入耳機洞裡。 ")

別抓狂 ! CD-ROM 技術的世界沒有你那本操作手冊講得那樣令人糊塗。

CD-ROM 是 Compact Disc Read-Only Memory 的英文縮寫,它是一種以雷射光照射在 (polycarbonate) 碟片鋁層上的,在電子顯微鏡下才能見到的小洞來讀取, 以儲存大量資料的媒體。 CD 唱片也用相同格式。 因為其高儲存量,及低廉的價格, CD-ROM 已成為日益風行的儲存媒體了。

一片 CD-ROM 碟片約可儲存 650MB 的資料,相當於 500 張 3.5 吋高密度軟碟片或二十五萬頁的打字資料。

第一代的機型(單倍速機種),提供了約每秒 150KB 的傳輸率; 這個現在看來已經過時了。 硬體製造商早已推出二倍速(300kB/s)、四倍速(600kB/s)、六倍速(6X)、八倍速(8X) 及更高倍速的產品。 目前已經到達 40 倍速以上, 雖然它的只有資料在碟片上的一小部份時能達到最高速度。

多數的 CD-ROM 機器使用小型電腦系統介面(SCSI),ATAPI 加強型 IDE 介面, 或廠商的專屬介面其中之一。 它們基本上也提供從外部耳機或音源線放 CD 唱片的功能。 有些機器也允許直接從唱片讀取數位格式的聲音片段。

CD-ROM 通常以 ISO-9660 檔案系統 (先前叫 High Sierra ) 的格式存在。 這格式限制檔名以 MS-DOS (8+3 字元) 形式存在。 Rock Ridge Extensions 使用了 ISO-9660 標準沒定義的欄位以支援長檔名及額外的 UNIX 形式資訊(如檔案所有人, 符號連結等。) 微軟也定義了叫做 Joliet 的專屬 ISO 檔案系統延伸,它支援使用 16 位元 Unicode 編碼的長檔名。

相片光碟是由柯達(Kodak) 發展出的標準, 用來存放以數位方式記錄的相片影像到 CD-ROM 上。 你可以在電腦上利用某些軟體看這些圖片,操作它們,或送去列印。 也可以不要一次做完,稍後再將新相片錄進去,這就是眾所熟知的多段錄製 (Multi-session)能力。

CD 燒錄機(CD-R) 允許寫入特殊的"金色"光碟片,這些片子稍後並且可以由任何 CD-ROM 讀取。 資料僅能寫入一次,雖然如果使用多段錄製,可以在稍後增加新資料。 現在這種機器已經很快成為一般人買得起了。

CD-RW(read/write) 燒錄機支援在光碟上多次寫入資料。 這些特別的片子不能使用標準的 CD-ROM 讀曲,雖然 CD-RW 機器本身也能讀取標準的片子。

DVD-ROM 將 CD 的儲存容量增加到 17 GB。 它們通常作為用 MPEG-2 格式儲存全程的電影影片的傳播媒介。 通常使用特殊的解碼硬體來解碼這些 MPEG 視訊。

3. 支援的硬體機種

這一節列出了現在 Linux 所支援的唯讀光碟機及介面。 資料來源是來自最新的穩定 Linux 核心,在寫這篇時是 2.2.4。

這份資訊目前僅適用於 Intel 平台上的 Linux。 不過其中某些資訊對其它處理器架構也有參考價值。

3.1. ATAPI介面唯讀光碟機

ATAPI(ATA 封包介面)是個控制儲存設備的協定。 它是建立在給硬碟使用的 IDE 介面 (ANSI 正式名稱為 ATA(AT attachment)介面 )上。 ATAPI 常用於硬碟,光碟, 磁帶及其它設備上。 是目前最暢行的介面,提供了 SCSI 的大部份功能, 但又不需要昂貴的控制卡及接線。

Linux 核心有一個應該是任何 ATAPI 相容光碟機都可驅動的驅動程式。 有 Aztech, Mitsumi,NEC,Sony,Creative Labs,以及精英等廠商生產相容的機種。 如果你最近買了 CD-ROM,特別是四倍速以上的,幾乎都是 ATAPI 的。

Linux 也有一個 IDE 模擬 SCSI核心驅動程式,可以讓 IDE/ATAPI 設備由軟體看起來像是 SCSI 設備一樣,如此就可以用 SCSI 的設備驅動程式而非 IDE 的來驅動它。 這在當你有一台沒有原生(native)驅動程式的 ATAPI 設備時(如 ATAPI CD-PD 或 CDR 機器)顯得特別有用。 接著您可以和相對應的 SCSI 驅動程式搭配使用。

3.2. SCSI介面唯讀光碟機

SCSI (小型電腦系統界面) 是唯讀光碟機上很流行的一種介面。 它的主要優點是相當快的傳輸速率,可接數台設備,還有多種電腦平台都支援它。 而缺點則是需要相對較貴的控制卡及接線。

任何區塊大小是 512 bytes 或 2048 bytes 的 SCSI光碟機 在 Linux 下應該都能驅動; 而在市場上的大多數機種應該都屬於這類型。

你也需要一片 Linux 支援的 SCSI 控制卡; 想要硬體介面的更進一步資訊,請看 [WWW] SCSI HOWTO

注意有些光碟機附送一片修改過的,和 SCSI 不完全相容的控制卡(例如說, 它無法在後面再接 SCSI 裝置)。 這些很可能不能在 Linux 下使用。

3.3. 專屬介面唯讀光碟機

有些光碟機使用專屬介面; 通常此介面由音效卡提供。 也有把這功能獨立做出的簡易介面卡。 這些機器趨向於比 SCSI 的便宜及小型。 缺點是缺乏標準及擴充性。

注意有時候專屬介面被錯誤地當成 IDE 介面,因為就像 IDE 硬碟般,它們使用以 PC/AT 匯流排為基礎的簡單介面。 有些廠商,特別像 Creative Labs,出售很多不同型的光碟機, 並在其音效卡上提供專屬,SCSI 及 ATAPI 介面,更增添了這項困惑。

底下列出了已知 Linux 支援的專屬介面光碟機。 新增的機器的驅動程式可能在新的開發版核心裡或是做成核心修補檔。 後者通常可在 [WWW] ftp://metalab.unc.edu/pub/Linux/kernel/patches/cdrom/ 中找到。 也請注意核心中的 README 檔中的最新資訊,這些檔案通常會安裝到 /usr/src/linux/Documentation/cdrom 目錄下。

專屬介面 CD-ROM 機種

廠牌 機型 核心驅動程式 附註

Panasonic CR-521 sbpcd 註 1

Panasonic CR-522 sbpcd 註 1

Panasonic CR-523 sbpcd 註 1

Panasonic CR-562 sbpcd 註 1

Panasonic CR-563 sbpcd 註 1

Creative Labs CD-200 sbpcd

IBM External ISA sbpcd 註 2

Longshine LCS-7260 sbpcd

Teac CD-55A sbpcd

Sony CDU-31A cdu31a

Sony CDU-33A cdu31a

Sony CDU-535 sonycd535 註 3

Sony CDU-531 sonycd535

Aztech CDA268-01A aztcd 註 4

Orchid CDS-3110 aztcd

Okano/Wearnes CDD110 aztcd

Conrad TXC aztcd

CyCDROM CR520ie aztcd

CyCDROM CR520ie aztcd

GoldStar R420 gscd 註 5

Philips/LMS CM206 cm206 註 6

Mitsumi CRMC LU005S mcd/mcdx 註 7,8

Mitsumi FX001 mcd/mcdx 註 7,8

Optics Storage Dolphin 8000AT optcd

Lasermate CR328A optcd

Sanyo H94A sjcd

various various isp16 註 9

注意:

  1. 這些機種可能以Creative Labs,Panasonic,Matsushita,或Kotobuki 之名出售。

  2. 這一型基本上和 CR-562 是一樣的。

  3. 也可能以 Procomm 之名出售。

  4. 這個驅動程式僅對 CDA268-01A 有效。 其它型式像 CDA268-03I 及 CDA269-031SE 都不是專屬介面,應該用 IDECD(ATAPI)

  1. 也可能是 Reveal Multimedia Kit 的一部份。

  2. 飛利浦 CM205 並不被此驅動程式支援,在 有它的[WWW] alpha版 驅動程式。

  3. 也可能以 Radio Shack 之名出售。

  4. 這個有兩個驅動程式,mcd 是舊版的,mcdx 是新版,有更多的功能,但比較不穩。

  5. 這個驅動程式是給接在 ISP16,MAD16 及莫札特音效卡上的光碟機用的。

如果上列的機器沒被你的核心支援,你可能需要換新版本的核心。

如果你的機型不是上列的,特別是如果是最近買的四倍速以上機種,; 它很可能是前面所述的 ATAPI 光碟機。 一個最常犯的錯誤就是認為一切接在聲霸卡上的光碟機都應該用 SBPCD 驅動程式。 Creative Labs 及多數廠商早已不賣專屬介面的機種了; 它們遵從標準的 ATAPI/IDE 介面。

3.4. 印表機介面唯讀光碟機

有些外接設備用平行印表機介面(parallel port)跟電腦連接。 多數情況下這些設備內部是使用 IDE 介面,並透過 IDE 轉接 PC 平行印表機介面來達成。

Linux 有可以支援多數印表機介面設備的 印表機介面 IDE 驅動程式。 在這篇撰寫時, 它支援以下廠商(包含多數與它們相容的雜牌機型): ATEN,Avatar,DataStor, Fidelity International Technology,FreeCom,Hewlett-Packard,Imation,KT Technology,KingByte Information Corp.,Maxell,Microsolutions,OnSpec, Shuttle Technology,SyuQuest,以及 ValuStore

[WWW] http://www.torque.net/parport/ 可以找到更進一步資訊。

3.5. 選擇性的驅動程式

Zoltan Vorosbaranyi 寫了另一個選擇性的 Panasonic/Matsushita CR-56x 驅動程式。 可以在 [WWW] ftp://ftp.honlap.net/pub/linux/pcd/pcd-0.30.tar.gz 找到。

4. 安裝

在 Linux 下安裝 CD-ROM 包含了以下步驟:

  1. 安裝硬體

  2. 設置及重建 Linux 核心

  3. 建立設備檔及設定啟動參數

  4. 重新啟動 Linux 核心

  5. 掛上媒體(片子)

下幾節將會詳細列出該有的步驟。

4.1. 安 裝 硬 體

按照廠商的說明書指示去安裝硬體,或請廠商幫你裝。 詳細情形會因你使用的介面及內接或外接而有所不同。 對 Linux 來說, 並沒有特別的安裝要求。 您也許要設定機器或介面卡上的跳線(jumper)以使之正常工作; 有些核心驅動程式有 README 檔教您如何做。

就如同檔案ide-cd中所描述的,ATAPI CD-ROM 在做排線上唯一的一台機器時, 應調成 'single' 或 'master',不要調 'slave'。 (雖然最新的核心已經不那麼要求如此做了。)

4.2. 設定及建立核心

當開始從 CD-ROM 安裝 Linux 時您應該早就有一片 boot 或者 boot兼root 磁片。 可能的話,您可以選有支援您的 CD-ROM 的 boot 磁片。 如果找不到包含您需要的 CD-ROM 驅動程式 的開機片,您可以:

  1. 從光碟直接開機(如果您的機器和 Linux CD 支援的話)

  2. 從網路安裝

  3. 啟動DOS,將 Linux 檔案複製到您的硬碟上

  4. 啟動DOS,一片一片地製作開機安裝片

  5. 找個可以幫您做支援您 CD-ROM 的啟動磁片的人

[WWW] Linux Installation HOWTO (中文版翻譯中) 中對安裝 Linux 有更詳細的步驟。 如果您是買Linux CD-ROM,經常也會有一些安裝指示 (在 CD 盒的小封面底,或在 CD 的檔案裡)。

Linux 剛安裝好時,多數人基於以下理由,會重新編譯核心:

有關建立核心的詳情請見 [WWW] Linux Kernel HOWTO 以下我只提到和 CD-ROM 有關的部份。

很明顯的,您在 make config 時,需要加入對您的 CD-ROM 的支援。

如果您有 ATAPI 的機種,您對下面問題應回答yes

對 SCSI 機種,則要打開以下選項:

當然也要加入對您用的SCSI卡的支援,如這行提示:

對專屬介面 CD-ROM,使用相對應的驅動程式。 您可以用上一章列的表得知您用的光碟機該用那種驅動程式。

基本上所有 CD-ROM 碟片都用 ISO-9660 檔案系統,所以您也必須加入它:

雖說對 CD-ROM 運作不是必要的,如果您有 Linux 支援的音效卡, 您也許會想在核心起動它,以便將來使用。 [WWW] Sound HOWTO 將是一個很好的參考。

然後您應該照正常的步驟去編譯及安裝核心。 在您建造設備檔及照下一節設定啟動參數前, 不要急著用新造的核心開機!

ISO-9660 檔案系統及幾乎所有 CD-ROM 驅動程式都可被做成可載入模組。 這樣子一些核心驅動程式就不必重開機即可載入及去除。 建議您先不要做成模組。 可在(核心中)模組的文件及[WWW] Linux Kernel HOWTO 中找到使用模組的方法。

如果列在這裡的機器並沒有被您的核心支援,那麼您八成需要更新核心....

您也可能要自己抓核心之外的修補檔,這通常牽涉到修補核心。 一樣, [WWW] Linux Kernel HOWTO 也解釋了如何做。

注意新版的核心有個功能表式的核心設置(configuration)程式, 可用 make menuconfig 叫出,或是 X11 式的設 置程式(用 make xconfig 叫出)。 三種方法都提供線上求助。

4.3. 建立設備檔及設定起動時參數

核心使用設備檔來辨識該用那個驅動程式。 如果您用的是一個發行的 Linux 套件, 安裝後您也許已經有必需的設備檔了。 例如說,在 Slackware Linux 下,有個選單型安 裝程式setup,它包含了 CD-ROM 安裝。 多數系統也有 /dev/MAKEDEV 這個 指令稿(script)。 如果您不用這些方法,您可用像以下的手動的方法做。 即使您用了我們提到的方法, 仍然建議您再確認一下這些設備檔,以確保它們的正確性。

您可以用指出您機器型式的 shell 命令建立設備檔。 這應該可用 root這個身份完成。 注意有些 Linux 安裝套件用的名稱可能不太一樣。

另外也建議您建立一個符號連結,這會好記一點。 例如說,對一台 IDE 介面的機器來說 ,可以如下般建立:

如果您想放唱片,您就要設定檔案保護權限(不是符號連結檔,是真正的設備檔!), 使其它人也可讀取。

起動 Linux 時,驅動程式要確定該設備是否存在,這通常是靠自動偵測。 多數驅動程式 會偵測好幾個位址,但因配備不同。 可能的設備衝突。 及硬體限制,有時需要手動給予這 些資訊。 多數驅動程式支援從核心的命令列取得這些資訊。 這可以手動輸入,或加在您的 開機載入程式裡。 例如說,您用 LILO 當開機載入程式的話,您可以在 /etc/lilo.conf 用 append 命令:

請看 LILO 的文件獲得更多資訊。

下一節我討論每一種驅動程式,它的設備檔,啟動參數,及它們的具備的能力。 您也許 只想看和您的機器有關的部份。 這些文件通常會放在 /usr/src/linux/Documentation/cdrom 目錄下。

4.3.1. Sbpcd 驅動程式

這個驅動程式支援以下型式的核心命令列:

第一個參數是 I/O 基底位址(如0x230)。 interface-type 可以是  ,請看 sbpcd.h 中的提示. 要關閉 此驅動程式,用 sbpcd=0。

可照下面建立設備檔:

一片卡最多可以裝到四台,後三台的設備次編號(minor device number)分別由一到三。 如果您的界面卡更多,可建立主編號 26,27,28。 最多可有 4 片卡。 (也就是 16 台 CD-ROM 可用,對一般使用者應該夠了 :-)。

請看 sbpcd 檔案以獲得更多關於此驅動程式的資訊。

如果您最近才買 CD-ROM,不要假設接聲霸卡的就應該用這驅動程式。 現在 Creative Labs 賣的幾乎都是 EIDE/ATAPI 的機種了。

4.3.2. Sonycdu535 驅動程式

這個驅動程式的命令列是這樣的:

io-address 是基底位址(如 0x320)。 不然您也可以寫在 sonycd535.h 裡編譯進去。

設備檔這樣建立:

有些 Linux 套件用 /dev/sonycd 這個檔。 舊版核心給它主編號 21,確定一下您的設備 檔是正確的。

這個驅動程式原本只是修補,不過現在已是標準核心的一部份了。 請參考 sonycd535 檔案取得進一步資訊。

4.3.3. Cdu31a 驅動程式

這個驅動程式的命令列是這樣的:

第一個參數是 I/O 基底位址(如 0x340)。 第二個是中斷號碼(0 代表不用中斷,用輪 詢),第三個參數只有在連接 Pro Audio Spectrum 16 音效卡時要加,固定是PAS, 其它音效卡就不用了。

如果是作成模組,命令列格式則有些不一樣。 用 modprobe 或 insmod 命令時,是以以下 形式載入:

io-address 是必要的,而 interrupt 則可有可無。

設備檔這樣建立:

詳細資訊請參見 cdu31a 檔案。

這個驅動程式也有個資訊網站台,可在 [WWW] http://www.infinet.com/~zureal/cdu31a.html 找到。 作者是 Jeffrey Oxenreider ( [WWW] [email protected]),包含了 許多此驅動程式的常見問題。

4.3.4. Aztcd 驅動程式

核心命令列像這樣:

唯一的參數是 I/O 基底位址(如 0x340)

設備檔如下建立:

注意這個驅動程式僅供 CDA268-01A 用。 其他機型如 CDA268-03I 及 CDA269-031SE 等不是專屬介面,應該用 IDECD (ATAPI) 驅動程式。

詳細資訊請參考 aztcd 檔案

4.3.5. Gscd 驅動程式

核心命令列如下:

它用 I/O 基底位址作為其參數。(如0x340)

設備檔可照下例建:

詳細資訊請參考 gscd 檔案及其網站 [WWW] http://linux.rz.fh-hannover.de/~raupach 以取得更多資訊。

4.3.6. Mcd 驅動程式

這是舊版的 Mitsumi 機器驅動程式,出來很久了。 也許您想用新的 mcdx 驅動程式, 它提供更多功能,但也許沒這麼穩。

允許的核心命令列如下:

參數分別是介面卡的 I/O 基底位址(如 0x340)及 IRQ 要求號碼。

設備檔如下建立:

詳情請參閱 mcd 檔案

4.3.7. Mcdx 驅動程式

這是新的實驗性 Mitsumi 驅動程式。 舊的 mcd 可能仍然比較穩,且仍然存在。

可接受的核心命令列:

參數分別是介面卡 I/O 基底位址(如 0x340)及 IRQ 要求號碼。

設備檔照下面方法建:

如果您最近買 Mitsumi 機器,不要假設它應該用這驅動程式; 新的 Mitsumi 機種和 EIDE/ATAPI 相容 ,應該用 idecd 驅動程式。

詳細資訊見 mcdx 檔

4.3.8. Cm206 驅動程式

可 可讀取數位音軌?: 不可 能自動偵測?: 能 設備檔: /dev/cm206cd,主編號 32 設定檔: cm206.h 核心設定的問題: Philips/LMS CM206 CDROM support? 請另外閱讀: cm206

核心命令列像下面:

第一個是基底位址(如 0x340),第二個是中斷號碼。

照下面方法造設備檔:

更詳細的資訊請見 cm206 檔

4.3.9. Optcd 驅動程式

它接受下面的核心命令列:

參數是介面卡 I/O 基底位址。

設備檔建立法:

詳細資訊見 optcd 檔。

4.3.10. Sjcd 驅動程式

核心命令列像下面這行:

指出基底位址,中斷,及DMA直接記憶體存取通道號碼。 (如 sjcd=0x340,10,5)

設備檔以下面方法做:

詳情見 sjcd 檔案

4.3.11. Paride 驅動程式

這是許多種用印表機介面連接的儲存設備使用的驅動程式。 通常這個驅動程式會自動偵測印表機介面上的設備。 如果自動偵測無法抓到的話, 驅動程式文件中有描述如何設定設備的參數。

設備檔的建造法:

請看 /usr/src/linux/Documentation/paride.txt 以取得本驅動程式的更深入資訊。 注意本驅動程式取代了舊版核心中的 bpcd 驅動程式。

4.3.12. SCSI CD-ROM 驅動程式

對每一種不同的 SCSI 卡而言,用的命令列參數不一樣,請參考 [WWW] SCSI HOWTO

可以接多台機器(至多接到 SCSI bus 能接的上限)。 設備檔主編號是 11,次編號由 0 起 算:

(譯注: 在核心裡叫做 /dev/sr0,/dev/sr1,等,但其實它們就是/dev/scdX)

此驅動程式本身不支援讀取數位音軌功能,然而有些 SCSI CD-ROM 有這能力,可用 cdda2wav 程式達成(它使用通用 SCSI 核心介面)。

也請參考之前討論的IDE 模擬 SCSI驅動程式部份。

4.3.13. IDECD 驅動程式

這是 ATAPI CD-ROM 驅動程式。 它支援下面的命令列格式:

這裡的 hdx 可以是 {hda,hdb,hdc,hdd},或只有 hd,表示下一台機器。 只有前三個參數 是必要的(cyls,heads,sects),例如說,hdc=1050,32,64 hdd=cdrom

要讓 IDE 驅動程式認識您的 CD-ROM 可能有點麻煩,特別是您有超過二台設備或超過一 個 IDE 接頭。 通常這需要由 LILO 送出正確的命令列參數。 /usr/src/linux/Documentation/ide-cd這檔案有詳細介紹,請仔細看。

最近的核心對多台 IDE 設備支援的更好了。 所以如果在舊核心上有問題,升級也許能解 決。

有些 IDE 介面硬體有問題,但核心可以處理。 這種情形您要送參數給核心以啟動此功能。 細節請見核心內文件。

4.4. 起動 Linux 核心

現在您可以用新核心啟動了。 請注意看一下和以下的很像的訊息 ,它指出 CD-ROM 驅動程 式有沒有發現您的 CD-ROM (訊息會因您用的 CD-ROM 種類不同而有變化)

如果訊息捲動得太快了,應該也可以用 dmesg 或 tail /var/adm/messages 來查看。

如果沒有找到該機器,那就代表有問題出現了,請看一節。

4.5. 掛上,卸下,及退出光碟片

若想掛上 CD-ROM,把光碟片放進去,然後以 root 身份執行 mount 命令。 (這裡假設您已經如我們所建議的,做了符號連結,並且也有空的 /mnt/cdrom 目錄)

現在您可以到 /mnt/cdrom 下去存取 CD 上的東西了。

您也許還想用mount 命令的其它參數掛載 CD-ROM。 欲知詳情,見 mount(8) 說明頁。

您可以在 /etc/fstab 加進一行,使 Linux 開機時就自動掛上 CD-ROM,或給予一些掛載 時的參數。 請看 fstab(5) 說明頁。

注意,若想要聽 CD 唱片,那就不要掛上它。

要卸下 CD-ROM,以 root 身份執行 umount 命令。

只有在沒程序存取 CD-ROM 時(包括沒人目前目錄在 CD-ROM 時) 才可以卸下該片子。 卸下 後就可以退片了。 大多數機器都有退片鈕,不過也有一個軟體退片程式 [WWW] eject 可以靠軟體控制退出片子。

注意不要在碟片還在掛載中時退出片子 (這種狀況有些 CD-ROM 可能發生,有些不會) 有些 CD-ROM 驅動程式可以在卸下時自動退片,而掛上時自動進片。 (您可以重 新編譯核心或用軟體命令關閉這功能)

也有可能在放了 CD 唱片後,就無法掛上 CD-ROM 片子了。 這時您要用 CD 播放程式送出  命令後再嘗試掛上。 這問題只在 SBPCD 驅動程式出現過。

最近的核心支援了以核心為基礎,能提供對可抽換式媒體 (包括 CD-ROM) 透明化掛載能力的 automounter。 您可在 [WWW] ftp://ftp.kernel.org/pub/linux/daemons/autofs/ 找到使用它所需要的工具。

4.6. 問題與解決

如果您按照本 HOWTO 的指示去做卻還有問題,有一些地方可以先確認一下。 這裡由簡單 到複雜一條條列出來。 如果問題剛好出現在某步驟,先解決這問題再進行下一步。

4.6.1. 第一步: 確定您用您自己編譯的核心啟動系統

您可以檢查核心中的時間戳記,看看是不是有支援 CD-ROM 的版本。 您可以用 uname 命令來檢查:

或顯示 /proc/version 檔中的內容:

如果這個時間戳記比您編譯還早,那您就是在用舊核心了。 您真的重開機過嗎? 如果您 用 LILO,是否忘記重裝一次(一般執行/etc/lilo/install)? 用軟碟開機的話,您有做了一片新開機片,並用它開機了嗎?

4.6.2. 第二步: 確定需要的核心驅動程式有被編譯進去

您可藉由觀察 /proc/devices 來看編譯進了什麼驅動程式:

首先看您的 CD-ROM 驅動程式。 CD-ROM 都是區塊設備。 在這裡我們看到主編號 22 的 idecd 驅動程式存在著。

您也可以藉由看 /proc/ioports 檔來看使用了那些 I/O port:

如果有東西您記得有編譯但卻沒顯示,那麼就是您設置核心時出了問題。 從再設置及重建 核心開始,再重複安裝核心的步驟。

4.6.3. 第三步: 起動時,核心有偵測到您的機器嗎?

當核心起動時,確定您的 CD-ROM 被偵測到了。 應該在開機訊息裡可以看到。 如果訊息捲 動太快,看不到,您可以用 dmesg 命令再顯示一遍:

或者

如果開機沒找到,那一定某處有問題。 確定它開電源了,並且連線也都接對了。 如果您 的機器有位址的跳線(如 SCSI ID 或 562B 的 ID),確定它設在正確位置上(例如,若是 只有一台則設 "drive 0") ATAPI CD-ROM 若是該 IDE 排線上唯一一台,則必須設 "single" 或 "master",不要設 "slave"。 如果在 DOS 下很正常,那您就可以相信硬體 是正常的了。

有些驅動程式用自動偵測,有些不用,而且自動偵測也不是完全可信的。 使用您的驅動 程式提供的核心命令列選項。 如果您不是很確定 I/O 位址或其它參數的話,您可能要試 好幾遍不同的 I/O位址或其它參數。 LILO 可以被設成允許您起動時手動輸入參數。

另一個可能就是您用錯驅動程式了。 有些文件將專屬介面寫成 IDE,使人們誤以為它是 ATAPI 的機種。

還有一個可能是您的機器(或介面卡)是那種需要 DOS 驅動程式來驅動它的所謂 。 這樣的話,您要先用 DOS 開機,載入這個驅動程式,再按 Control-Alt-Del 重起動 Linux。

如果本文件中沒列出您的機器,那可能在 Linux 下還沒有驅動程式。 您可以看一下文後 的參考資料表,試著求一點幫助。

4.6.4. 第四步: 您能從機器上讀出資料嗎?

試著從 CD-ROM 讀資料。 打入以下命令後,應該可以看到 CD-ROM 的燈亮起來(如果有燈 的話),而且也不會回報錯誤。 照您的驅動程式的設備檔,並確定放了一片 CD-ROM 片子; 按下 Control-C 離開。

如果成功,那核心就能成功的和機器通訊,您可以跳到下一步。

如果不能的話,問題可能出在設備檔。 確定在 /dev 下的設備檔的主編號及次編號如前面寫的一樣。 也檢查一下它是否允許讀取及寫入權。

也有一點點可能是硬體問題。 可能的話,在 DOS 下試試看,確認是不是這狀況。

4.6.5. 第五步: 您能掛上片子嗎?

如果您能讀取但不能掛上,首先確定一下核心有沒有支援 ISO-9660 檔案系統。 如前所 述,看 /proc/filesystems 檔。

注意一下,請在掛上時用  選項。 還有在 CD-ROM 中放的是資料碟片,不是唱片。 通常要以 root 身份執行掛上命令。

確定掛載點存在,且是個空目錄。

如果您想開機時自動掛載,確定在 /etc/fstab 中有正確的一行。

如果您有跑 syslog,那可能您看不見有些核心發出的訊息。 試試 dmesg 命令:

錯誤也可能記錄在 /var/adm 目錄下的檔案中,全看您的系統怎麼設的。

4.6.6. 消除聽音樂時的問題

如果您的機器讀 CD-ROM 時沒問題,但聽唱片就有問題,這裡提供些解決之道。

您需要些可放唱片的軟體。 有些程式可能和您的機器不相容。 試試其它的或重新編譯它。 一個找軟體的好地方在 [WWW] ftp://metalab.unc.edu/pub/Linux/apps/sound/cdrom/

有些 CD-ROM 不支援放唱片。 檢查文件或原始碼,看看是不是這情形。

檢查一下聲音是不是會從耳機孔出來。 如果可以,那八成和您的音效卡有關。 使用混音程 式設定輸入頻道及音量。 確定您從 CD-ROM 接了條音源線到音效卡上。 也確認一下核心的 音效卡驅動程式存在及可用(請看 [WWW] Sound HOWTO)

4.6.7. 要是一切都沒用呢?

如果您還有問題,這裡有一些最後的建議,您可以試試:

5. 應用

這一節簡要地列出在 Linux 下 CD-ROM 的主要應用。 查閱 Linux軟體大地圖(Linux Software Map) 看看它們在何處及最新是第幾版。

5.1. CD唱片播放程式

有好些程式有能力放CD 唱片,可從耳機洞或音效卡出聲。

表:CD 播放程式

軟體 說明

Workman 一個在 X11 下的圖型化播放程式,支援 CD資料庫,還有很多其它功能。

WorkBone 一個互動性的文字模式播放程式

xcdplayer 一個 X11 下的簡單播放軟體

cdplayer 非常簡單的命令列播放器

Xmcd 一個 X11/Motif 的播放軟體

xmitsumi 另一個給 Mitsumi 機器用的 X11 下播放程式

xplaycd 另一個 X11 的播放器,包含一個混音器及 VU 計程式

cdtool 命令列播放 CD 唱片的工具

以上有些程式可能程式裡規定用某個設備檔(如 /dev/cdrom)。 也許您可以用參數指示它用什麼設備檔,或您也可在 /dev 下建符號連結來指示。 如果將聲音送到音效卡,您或許會想用混音器來調音量或選擇 CD-ROM 輸入當錄音音源。

5.2. 相片光碟

相片光碟利用 ISO-9660 檔案系統存放專屬格式的影像檔。 並非所有 CD-ROM 都支援讀取相片光碟。

Hadmut Danisch 寫的 hpcdtoppm 程式可將像片光碟檔案轉成可轉移式點陣圖 (ppm,portable pixmap) 格式。 它可經由 [WWW] ftp://ftp.gwdg.de/pub/linux/hpcdtoppm 取得,或者也可以在 PBM(portable bit map)公用程式(在很多檔案庫中都都可取得) 裡 面找到。 (請查詢 )

Gerd Knorr( [WWW] [email protected])寫的 photocd 程式可將相片光碟轉成 Targa 或者 Windows 及 OS/2 用的 BMP 檔。

這位作者也寫了 xpcd,一個可處理相片光碟影像的 X11 軟體。 您可以用滑鼠選擇影像, 在小視窗中瀏覽,或用五種解析度看它。 您也可選定影像的一部份,只載入它們。 xpcd 可 在 [WWW] ftp://ftp.cs.tu-berlin.de/pub/linux/Local/misc/中找到。

ImageMagick 影像檔操作程式也支援像片光碟檔案。 它在 [WWW] ftp://ftp.x.org/contrib/applications/ImageMagick/裡。

5.3. Mkisofs

Eric Youngdale 的 mkisofs 套件允許您在硬碟上建立 ISO-9660 檔案系統。 這樣可以幫助您深入了解光碟,也能在燒光碟前先測試其檔案系統。

真正將資料寫進CD 燒錄機的工具幾乎都依廠商不同而有所不同。 它們也要求 寫資料時不能有任何中斷,所以像 Linux 這種多工作業系統並不是非常適合這種工作。

5.4. ISO-9660 公用程式

有些公用程式可以確認 ISO-9660 格式化的碟片是否正確。 您也許會發現在測試奇怪的 CD 時會有用。 這玩意可在 [WWW] ftp://ftp.cdrom.com/pub/cdrom/ptf/ 中找到。 作者是 Bill Siegmund 及 Rich Morin。

6. 常見問題與解答

6.1. 沒有 root 身份的人,如何掛上及卸下光碟片

多數 mount 命令支援user選項。 假設您在 /etc/fstab 裡加入了這樣一行:

那麼普通使用者就可以像下面這樣掛上或卸下這台機器的資料:

掛上程序將會加上一些額外選項以確保系統安全(例如: 程式不准執行,片子上的設備檔 將失效(不予理會)); 如果這些限制過嚴了,您可以加入額外的選項(如 "exec" 選項可以讓上面的程式可執行)。 請看 mount(8) 說明頁得知詳情。

另一個辦法就是抓 usermount軟體,它允許非 root 之使用者掛上/卸下可移除設備,如軟碟及 CD-ROM 等,但限制對其它設備的動作 (如硬碟分割區)。 它在主要的檔案庫都有。

在 ftp.cdrom.com 裡有 mount.c 的原始碼, 它允許一般使用者掛上/卸下 CD-ROM。 它必須 setuid 後才能這麼做。

(譯注 : setuid 是指,將執行檔執行時的權限變成和執行檔所有人相同。 普通執行檔執 行時,權限是執行者的權限,這樣的話很多程式都不能跑(如: 您不能修改/etc/passwd, 所以不能變更密碼。)。 而如果setuid,該檔又是root所有,這種執行檔就有root權限了。 (像passwd程式就是靠這個改密碼的)。 不過 setuid 反過來也可能是系統安全的主要漏 洞。)

6.2. 為何我要卸下光碟時,卻得到 "device busy" 訊息?

如果有任何程序正在存取這機器,包括它們的現行目錄正在它上面,那就不能卸下。 如果 您實在不曉得那個程序正在使用這片光碟,您可以像下例一樣的用 fuser 命令:

在有些系統您可能要以 root 身份執行 fuser 指令才能看到其它人的程序資訊。

6.3. 我如何將 CD-ROM 用 NFS 與其它電腦共享?

您需要在/etc/exports檔中加入一個項目; 這樣別的機器的使用者就可以掛上它了。 請看 exports(5) 這份說明頁。

6.4. 我能用 CD-ROM 起動 Linux 嗎?

當安裝 Linux 時最常用的方法是用軟碟開機片,有些 Linux 組件可以直接由 DOS 起動 光碟上的 Linux 核心。

若有正確的 CD-ROM 片子,ROM BIOS 及 ATAPI CD-ROM 機器,從 CD 直接開機是可能的。 最新版的 mkisofs 也支援製作這種使用 El Torito 標準的開機光碟片。

(譯注: 在 SCSI BIOS 支援的情況下,SCSI CDROM 也是可能開機的)

6.5. 如何從 CD 唱片直接抓取數位音軌?

Heiko Eissfeldt( [WWW] [email protected] )和 Olaf Kindel 寫了一個公用程式可以讀取音訊資料,並將它存成 .wav 格式的聲音檔。 這個程式叫 cdda2wav.tar.gz,可以在 metalab.unc.edu 找到。

還有一個抓取數位音軌的程式是 ccdparanoia,可在 [WWW] http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia 抓到。

因為 CD-ROM 世代交替太快了,很難列出哪些 CD-ROM 可讀取數位音樂資料。 您最好的賭注是抓最新版的 cdda2wav 或 cdparanoia 套件,並讀它的文件。

若想要更進一步的資訊,請上 [WWW] http://www.tardis.ed.ac.uk/~psyche/pc/cdrom/CDDA.html 這個站台看看,還有參閱參考文獻中列舉的 alt.cdrom FAQ。

6.6. 為什麼 find 命令不太正常?

在沒有 Rock Ridge Extension 的 ISO-9660 光碟上,您需要在 find 後加上 -noleaf這選項。 請參考 find(1) 說明頁。

(在我的經驗中幾乎所有 Linux CD-ROM 都用 Rock Ridge Extension,這問題的發生率應 該極低。)

6.7. Linux 是否支援任何 CD-ROM 的燒錄設備?

X-CD-Roast 套件(Linux 版)是使用 CD 燒錄機的圖形化前端介面。 此套件可在 metalab.unc.edu 裡的 /pub/Linux/utls/disk-management/xcdroast-0.95.tar.gz 找著。

也請參考 Linux CD-Writer HOWTO 文件,在 [WWW] ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/CD-Writing-HOWTO[WWW] http://metalab.unc.edu/LDP/HOWTO/CD-Writing-HOWTO.html

(譯注: 本文件的中文版還在翻譯中)

6.8. 我掛載 CD-ROM 時得到: Read-Only file system 訊息?

CD-ROM 是只能讀取的媒體。 舊版的核心您能用可讀寫方法掛上 CD-ROM,嘗試寫資料 進去的動作只會被忽略掉。 在 1.1.33 版後,這被修正為 CD-ROM 必須以唯讀方式掛上( 就是說 mount 要有 -r 選項 )。

6.9. 我關機時,為什麼托盤自動退出來?

sbpcd 驅動程式支援在卸下片子時自動退片的功能。 在舊版核心中這也是預設值。 如果您下了關機指令,那麼掛上的 CD 就會被卸下,然後就會退片。

這樣子在換片時很方便。 如果托盤打開狀態下您掛上或讀取CD,那麼它也會自動進片。

我發現有時這功能會造成問題(如 cdplay 及 workbone)。 在 1.1.60 版核心您可以用軟 體決定要不要用這功能。 有個範例程式包含在 sbpcd 的文件裡。 (或者用 [WWW] eject 程式)。 您也可以經由修改核心原始碼sbpcd.h檔,改變預設的行為。

6.10. 我有一片無法掛上的``片子

這片片子看來像是 XA 碟片(就像相片光碟或用 CD-R 燒的  (one-offs) 片子)多數 Linux 核心 CD-ROM 驅動程 式並不支援 XA 格式,雖然您也許能在一些檔案庫找到一些修補。

sbpcd 驅動程式是支援 XA 的。 如果您用這驅動程式,您可以依以下方法確定片子是不是 XA 的格式: 修改 sbpcd.c,允許顯示"主目錄"(TOC)資訊(DBG_TOC)。 然後 做新核心,起動它,則每次掛上時都會顯示 TOC(由主控台或記錄檔)。 看第一個數字, 如果是 20,那就是 XA 片子,如果是 00,那就是普通片子。 如果 TOC 顯示不同的軌, 那也是 XA 片子的信號。

(感謝 Eberhard Moenkeberg 提供以上資訊)

其它的無法讀取 CD 可能原因:

  1. 它不是用 ISO-9660 檔案系統(如 : 有的用 SunOS 或 HFS)

  2. 它是 CD 唱片

  3. CD 有損壞或毀傷

  4. 您把光碟片放反了 :-)

6.11. 多片裝 CD-ROM 在 Linux 下能用嗎 ?

好幾位使用者已報告 SCSI CD-ROM 多片機種運作順利。 您也許要打開 Probe all LUNs on each SCSI device 的核心選項。 (如果您的 SCSI CD 驅動程式已知它是多片式 CD-ROM,這步就可以省了。 詳見 /usr/src/linux/drivers/scsi.c)

至少有一位使用者發現他也要加大驅動程式中的 SCSI 超時等待值(timeout value)。 這情況的症狀是在第一次掛上 CD-ROM 時出現像 "wrong fs type,bad option,bad superblock on /dev/sr5,or too many mounted file systems" 這樣的訊息,而第二次馬上就成功。 要這麼作的話,修改 /usr/src/linux/drivers/scsi/sr_ioctl.c 的開頭處 IOCTL_TIMEOUT 值,並重新編譯核心。 據傳在 NEC Multispin 4Xc 上把預設值由 3000 改成 10000 就能工作得很好。

為了讓所有的片槽都能存取,可能需要建立額外的區塊設備檔。 對每一個邏輯設備(LUN)都要有一個設備檔,所以一個七片換片機需要 /dev/sr0 到 /dev/sr6(如果您還有別的 SCSI CDROM, 那還要更多)。 要建立區塊設備檔,以 root 身份執行 mknod /dev/sr? b 11 ?,其中把 ? 以設備號碼取代。

Nakamichi MBR-7 的七片裝,NEC Multispin 4Xc 及先鋒牌的 12 片裝已確定能用。

EIDE/ATAPI 的多片機種也能使用。 核心已對一些機器提供了 CDROM_SELECT_DISC 這個 ioctl 的支援。 IDECD 驅動程式的文件檔包含了一個原始碼可做寫換片的程式之參考。 或者您也可以找像早先提到最新版的 eject 程式。

6.12. 我收到 `` 錯誤

有些 CD 有檔案權限,僅允許 root 讀取它。 這是 CD-ROM 業者犯的錯誤, 而且真的造成不方便。 更常見發生的是有些檔案或目錄被設成並非任何人可讀。 有人已經對核心做了修補,解決這樣的問題。

也請參考本篇後面提到的隱藏檔的相關問題。

6.13. 我如何讀懂 IDE CD 的核心錯誤訊息?

核心送給我的 IDE CD-ROM 驅動程式訊息像: "hdxx: code: xx key: x asc: xx ascq: x",這是什麼意思?

這是 IDE CD-ROM 的狀態/錯誤報告。 預設狀況下,IDECD 印出最原始的資訊,而不浪費 核心空間給錯誤訊息。 您可以改變它,讓它顯示真正的錯誤訊息。 修改 /usr/src/linux/drivers/block/ide-cd.c ,將 VERBOSE_IDE_CD_ERRORS 改成 1,並重編譯核心。

6.14. 我如何測試我的 CD-ROM 是幾倍速的呢?

有一個辦法。 底下測試它要花多久時間來讀取 1500K 的資料:

正常的單倍速 CD-ROM 每秒傳輸率為 150KB,所以約要 10 秒鐘。 二倍速約要 5 秒鐘,四倍速的約 2.5 秒鐘等等...

上面裡 "real" 時間也許是最好的值 -- 在上面情形指出它是二倍速機器。 您可以增加資料量得出更準確的值。 (如果您擔心受快取影響的話。)您也許應該多測幾次,求平均值。

我也寫了小的 C 程式可以測定並回報 CD-ROM 的資料傳輸率; 如果您要的話我可以給您。

6.15. 裝好 Linux 後,我的 CD-ROM 不能用了

最常見的症狀是先用 Linux 安裝時,Linux 承認您的 CD-ROM。 但裝完後,從軟碟或硬碟 開機卻又不能用它了。

最大的可能就是多數 Linux 套件中,裝在硬碟的核心不一定就是和安裝片用的一樣。 您 選了支援您設備的安裝片,它卻給您在硬碟上裝一個沒有支援 CD-ROM 的 "通用版"核心。 您可以照第四章所說的 "問題與解決" 去做。 (從檢查 /proc/devices 開始)

解法是重編譯核心,確定您需要的 CD-ROM 驅動程式及其它需要的部份(如 SCSI 卡, ISO-9660 檔案系統)都編進去了。 如果您不知道怎麼做,看 [WWW] Kernel HOWTO

如果您安裝時用了命令列參數(如"hdc=cdrom")您要把它加進開機載入程式 的設定檔中(通常是 /etc/lilo.conf)

6.16. 在 CD 上有隱藏檔,我沒辦法讀...

有些 CD 的一些檔案有設定隱藏位元。 這些檔案正常狀態是看不到的。 不過如果您掛上時 用了 "unhide" 選項,那麼應該就可以讀取了。(這個選項似乎沒有文件記載過)

6.17. 哪兒找得到CD-ROM API的文件資料?

如果您想寫自己的應用程式,諸如CD唱片播放程式等,您必須懂得Linux提供的 應用程式介面(application programming interface,API)

原本CD-ROM核心驅動程式都是用自定的ioctl以支援這類機器的功能。 像 /usr/include/linux/sbpcd.h 這樣的標頭檔就描述了這些。 由於很多驅動程式都是由別的驅動程式發展而來,介面雖不完全相同,但類似之處頗多。

近來,由 David van Leeuwen( [WWW] [email protected]) 發起,建立一組標準化的CD-ROM 共通 API,將共通程式碼放一起, 確保所有驅動程式都同樣的運作。 。 這文件在 /usr/src/linux/Documentation/cdrom/cdrom-standard.tex。 已有幾個核心驅動程式支援它了。 到了 2.0 版核心,所有 CD-ROM 驅動程式都合乎這組 API。

我的書,Linux Multimedia Guide,也深入提到了如何寫 CD-ROM 程式, 特別是放音方面的。 請看"參考文獻"那節。

6.18. 為什麼我不能看到Windows CD-ROM的長檔名?

如果您有一片 CD-ROM,上面有 Windows 可看到,但 Linux 看不到的長檔名, 那麼這片光碟可能是使用 Microsoft 專屬的 Joliet 檔案系統格式。 請看下一個問題。

6.19. Linux支援Microsoft的Joliet檔案系統嗎?

Microsoft 制定了一種叫 Joliet 的ISO CD-ROM檔案系統延伸格式。 它允許使用 16-bit UNICODE 編碼的長檔名。

從 2.0.34 版核心起,Linux 核心已支援 Microsoft Joliet 檔案系統格式。 您必須在核心中啟用它。

如果您要用您使用的語言(native language)正確地顯示在 Joliet CD-ROM 上的檔名, 您也需要在核心中支援相應的 NLS ISO8859 字元集。

(譯注: 中文的 cp950 還沒放進核心中; 請到 [WWW] http://www.cis.nctu.edu.tw/~is84086/Project/kernel_cp950/ 去抓取修補檔)

6.20. Linux 支援 "加強" 的 CD 嗎?

有些音樂片增加了一些資料"強化"。 一般說來您可發現這些 CD 有普通唱片的音軌, 以及可用 ISO-9660 檔案系統掛上的資料軌。

我試了一片"加強版" CD,上面有 Microsoft Windows 及 Apple Macintosh 的應用程式(當然它們無法在 Linux 上執行,雖然我用了 WINE Windows 模擬器獲得部份的成功)。 上面有些 GIF 影像,可用標準的看圖程式像 xv 來看; 或者一些可用 xanim 播放的 Apple QuickTime 格式影片。 它是多次錄製過的,有些很舊的 CD-ROM 無法讀取。 在片子裡有個 readme.txt檔內有一 Enhanced CD FAQ。

6.21. Linux 有沒有支援 DVD-ROM?

SCSI 或 ATAPI 相容的 DVD-ROM 應該可以在 Linux 上讀取 ISO-9660 格式的片子。 也就是說它可以當做(可能是更大容量的) CD-ROM 來用。

很多 DVD-ROM 片子使用 UDF 檔案系統,在本文撰寫時還在發展階段。 可以在 [WWW] http://trylinux.com/projects/udf/ 取得核心修補。

然而,我還沒聽說用軟體或配合 DVD 硬體解碼器來播放 MPEG-2 格式 DVD 影片的支援。 顯然這個編碼格式文件只能花大錢並簽下不公開合約(NDA)才能取得。 另外一個因素是 MPEG 解碼常需要專屬的解碼硬體,而廠商不願提供程式驅動資訊。 以上因素可能對在 Linux 下任何可自由傳播的 DVD 視訊軟體構成障礙。

6.22. 那 Linux 支援 CD-RW 嗎?

SCSI 及 ATAPI 相容的 CD-RW 機器在 Linux 下應可以存取 ISO-9660 格式的片子, 包括寫入資料。

很多 CD-RW 片使用 UDF 檔案系統,在本文撰寫時還在發展中,可以在 [WWW] http://trylinux.com/projects/udf/ 取得核心修補。

7. 參考文獻

首先是我已提過的核心文件檔。 一般安裝在 /usr/src/linux/Documentation/cdrom 裡。 它可算是有用資訊的寶山。

底下的 USENET FAQ 定期在 [WWW] news.answers 發出,並存放在如 [WWW] ftp://rtfm.mit.edu/的網際網路檔案庫中。

一些其它 Linux HOWTO 也提供和 CD-ROM 相關的有用資訊:

至少有好幾家公司賣在 CD-ROM 上的 Linux 安裝套件; 多數在 Distribution HOWTO 裡都有記載。

以下是和 CD-ROM 有關的 USENET 網路新聞組:

comp.os.linux網路新聞組也是 Linux 相關資訊的好來源。

[WWW] ftp://ftp.cdrom.com/pub/cdrom/裡有一大堆的 CD-ROM 資訊及軟體。

[WWW] ftp://rtfm.mit.edu/pub/usenet/news.answers/pc-hardware-faq/enhanced-IDE/ 以及 [WWW] http://www.seagate.com/techsuppt/faq/faqlist.html 中可找到 IDE 及 ATA 設備的 FAQ 文件。

制定 IDE 協定的 Western Digital 公司,在其 FTP 站也有關於 IDE 協定的文件,在: [WWW] ftp://fission.dt.wdc.com/pub/standards/atapi

有一個關於多媒體的首頁可在 [WWW] http://viswiz.gmd.de/MultimediaInfo/ 中找到。 Creative Labs 的首頁在 [WWW] http://www.creaf.com/

Linux軟體大地圖(LSM)是標定 Linux 軟體的無價參考資料。 LSM 在很多 FTP 檔案庫, 包括 [WWW] ftp://metalab.unc.edu/pub/Linux/docs/LSM/(之前的 sunsite)中都有。 也有些網站維護 Linux 應用程式的資料庫, [WWW] http://www.freshmeat.net 是其中之一。

Linux 通信論壇有幾個不同主題的討論"頻道"。 若想知道如何參加,寄一封 內容為"help" 的信到 [WWW] [email protected]

Linux 文件計畫(LDP)製作了好幾本 Linux 的書,包括 Linux Installation and Getting Started。 這些可從主要的 Linux FTP 檔案庫免費取得,或是花錢買硬拷貝型式的文件。

最後呢,雖然有些老王賣瓜之嫌,不過還是容我在此打打小廣告: 如果您想學學更多關於在 Linux 下的多媒體 (特別是關於 CD-ROM 及音效卡應用及程式設計的),到書店找找我編著的 Linux Multimedia Guide,ISBN 1-56592-219-0,由 O'Reilly and Associates 公司出版。 除了原始的英文版外, 法文版和日文版也正付印中。 若在北美洲,請電 800-998-9938。 或是光顧以下站台: [WWW] http://www.ora.com/catalog/multilinux/noframes.html 或本人的網址 [WWW] http://www.pobox.com/~tranter/

8. 專有名詞及術語解釋

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