4. 安装

在 Linux 下安装 CD-ROM 驱动器包含以下步骤

  1. 安装硬件。

  2. 配置和构建 Linux 内核。

  3. 创建设备文件并设置启动时间参数

  4. 启动 Linux 内核。

  5. 挂载媒体。

接下来的章节将详细介绍每个步骤。

4.1. 安装硬件

按照制造商的说明安装硬件,或让您的经销商执行安装。细节将因驱动器是内置还是外置以及所使用的接口类型而异。Linux 没有特殊的安装要求。您可能需要在驱动器和/或接口卡上设置跳线以进行正确操作;一些内核驱动程序包含包含此信息的文档文件。

如文件ide-cd中所述,当只有一个 IDE 设备连接到接口时,ATAPI CD-ROM 应跳线为“single”或“master”,而不是“slave”(尽管最近的内核不再强制执行此限制)。

4.2. 配置和构建内核

最初从 CD-ROM 安装 Linux 时,您可能会使用作为 Linux 发行版一部分提供的引导和/或根磁盘。如果可能,您应该选择一个带有 CD-ROM 设备类型内核驱动程序的引导磁盘。如果您找不到带有必要 CD-ROM 驱动程序的引导磁盘,您有几个选择

  1. 直接从 CD-ROM 启动(如果您的计算机和 Linux CD 支持)

  2. 通过网络安装

  3. 启动 DOS,并将 Linux 文件安装到您的硬盘上

  4. 启动 DOS,并创建一组软盘来安装 Linux

  5. 找人为您构建一个带有所需 CD-ROM 驱动程序的引导磁盘

Linux 安装 HOWTO 提供了更多关于安装 Linux 的信息。如果您购买了 CD-ROM 上的 Linux,它可能还附带了一些安装说明(珠宝盒内的小册子和/或 CD 上的文件)。

一旦 Linux 初步安装完成,大多数用户都希望编译自己的内核,通常是出于以下原因之一

应查阅 Linux 内核 HOWTO 以了解构建内核的详细信息。我只想在这里提及一些特定于 CD-ROM 驱动器的问题。

显然,在配置内核时,您需要编译对 CD-ROM 驱动器的支持。

如果您有 ATAPI CD-ROM 驱动器,您需要启用增强型 IDE/MFM/RLL 磁盘/cdrom/磁带支持包含 IDE/ATAPI CDROM 支持

对于 SCSI CD-ROM 驱动器,启用选项SCSI 支持SCSI CDROM 支持。还要在提示时启用对您的 SCSI 主机适配器的支持,例如Adaptec AHA152X/2825 支持

对于专有接口 CD-ROM 驱动器,启用相应的驱动程序。您可以使用前面列出的表格来确定您的型号要使用的驱动程序。

几乎所有 CD-ROM 都使用 ISO-9660 文件系统,因此您还必须启用ISO 9660 CDROM 文件系统支持

虽然 CD-ROM 操作不需要,但如果您有 Linux 支持的声卡,您可能也希望此时启用和配置内核声音驱动程序。《声音 HOWTO》可以作为此处有用的参考。

然后,您应该按照通常的步骤构建内核并安装它。在创建设备文件并设置下一节中描述的任何启动时间参数之前,不要使用新内核启动。

ISO-9660 文件系统和几乎所有的 CD-ROM 驱动程序都可以构建为可加载的内核模块。这种方案允许在不重启内核的情况下加载和卸载内核驱动程序,从而释放内存。我建议您首先使用编译到内核中的驱动程序来运行您的 CD-ROM 安装。模块的使用方法在模块文档和《内核 HOWTO》中进行了描述。

如果此处列出的驱动器类型不受您的内核支持,您可能需要升级到更新的版本。

您可能需要使用与内核源代码分开分发的驱动程序。这通常涉及修补内核。《内核 HOWTO》再次解释了如何做到这一点。

