1. 概述 这是 Linux CD-ROM HOWTO. 编撰它的目的是包含一切在 Linux 安装及建置 CDROM 时所 需的知识, 以供大家快速参考. 它将回答常见的问题, 还有指引其它关於唯读光碟机的 应用及技术方面的参考. 1.1. 铭谢 这里的很多资讯都来自 Linux 核心中的原始码及文件, alt.cdrom 这个讨论区的FAQ, 及 Linux 使用者的惠予. 感谢有 SGML Tools 套件, 以至虽然这分文件有多种格式, 但我只要编写一分原始档就 可以了. 1.2. 英文版版本沿革 Version 1.0 公开的第一份版本. Version 1.1 在 1.1.20 版核心增加了 CDU33A 支援; 加入对 Reveal FX 的消息; 读音轨的资讯; 一 些 alpha 测试中的驱动程式; 加入问题与解决一节; 及一些其它不重要的东西. Version 1.2 在 1.1.33 版以後的核心必须将 ISO-9660 档案系统以唯读方式挂上; 确认 SB16 SCSI 已被支援, 但 Aztech 的新机器则未支援; 加入相片光碟及 xpcd; 还有提示 sbpcd 的 自动退片功能. Version 1.3 从 1.1.49 版核心後, sbpcd 的自动退片取消了. 加入 XA 碟片资讯及辨识方法. Version 1.4 现在 HOWTO 已有别的语言版本了; sbpcd 支援了 IBM 及 Longshine 的机器; Aztech 驱动程式有 alpha 测试版了; CDU-33 不再自动侦测, 并支援相片光碟及唱片; SCSI 光 碟机可以接超过二台; 新的 IDE 驱动程式; 提醒要检查 jumper; 可用 IOCTL 叫 sbpc d 要不要自动退片; 列出有支援多重烧录的机型; CDU-33 的灯闪烁问题. Version 1.5 迟到了好久才完成( 我那时很忙 ); 文件置於 GPL 规则之下; 很多新驱动程式的资讯; 更多设置及解决问题方面的资讯; 加入很多 HTML 连结; 其它很多次要改变. Version 1.6 加入退片程式的连结; 档案权限修补的问题; 连结到 Creative Labs 的网站; 参考 AT A/EIDE FAQ 及 ftp 站; 注意到 Creative Labs 及 Mitsumi 的新光碟机改采 IDE 介面 ; 提到 supermount; 支援抓音轨的资料太旧了, 请参考 cdda2wav; 更多制作 CD 的资 讯; EIDE 多片机种的资讯; 修正一些白字. Version 1.7 新核心版本; 多数 README 档搬到 /usr/src/linux/Documentation 去了; 有些驱动程 式已脱离实验阶段; 更多支援机种; 强调现在多数机种是 IDE/ATAPI 介面的; 加入测速 及随插即用(Plug and Play)支援问题; vger 的通信论檀关闭了; 其它次要改变. Version 1.8 安装後光碟机不能用问题; aztcd 现支援两种 CyCDROM 机器; 千万别在 IDE 光碟机身 上用 sbpcd 驱动程式; 开始支援一些 ATAPI 多片装机种; 提到对印表机介面机种的(缺 乏)支援程度; 最新稳定核心换成 2.0; 其它次要改变. Version 1.9 除去一些非常旧, 现在已经过时的问题; 作者的 E-mail 地址换了; 中文版出来了; 修 正一些软体套件的最新位置; 对多媒体的书写下更多资讯; 一些次要的拼字及文法上的 改变. Version 1.10 认明了新的 Aztech 的机种是 ATAPI 的没错; 加入了 CDU31A 可做成模组的选项; 挂载 CD-ROM 时有选项可读取隐藏档; 加上六个月建议使用期; 书本(指Linux multimedia guide) 的新 URL; 次要的拼字及文字的改变. Version 1.11 加入了印表机介面机种的参考资料; 加上bpcd驱动程式的资讯; 中文版有了新网址; 选 择性的CR-56x驱动程式; 可开机光碟的相关资料; 回答关於CD-ROM API的问题; Linux Multimedia Guide现在有法文及日文译本了. Version 1.12 加入波兰文译本的连结; CD-Writing不再只是mini-HOWTO了; 增加了两个关於Joliet 档 案系统的问题. 1.3. 中文版版本沿革 1.8版 最初的中文版本; 试译版. 1.9版 最初的正式中文版本, 用HTML写成. 1.10版 首页由 www.ncu.edu.tw 移到现在的位置 http://linux.ntcic.edu.tw/~yorkwu/linux /howto/cdrom. 1.11版 首次改成Linux HOWTO的SGML版本. 1.12版 第一次加入中文版沿革资讯. 1.4. 最新版本何处寻 这份文件的新版本将定期张贴到 comp.os.linux.answers 网路新闻组. 它们也会上载到 很多包括 ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/ 的匿名 ftp 站. 本文的超文件版及其它 Linux HOWTO 也在很多 WWW 站, 包括 http://sunsite.unc.ed u/mdw/mdw.html. 很多散布的 Linux CD-ROM 也包含 HOWTO, 通常放在/usr/doc/目录里 , 你甚至可向一些业者要印刷版. 然而有时 CD-ROM 里的, 在 ftp 站台上的, 或是印刷 的版本已经显得过时了. 如果在本 HOWTO 上标的日期早於六个月前, 那麽在 Internet 上可能已经有新版了. Bruno Cornec (
[email protected]) 写的法文译版可在ftp://ftp.ibp.fr/pu b2/linux/french/docs/HOWTO/ 看到. 箕浦逸史 (
[email protected]) 翻译的日文版在http://jf.linux.or .jp/JF/JF.html/. 伍永康 (
[email protected]) 翻译的中文版(BIG-5编码)可由 http://linux.ntcic .edu.tw/~yorkwu/linux/howto/cdrom/ 取得. Bartosz Maruszewski (
[email protected]) 翻的波兰文译版可在 http: //www.jtz.org.pl/Html/CDROM-HOWTO.pl.html 取得. 多数本文件以及其它Linux HOWTO文件也可以在 http://sunsite.unc.edu/pub/Linux/d ocs/HOWTO/translations/ 及 ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/transl ations/找到. 如果你把它翻成其它语言, 请让我知道, 我会为它在这儿做个连结. 1.5. 回馈 这份 HOWTO 文件, 需要各位使用者帮助, 才能越来越好用. 如果您有任何建议, 修正, 或意见, 请告诉作者(
[email protected]). 我将会在下一版试著加入这些意见. (译注: 对本中文版的意见, 请告诉译者.) 我也很乐意尽我能力回答关於唯读光碟机及 Linux 的一般问题. 但在这之前, 请先耐心 读完这整篇 HOWTO, 然後再给我和你碰上问题相关的所有细节. 请别问我如何在非 Lin ux 的作业系统上使用光碟机. 如果您在唯读光碟上或以硬拷贝形式发行此文件, 请您附送我一份. 请送到我的真实地 址 . 也请考虑一下对 Linux 文件计画作点奉献, 以支持 Linux 的免费文件. 请和 Li nux HOWTO 协调人 Greg Hankings (
[email protected] ) 联络以得到更多资讯. 1.6. 散布时的注意事项 原作版权为 Jeff Tranter (1995-1997) 所有. 中文版版权为伍永康及 Jeff Tranter (1996-1997) 所有. 这份 HOWTO 是免费文件(free documentation); 你可以在合於 FSF ( 自由软体基金会 ) 出版的 GNU GPL(一般公开授权) 之规定下重新散播 及/或 修改它; 您可以自由决定 适用 GPL 2.0 或之後的任何版本. 希望这份文件的发出对您有帮助, 但我们不 提 供 任 何 保 证 , 即使是 商业上 或 合於某特殊用途 的隐含保证亦然. 详情请参见 GNU 一般公开授权书. 要取得 GNU 一般公开授权书(英文版), 您可以寄信到 Free Software Foundation, In c., 675 Mass Ave, Cambridge, MA 02139,USA. 如何在 Linux 下安装及使用 CD-ROM : CD-ROM 技术 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), 八倍速(8 X) 及更高倍速的产品. 多数的 CD-ROM 机器使用小型电脑系统介面(SCSI), ATAPI 加强型 IDE 介面, 或厂商的 专属介面其中之一. 它们基本上也提供从外部耳机或音源线放 CD 唱片的功能. 有些机 器也允许直接从唱片读取数位格式的声音片段. CD-ROM 通常以 ISO-9660 档案系统( 正式名称叫 High Sierra ) 的格式存在. 这格式 限制档名以 MS-DOS (8+3 字元) 形式存在. Rock Ridge Extensions 使用了 ISO-9660 标准没定义的栏位以支援长档名及额外的 UNIX 形式资讯(如档案所有人, 符号连结等 .) 相片光碟是由柯达(Kodak) 发展出的标准, 用来存放以数位方式记录的相片影像到 CD- ROM 上. 你可以在电脑上利用某些软体看这些图片, 操作它, 或送去列印. 也可以不要 一次做完, 稍後再将新相片录进去, 这就是众所熟知的多段录制(Multi-session)能力. 最近又有 CD 烧录器(CD-R), 且越来越普遍. 它使用不同的介质及特殊的方法记录, 但 做出的光碟片可以用任何 CD-ROM 读取. 在将来, CD-ROM 厂商将提供能增加数倍储存量的技术. 如何在 Linux 下安装及使用 CD-ROM :支援的硬体机种 3. 支援的硬体机种 这一节列出了现在 Linux 所支援的唯读光碟机及介面. 资料来源是来自最新的稳定 Li nux 核心, 在写这篇时是 2.0.31. 也有开发版(development) 的核心(2.1.x), 但并不 被认为够稳. 这份资讯目前仅适用於 Intel 平台上的 Linux. 某些资讯也许对其它处理器架构有参考 价值, 不过我对它们没有第一手的经验. 3.1. ATAPI介面唯读光碟机 ATAPI (ATA 封包介面 )是个控制储存设备的协定. 它是建立在给硬碟使用的 IDE 介面 (ANSI 正式名称为 ATA(AT attachment)介面 )上. ATAPI 常用於硬碟, 光碟, 磁带及 其它设备上. 是目前最畅行的介面, 提供了 SCSI 的大部份功能, 但又不需要昂贵的控 制卡及接线. Linux 核心有一个应该是任何 ATAPI 相容光碟机都能驱动的驱动程式. 有 Aztech, Mi tsumi, NEC, Sony, Creative Labs, 以及精英等厂商生产相容的机种. 如果你最近买了 CD-ROM, 特别是四倍速以上的, 几乎都是 ATAPI 的. 3.2. SCSI介面唯读光碟机 SCSI (小型电脑系统界面)是唯读光碟机的一种流行介面. 它的主要优点是相当快的传输 速率, 可接数台设备, 还有多种电脑平台都支援它. 而缺点则是需要相对较贵的控制卡 及接线. 任何区块大小是 512 bytes 或 2048 bytes 的 SCSI 光碟机在 Linux 下应该都能驱动 ; 而在市场上的大多数机种应该都在这□围内. 你也需要一片 Linux 支援的 SCSI 控制卡; 想要更进一步资讯, 请看 SCSI HOWTO. 注意有些光碟机附送一片修改过的, 和 SCSI 不完全相容的控制卡(例如说, 它无法在後 面再接 SCSI 装置). 这些很可能不能在 Linux 下使用. 3.3. 专属介面唯读光碟机 有些光碟机使用专属介面; 通常此介面由音效卡提供. 也有些和音效卡上的等效的简易 介面卡存在. 这些机器趋向於比 SCSI 的便宜及小型. 缺点是缺乏标准及扩充性. 注意有时候专属介面被错误地当成 IDE 介面, 因为就像 IDE 硬碟般, 它们使用以 PC/ AT 汇流排为基础的简单介面. 有些厂商, 特别像 Creative Labs, 出售很多不同型的光 碟机 , 并在其音效卡上提供专属, SCSI 及 ATAPI 介面, 更增添了这项困惑. 底下列出了已知 Linux 支援的专属介面光碟机. 新增的机器的驱动程式可能在新的发展 核心里或是做成核心修补档. 後者通常可在 ftp://sunsite.unc.edu/pub/Linux/kerne l/patches/cdrom/ 中找到. 也请注意核心中的 README 档中的最新资讯, 这些档案通常 在 /usr/src/linux/Documentation/cdrom □. 专属介面 CD-ROM 机种 厂牌 机型 核心驱动程式 附注 ------ ----- ------------- -------- Panasonic CR-521 sbpcd Note 1 Panasonic CR-522 sbpcd Note 1 Panasonic CR-523 sbpcd Note 1 Panasonic CR-562 sbpcd Note 1 Panasonic CR-563 sbpcd Note 1 Creative Labs CD-200 sbpcd IBM External ISA sbpcd Note 2 Longshine LCS-7260 sbpcd Teac CD-55A sbpcd Sony CDU-31A cdu31a Sony CDU-33A cdu31a Sony CDU-535 sonycd535 Note 3 Sony CDU-531 sonycd535 Aztech CDA268-01A aztcd Note 4 Orchid CDS-3110 aztcd Okano/Wearnes CDD110 aztcd Conrad TXC aztcd CyCDROM CR520ie aztcd CyCDROM CR940ie aztcd GoldStar R420 gscd Note 5 Philips/LMS CM206 cm206 Note 6 Mitsumi CRMC LU005S mcd/mcdx Note 7, 8 Mitsumi FX001 mcd/mcdx Note 7, 8 Optics Storage Dolphin 8000AT optcd Lasermate CR328A optcd Sanyo H94A sjcd various various isp16 Note 9 MicroSolutions Backpack bpcd 注意: 这些机种可能以Creative Labs, Panasonic, Matsushita, 或Kotobuki 之名出售. 这一型基本上和 CR-562 是一样的. 也可能以 Procomm 之名出售. 这个驱动程式仅对 CDA268-01A 有效. 其它型式像 CDA268-03I 及 CDA269-031SE 都不 是专属介面, 应该用 IDECD(ATAPI) 驱动程式. 也可能是 Reveal Multimedia Kit 的一部份 飞利浦 CM205 并不被此驱动程式支援, 在 ftp://sunsite.unc.edu/pub/Linux/kernel /patches/cdrom/lmscd0.4.tar.gz 有它的alpha版驱动程式. 也可能以 Radio Shack 之名出售. 这个有两个驱动程式, mcd 是旧版的, mcdx 是新版, 有更多的功能, 但比较不稳. 这个驱动程式是给接在 ISP16, MAD16 及莫札特音效卡上的光碟机用的. 如果上列的机器没被你的核心支援, 你可能需要换新版本的核心. 如果你的机型不是上列的, 特别是如果是最近买的, 四倍速以上, 它很可能是前面所述 的 ATAPI 光碟机. 一个最常犯的错误就是认为一切接在声霸卡上的光碟机都应该用 SB PCD 驱动程式. Creative Labs 及多数厂商早已不卖专属介面的机种了; 它们遵从标准 的 ATAPI/IDE 介面. 3.4. 印表机介面唯读光碟机 有些厂商出售用平行印表机介面来连接电脑的光碟机. 目前唯一为Linux核心所支援的这 型机种为MicroSolutions Backpack. 另外有几种这型光碟机的核心驱动程式以核心修补档或可载入模组的形式存在. 请查照 http://www.torque.net/linux-pp.html 得知最新消息. 3.5. 选择性的驱动程式 Zoltan Vorosbaranyi写了另一个选择性的Panasonic/Matsushita CR-56x驱动程式. 可 以在ftp://ftp.tarki.hu/pub/linux/pcd/pcd-0.29.tar.gz 找到. 4. 在 Linux 下安装 CD-ROM 包含了以下步骤: 安装硬体 设置及重建 Linux 核心 建立设备档及设定启动参数 重新启动 Linux 核心 挂上媒体(片子) 下几节将会详细列出该有的步骤. 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-RO M 的启动磁片, 你可以: 从网路安装 启动DOS, 将 Linux 档案装在你的硬碟上 启动DOS, 一片一片地制作开机安装片 找个可以帮你做支援你 CD-ROM 的启动磁片的人 在 Linux Installation HOWTO 中对安装 Linux 有更详细的步骤. 如果你是买Linux C D-ROM, 经常也会有一些安装指示 (在 CD 盒的小封面底, 或在 CD 的档案里). Linux 刚安装好时, 多数人基於以下原因, 会重新编译核心: 支援 CD-ROM 或其它硬体 升级至更新的核心版本 缩小核心, 节省记忆体资源. 有关建立核心的详情请见 Kernel HOWTO 我只针对和 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 机种, 回答以下问题'y': 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 支援的音效卡, 你也许会想在核心起 动它, 以便将来使用. Sound HOWTO 将是一个很好的参考. 然後你应该照正常的步骤去编译及安装核心. 在你建造设备档及照下一节设定启动参数 前, 不要急著用新造的核心开机! ISO-9660 档案系统及几乎所有 CD-ROM 驱动程式都可被做成可载入模组. 这样子一些核 心驱动程式就不必重开机即可载入及去除. 我建议你先不要做成模组. 可在(核心中)模 组的文件及 Kernel HOWTO 中找到使用模组的方法. 如果列在这里的机器并没有被你的核心支援, 八成需要更新核心... 你也可能要自己抓核心之外的修补档, 这通常牵涉到修补核心. 当然, Kernel HOWTO 也 解释了如何做. 注意新版的核心有个功能表式的设置程式, 可用 make menuconfig 做, 或是 X11 式的 设置程式(用 make xconfig). 三种方法都提供线上求助. (译注: 1.3.xx 版以上才有 menuconfig; xconfig 好像较早就有) 4.3. 建立设备档及设定起动时参数 核心使用特别的档案来辨识该用那个驱动程式. 如果你用的是一个发行的 Linux 套件, 安装後你也许已经有必需的设备档了. 例如说, 在 Slackware Linux 下, 有个选单型 安装程式, 它包含了 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-rw- 1 root disk 22, 64 Feb 4 1995 /dev/hdd 起动 Linux 时, 驱动程式要确定该设备是否存在, 这通常是靠自动侦测. 多数驱动程式 会侦测好几个位址, 但因配备不同. 可能的设备冲突. 及硬体限制, 有时需要手动给予 这些资讯. 多数驱动程式支援从核心的命令列取得这些资讯. 这可以手动输入, 或加在 你的开机载入程式里. 例如说, 你用 LILO 当开机载入程式的话, 你可以在 /etc/lilo .conf 用 append 命令: append = "sbpcd=0x230,SoundBlaster" 请看 LILO 的文件获得更多资讯. 下一节我讨论每一种驱动程式, 它的设备档, 启动参数, 及它们的具备的能力. 你也许 只想看和你的机器有关的部份. 4.3.1. Sbpcd 驱动程式 作者 : Eberhard Moenkeberg (
[email protected]) 支援多次烧录碟片?: 是 (但并非所有机种皆可) 支援多台机器?: 是 可做成可载入模组?: 可 可读取数位音轨?: 可 (只有CR-562, CR-563及CD-200) 能自动侦测?: 能 设备档: /dev/sbpcd, 主编号25 设定档: sbpcd.h 核心设定的问题: Matsushita/Panasonic CDROM support? 请另外阅读: ide-cd sbpcd=, 第一个参数是 I/O 基底位址(如0x230). interface-type 可以是 ``SoundBlaster'' , ``LaserMate'' 或 ``SPEA'' ,请看 sbpcd.h 中的提示. 要关闭此驱动程式, 用 sbpc d=0. 可照下面建立设备档: % mknod /dev/sbpcd b 25 0 一片卡最大可以装到四台, 後三台的次编号分别由一到三. 如果你的界面卡更多, 可建 立主编号 26,27,28. 最多可有 4 片卡, 也就是 16 台 CD-ROM 可用, 对一般使用者应 该够了 :-). 请看 sbpcd 档案以获得更多关於此驱动程式的资讯. 如果你最近才买, 不要假设接声霸卡的就应该用这驱动程式. 现在 Creative Labs 卖的 几乎都是 EIDE/ATAPI 的机种了. 4.3.2. Sonycdu535 驱动程式 作者 : Ken Pizzini (
[email protected]) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 是 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/sonycd535, 主编号 24 设定档: sonycd535.h 核心设定的问题: Sony CDU535 CDROM support? 请另外阅读: sonycd535 这个驱动程式的命令列是这样的: sonycd535= io-address 是基底位址(如 0x320). 不然你也可以写在 sonycd535.h 里编译. 设备档这样建立: % mknod /dev/sonycd535 b 24 0 有些 Linux 套件用 /dev/sonycd 这个档. 旧版核心给它主编号 21, 确定一下你的设备 档是正确的. 这个驱动程式原本只是修补, 不过现在已是标准核心的一部份了. 请参考 sonycd535 这 档案取得进一步资讯. 4.3.3. Cdu31a 驱动程式 作者 : Corey Minyard (
[email protected]) 支援多次烧录碟片?: 是 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 可 能自动侦测?: 不能 设备档: /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 档案. 这个驱动程式也有个资讯网站台, 可在 http://www.infinet.com/~zureal/cdu31a.htm l 找到. 作者是 Jeffrey Oxenreider (
[email protected]), 包含了许多此驱动程式 的常见问题. 4.3.4. Aztcd 驱动程式 作者 : Werner Zimmermann (
[email protected]) 支援多次烧录碟片?: 是 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /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 档案 4.3.5. Gscd 驱动程式 作者 : Oliver Raupach (
[email protected]) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/gscd0, 主编号 16 设定档: gscd.h 核心设定的问题: Goldstar R420 CDROM support? 请另外阅读: gscd 核心命令列如下: gscd= 它用 I/O 基底位址作为其参数.(如0x340) 设备档可照下例建: % mknod /dev/gscd0 b 16 0 详细资讯请参考 gscd 档案及http://linux.rz.fh-hannover.de/~raupach 以取得更多 资讯. 4.3.6. Mcd 驱动程式 作者 : Martin (
[email protected]) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/mcd, 主编号 23 设定档: mcd.h 核心设定的问题: Standard Mitsumi CDROM support? 请另外阅读: mcd 这是旧版的 Mitsumi 机器驱动程式, 出来很久了. 也许你想用新的 mcdx 驱动程式, 它 提供更多功能, 但也许没这麽稳. 允许的核心命令列如下: mcd=, 参数分别是介面卡的 I/O 基底位址(如 0x340)及 IRQ 要求号码. 设备档如下建立: % mknod /dev/mcd b 23 0 详情请参阅 mcd 档案 4.3.7. 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 也只做 E IDE/ATAPI 机种了, 应该用 idecd 驱动程式. 详细资讯见 mcdx 档 4.3.8. Cm206 驱动程式 作者 : David A. van Leeuwen (
[email protected].) 支援多次烧录碟片?: 是支援多台机器 ?: 否可做成可载入模组?: 可可读取数位音轨?: 不可能自动侦测?: 能设备档: /dev/c m206cd, 主编号 32 设定档: cm206.h 核心设定的问题: Philips/LMS CM206 CDROM su pport? 请另外阅读: cm206 核心命令列像下面: cm206=, 第一个是基底位址(如 0x340), 第二个是中断号码. 照下面方法造设备档: % mknod /dev/cm206cd b 32 0 更详细的资讯请见 cm206 档 4.3.9. Optcd 驱动程式 作者 : Leo Spiekman (
[email protected]) 支援多次烧录碟片?: 是 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/optcd0, 主编号 17 设定档: optcd.h 核心设定的问题: Experimental Optics Storage ... CDROM support? 请另外阅读: optcd 它接受下面的核心命令列: optcd= 参数是介面卡 I/O 基底位址. 设备档建立法: % mknod /dev/optcd0 b 17 0 详细资讯见 optcd 档. 4.3.10. Sjcd 驱动程式 作者 : Vadim V. Model (
[email protected]) 支援多次烧录碟片?: 否 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 不能 设备档: /dev/sjcd, 主编号 18 设定档: sjcd.h 核心设定的问题: Experimental Sanyo H94A CDROM support? 请另外阅读: sjcd 核心命令列像下面这行: sjcd=,, 指出基底位址, 中断, 及DMA直接记忆体存取通道号码. (如 sjcd=0x340,10,5) 设备档以下面方法做: % mknod /dev/sjcd b 18 0 详情见 sjcd 档案 4.3.11. Bpcd 驱动程式 作者 : Grant R. Guenther (
[email protected]) 支援多次烧录碟片?: 不明 支援多台机器?: 否 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 能 设备档: /dev/bpcd, 主编号 41 设定档: bpcd.h 核心设定的问题: MicroSolutions backpack CDROM support? 请另外阅读: bpcd 这驱动程式的核心命令列如下: bpcd= 参数是使用的基底位址(如 bpcd=0x3bc) 设备档的建造法: # mknod /dev/bpcd b 41 0 这个驱动程式已包含於2.1版的核心原始程式中. 请看bpcd档以得到最新资讯. 4.3.12. SCSI CD-ROM 驱动程式 作者 : David Giller 支援多次烧录碟片?: 是 (受限於机器) 支援多台机器?: 是 可做成可载入模组?: 可 可读取数位音轨?: 不可 能自动侦测?: 能 设备档: /dev/scd0, 主编号 11 设定档: cdrom.h 核心设定的问题: SCSI CDROM support? 请另外阅读: 无 对每一种不同的 SCSI 卡而言, 用的命令列参数不一样, 请参考 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 有这能力, 可用 cd da2wav 程式达成(它使用通用 SCSI 核心介面). 4.3.13. IDECD 驱动程式 作者 : Scott Snyder (
[email protected]) 支援多次烧录碟片?: 是 支援多台机器?: 是 可做成可载入模组?: 不可 可读取数位音轨?: 可 (在硬体支援的机种上) 能自动侦测?: 能 设备档: /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/Document ation/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 上的东西了. 你也许还想用其它的参数挂载 CD-ROM. 欲知详情, 见 man(8) 说明页. 你可以在 /etc/fstab 加进一行, 使 Linux 开机时就自动挂上 CD-ROM, 或给予一些挂 载时的参数. 请看 fstab(5) 说明页. 注意, 若想要听 CD 唱片, 那就不要挂上它. 要卸下 CD-ROM, 以 root 身份执行 umount 命令. % umount /mnt/cdrom 只有在没人存取 CD-ROM 时(包括没人目前目录在 CD-ROM 时) 才可以卸下该片子. 卸下 後就可以退片了. 大多数机器都有退片钮, 不过也有一个软体退片程式 eject 可以靠命 令就退出片子. 注意不要在碟片还在挂载中时退出片子( 这种状况因 CD-ROM 种类不同而可能或不可能 发生.). 有些 CD-ROM 驱动程式可以在卸下时自动退片, 而挂上时自动进片. (你可以重 新编译核心或用软体命令关闭这功能) (译注 : 有些光碟机挂上时会把面板锁定, 就无法退片了, 当然不会不小心按到退片钮 而将片子退出) 也有可能在放了 CD 唱片後, 无法挂上 CD-ROM 片子了. 这时你要用 CD 播放程式送出 ``停 止'' 命令後再尝试挂上. 这问题只在 sbpcd 驱动程式出现过. Stephen Tweedie (
[email protected]) 写了一个叫 Supermount 的程式提供了包括 CD -ROM 的可移动媒体的透明化挂载能力. 你可以在 ftp://sunsite.unc.edu/pub/linux/ patches/diskdrives/找到. 4.6. 问题与解决 如果你按照本 HOWTO 的指示去做却还有问题, 有一些地方可以先确认一下. 这里由简单 到复杂一条条列出来. 如果问题刚好出现在某步骤, 先解决这问题再进行下一步. 4.6.1. 第一步: 确定你用你自己编译的核心启动系统 你可以检查核心中的时戳, 看看是不是有包含支援 CD-ROM 的版本. 你可以用 uname 这 个命令来检查: % uname -a Linux fizzbin 2.0.18 Fri Sep 6 10:10:54 EDT 1996 i586 或显示 /proc/version 档中的内容: % cat /proc/version Linux version 2.0.18 (root@fizzbin) (gcc version 2.7.2) Fri Sep 6 10:10:54 E DT 1996 如果这个时间戳记比你编译还早, 那你就是在用旧核心了. 你真的重开机过吗? 如果你 用 LILO, 是否忘记重装一次(一般执行/etc/lilo/install)? 用软碟开机的话, 做了一 片新开机片, 并用它开机了吗? 4.6.2. 第二步: 确定需要的核心驱动程式有被编译进去 你可藉由观察 /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 msdos nodev proc iso9660 你也可以藉由看 /proc/ioports 档来看使用了那些 I/O port: howto % cat /proc/ioports ... 0230-0233 : sbpcd ... 如果有东西你记得有编译但却没显示, 那麽就是你设置核心时出了问题. 从再设置及重 建核心开始, 再重复安装核心的步骤. 4.6.3. 第三步: 起动时, 核心有侦测你的机器吗? 当核心起动时, 确定你的 CD-ROM 被侦测到了. 应该在开机讯息里可以看到. 如果讯息 卷动太快, 看不到, 你可以用 dmesg 命令来叫回它: % dmesg 或 者 % tail /var/adm/messages 如果开机没找到, 那一定某处有问题. 确定它开电源了, 并且连线也都接对了. 如果你 的机器有位址的跳线(如 SCSI ID 或 562B 的 ID), 确定它设在正确位置上(例如, 若是 只有一台则设 "drive 0") ATAPI CD-ROM 若是该 IDE 排线上唯一一台, 则必须设 "si ngle" 或 "master", 不要设 "slave". 如果在 DOS 下很正常, 那你就可以相信硬体是 正常的了. 有些驱动程式用自动侦测, 有些不用, 而且自动侦测也不是完全可信的. 使用你的驱动 程式提供的核心命令列选项. 如果你不是很确定 I/O 位址或其它参数的话, 你可能要试 好几遍. LILO 可以被设成允许你起动时手动输入参数. 另一个可能就是你用错驱动程式了. 有些文件将专属介面写成 IDE, 使人们误以为它是 ATAPI 的机种. 还有一个可能是你的机器(或介面卡)是那种需要 DOS 驱动程式来驱动它的所谓 ``相容 型''. 这样的话, 你要先用 DOS 开机, 载入这个驱动程式, 再按 Control-Alt-Del 重 起动 Linux. 如果本文件中没列出你的机器, 那可能在 Linux 下还没有驱动程式. 你可以看一下文後 的参考资料表, 试著求一点帮助. 4.6.4. 第四步: 你 能 从 机 器 上 读 出 资 料 吗? 试著从 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 下试试看, 确认是不是这状况. 4.6.5. 第五步: 你 能 挂 上 片 子 吗? 如果你能读取但不能挂上, 首先确定一下核心有没有支援 ISO-9660 档案系统. 如前所 述, 看 /proc/filesystems 档. 注意一下, 请在挂上时用 ``-t iso9660'' 及 ``-r'' 选项. 还有在 CD-ROM 中放的是 资料碟片, 不是唱片. 通常要以 root 身份执行挂上命令. 确定挂载点存在, 且是个空目录. 如果你想开机时自动挂载, 确定在 /etc/fstab 中有正确的一行. 如果你有跑 syslog, 那可能你看不见有些核心发出的讯息. 试试 dmesg 命令: % dmesg SBPCD: sbpcd_open: no disk in drive 错误也可能记录在 /var/adm 目录下的档案中, 全看你的系统怎麽设的. 4.6.6. 消除听音乐时的问题 如果你的机器读 CD-ROM 时没问题, 但听唱片就有问题, 这里提供些解决之道. 你需要些可放唱片的软体. 有些程式可能和你的机器不相容. 试试其它的或重新编译它 . 一个找软体的好地方在 ftp://sunsite.unc.edu/pub/linux/apps/sound/cds/ 有些 CD-ROM 不支援放唱片. 检查 README 档或原始码看看是不是这情形. 检查一下声音是不是会从耳机孔出来. 如果可以, 那八成和你的音效卡有关. 使用混音 程式设定输入频道及音量. 确定你从 CD-ROM 接了条音源线到音效卡上. 也确认一下核 心的音效卡驱动程式存在及可用(请看 Sound HOWTO). 4.6.7. 要是一切都没用呢? 如果你还有问题, 这里有一些最後的建议, 你可以试试: 小心地重读这份 HOWTO 文件 读文後列出的参考文件, 特别是相关的核心原始码的 README 档. 在 comp.os.linux 或其它 USENET 新闻组贴帖子, 问问题. 送一个问题到 Linux 通信论坛 用最新版的 Linux 核心 向店家求救 找你的 CD-ROM 厂商 寄封信给相关驱动程式的作者 寄信给我(作者) 叫出 emacs, 打入``ESC-x'',``doctor'' (:-) 如何在 Linux 下安装及使用 CD-ROM :应用 5. 应用 这一节简要地列出在 Linux 下 CD-ROM 的主要应用. 查阅 Linux软体大地图(LSM) 看看 它们在何处及最新是第几版. 5.1. 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, p ortable pixmap) 格式. 它可经由 ftp://ftp.gwdg.de/pub/linux/hpcdtoppm 取得, 或 者也可以在 PBM(portable bit map)公用程式(在很多档案库中都都可取得) 里 面找到 . (请查询 ``pbm'' 或 ``netpbm'') Gerd Knorr(
[email protected])写的 photocd 程式可将相片光碟转成 Targa 或 者 Windows 及 OS/2 用的 BMP 档. 这位作者也写了 xpcd, 一个可处理相片光碟影像的 X11 软体. 你可以用滑鼠选择影像 , 在小视窗中浏览, 或用五种解析度看它. 你也可选定影像的一部份, 只载入它们. xp cd 可 在 ftp://ftp.cs.tu-berlin.de/pub/linux/Local/misc/中找到. ImageMagick 影像档操作程式也支援像片光碟档案. 它在 ftp://ftp.x.org/contrib/a pplications/ImageMagick/里. 5.3. Mkisofs Eric Youngdale 的 mkisofs 套件允许你在硬碟上建立 ISO-9660 档案系统. 这样可以 帮助你深入了解光碟, 也能在烧光碟前先测试其档案系统. 真正烧光碟的程式几乎都依厂商不同而有所不同. 它们也要求写资料时不能有任何中断 , 所以像 Linux 这种多工作业系统并不是非常适合这种工作. 5.4. ISO-9660 公用程式 有些公用程式可以确认 ISO-9660 格式化的碟片是否正确. 你也许会发现在测试奇怪的 CD 时会有用. 这玩意可在 ftp://ftp.cdrom.com/pub/cdrom/ptf/ 中找到. 作者是 B ill Siegmund 及 Rich Morin. 如何在 Linux 下安装及使用 CD-ROM :常见问题与解答 6. 常见问题与解答 6.1. 没有 root 身份的人, 如何挂上及卸下光碟片 多数 mount 命令支援user选项. 假设你在 /etc/fstab 里加入了这样一行: /dev/sbpcd /mnt/cdrom iso9660 user,noauto,ro 那麽普通使用者就可以像下面这样挂上或卸下这台机器的资料: % mount /mnt/cdrom % umount /mnt/cdrom 挂上程序将会加上一些额外选项以确保系统安全(例如: 程式不准执行, 片子上的设备档 将失效(不予理会)); 在有时候这限制当然严了点. 另一个办法就是抓 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 /cdrom umount: /dev/hdd: device is busy % fuser -v /cdrom /cdrom: USER PID ACCESS COMMAND tranter 133 ..c.. bash 6.3. 我如何将 CD-ROM 用 NFS 与其它电脑共享? 你需要在/etc/exports档中加入一个项目; 这样别的机器的使用者就可以挂上它了. 请 看 exports(5) 这份说明页. 6.4. 我能用 CD-ROM 起动 Linux 吗? 当安装 Linux 时最常用的方法是用软碟开机片, 有些 Linux 组件可以直接由 DOS 起动 光碟上的 Linux 核心. Michael Fulbright (
[email protected]) 回报说若有正确的CD-ROM片子, ROM BIOS及 AT API CD-ROM机器, 从CD直接开机是可能的. 最新版的mkisofs也支援制作这种片子. 他也 加入了一些修补, 以支援这种开机光碟的El Torito标准. 6.5. 如何从 CD 唱片直接抓取数位音轨? Heiko Eissfeldt(
[email protected] )和 Olaf Kindel 写了一个公用程式可 以读取音讯资料, 并将它存成 .wav 格式的声音档. 这个程式叫 cdda2wav.tar.gz, 可 以在 sunsite.unc.edu 找到. 因为 CD-ROM 世代交替太快了, 很难列出哪些 CD-ROM 可读取数位音乐资料. 你最好的 赌注是抓最新版的 cdda2wav 套件, 并读它的文件. 若想要更进一步的资讯, 请上 http://www.tardis.ed.ac.uk/~psyche/pc/cdrom/CDDA. html 这个站台看看, 还有参阅 alt.cdrom FAQ 的 reference 那节. 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 烧录机的图形化前端介面. 此套件可在 sunsit e.unc.edu 里的 /pub/Linux/utls/disk-management/xcdroast-0.95.tar.gz 找著. 也请参考 Linux CD-Writer mini-HOWTO 文件, 可在 ftp://sunsite.unc.edu/pub/Lin ux/docs/HOWTO/mini/CD-Writer 或 http://sunsite.unc.edu/mdw/HOWTO/CD-Writer.h tml 处找到. (译注 : 有位仁兄(不知道叫什麽名字)有写他对 CD-ROM 烧录机的心得, 在 http://ma il.ncku.edu.tw/~thlx/, 可以参观.) 6.8. 我挂载 CD-ROM 时得到: Read-Only file system 讯息? CD-ROM 是只能读取的媒体. 旧版的核心你能用可读写方法挂上 CD-ROM, 然後尝试写资 料进去并不会产生任何讯息. 在 1.1.83 版後, 这被修正为 CD-ROM 必须以唯读方式挂 上( 就是说 mount 要有 -r 选项 ). 6.9. 我关机时, 为什麽托盘自动退出来? 在 1.1.38 版核心, sbpcd 在卸下片子时会自动退片. 如果你下了关机指令, 那麽挂上 的 CD 就会被卸下, 然後就退出来. 这样子在换片时很方便. 如果托盘打开状态下你挂上或读取CD, 那麽它也会自动进片. 我发现有时这功能会造成问题(如 cdplay 及 workbone). 在 1.1.60 版核心你可以用软 体决定要不要用这功能. 有个□例程式包含在 sbpcd 的文件里. (或者用 eject 程式) . 6.10. 我有一片无法挂上的``特殊''片子 这片``特殊''片子看来像是 XA 碟片(就像相片光碟或用 CD-R 烧的 ``一次写入'' (on e-offs) 片子)多数 Linux 核心 CD-ROM 驱动程式并不支援 XA 格式, 虽然你也许能在 一些档案库找到一些修补. sbpcd 驱动程式是支援 XA 的. 如果你用这驱动程式, 你可以依以下方法确定片子是不 是 XA 的格式: 修改 sbpcd.c, 允许显示``主目录" (TOC)资讯(DBG_TOC). 然後做新核 心, 起动它, 则每次挂上时都会显示 TOC( 由主控台或记录档). 看第一个数字, 如果是 20, 那就是 XA 片子, 如果是 00, 那就是普通片子. 如果 TOC 显示不同的轨, 那也是 XA 片子的信号. (感谢 Eberhard Moenkeberg 提供以上资讯) 其它的无法读取 CD 可能原因: 它不是用 ISO-9660 档案系统(如 : 有的用 SunOS) 它是 CD 唱片 CD 有损坏或毁伤 你把光碟片放反了 :-) 6.11. 多片装 CD-ROM 在 Linux 下能用吗 ? 好几位使用者已报告 SCSI CD-ROM 多片机种运作顺利. 你也许要打开`` Probe all LU Ns on each SCSI device'' 的核心选项. 至少有一位使用者发现也要加大驱动程式中的 SCSI 超时等待值(timeout value). Nakamichi MBR-7 的七片装及先锋牌的 12 片装已 确定能用. EIDE/ATAPI 的多片机种也能使用. 2.0 版核心对一些机器使用 CDROMLOADFROMSLOT 这 个 ioctl 函式做了初步支援. IDECD 驱动程式的文件档包含了一个原始码可做一般程式 选择换片槽的参考. 或者你也可以找最新版的 eject 程式. 6.12. 我收到 ``/cdrom: Permission denied'' 错误 有些 CD 有档案权限, 仅允许 root 读取它. 1995 年三月的 InfoMagic CD set 就是一 个好例子. 这真的是很不方便. 底下的修补, 由 Christoph Lameter(
[email protected]) 好心提供, 用它修补核心 , 解决这问题. From:
[email protected] (Christoph Lameter) Newsgroups: comp.os.linux.setup Subject: Infomagic Developers Set: Fix for CD-Rom permissions Date: 12 Apr 1995 20:32:03 -0700 Organization: The Water Fountain - Mining for streams of Living Water NNTP-Posting-Host: waterf.org X-Newsreader: TIN [version 1.2 PL2] The March 1995 Edition of the Infomagic Developers CD-ROM Set has problems because the information stored in the root directory permissions is causing the following problems with using the CDs (1995年三月版的InfoMagic Developers CD-ROM set有问题,因为它在根目录存取权限处 存的资讯造成以下使用CD的问题.) 1. Disc1 will always have the owner/group of 5101/51 and has write access allowed (?) (1. 第一片的拥有者/群组是5101/51,然後居然允许写入(?)) 2. Disc2 and 3 have rwx set for root and no rights at all for any other group/user. These discs cannot be accessed from any user other than root! I run a BBS and I need to make them accessible for download by others. (2. 第二,三片对root有rwx权力,而对其它人/群组什麽也不给. 这两片光碟除了 root外任何人均无法存取! 我正在跑BBS,需要让别人能下载它们!) I have seen several fixes to this problem already floating around. Trouble is that these fixes usually change the rights for ALL directories on the CD. This fix here changes ONLY the rights for the root directory of the CD-Rom. If you want to run parts of Linux directly off the CD you might run into trouble if all directories are readable for everyone and if they are all owned by root. (我已经看到这问题的几个解决之道了. 麻烦的是它们会影响光碟上所有目录的 存取权.我的修正只改了它的根目录存取权. 如果你想在光碟上跑东东,而所有目录 都可存取的话,会带来麻烦,因为他们是root所有.) This fix will set the rights for the root directory to r-xr-xr-x and the owner/group to the values indicated in the uid and gid options to the mount command. (这个修补会将根目录权限改成r-xr-xr-x,将所有人/群组改成mount那人的 uid及gid) To apply:(用法:) cd /usr/src/linux/fs/isofs patch <**THIS MESSAGE** and recompile kernel (you may have to fix up the patch by hand depending on your kernel version). (然後重编译核心(依你的核心版本,可能要手动修补.)) This fix should probably be incorporated into the kernel. What business does data on a CD have to mess around with the permissions/owners of the mount-point anyways? (这个修正也许已放进核心了. 到底是什麽事,非要存放让挂载点的权限/所有人资料 变一团糟呢?) --- inode.c.ORIG Wed Apr 12 17:24:36 1995 +++ inode.c Wed Apr 12 17:59:12 1995 @@ -552,7 +552,15 @@ these numbers in the inode structure. */ if (!high_sierra) - parse_rock_ridge_inode(raw_inode, inode); + { parse_rock_ridge_inode(raw_inode, inode); + /* check for access to the root directory rights/owner CL */ + if((inode->i_sb->u.isofs_sb.s_firstdatazone) == inode->i_ino) + { /* Change owner/rights to the ones demanded by the mount command */ + inode->i_uid = inode->i_sb->u.isofs_sb.s_uid; + inode->i_gid = inode->i_sb->u.isofs_sb.s_gid; + inode->i_mode = S_IRUGO | S_IXUGO | S_IFDIR; + } + } #ifdef DEBUG printk("Inode: %x extent: %x/n",inode->i_ino, inode->u.isofs_i.i_first_exten t); @@ -805,4 +813,3 @@ } #endif - 注意以上的修补有些旧了, 可能无法完全乾净地修补最新的2.0版核心, 也请参考本篇後 面提到的隐藏档的相关问题. 6.13. 我如何读懂 IDE CD 的核心错误讯息? 核心送给我的 IDE CD-ROM 驱动程式讯息像: ``hdxx: code: xx key: x asc: xx ascq : x'',这是什麽意思? 这是 IDE CD-ROM 的状态/错误报告. 预设状况下, IDECD 印出最原始的资讯, 而不浪费 核心空间给错误讯息. 你可以改变它, 让它显示真正的错误讯息. 修改 /usr/src/linu x/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 时间也许是最好的值 -- 在上面情形指出它是二倍速机 器. 你可以增加资料量得出更准确的值. (如果你担心受快取影响的话.)你也许应该多测 几次, 求平均值. 6.15. 装好 Linux 後, 我的 CD-ROM 不能用了 最常见的症状是先用 Linux 安装时, Linux 承认你的 CD-ROM. 但装完後, 从软碟或硬 碟开机却又不能用它了. 最大的可能就是多数 Linux 套件中, 装在硬碟的核心不一定就是和安装片用的一样. 你 选了支援你设备的安装片, 它却给你在硬碟上装一个没有支援 CD-ROM 的 ``通用版''核 心. 你可以照第四章所说的 ``问题与解决'' 去做. (从检查 /proc/devices 开始) 解法是重编译核心, 确定你需要的 CD-ROM 驱动程式及其它需要的部份(如 SCSI 卡, I SO-9660 档案系统)都编进去了. 如果你不知道怎麽做, 看 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(
[email protected]) 发起, 建立一组CD-ROM用的共通 API. 这文件在 /usr/src/linux/Documentation/cdrom/cdrom-standard.tex. 已有几个核心 驱动程式支援它了. 我预计下一个主要版本核心 (3.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档案系统延伸格式. 在写这篇时, 对Jolie t 的支援正进行中, 可以在 http://www-plateau.cs.berkeley.edu/people/chaffee/j oliet.html 或 ftp://www-plateau.cs.berkeley.edu/pub/multimedia/linux/joliet/ 找到修补档.