The Linux CD-ROM HOWTO -- 如何在 Linux 下安装及使用 CD-ROM 作者:Jeff Tranter, [1]jeff_tranter@pobox.com 译者:伍永康, [2]yorkwu@ms4.hinet.net 中文版 v1.14C, 1999 年 7 月 24 日(原文 v1.14, 24 March 1999) _________________________________________________________________ 在这份文件里,我们说明如何安装,设定及使用唯读光碟机(CD-ROM)的方法。我 们也列出支援的硬体,并回答一些常见的问题。 我们希望它能帮助新手快快上 手,并且因此有助於让 usenet 及通信论坛 (mailing-list) 上的讯息流量少一 点。 _________________________________________________________________ 1. 绪论 * 1.1 感谢 * 1.2 最新版本何处寻 * 1.3 回馈 * 1.4 散布时的注意事项 2. CD-ROM 技术 3. 支援的硬体机种 * 3.1 ATAPI介面唯读光碟机 * 3.2 SCSI介面唯读光碟机 * 3.3 专属介面唯读光碟机 * 3.4 印表机介面唯读光碟机 * 3.5 选择性的驱动程式 4. 安装 * 4.1 安 装 硬 体 * 4.2 设定及建立核心 * 4.3 建立设备档及设定起动时参数 * 4.4 起动 Linux 核心 * 4.5 挂上,卸下,及退出光碟片 * 4.6 问题与解决 5. 应用 * 5.1 CD唱片播放程式 * 5.2 相片光碟 * 5.3 Mkisofs * 5.4 ISO-9660 公用程式 6. 常见问题与解答 * 6.1 没有 root 身份的人,如何挂上及卸下光碟片 * 6.2 为何我要卸下光碟时,却得到 "device busy" 讯息? * 6.3 我如何将 CD-ROM 用 NFS 与其它电脑共享? * 6.4 我能用 CD-ROM 起动 Linux 吗? * 6.5 如何从 CD 唱片直接抓取数位音轨? * 6.6 为什麽 find 命令不太正常? * 6.7 Linux 是否支援任何 CD-ROM 的烧录设备? * 6.8 我挂载 CD-ROM 时得到: Read-Only file system 讯息? * 6.9 我关机时,为什麽托盘自动退出来? * 6.10 我有一片无法挂上的``特殊''片子 * 6.11 多片装 CD-ROM 在 Linux 下能用吗 ? * 6.12 我收到 ``/cdrom: Permission denied'' 错误 * 6.13 我如何读懂 IDE CD 的核心错误讯息? * 6.14 我如何测试我的 CD-ROM 是几倍速的呢? * 6.15 装好 Linux 後,我的 CD-ROM 不能用了 * 6.16 在 CD 上有隐藏档,我没办法读... * 6.17 哪儿找得到CD-ROM API的文件资料? * 6.18 为什麽我不能看到Windows CD-ROM的长档名? * 6.19 Linux支援Microsoft的Joliet档案系统吗? * 6.20 Linux 支援 "加强" 的 CD 吗? * 6.21 Linux 有没有支援 DVD-ROM? * 6.22 那 Linux 支援 CD-RW 吗? 7. 参考文献 8. 专有名词及术语解释 _________________________________________________________________ 1. 绪论 这是 Linux CD-ROM HOWTO。 编写它的目的是收集在 Linux 下安装及设定 CDROM 时所需的一切知识,以作为快速参考之用。 它也将回答常见的问题, 也 指引了其它关於唯读光碟机的应用及技术方面的参考资料。 1.1 感谢 这里的很多资讯都来自 Linux 核心中的原始码及文件,网际网路(Internet)上 的 [3]alt.cdrom 讨论区的FAQ,及 Linux 使用者的惠予。 由於有 [4]SGML Tools 套件,所以只要有同一份原始档, 就可以产生好几种不 同格式的文件。 1.2 最新版本何处寻 这份文件的新版本将定期张贴到 [5]comp.os.linux.answers 网路新闻组。 它 们也会上载到很多包括 [6]ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/ 之 许多保存这类资讯的匿名 ftp 站。 本文的超文件版及其它 Linux HOWTO 也在很多 WWW 网站,包括 [7] http://metalab.unc.edu/LDP/HOWTO/。 很多 Linux 发行套件也包含这些 HOWTO 文件, 通常放在 [8]/usr/doc/目录里, 你甚至可向一些业者购买印刷 的版本。 然而有时在 CD-ROM 里的,在 ftp 站台上的, 或是印刷的版本已经 显得过时了。 如果在本 HOWTO 上标的日期早於六个月前, 那麽在 Internet 上可能已经有新版了。 要请您注意的是,由於网际网路的动态性质,在本文件中所有的 WWW 及 FTP 连 结都可能发生改变。 本文件亦被翻译为几个不同语言的版本: 中文: [9]http://www.linux.org.tw/CLDP/CDROM-HOWTO.html 法文: [10]http://www.freenix.org/unix/linux/HOWTO/ 日文: [11]http://jf.linux.or.jp/JF/JF.html/ 波兰文: [12]http://www.jtz.org.pl/Html/CDROM-HOWTO.pl.html 西班牙文: [13]ftp://ftp.insflug.org/es 瑞典文: [14]http://www.swe-doc.linux.nu/ 多数本文件以及其它 Linux HOWTO 文件的翻译本也可以在 [15] http://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/ 及 [16] ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/找到。 如果你 把它翻成其它语言,请让我知道,我会为它在这儿做个连结。 1.3 回馈 这份 HOWTO 文件,需要各位读者协助,才能越来越好用。 如果您有任何建议, 修正, 或意见,请告诉作者( [17]jeff_tranter@pobox.com)。 我将会在下一 版试著加入这些意见。 (译注: 对本中文版的意见,请告诉 [18]译者(yorkwu@ms4.hinet.net)。) 我也很乐意尽我能力回答关於唯读光碟机及 Linux 的一般问题。 但在这之前, 请先耐心读完这整篇 HOWTO,然後再给我关於那个问题相关的所有细节。 还有 请别问我如何在非 Linux 的作业系统上使用光碟机。 如果您在唯读光碟上或以硬拷贝形式发行此文件,请您附送我一份。 请送到我 的邮递地址。 也请考虑一下对 Linux 文件计画作点奉献,以支持 Linux 的免 费文件。 请和 Linux HOWTO 协调人 Tim Bynum ( [19] linux-howto@metalab.unc.edu ) 联络以得到更多资讯。 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 LDP license at [20]http://metalab.unc.edu/LDP/COPYRIGHT.html 本文件得依照 [21]http://metalab.unc.edu/LDP/COPYRIGHT.html 所记载之 LDP 执照的条款发行。 2. CD-ROM 技术 有一本 CD-ROM 的操作手册这麽写著: ``CD-ROM is read-only memory,and audio compact disc system is available as package-media of digital data for those purpose. For playing audio CD,please insert Head-phone jack.'' (译: " 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 控制卡; 想要硬体介面的更进一步资讯,请 看 [22]SCSI HOWTO。 注意有些光碟机附送一片修改过的,和 SCSI 不完全相容的控制卡(例如说, 它 无法在後面再接 SCSI 装置)。 这些很可能不能在 Linux 下使用。 3.3 专属介面唯读光碟机 有些光碟机使用专属介面; 通常此介面由音效卡提供。 也有把这功能独立做出 的简易介面卡。 这些机器趋向於比 SCSI 的便宜及小型。 缺点是缺乏标准及扩 充性。 注意有时候专属介面被错误地当成 IDE 介面,因为就像 IDE 硬碟般,它们使用 以 PC/AT 汇流排为基础的简单介面。 有些厂商,特别像 Creative Labs,出售 很多不同型的光碟机, 并在其音效卡上提供专属,SCSI 及 ATAPI 介面,更增 添了这项困惑。 底下列出了已知 Linux 支援的专属介面光碟机。 新增的机器的驱动程式可能在 新的开发版核心里或是做成核心修补档。 後者通常可在 [23] 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 CR940ie 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) 驱动程式。 5. 也可能是 Reveal Multimedia Kit 的一部份。 6. 飞利浦 CM205 并不被此驱动程式支援,在 [24] ftp://metalab.unc.edu/pub/Linux/kernel/patches/cdrom/lmscd0.4.tar. gz 有它的alpha版驱动程式。 7. 也可能以 Radio Shack 之名出售。 8. 这个有两个驱动程式,mcd 是旧版的,mcdx 是新版,有更多的功能,但比 较不稳。 9. 这个驱动程式是给接在 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。 在 [25]http://www.torque.net/parport/ 可以找到更进一步资讯。 3.5 选择性的驱动程式 Zoltan Vorosbaranyi 写了另一个选择性的 Panasonic/Matsushita CR-56x 驱 动程式。 可以在 [26]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 的启动磁片的人 在 [27]Linux Installation HOWTO (中文版翻译中) 中对安装 Linux 有更详细 的步骤。 如果您是买Linux CD-ROM,经常也会有一些安装指示 (在 CD 盒的小 封面底,或在 CD 的档案里)。 Linux 刚安装好时,多数人基於以下理由,会重新编译核心: * 支援 CD-ROM 或其它硬体 * 升级至更新的核心版本 * 缩小核心,节省记忆体资源。 有关建立核心的详情请见 [28]Linux Kernel HOWTO (中文版在 [29] http://www.linux.org.tw/CLDP/Kernel-HOWTO.html) 以下我只提到和 CD-ROM 有关的部份。 很明显的,您在 make config 时,需要加入对您的 CD-ROM 的支援。 如果您有 ATAPI 的机种,您对下面问题应回答yes Enhanced IDE/MFM/RLL disk/cdrom/tape support (CONFIG_BLK_DEV_IDE) [Y/n/?] Include IDE/ATAPI CDROM support (CONFIG_BLK_DEV_IDECD) [Y/n/?] 对 SCSI 机种,则要打开以下选项: SCSI support (CONFIG_SCSI) [Y/n/m/?] SCSI CD-ROM support (CONFIG_BLK_DEV_SR) [Y/n/m/?] 当然也要加入对您用的SCSI卡的支援,如这行提示: Adaptec AHA152X support (CONFIG_SCSI_AHA152X) [Y/n/m/?] 对专属介面 CD-ROM,使用相对应的驱动程式。 您可以用上一章列的表得知您用 的光碟机该用那种驱动程式。 基本上所有 CD-ROM 碟片都用 ISO-9660 档案系统,所以您也必须加入它: ISO9660 cdrom filesystem support (CONFIG_ISO9660_FS) [Y/n/m/?] 虽说对 CD-ROM 运作不是必要的,如果您有 Linux 支援的音效卡, 您也许会想 在核心起动它,以便将来使用。 [30]Sound HOWTO (中文版在 [31] http://www.linux.org.tw/CLDP/Sound-HOWTO.html) 将是一个很好的参考。 然後您应该照正常的步骤去编译及安装核心。 在您建造设备档及照下一节设定 启动参数前, 不要急著用新造的核心开机! ISO-9660 档案系统及几乎所有 CD-ROM 驱动程式都可被做成可载入模组。 这样 子一些核心驱动程式就不必重开机即可载入及去除。 建议您先不要做成模组。 可在(核心中)模组的文件及 [32]Kernel HOWTO 中找到使用模组的方法。 如果列在这里的机器并没有被您的核心支援,那麽您八成需要更新核心.... 您也可能要自己抓核心之外的修补档,这通常牵涉到修补核心。 一样, [33] Kernel HOWTO 也解释了如何做。 注意新版的核心有个功能表式的核心设置(configuration)程式, 可用 make menuconfig 叫出,或是 X11 式的设 置程式(用 make xconfig 叫出)。 三种方 法都提供线上求助。 4.3 建立设备档及设定起动时参数 核心使用设备档来辨识该用那个驱动程式。 如果您用的是一个发行的 Linux 套 件, 安装後您也许已经有必需的设备档了。 例如说,在 Slackware Linux 下 ,有个选单型安 装程式setup,它包含了 CD-ROM 安装。 多数系统也有 /dev/MAKEDEV 这个 指令稿(script)。 如果您不用这些方法,您可用像以下的 手动的方法做。 即使您用了我们提到的方法, 仍然建议您再确认一下这些设备 档,以确保它们的正确性。 您可以用指出您机器型式的 shell 命令建立设备档。 这应该可用 root这个身 份完成。 注意有些 Linux 安装套件用的名称可能不太一样。 另外也建议您建立一个符号连结,这会好记一点。 例如说,对一台 IDE 介面的 机器来说 ,可以如下般建立: % ln -s /dev/hdd /dev/cdrom 如果您想放唱片,您就要设定档案保护权限(不是符号连结档,是真正的设备 档!), 使其它人也可读取。 % chmod 666 /dev/hdd % ls -l /dev/hdd brw-rw-r-- 1 root disk 22, 64 Feb 4 1995 /dev/hdd 起动 Linux 时,驱动程式要确定该设备是否存在,这通常是靠自动侦测。 多数 驱动程式 会侦测好几个位址,但因配备不同。 可能的设备冲突。 及硬体限制 ,有时需要手动给予这 些资讯。 多数驱动程式支援从核心的命令列取得这些资 讯。 这可以手动输入,或加在您的 开机载入程式里。 例如说,您用 LILO 当 开机载入程式的话,您可以在 /etc/lilo.conf 用 append 命令: append = "sbpcd=0x230,SoundBlaster" 请看 LILO 的文件获得更多资讯。 下一节我讨论每一种驱动程式,它的设备档,启动参数,及它们的具备的能力。 您也许 只想看和您的机器有关的部份。 这些文件通常会放在 /usr/src/linux/Documentation/cdrom 目录下。 Sbpcd 驱动程式 作者 : Eberhard Moenkeberg (emoenke@gwdg.de) 支援多次烧录碟片?: 是 (但并非所有机种皆可) 支援多台机器?: 是 可做成可载入模组?: 可 可读取数位音轨?: 可 (只有CR-562,CR-563及CD-200) 能自动侦测?: 能 设备档: /dev/sbpcd,主编号25 设定档: sbpcd.h 核心设定的问题: Matsushita/Panasonic CDROM support? 请另外阅读: sbpcd 这个驱动程式支援以下型式的核心命令列: sbpcd=, 第一个参数是 I/O 基底位址(如0x230)。 interface-type 可以是 ``SoundBlaster'' ,``LaserMate'' 或 ``SPEA'' ,请看 sbpcd.h 中的提示. 要关闭 此驱动程式,用 sbpcd=0。 可照下面建立设备档: % mknod /dev/sbpcd b 25 0 一片卡最多可以装到四台,後三台的设备次编号(minor device number)分别由 一到三。 如果您的界面卡更多,可建立主编号 26,27,28。 最多可有 4 片卡 。 (也就是 16 台 CD-ROM 可用,对一般使用者应该够了 :-)。 请看 sbpcd 档案以获得更多关於此驱动程式的资讯。 如果您最近才买 CD-ROM,不要假设接声霸卡的就应该用这驱动程式。 现在 Creative Labs 卖的几乎都是 EIDE/ATAPI 的机种了。 Sonycdu535 驱动程式 作者 : Ken Pizzini (ken@halcyon.com) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 是 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/sonycd535,主编号 24 设定档: sonycd535.h 核心设定的问题: Sony CDU535 CDROM support? 请另外阅读: sonycd535 这个驱动程式的命令列是这样的: sonycd535= 是基底位址(如 0x320)。 不然您也可以写在 sonycd535.h 里编 译进去。 设备档这样建立: % mknod /dev/sonycd535 b 24 0 有些 Linux 套件用 /dev/sonycd 这个档。 旧版核心给它主编号 21,确定一下 您的设备 档是正确的。 这个驱动程式原本只是修补,不过现在已是标准核心的一部份了。 请参考 sonycd535 档案取得进一步资讯。 Cdu31a 驱动程式 作者 : Corey Minyard (minyard@-rch.cirr.com) 支援多次烧录碟片?: 是 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 可 能自动侦测?: 不能 设备档: /dev/cdu31a,主编号 15 设定档: cdu31a.h 核心设定的问题: Sony CDU31A/CDU33A CDROM support? 请另外阅读: cdu31a 这个驱动程式的命令列是这样的: cdu31a=,,PAS 第一个参数是 I/O 基底位址(如 0x340)。 第二个是中断号码(0 代表不用中断 ,用轮 询),第三个参数只有在连接 Pro Audio Spectrum 16 音效卡时要加, 固定是PAS, 其它音效卡就不用了。 如果是作成模组,命令列格式则有些不一样。 用 modprobe 或 insmod 命令时 ,是以以下 形式载入: cdu31a_port= cdu31a_irq= io-address 是必要的,而 interrupt 则可有可无。 设备档这样建立: % mknod /dev/cdu31a b 15 0 详细资讯请参见 cdu31a 档案。 这个驱动程式也有个资讯网站台,可在 [34] http://www.infinet.com/~zureal/cdu31a.html 找到。 作者是 Jeffrey Oxenreider ( [35]zureal@infinet.com),包含了 许多此驱动程式的常见问题 。 Aztcd 驱动程式 作者 : Werner Zimmermann (zimmerma@rz.fht-esslingen.de) 支援多次烧录碟片?: 是 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/aztcd0,主编号 29 设定档: aztcd.h 核心设定的问题: Aztech/Orchid/Okano/Wearnes (non IDE) CDROM support? 请另外阅读: aztcd 核心命令列像这样: aztcd= 唯一的参数是 I/O 基底位址(如 0x340) 设备档如下建立: % mknod /dev/aztcd0 b 29 0 注意这个驱动程式仅供 CDA268-01A 用。 其他机型如 CDA268-03I 及 CDA269-031SE 等不是专属介面,应该用 IDECD (ATAPI) 驱动程式。 详细资讯请参考 aztcd 档案 Gscd 驱动程式 作者 : Oliver Raupach (raupach@nwfs1.rz.fh-hannover.de) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/gscd0,主编号 16 设定档: gscd.h 核心设定的问题: Goldstar R420 CDROM support? 请另外阅读: gscd 核心命令列如下: gscd= 它用 I/O 基底位址作为其参数。(如0x340) 设备档可照下例建: % mknod /dev/gscd0 b 16 0 详细资讯请参考 gscd 档案及其网站 [36] http://linux.rz.fh-hannover.de/~raupach 以取得更多资讯。 Mcd 驱动程式 作者 : Martin (martin@bdsi.com) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/mcd,主编号 23 设定档: mcd.h 核心设定的问题: Standard Mitsumi CDROM support? 请另外阅读: mcd 这是旧版的 Mitsumi 机器驱动程式,出来很久了。 也许您想用新的 mcdx 驱动 程式, 它提供更多功能,但也许没这麽稳。 允许的核心命令列如下: mcd=, 参数分别是介面卡的 I/O 基底位址(如 0x340)及 IRQ 要求号码。 设备档如下建立: % mknod /dev/mcd b 23 0 详情请参阅 mcd 档案 Mcdx 驱动程式 作者 : Heiko Schlittermann 支援多次烧录碟片?: 是 支援多台机器?: 是 可做成可载入模组?: 可 可读取数位音轨?: 不可(硬体不支援) 能自动侦测?: 不能 设备档: /dev/mcdx0,主编号 20 设定档: mcdx.h 核心设定的问题: Experimental Mitsumi support? 请另外阅读: mcdx 这是新的实验性 Mitsumi 驱动程式。 旧的 mcd 可能仍然比较稳,且仍然存在 。 可接受的核心命令列: mcdx=, 参数分别是介面卡 I/O 基底位址(如 0x340)及 IRQ 要求号码。 设备档照下面方法建: % mknod /dev/mcdx0 b 20 0 如果您最近买 Mitsumi 机器,不要假设它应该用这驱动程式; 新的 Mitsumi 机 种和 EIDE/ATAPI 相容 ,应该用 idecd 驱动程式。 详细资讯见 mcdx 档 Cm206 驱动程式 作者 : David A. van Leeuwen (david@tm.tno.) 支援多次烧录碟片?: 是 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自 动侦测?: 能 设备档: /dev/cm206cd,主编号 32 设定档: cm206.h 核心设 定的问题: Philips/LMS CM206 CDROM support? 请另外阅读: cm206 核心命令列像下面: cm206=, 第一个是基底位址(如 0x340),第二个是中断号码。 照下面方法造设备档: % mknod /dev/cm206cd b 32 0 更详细的资讯请见 cm206 档 Optcd 驱动程式 作者 : Leo Spiekman (spiekman@dutette.et.tudelft.nl) 支援多次烧录碟片?: 是 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/optcd0,主编号 17 设定档: optcd.h 核心设定的问题: Experimental Optics Storage ... CDROM support? 请另外阅读: optcd 它接受下面的核心命令列: optcd= 参数是介面卡 I/O 基底位址。 设备档建立法: % mknod /dev/optcd0 b 17 0 详细资讯见 optcd 档。 Sjcd 驱动程式 作者 : Vadim V. Model (vadim@rbrf.msk.su) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/sjcd,主编号 18 设定档: sjcd.h 核心设定的问题: Experimental Sanyo H94A CDROM support? 请另外阅读: sjcd 核心命令列像下面这行: sjcd=,, 指出基底位址,中断,及DMA直接记忆体存取通道号码。 (如 sjcd=0x340,10,5) 设备档以下面方法做: % mknod /dev/sjcd b 18 0 详情见 sjcd 档案 Paride 驱动程式 作者 : Grant R. Guenther (grant@torque.net) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 能 设备档: /dev/pcd0,主编号 46 设定档: bpcd.h 核心设定的问题: Parallel port IDE device support? 请另外阅读: paride.txt 这是许多种用印表机介面连接的储存设备使用的驱动程式。 通常这个驱动程式 会自动侦测印表机介面上的设备。 如果自动侦测无法抓到的话, 驱动程式文件 中有描述如何设定设备的参数。 设备档的建造法: # mknod /dev/pcd0 b 46 0 请看 /usr/src/linux/Documentation/paride.txt 以取得本驱动程式的更深入 资讯。 注意本驱动程式取代了旧版核心中的 bpcd 驱动程式。 SCSI CD-ROM 驱动程式 作者 : David Giller 支援多次烧录碟片?: 是 (和机器有关) 支援多台机器?: 是 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 能 设备档: /dev/scd0,主编号 11 设定档: cdrom.h 核心设定的问题: SCSI CDROM support? 请另外阅读: 无 对每一种不同的 SCSI 卡而言,用的命令列参数不一样,请参考 [37]SCSI HOWTO。 可以接多台机器(至多接到 SCSI bus 能接的上限)。 设备档主编号是 11,次编 号由 0 起 算: % mknod /dev/scd0 b 11 0 % mknod /dev/scd1 b 11 1 (译注: 在核心里叫做 /dev/sr0,/dev/sr1,等,但其实它们就是/dev/scdX) 此驱动程式本身不支援读取数位音轨功能,然而有些 SCSI CD-ROM 有这能力, 可用 cdda2wav 程式达成(它使用通用 SCSI 核心介面)。 也请参考之前讨论的IDE 模拟 SCSI驱动程式部份。 IDECD 驱动程式 作者 : Scott Snyder (snyder@fnald0.fnal.gov) 支援多次烧录碟片?: 是 支援多台机器?: 是 可做成可载入模组?: 不可 可读取数位音轨?: 可 (在硬体支援的机种上) 能自动侦测?: 能 设备档: /dev/hd{a,b,c,d},主编号 22 设定档: cdrom.h 核心设定的问题: Include support for IDE/ATAPI CDROMs? 请另外阅读: ide-cd 这是 ATAPI CD-ROM 驱动程式。 它支援下面的命令列格式: hdx=cyls,heads,sects,wpcom,irq 或 hdx=cdrom 这里的 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 种类不同 而有变化) hdd: NEC CD-ROM DRIVE:282,ATAPI CDROM drive 如果讯息卷动得太快了,应该也可以用 dmesg 或 tail /var/adm/messages 来 查看。 如果没有找到该机器,那就代表有问题出现了,请看``问题与解决''一节。 4.5 挂上,卸下,及退出光碟片 若想挂上 CD-ROM,把光碟片放进去,然後以 root 身份执行 mount 命令。 (这 里假设您已经如我们所建议的,做了符号连结,并且也有空的 /mnt/cdrom 目 录) % mount -t iso9660 -r /dev/cdrom /mnt/cdrom 现在您可以到 /mnt/cdrom 下去存取 CD 上的东西了。 您也许还想用mount 命令的其它参数挂载 CD-ROM。 欲知详情,见 mount(8) 说 明页。 您可以在 /etc/fstab 加进一行,使 Linux 开机时就自动挂上 CD-ROM,或给予 一些挂载 时的参数。 请看 fstab(5) 说明页。 注意,若想要听 CD 唱片,那就不要挂上它。 要卸下 CD-ROM,以 root 身份执行 umount 命令。 % umount /mnt/cdrom 只有在没程序存取 CD-ROM 时(包括没人目前目录在 CD-ROM 时) 才可以卸下该 片子。 卸下 後就可以退片了。 大多数机器都有退片钮,不过也有一个软体退 片程式 [38]eject 可以靠软体控制退出片子。 注意不要在碟片还在挂载中时退出片子 (这种状况有些 CD-ROM 可能发生,有些 不会) 有些 CD-ROM 驱动程式可以在卸下时自动退片,而挂上时自动进片。 (您 可以重 新编译核心或用软体命令关闭这功能) 也有可能在放了 CD 唱片後,就无法挂上 CD-ROM 片子了。 这时您要用 CD 播 放程式送出 ``停止'' 命令後再尝试挂上。 这问题只在 SBPCD 驱动程式出现过 。 最近的核心支援了以核心为基础,能提供对可抽换式媒体 (包括 CD-ROM) 透明 化挂载能力的 automounter。 您可在 [39] ftp://ftp.kernel.org/pub/linux/daemons/autofs/ 找到使用它所需要的工具 。 4.6 问题与解决 如果您按照本 HOWTO 的指示去做却还有问题,有一些地方可以先确认一下。 这 里由简单 到复杂一条条列出来。 如果问题刚好出现在某步骤,先解决这问题再 进行下一步。 第一步: 确定您用您自己编译的核心启动系统 您可以检查核心中的时间戳记,看看是不是有支援 CD-ROM 的版本。 您可以用 uname 命令来检查: % uname -a Linux fizzbin 2.2.4 #1 Tue Mar 232 11:23:21 EST 1999 i586 unknown 或显示 /proc/version 档中的内容: % cat /proc/version Linux version 2.2.4 (root@fizzbin) (gcc version 2.7.2.3) #1 Tue Mar 23 11:23:21 EST 1999 如果这个时间戳记比您编译还早,那您就是在用旧核心了。 您真的重开机过吗? 如果您 用 LILO,是否忘记重装一次(一般执行/etc/lilo/install)? 用软碟开 机的话,您有做了一片新开机片,并用它开机了吗? 第二步: 确定需要的核心驱动程式有被编译进去 您可藉由观察 /proc/devices 来看编译进了什麽驱动程式: % cat /proc/devices Character devices: 1 mem 2 pty 3 ttyp 4 ttyS 5 cua 7 vcs Block devices: 3 ide0 22 ide1 首先看您的 CD-ROM 驱动程式。 CD-ROM 都是区块设备。 在这里我们看到主编 号 22 的 idecd 驱动程式存在著。 % cat /proc/filesystems ext2 nodev proc nodev devpts vfat iso9660 您也可以藉由看 /proc/ioports 档来看使用了那些 I/O port: howto % cat /proc/ioports ... 0230-0233 : sbpcd ... 如果有东西您记得有编译但却没显示,那麽就是您设置核心时出了问题。 从再 设置及重建 核心开始,再重复安装核心的步骤。 第三步: 起动时,核心有侦测到您的机器吗? 当核心起动时,确定您的 CD-ROM 被侦测到了。 应该在开机讯息里可以看到。 如果讯息卷 动太快,看不到,您可以用 dmesg 命令再显示一遍: % dmesg 或者 % tail /var/adm/messages 如果开机没找到,那一定某处有问题。 确定它开电源了,并且连线也都接对了 。 如果您 的机器有位址的跳线(如 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 下还没有驱动程式。 您可以看 一下文後 的参考资料表,试著求一点帮助。 第四步: 您能从机器上读出资料吗? 试著从 CD-ROM 读资料。 打入以下命令後,应该可以看到 CD-ROM 的灯亮起来( 如果有灯 的话),而且也不会回报错误。 照您的驱动程式的设备档,并确定放 了一片 CD-ROM 片子; 按下 Control-C 离开。 dd if=/dev/cdrom of=/dev/null bs=2048 ^C 124+0 records in 124+0 records out 如果成功,那核心就能成功的和机器通讯,您可以跳到下一步。 如果不能的话,问题可能出在设备档。 确定在 /dev 下的设备档的主编号及次 编号如前面写的一样。 也检查一下它是否允许读取及写入权。 也有一点点可能是硬体问题。 可能的话,在 DOS 下试试看,确认是不是这状况 。 第五步: 您能挂上片子吗? 如果您能读取但不能挂上,首先确定一下核心有没有支援 ISO-9660 档案系统。 如前所 述,看 /proc/filesystems 档。 注意一下,请在挂上时用 ``-t iso9660'' 及 ``-r'' 选项。 还有在 CD-ROM 中放的是资料碟片,不是唱片。 通常要以 root 身份执行挂上命令。 确定挂载点存在,且是个空目录。 如果您想开机时自动挂载,确定在 /etc/fstab 中有正确的一行。 如果您有跑 syslog,那可能您看不见有些核心发出的讯息。 试试 dmesg 命令: % dmesg SBPCD: sbpcd_open: no disk in drive 错误也可能记录在 /var/adm 目录下的档案中,全看您的系统怎麽设的。 消除听音乐时的问题 如果您的机器读 CD-ROM 时没问题,但听唱片就有问题,这里提供些解决之道。 您需要些可放唱片的软体。 有些程式可能和您的机器不相容。 试试其它的或重 新编译它。 一个找软体的好地方在 [40] ftp://metalab.unc.edu/pub/Linux/apps/sound/cdrom/。 有些 CD-ROM 不支援放唱片。 检查文件或原始码,看看是不是这情形。 检查一下声音是不是会从耳机孔出来。 如果可以,那八成和您的音效卡有关。 使用混音程 式设定输入频道及音量。 确定您从 CD-ROM 接了条音源线到音效卡 上。 也确认一下核心的 音效卡驱动程式存在及可用(请看 [41]Sound HOWTO) 要是一切都没用呢? 如果您还有问题,这里有一些最後的建议,您可以试试: * 小心地重读这份 HOWTO 文件 * 读文後列出的参考文件,特别是相关的核心原始码的相关档案。 * 在 comp.os.linux 或其它 USENET 新闻组贴帖子,问问题。 * 送一个问题到 Linux 通信论坛 * 用最新版的 Linux 核心 * 向电脑公司求救 * 找您的 CD-ROM 厂商 * 寄封信给相关驱动程式的作者(在/usr/src/linux/MAINTAINERS有列举) * 寄信给我(作者) * 叫出 emacs,打入Esc-x doctor (:-) 5. 应用 这一节简要地列出在 Linux 下 CD-ROM 的主要应用。 查阅 Linux软体大地 图(Linux Software Map) 看看它们在何处及最新是第几版。 5.1 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) 格式。 它可经由 [42] ftp://ftp.gwdg.de/pub/linux/hpcdtoppm 取得,或者也可以在 PBM(portable bit map)公用程式(在很多档案库中都都可取得) 里 面找到。 (请查询 ``pbm'' 或 ``netpbm'') Gerd Knorr( [43]kraxel@cs.tu-berlin.de)写的 photocd 程式可将相片光碟转 成 Targa 或者 Windows 及 OS/2 用的 BMP 档。 这位作者也写了 xpcd,一个可处理相片光碟影像的 X11 软体。 您可以用滑鼠 选择影像, 在小视窗中浏览,或用五种解析度看它。 您也可选定影像的一部份 ,只载入它们。 xpcd 可 在 [44] ftp://ftp.cs.tu-berlin.de/pub/linux/Local/misc/中找到。 ImageMagick 影像档操作程式也支援像片光碟档案。 它在 [45] ftp://ftp.x.org/contrib/applications/ImageMagick/里。 5.3 Mkisofs Eric Youngdale 的 mkisofs 套件允许您在硬碟上建立 ISO-9660 档案系统。 这样可以帮助您深入了解光碟,也能在烧光碟前先测试其档案系统。 真正将资料写进CD 烧录机的工具几乎都依厂商不同而有所不同。 它们也要求 写资料时不能有任何中断,所以像 Linux 这种多工作业系统并不是非常适合这 种工作。 5.4 ISO-9660 公用程式 有些公用程式可以确认 ISO-9660 格式化的碟片是否正确。 您也许会发现在测 试奇怪的 CD 时会有用。 这玩意可在 [46] ftp://ftp.cdrom.com/pub/cdrom/ptf/ 中找到。 作者是 Bill Siegmund 及 Rich Morin。 6. 常见问题与解答 6.1 没有 root 身份的人,如何挂上及卸下光碟片 多数 mount 命令支援user选项。 假设您在 /etc/fstab 里加入了这样一行: /dev/sbpcd /mnt/cdrom iso9660 user,noauto,ro 那麽普通使用者就可以像下面这样挂上或卸下这台机器的资料: % mount /mnt/cdrom % umount /mnt/cdrom 挂上程序将会加上一些额外选项以确保系统安全(例如: 程式不准执行,片子上 的设备档 将失效(不予理会)); 如果这些限制过严了,您可以加入额外的选项( 如 "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 命令: % umount /mnt/cdrom umount: /dev/hdd: device is busy % fuser -v /mnt/cdrom USER PID ACCESS COMMAND /mnt/cdrom tranter 133 ..c.。 bash 在有些系统您可能要以 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( [47]heiko@colossus.escape.de )和 Olaf Kindel 写了一个 公用程式可以读取音讯资料,并将它存成 .wav 格式的声音档。 这个程式叫 cdda2wav.tar.gz,可以在 metalab.unc.edu 找到。 还有一个抓取数位音轨的程式是 ccdparanoia,可在 [48] http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia 抓到。 因为 CD-ROM 世代交替太快了,很难列出哪些 CD-ROM 可读取数位音乐资料。 您最好的赌注是抓最新版的 cdda2wav 或 cdparanoia 套件,并读它的文件。 若想要更进一步的资讯,请上 [49] 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 文件,在 [50] ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/CD-Writing-HOWTO 或 [51] 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 的文件里。 ( 或者用 [52]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 我收到 ``/cdrom: Permission denied'' 错误 有些 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 的资料: % time -p dd if=/dev/cdrom of=/dev/null bs=1k count=1500 1500+0 records in 1500+0 records out real 5.24 user 0.03 sys 5.07 正常的单倍速 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 档案系统)都编进去了。 如果您不知道怎麽做,看 [53]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( [54]david@tm.tno.nl) 发起,建立一组标准化 的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 还没放进核心中; 请到 [55] 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 档案系统,在本文撰写时还在发展阶段。 可以在 [56]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 档案系统,在本文撰写时还在发展中,可以在 [57] http://trylinux.com/projects/udf/ 取得核心修补。 7. 参考文献 首先是我已提过的核心文件档。 一般安装在 /usr/src/linux/Documentation/cdrom 里。 它可算是有用资讯的宝山。 底下的 USENET FAQ 定期在 [58]news.answers 发出,并存放在如 [59] ftp://rtfm.mit.edu/的网际网路档案库中。 * alt.cd-rom FAQ * comp.periphs.scsi FAQ * Enhanced IDE/Fast-ATA/ATA-2 FAQ 一些其它 Linux HOWTO 也提供和 CD-ROM 相关的有用资讯: * [60]SCSI HOWTO * [61]Hardware Compatibility HOWTO (译注: 中文版在 [62] http://www.linux.org.tw/CLDP/Hardware-HOWTO.html) * [63]Sound HOWTO (译注: 中文版在 [64] http://www.linux.org.tw/CLDP/Sound-HOWTO.html) * [65]Kernel HOWTO (译注: 中文版在 [66] http://www.linux.org.tw/CLDP/Kernel-HOWTO.html) * [67]Distribution HOWTO (中文版翻译中) * [68]CD Writing HOWTO (中文版翻译中) 至少有好几家公司卖在 CD-ROM 上的 Linux 安装套件; 多数在 Distribution HOWTO 里都有记载。 以下是和 CD-ROM 有关的 USENET 网路新闻组: * [69]comp.publish.cdrom.hardware * [70]comp.publish.cdrom.multimedia * [71]comp.publish.cdrom.software * [72]comp.sys.ibm.pc.hardware.cd-rom * [73]alt.cd-rom * [74]alt.cd-rom.reviews comp.os.linux网路新闻组也是 Linux 相关资讯的好来源。 在 [75]ftp://ftp.cdrom.com/pub/cdrom/里有一大堆的 CD-ROM 资讯及软体。 在 [76] ftp://rtfm.mit.edu/pub/usenet/news.answers/pc-hardware-faq/enhanced-ID E/ 以及 [77]http://www.seagate.com/techsuppt/faq/faqlist.html 中可找到 IDE 及 ATA 设备的 FAQ 文件。 制定 IDE 协定的 Western Digital 公司,在其 FTP 站也有关於 IDE 协定的文 件,在: [78]ftp://fission.dt.wdc.com/pub/standards/atapi。 有一个关於多媒体的首页可在 [79]http://viswiz.gmd.de/MultimediaInfo/ 中 找到。 Creative Labs 的首页在 [80]http://www.creaf.com/。 Linux软体大地图(LSM)是标定 Linux 软体的无价参考资料。 LSM 在很多 FTP 档案库, 包括 [81]ftp://metalab.unc.edu/pub/Linux/docs/LSM/(之前的 sunsite)中都有。 也有些网站维护 Linux 应用程式的资料库, [82] http://www.freshmeat.net 是其中之一。 Linux 通信论坛有几个不同主题的讨论"频道"。 若想知道如何参加,寄一封 内 容为"help" 的信到 [83]majordomo@vger.rutgers.edu。 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。 或是光顾以下站台: [84] http://www.ora.com/catalog/multilinux/noframes.html 或本人的网址 [85] http://www.pobox.com/~tranter/。 8. 专有名词及术语解释 alpha 测试,beta 测试: 软体开发过程中的测试。 alpha 测试是指开发群间的使用测试,而 beta 测试则是开放给用户(或大众)测试。 URL: Universal Resource Locator,网路上定地址的一种方法。 SCSI: 小型电脑系统介面,一种 PC 及工作站上常见的周边设备介面。 ANSI: 美国国家标准委员会。 开发版核心(development kernel): 核心有开发版及稳定版两种样态, 稳定版以稳定为重点,为了稳定较不 会加入新功能。 而开发版则是以开发新功能为主, 因此不稳定是很正 常的。 一个新功能若在开发版上测试多次很稳定, 就会加入下一代的 稳定版核心中。 References 1. mailto:jeff_tranter@pobox.com 2. mailto:yorkwu@ms4.hinet.net 3. news:alt.cdrom 4. ftp://metalab.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz 5. news:comp.os.linux.answers 6. ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/ 7. http://metalab.unc.edu/LDP/HOWTO/ 8. file://localhost/usr/doc/ 9. http://www.linux.org.tw/CLDP/CDROM-HOWTO.html 10. http://www.freenix.org/unix/linux/HOWTO/ 11. http://jf.linux.or.jp/JF/JF.html/ 12. http://www.jtz.org.pl/Html/CDROM-HOWTO.pl.html 13. ftp://ftp.insflug.org/es 14. http://www.swe-doc.linux.nu/ 15. http://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/ 16. ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/ 17. mailto:jeff_tranter@pobox.com 18. mailto:yorkwu@ms4.hinet.net 19. mailto:linux-howto@metalab.unc.edu 20. http://metalab.unc.edu/LDP/COPYRIGHT.html 21. http://metalab.unc.edu/LDP/COPYRIGHT.html 22. ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/unmaintained/SCSI-HOWTO 23. ftp://metalab.unc.edu/pub/Linux/kernel/patches/cdrom/ 24. ftp://metalab.unc.edu/pub/Linux/kernel/patches/cdrom/lmscd0.4.tar.gz 25. http://www.torque.net/parport/ 26. ftp://ftp.honlap.net/pub/linux/pcd/pcd-0.30.tar.gz 27. http://metalab.unc.edu/LDP/HOWTO/Installation-HOWTO.html 28. http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html 29. http://www.linux.org.tw/CLDP/Kernel-HOWTO.html 30. http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html 31. http://www.linux.org.tw/CLDP/Sound-HOWTO.html 32. http://sunsite.unc.edu/mdw/HOWTO/Kernel-HOWTO.html 33. http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html 34. http://www.infinet.com/~zureal/cdu31a.html 35. mailto:zureal@infinet.com 36. http://linux.rz.fh-hannover.de/~raupach 37. ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/unmaintained/SCSI-HOWTO 38. http://www.pobox.com/~tranter/eject.html 39. ftp://ftp.kernel.org/pub/linux/daemons/autofs/ 40. ftp://metalab.unc.edu/pub/Linux/apps/sound/cdrom/ 41. http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html 42. ftp://ftp.gwdg.de/pub/linux/hpcdtoppm 43. mailto:kraxel@cs.tu-berlin.de 44. ftp://ftp.cs.tu-berlin.de/pub/linux/Local/misc/ 45. ftp://ftp.x.org/contrib/applications/ImageMagick/ 46. ftp://ftp.cdrom.com/pub/cdrom/ptf/ 47. mailto:heiko@colossus.escape.de 48. http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia 49. http://www.tardis.ed.ac.uk/~psyche/pc/cdrom/CDDA.html 50. ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/CD-Writing-HOWTO 51. http://metalab.unc.edu/LDP/HOWTO/CD-Writing-HOWTO.html 52. http://www.pobox.com/~tranter/eject.html 53. http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html 54. mailto:david@tm.tno.nl 55. http://www.cis.nctu.edu.tw/~is84086/Project/kernel_cp950/ 56. http://trylinux.com/projects/udf/ 57. http://trylinux.com/projects/udf/ 58. news:news.answers 59. ftp://rtfm.mit.edu/ 60. http://metalab.unc.edu/LDP/HOWTO/unmaintained/SCSI-HOWTO.html 61. http://metalab.unc.edu/LDP/HOWTO/Hardware-HOWTO.html 62. http://www.linux.org.tw/CLDP/Hardware-HOWTO.html 63. http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html 64. http://www.linux.org.tw/CLDP/Sound-HOWTO.html 65. http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html 66. http://www.linux.org.tw/CLDP/Kernel-HOWTO.html 67. http://metalab.unc.edu/LDP/HOWTO/Distribution-HOWTO.html 68. http://metalab.unc.edu/LDP/HOWTO/CD-Writing.html 69. news:comp.publish.cdrom.hardware 70. news:comp.publish.cdrom.multimedia 71. news:comp.publish.cdrom.software 72. news:comp.sys.ibmpc.hardware.cd-rom 73. news:alt.cd-rom 74. news:alt.cd-rom.reviews 75. ftp://ftp.cdrom.com/pub/cdrom/ 76. ftp://rtfm.mit.edu/pub/usenet/news.answers/pc-hardware-faq/enhanced-IDE/ 77. http://www.seagate.com/techsuppt/faq/faqlist.html 78. ftp://fission.dt.wdc.com/pub/standards/atapi 79. http://viswiz.gmd.de/MultimediaInfo/ 80. http://www.creaf.com/ 81. ftp://metalab.unc.edu/pub/Linux/docs/LSM/ 82. http://www.freshmeat.net/ 83. mailto:majordomo@vger.rutgers.edu 84. http://www.ora.com/catalog/multilinux/noframes.html 85. http://www.pobox.com/~tranter/