请注意,您可以使用基于文本的程序“make config”、通过“make menuconfig”调用的基于菜单的内核配置程序以及通过“make xconfig”调用的基于 X11 的图形配置来配置内核。所有三种配置方法都提供在线帮助。

4.3. 创建设备文件和设置启动时间参数

内核使用设备文件来识别要使用的设备驱动程序。如果您正在运行标准的 Linux 发行版,您可能在安装期间创建了必要的设备文件。例如,在 Slackware Linux 下,有一个基于菜单的setup工具,其中包括 CD-ROM 设置,并且大多数系统都有一个/dev/MAKEDEV脚本。如果您不使用这些方法,您可以使用本节中列出的更手动的方法。即使您使用这两种方法中的任何一种,也建议您至少根据本节中的信息验证设备文件。

如果您在 2.4 内核中使用新的 devfs 文件系统,则设备文件由内核动态创建,而不是驻留在磁盘上,并且遵循不同的命名约定。本文档中的示例假设未使用 devfs,如果使用 devfs,则可能需要进行相应的调整。

您可以通过运行为您的驱动器类型指示的 shell 命令来创建设备文件。这应该以用户root身份完成。请注意,一些 Linux 发行版可能使用与此处列出的 CD-ROM 设备名称略有不同的名称。

我建议您还创建一个指向 CD-ROM 设备的符号链接,以便更容易记住。例如,对于辅助接口上的第二个设备的 IDE CD-ROM 驱动器,将使用以下命令创建链接

# ln -s /dev/hdd /dev/cdrom

如果您想播放音频 CD,您需要设置设备文件(真实文件,而不是指向它的符号链接)的保护,以允许所有用户读取,例如

# chmod 664 /dev/hdd
# ls -l /dev/hdd
brw-rw-r--   1 root     disk      22,  64 Feb  4  1995 /dev/hdd

一些 Linux 发行版使用组权限来控制对 CD-ROM 等设备的访问。一个常见的约定是只允许名为 cdrom 的组的成员进行访问。在这种情况下,您应该将适当的用户添加到组中,而不是更改设备文件上的文件权限。

当启动 Linux 时,设备驱动程序尝试确定是否存在适当的设备,通常是通过探测特定的地址。许多驱动程序自动探测多个地址,但由于配置的差异、可能的设备冲突和硬件限制,驱动程序有时需要帮助识别地址和其他参数。大多数驱动程序都支持内核命令行上的选项,以将此信息传递给设备驱动程序。这可以交互式完成,或者更常见的是配置到您的引导加载程序中。例如,使用 LILO,您可以在您的append命令添加到您的/etc/lilo.conf文件中

append = "sbpcd=0x230,SoundBlaster"

有关更多信息,请参阅 LILO 文档。

在下一节中,我将讨论特定于各个设备驱动程序的问题,包括设备文件、引导参数和不同驱动程序的功能。您可能只需要阅读与您的驱动器类型相关的章节。文档文件通常位于目录/usr/src/linux/Documentation/cdrom.

4.3.1. Sbpcd 驱动程序

主要作者Eberhard Moenkeberg (emoenke@gwdg.de)
多会话支持是(但不是所有驱动器)
多驱动器支持
可加载模块支持
读取音频帧是(仅限 CR-562、CR-563、CD-200)
自动探测
设备文件/dev/sbpcd,主设备号 25
配置文件sbpcd.h
内核配置选项松下/Panasonic CDROM 支持
文档文件sbpcd

此驱动程序接受以下形式的内核命令行

sbpcd=<io-address>,<interface-type>

其中第一个参数是设备的基地址(例如 0x230),<interface-type> 是“SoundBlaster”、“LaserMate”或“SPEA”之一。请参阅文件sbpcd.h以获取有关使用哪种接口类型的提示。使用sbpcd=0禁用自动探测,从而禁用驱动程序。

可以使用以下命令创建设备文件

# mknod /dev/sbpcd b 25 0

每个控制器最多支持四个驱动器。第一个控制器上的接下来的三个驱动器将使用次设备号 1 到 3。如果您有多个控制器,请创建主设备号为 26、27 和 28 的设备,最多 4 个控制器(总共 16 个 CD-ROM 驱动器;希望对大多数用户来说足够了 :-)。

请参阅文件sbpcd以获取有关此驱动程序的更多信息。

如果您最近购买了 CD-ROM 驱动器,请不要认为如果它连接到 SoundBlaster 卡,就应该使用此内核驱动程序。Creative Labs 销售的大多数 CD-ROM 驱动器现在都是 EIDE/ATAPI 驱动器。

4.3.2. Sonycdu535 驱动程序

主要作者Ken Pizzini (ken@halcyon.com)
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/sonycd535,主设备号 24
配置文件sonycd535.h
内核配置选项Sony CDU535 CDROM 支持
文档文件sonycd535

此驱动程序接受以下形式的内核命令行

sonycd535=<io-address>

其中 <io-address> 是控制器的基地址(例如 0x320)。或者,您可以在文件sonycd535.h中设置地址并将其编译到内核中。

可以使用以下命令创建设备文件

# mknod /dev/sonycd535 b 24 0

一些 Linux 发行版使用/dev/sonycd作为此设备。旧版本的驱动程序使用主设备号 21;请确保您的设备文件是正确的。

此驱动程序以前作为补丁分发,但现在已成为标准内核的一部分。请参阅文件sonycd535以获取有关此驱动程序的更多信息。

4.3.3. Cdu31a 驱动程序

主要作者Corey Minyard (minyard@-rch.cirr.com)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/cdu31a,主设备号 15
配置文件cdu31a.h
内核配置选项Sony CDU31A/CDU33A CDROM 支持
文档文件cdu31a

此驱动程序接受以下形式的内核命令行

cdu31a=<io-address>,<interrupt>,PAS

第一个数字是卡的 I/O 基地址(例如 0x340)。第二个是要使用的中断号(0 表示使用轮询 i/o)。如果驱动器连接到 Pro-Audio Spectrum 16 声卡,则可选的第三个参数应为“PAS”,否则留空。

如果驱动程序作为模块加载,则它使用略有不同的格式。当使用 modprobe 或 insmod 命令加载驱动程序时,参数采用以下形式

cdu31a_port=<io-address> cdu31a_irq=<interrupt>

基本 io 地址是必需的,而中断号是可选的。

可以使用以下命令创建设备文件

# mknod /dev/cdu31a b 15 0

请参阅文件cdu31a以获取有关此驱动程序的更多信息。

4.3.4. Aztcd 驱动程序

主要作者Werner Zimmermann (zimmerma@rz.fht-esslingen.de)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/aztcd0,主设备号 29
配置文件aztcd.h
内核配置选项Aztech/Orchid/Okano/Wearnes(非 IDE)CDROM 支持
文档文件aztcd

此驱动程序接受以下形式的内核命令行

aztcd=<io-address>

其中参数是卡的 I/O 基地址(例如 0x340)。

可以使用以下命令创建设备文件

# mknod /dev/aztcd0 b 29 0

请注意,此驱动程序仅适用于 CDA268-01A。其他型号,包括 CDA268-03I 和 CDA269-031SE 不是专有的,应使用 IDECD (ATAPI) 内核驱动程序。

请参阅文件aztcd以获取有关此驱动程序的更多信息。

4.3.5. Gscd 驱动程序

主要作者Oliver Raupach (raupach@nwfs1.rz.fh-hannover.de)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/gscd0,主设备号 16
配置文件gscd.h
内核配置选项Goldstar R420 CDROM 支持
文档文件gscd

此驱动程序接受以下形式的内核命令行

gscd=<io-address>

指定卡的 I/O 基地址(例如 0x340)。

可以使用以下命令创建设备文件

# mknod /dev/gscd0 b 16 0

请参阅文件gscd以获取有关此驱动程序的更多信息。

4.3.6. Mcd 驱动程序

主要作者Martin (martin@bdsi.com)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/mcd,主设备号 23
配置文件mcd.h
内核配置选项标准 Mitsumi CDROM 支持
文档文件mcd

这是 Mitsumi 驱动程序的旧驱动程序,已经存在一段时间了。您可能想尝试更新的mcdx驱动程序,它有一些新功能,但可能不太稳定。

此驱动程序接受以下形式的内核命令行

mcd=<io-address>,<irq>

指定卡的 I/O 基地址(例如 0x340)和使用的 IRQ 请求号。

可以使用以下命令创建设备文件

# mknod /dev/mcd b 23 0

请参阅文件mcd以获取有关此驱动程序的更多信息。

4.3.7. Mcdx 驱动程序

主要作者Heiko Schlittermann
多会话支持
多驱动器支持
可加载模块支持
读取音频帧否(硬件不支持)
自动探测
设备文件/dev/mcdx0,主设备号 20
配置文件mcdx.h
内核配置选项实验性 Mitsumi 支持
文档文件mcdx

这是 Mitsumi 驱动程序的更新驱动程序。较旧且可能更稳定的mcd驱动程序仍然可用。

此驱动程序接受以下形式的内核命令行

mcdx=<io-address>,<irq>

指定卡的 I/O 基地址(例如 0x340)和使用的 IRQ 请求号。

可以使用以下命令创建设备文件

# mknod /dev/mcdx0 b 20 0

如果您最近购买了 Mitsumi CD-ROM 驱动器,请不要认为它应该使用此内核驱动程序。新的 Mitsumi 驱动器现在是 EIDE/ATAPI 兼容的,应该使用 idecd 内核驱动程序。

请参阅文件mcdx以获取有关此驱动程序的更多信息。

4.3.8. Cm206 驱动程序

主要作者David A. van Leeuwen (david@tm.tmo.nl)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/cm206cd,主设备号 32
配置文件cm206.h
内核配置选项Philips/LMS CM206 CDROM 支持
文档文件cm206

该驱动程序接受以下形式的内核命令行

cm206=<io-address>,<interrupt>

其中第一个数字是卡的 I/O 基地址(例如 0x340)。第二个是中断通道。

可以使用以下命令创建设备文件

# mknod /dev/cm206cd b 32 0

请参阅文件cm206以获取有关此驱动程序的更多信息。

4.3.9. Optcd 驱动程序

主要作者Leo Spiekman (spiekman@dutette.et.tudelft.nl)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/optcd0,主设备号 17
配置文件optcd.h
内核配置选项实验性光学存储 ... CDROM 支持
文档文件optcd

该驱动程序接受以下形式的内核命令行

optcd=<io-address>

以指定卡的 I/O 基地址(例如 0x340)。

可以使用以下命令创建设备文件

# mknod /dev/optcd0 b 17 0

请参阅文件optcd以获取有关此驱动程序的更多信息。

4.3.10. Sjcd 驱动程序

主要作者Vadim V. Model (vadim@rbrf.msk.su)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/sjcd,主设备号 18
配置文件sjcd.h
内核配置选项实验性 Sanyo H94A CDROM 支持
文档文件sjcd

该驱动程序接受以下形式的内核命令行

sjcd=<io-address>,<interrupt>,<dma>

指示要使用的基地址、中断和 DMA 通道(例如 sjcd=0x340,10,5)。

可以使用以下命令创建设备文件

# mknod /dev/sjcd b 18 0

请参阅文件sjcd以获取有关此驱动程序的更多信息。

4.3.11. Paride 驱动程序

主要作者Grant R. Guenther (grant@torque.net)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/pcd0,主设备号 46
配置文件bpcd.h
内核配置选项并行端口 IDE 设备支持
文档文件paride.txt

这是用于连接到并行端口的各种类型存储设备的驱动程序。通常,驱动程序会自动检测并行端口设备。该文档描述了在自动检测不起作用时可用于指定设备参数的参数。

可以使用以下命令创建第一个驱动器的设备文件

# mknod /dev/pcd0 b 46 0

请参阅文件/usr/src/linux/Documentation/paride.xt以获取有关此驱动程序的更多信息。请注意,这取代了旧内核中存在的 bpcd 驱动程序。

4.3.12. SCSI 驱动程序

主要作者David Giller
多会话支持是(取决于驱动器)
多驱动器支持
可加载模块支持
读取音频帧
自动探测
设备文件/dev/scd0,主设备号 11
配置文件cdrom.h
内核配置选项SCSI CDROM 支持
文档文件scsi.txt

每个类型的 SCSI 控制器都有特定的内核命令行选项。有关更多信息,请参阅 SCSI HOWTO

支持多个驱动器(最多为 SCSI 总线上设备最大数量的限制)。创建主设备号为 11,次设备号从零开始的设备文件

# mknod /dev/scd0 b 11 0
# mknod /dev/scd1 b 11 1

虽然内核驱动程序本身不支持读取数字音频帧,但某些 SCSI 驱动器具有此功能,并且可以与 cdda2wav 程序(使用通用 SCSI 内核接口)一起使用。

另请参阅本文档前面关于 IDE SCSI 仿真驱动程序的讨论。

4.3.13. IDECD 驱动程序

主要作者Scott Snyder (snyder@fnald0.fnal.gov)
多会话支持
多驱动器支持
可加载模块支持
读取音频帧是(在受支持的驱动器上)
自动探测
设备文件/dev/hd{a,b,c,d},主设备号 22
配置文件cdrom.h
内核配置选项包含对 IDE/ATAPI CDROM 的支持
文档文件ide-cd

这是 ATAPI CD-ROM 的驱动程序。驱动程序接受以下形式的内核命令行

hdx=cyls,heads,sects,wpcom,irq
  or
hdx=cdrom

其中hdx可以是 {hda,hdb,hdc,hdd} 中的任何一个,或者只是 hd,表示序列中的“下一个”驱动器。只需要前三个参数(cyls、heads、sects)。例如hdc=1050,32,64 hdd=cdrom.

让 IDE 驱动程序识别您的 CD-ROM 驱动器可能很棘手,特别是当您有超过 2 个设备或超过一个 IDE 控制器时。通常只需要从 LILO 传递正确的命令行选项即可。《/usr/src/linux/Documentation/cdrom/ide-cd》文件解释了如何做到这一点。请仔细阅读。

最近的 Linux 内核对多个 IDE 设备有更好的支持。如果您在旧内核中遇到问题,升级可能会有所帮助。

一些 IDE 控制器存在硬件问题,内核驱动程序可以解决这些问题。您可能需要向驱动程序传递其他参数才能启用此功能。有关详细信息,请参阅文档。

4.4. 启动 Linux 内核

您现在可以使用新内核重新启动。注意类似以下的消息,表明设备驱动程序已找到 CD-ROM(消息将因驱动器类型而异)

hdd: TOSHIBA CD-ROM XM-7002B, ATAPI CD/DVD-ROM drive

如果启动消息滚动得太快而无法阅读,您应该可以使用dmesgtail /var/log/messages.

来检索它们。如果未找到驱动器,则发生了问题。请参阅故障排除部分。

4.5. 挂载、卸载和弹出设备

要挂载 CD-ROM,请将光盘插入驱动器,并以mount身份运行命令root(这假设您创建了指向您的设备文件的符号链接,如上所述,并且存在一个空目录/mnt/cdrom

# mount -t iso9660 -r /dev/cdrom /mnt/cdrom

现在可以在目录/mnt/cdrom.

下访问 CDmount(8)手册页以了解详细信息。您可能希望使用 mount 命令的其他选项;请参阅

您可以将条目添加到/etc/fstab以在 Linux 启动时自动挂载 CD-ROM 或指定挂载时要使用的参数;请参阅fstab(5)手册页。

请注意,要播放音频 CD,您不应尝试挂载它们。

要卸载 CD-ROM,请使用umount身份运行命令root:

# umount /mnt/cdrom

只有在当前没有进程访问驱动器(包括将其默认目录设置为已挂载的驱动器)时,才能卸载光盘。然后您可以弹出光盘。大多数驱动器都有弹出按钮;还有一个独立的 eject 程序,允许在软件控制下弹出 CD-ROM。

请注意,您不应在光盘已挂载时弹出它(这可能可以或不可能取决于驱动器类型)。某些 CD-ROM 驱动程序可以在卸载 CD-ROM 时自动弹出 CD-ROM,并在挂载光盘时插入 CD 托盘(您可以在编译内核时或使用软件命令关闭此功能)。

播放音频 CD 后,您可能无法挂载 CD-ROM。您需要在尝试挂载之前发送 CD 音频“停止”命令(使用 CD 播放器程序)。此问题似乎仅在使用 SBPCD 驱动程序时才会出现。

最近的内核支持基于内核的自动挂载程序,该程序提供对可移动媒体(包括 CD-ROM)的透明挂载。您可以在 ftp://ftp.kernel.org/pub/linux/daemons/autofs/ 找到使用它所需的工具。

4.6. 故障排除

如果在按照 HOWTO 中的说明操作后仍然遇到问题,以下是一些需要检查的事项。检查按复杂性递增的顺序列出。如果检查失败,请在进入下一阶段之前解决问题。

4.6.1. 步骤 1:确保您确实在运行您编译的内核

您可以检查内核上的日期戳,以查看您是否正在运行您编译的带有 CD-ROM 支持的内核。您可以使用uname命令

% uname -a
Linux moe 2.4.4 #1 Sat Apr 28 10:30:45 EDT 2001 i686 unknown  

或通过显示文件/proc/version:

% cat /proc/version
Linux version 2.4.4 (root@moe) (gcc version 2.95.2 20000220 (Debian GNU/Linux)) #1 Sat Apr 28 10:30:45 EDT 2001

来完成此操作。如果日期戳与您编译内核的时间不匹配,则您正在运行旧内核。您记得重新启动了吗?如果您使用 LILO,您是否重新安装了它(通常通过运行/sbin/lilo)?如果是从软盘启动,您是否创建了新的启动软盘并在启动时使用了它?

4.6.2. 步骤 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 设备驱动程序。这些都是块设备,在这种情况下,我们可以看到idecd主设备号为 22 的驱动程序存在。

还要通过查看/proc/filesystems:

% cat /proc/filesystems
        ext2
nodev   proc
nodev   devpts
        vfat
        iso9660

您还可以通过文件/proc/ioports:

howto % cat /proc/ioports
 ...
0230-0233 : sbpcd
 ...

来查看驱动程序正在使用的 i/o 端口地址。如果您认为编译到内核中的任何驱动程序未显示,则内核配置或构建出现问题。重新开始安装过程,从内核的配置和构建开始。

4.6.3. 步骤 3:内核是否在启动期间检测到您的驱动器?

确保在内核启动时检测到 CD-ROM 设备。您应该在启动时看到一条消息。如果消息滚动出屏幕,您通常可以使用dmesg命令

% dmesg

% tail /var/log/messages

来回忆它们。如果未找到您的驱动器,则说明出了问题。确保驱动器已通电并且所有电缆都已连接。如果您的驱动器具有用于寻址的硬件跳线,请检查它们是否设置正确(例如,如果您只有一个驱动器,则为驱动器 0)。当只有一个 IDE 设备连接到接口时,ATAPI CD-ROM 必须跳线为“single”或“master”,而不是“slave”。如果驱动器在 DOS 下工作,那么您可以合理地确信硬件正在工作。

许多内核驱动程序使用自动探测,但有些驱动程序不使用,并且在任何情况下,探测并非总是可靠的。使用为您的内核驱动程序类型列出的内核命令行选项。如果您不确定 i/o 地址或其他参数,您可能需要尝试几个不同的值。LILO 可以(并且通常是)配置为允许您在启动时手动输入参数。

另一种可能性是您为您的 CD-ROM 驱动程序使用了错误的内核驱动程序。一些文档可能会将专有接口称为 IDE,导致一些人错误地认为它们是 ATAPI 驱动器。

另一种可能性是您的驱动器(或接口卡)是“兼容”类型之一,需要由 DOS 驱动程序初始化。尝试启动 DOS 并加载供应商提供的 DOS 设备驱动程序。然后使用软启动 LinuxControl-Alt-Delete.

如果您的驱动器未在此文档中列出,则可能没有适用于 Linux 的驱动程序。您可以查看本文档末尾列出的一些参考文献以获得帮助。

4.6.4. 步骤 4:您可以从驱动器读取数据吗?

尝试从 CD-ROM 驱动器读取数据。键入以下命令应使驱动器活动指示灯(如果有)亮起,并且不应报告任何错误。使用适合您的驱动器的任何设备文件,并确保已插入 CD-ROM;使用 Control-C 退出。

# dd if=/dev/cdrom of=/dev/null bs=2048
^C
124+0 records in
124+0 records out

如果这有效,则内核正在与驱动器通信,您可以继续执行步骤 5。

如果无效,则可能的原因是设备文件。确保/dev目录中的设备文件具有正确的 主设备号和次设备号,如先前为您的驱动器类型列出的那样。检查设备文件上的权限是否允许读取和写入。

一个遥远的可能性是硬件问题。如果可能,尝试在另一个操作系统下测试驱动器,以确定是否可能是这种情况。

4.6.5. 步骤 5:您可以挂载驱动器吗?

如果您可以从驱动器读取数据但无法挂载它,请首先通过读取/proc/filesystems来验证您是否编译了 ISO-9660 文件系统支持,如前所述。

确保您使用“-t iso9660”和“-r”选项挂载驱动器,并且驱动器中插入了已知的良好 ISO-9660 CD-ROM(不是音频 CD)。您通常必须以用户root.

身份挂载驱动器。确保挂载点存在并且是一个空目录。

如果您在启动时自动挂载 CD-ROM,请确保您在/etc/fstab文件中具有正确的条目。

如果您正在运行 syslog 守护程序,则可能存在您看不到的来自内核的错误消息。尝试使用“dmesg”命令

% dmesg
SBPCD: sbpcd_open: no disk in drive

也可能有错误记录到/var/log中的文件中,具体取决于您的系统配置方式。

4.6.6. 调试音频问题

如果驱动器可以与 CD-ROM 一起使用,但不能用于播放音频 CD,以下是一些可能的解决方案。

您需要应用程序来播放音频 CD。某些应用程序可能已损坏或可能与您的驱动器不兼容。尝试其他应用程序和/或尝试自己重新编译它们。寻找软件的好地方是 ftp://www.ibiblio.org/pub/Linux/apps/sound/cdrom/

少数 CD-ROM 驱动程序不支持播放音频 CD。检查文档文件或源代码以查看是否是这种情况。

检查音频是否可以通过耳机插孔播放。如果是,则问题可能与您的声卡有关。使用混音器程序设置输入设备和音量级别。确保您已安装从 CD-ROM 驱动器到声卡的音频线。确保内核声卡驱动程序已安装并正常工作(请参阅《声音 HOWTO》)。

4.6.7. 当所有其他方法都失败时

如果您仍然有问题,以下是一些最终建议供您尝试

  • 仔细重新阅读此 HOWTO 文档

  • 阅读本文档末尾列出的参考文献,尤其是相关的内核源文件

  • comp.os.linux或其他 Usenet 新闻组发布问题

  • 向 Linux 邮件列表发送问题

  • 尝试使用最新的 Linux 内核

  • 联系您的计算机经销商

  • 联系 CD-ROM 制造商

  • 向相关内核驱动程序的维护者发送邮件(查看文件/usr/src/linux/MAINTAINERS)

  • 给我发邮件

  • 启动 emacs 并键入Esc-x doctor :-)