mirror of https://github.com/tLDP/LDP
1890 lines
69 KiB
Plaintext
1890 lines
69 KiB
Plaintext
<!doctype linuxdoc system>
|
|
|
|
<article>
|
|
|
|
<title>The Linux CD-ROM HOWTO
|
|
<author>Jeff Tranter, <htmlurl url="mailto:tranter@pobox.com"
|
|
name="tranter@pobox.com">
|
|
<date>v1.14, 24 March 1999
|
|
|
|
<abstract>
|
|
This document describes how to install, configure, and use CD-ROM
|
|
drives under Linux. It lists the supported hardware and answers a
|
|
number of frequently asked questions. The intent is to bring new users
|
|
up to speed quickly and reduce the amount of traffic in the Usenet
|
|
news groups and mailing lists.
|
|
</abstract>
|
|
|
|
<toc>
|
|
|
|
<sect>Introduction<p>
|
|
|
|
This is the Linux <idx>CD-ROM HOWTO</idx>. It is intended as a quick
|
|
reference covering everything you need to know to install and
|
|
configure CD-ROM hardware under Linux. Frequently asked questions
|
|
related to CD-ROM are answered, and references are given to other
|
|
sources of information related to CD-ROM applications and technology.
|
|
|
|
<sect1>Acknowledgments<p>
|
|
|
|
Much of this information came from the documentation and source files
|
|
provided with the Linux kernel, the Internet <htmlurl
|
|
url="news:alt.cd-rom" name="alt.cdrom"> newsgroup FAQ, and input from
|
|
Linux users.
|
|
|
|
Thanks to the <htmlurl
|
|
url="ftp://metalab.unc.edu/pub/Linux/utils/text/sgml-tools-0.99.0.tar.gz"
|
|
name="SGML Tools"> package, this HOWTO is available in several
|
|
formats, all generated from a common source file.
|
|
|
|
<sect1>New Versions Of This Document<p>
|
|
|
|
New versions of this document will be periodically posted to the
|
|
<htmlurl url="news:comp.os.linux.answers"
|
|
name="comp.os.linux.answers"> newsgroup. They will also be uploaded to
|
|
various anonymous ftp sites that archive such information including
|
|
<url url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/">.
|
|
|
|
Hypertext versions of this and other Linux HOWTOs are available on
|
|
many world-wide web sites, including <url
|
|
url="http://metalab.unc.edu/LDP/HOWTO/">. Most Linux CD-ROM
|
|
distributions include the HOWTOs, often under the
|
|
<file>/usr/doc</file> directory, and you can also buy printed copies
|
|
from several vendors. Sometimes the HOWTOs available from CD-ROM
|
|
vendors, ftp sites, and printed format are out of date. If the date on
|
|
this HOWTO is more than six months in the past, then a newer copy is
|
|
probably available on the Internet.
|
|
|
|
<em>Please note that, due to the dynamic nature of the Internet, all
|
|
web and ftp links listed in this document are subject to change.</em>
|
|
|
|
Translations of this document are available in several languages:
|
|
|
|
Chinese: <url url="http://www.linux.org.tw/CLDP/CDROM-HOWTO.html">
|
|
|
|
French: <url url="http://www.freenix.org/unix/linux/HOWTO/">
|
|
|
|
Japanese: <url url="http://jf.linux.or.jp/JF/JF.html/">
|
|
|
|
Polish: <url url="http://www.jtz.org.pl/Html/CDROM-HOWTO.pl.html">
|
|
|
|
Spanish: <url url="ftp://ftp.insflug.org/es">
|
|
|
|
Swedish: <url url="http://www.swe-doc.linux.nu/">
|
|
|
|
Most translations of this and other Linux HOWTOs can also be found at
|
|
<url url="http://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/">
|
|
and <url
|
|
url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/translations/">. If
|
|
you make a translation of this document into another language, let me
|
|
know and I'll include a reference to it here.
|
|
|
|
<sect1>Feedback<p>
|
|
|
|
I rely on you, the reader, to make this HOWTO useful. If you have any
|
|
suggestions, corrections, or comments, please send them to me,
|
|
<htmlurl url="mailto:tranter@pobox.com" name="tranter@pobox.com">, and
|
|
I will try to incorporate them in the next revision.
|
|
|
|
I am also willing to answer general questions on CD-ROM under Linux,
|
|
as best I can. Before doing so, please read all of the information in
|
|
this HOWTO, and then send me detailed information about the
|
|
problem. Please do not ask me about using CD-ROM drives under
|
|
operating systems other than Linux.
|
|
|
|
If you publish this document on a CD-ROM or in hardcopy form, a
|
|
complimentary copy would be appreciated; mail me for my postal
|
|
address. Also consider making a donation to the Linux Documentation
|
|
Project to help support free documentation for Linux. Contact the
|
|
Linux HOWTO coordinator, Tim Bynum (<htmlurl
|
|
url="mailto:linux-howto@metalab.unc.edu"
|
|
name="linux-howto@metalab.unc.edu">), for more information.
|
|
|
|
<sect1>Distribution Policy<p>
|
|
|
|
Copyright (c) 1995-1999 by Jeff Tranter. This document may be
|
|
distributed under the terms set forth in the LDP license at <url
|
|
url="http://metalab.unc.edu/LDP/COPYRIGHT.html">.
|
|
|
|
<sect>CD-ROM Technology<p>
|
|
|
|
<verb>
|
|
"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."
|
|
--- from a CD-ROM instruction manual
|
|
</verb>
|
|
|
|
Don't Panic! The world of <idx>CD-ROM technology</idx> is not as
|
|
confusing as your instruction manual.
|
|
|
|
CD-ROM stands for <em>Compact Disc Read-Only Memory</em>, a mass
|
|
storage medium utilizing an optical laser to read microscopic pits on
|
|
the aluminized layer of a polycarbonate disc. The same format is used
|
|
for audio Compact Discs. Because of its high storage capacity,
|
|
reliability, and low cost, CD-ROM has become an increasingly popular
|
|
storage media.
|
|
|
|
The storage capacity of a CD-ROM disc is approximately 650 megabytes,
|
|
equivalent to over 500 high density 3.5" floppy disks or roughly
|
|
250,000 typed pages.
|
|
|
|
First generation drives (known as <em>single speed</em>), provided a
|
|
transfer rate of approximately 150 kilobytes per second. Hardware
|
|
manufacturers then introduced double speed (300 kB/sec), quad speed
|
|
(600 kB/sec), and higher. Current drives operate at up to 40 times
|
|
speed, although the maximum rate is only achievable over certain
|
|
portions of the disc surface.
|
|
|
|
Most CD-ROM drives use either the Small Computer Systems Interface
|
|
(SCSI), ATAPI enhanced IDE interface, or a vendor proprietary
|
|
interface. They also typically support playing audio CDs via an
|
|
external headphone jack or line level output. Some CDs also allow
|
|
reading the frames of data from audio CDs in digital form.
|
|
|
|
CD-ROMs are usually formatted with an <idx>ISO-9660</idx> (formerly
|
|
called <em><idx>High Sierra</idx></em>) file system. This format
|
|
restricts filenames to the MS-DOS style (8+3 characters). The
|
|
<em><idx>Rock Ridge Extensions</idx></em> use undefined fields in the
|
|
ISO-9660 standard to support longer filenames and additional Unix
|
|
style information (e.g. file ownership, symbolic links, etc.).
|
|
Microsoft has defined a proprietary ISO file system extension called
|
|
Joliet which supports long filenames using the 16-bit UNICODE
|
|
character encoding.
|
|
|
|
<em><idx>PhotoCD</idx></em> is a standard developed by Kodak for
|
|
storing photographic images as digital data on a CD-ROM. With
|
|
appropriate software, you can view the images on a computer,
|
|
manipulate them, or send them to a printer. Information can be added
|
|
to a PhotoCD at a later date; this is known as
|
|
<em><idx>multi-session</idx></em> capability.
|
|
|
|
CD recorders (CD-R) allow writing onto a special "gold" CD which can
|
|
then be read by any CD-ROM drive. Data can only be written once,
|
|
although using multi-session new data can be appended to a disc. These
|
|
drives are now becoming increasingly affordable.
|
|
|
|
CD-RW (read/write) drives support multiple writing of data to
|
|
CDs. They use special discs which cannot be read using standard CD-ROM
|
|
drives, although the CD-RW drives themselves can read standard discs.
|
|
|
|
DVD-ROM expands the storage of a CD to as much as 17 gigabytes. They
|
|
are commonly used as a medium for distributing full length motion
|
|
pictures encoded using the MPEG-2 format. The MPEG video decoding is
|
|
usually performed using specialized decoder hardware.
|
|
|
|
<sect>Supported Hardware<p>
|
|
|
|
This section lists the CD-ROM drivers and interfaces that are
|
|
currently supported under Linux. The information here is based on the
|
|
latest stable Linux kernel, which at time of writing was version
|
|
2.2.4.
|
|
|
|
This information is only valid for Linux on the Intel platform. Much
|
|
of it is applicable to Linux on other processor architectures as
|
|
well.
|
|
|
|
<sect1>ATAPI CD-ROM Drives<p>
|
|
|
|
<idx>ATAPI</idx> <idx>(ATA Packet Interface)</idx> is a protocol for
|
|
controlling mass storage devices. It builds on the ATA (AT Attachment)
|
|
interface, the official ANSI standard name for the IDE interface
|
|
developed for hard disk drives. ATAPI is commonly used for hard disks,
|
|
CD-ROM drives, tape drives, and other devices. Currently the most
|
|
popular type of interface, it offers most of the functionality of
|
|
SCSI, without the need for an expensive controller or cables.
|
|
|
|
The Linux kernel has a device driver that should work with any ATAPI
|
|
compliant CD-ROM drive. Vendors shipping compatible drives include
|
|
Aztech, Mitsumi, NEC, Sony, Creative Labs, and Vertos. If you have
|
|
recently purchased a CD-ROM drive, especially if it is quad speed or
|
|
faster, it is almost guaranteed to be IDE/ATAPI.
|
|
|
|
Linux also has an <idx>IDE SCSI emulation</idx> kernel driver that
|
|
makes an IDE/ATAPI device appear in software to be a SCSI device,
|
|
allowing the use of a SCSI device driver instead of the native ATAPI
|
|
driver. This is useful if you have an ATAPI device for which no native
|
|
driver has been written (for example, an ATAPI PD-CD or CDR drive);
|
|
you can then use this emulation together with an appropriate SCSI
|
|
device driver.
|
|
|
|
<sect1>SCSI CD-ROM Drives<p>
|
|
|
|
<idx>SCSI</idx> (Small Computer Systems Interface) is a popular format
|
|
for CD-ROM drives. Its chief advantages are a reasonably fast transfer
|
|
rate, multi-device capability, and support on a variety of computer
|
|
platforms. Some disadvantages of SCSI are the need for a relatively
|
|
expensive controller card and cables.
|
|
|
|
Any <idx>SCSI CD-ROM</idx> drive with a block size of 512 or 2048
|
|
bytes should work under Linux; this includes the vast majority of
|
|
CD-ROM drives on the market.
|
|
|
|
You will also need a supported SCSI controller card; see the <htmlurl
|
|
url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/unmaintained/SCSI-HOWTO"
|
|
name="SCSI HOWTO"> for more information on interface hardware.
|
|
|
|
|
|
Note that some CD-ROMs include a proprietary controller with a
|
|
modified interface that is not fully SCSI compatible (e.g. it may not
|
|
support adding other SCSI devices on the bus). These will most likely
|
|
<em>not</em> work under Linux.
|
|
|
|
<sect1>Proprietary CD-ROM Drives<p>
|
|
|
|
Several CD-ROM drives using <idx>proprietary interfaces</idx> are
|
|
available; the interface is often provided on a sound card. Simple
|
|
interface cards equivalent to that provided on the sound card are also
|
|
available. These drives generally tend to be lower in cost and
|
|
smaller than SCSI drives. Their disadvantages are the lack of
|
|
standardization and expandability.
|
|
|
|
Note that proprietary interfaces are sometimes erroneously referred to
|
|
as IDE interfaces, because like IDE hard disks, they use a simple
|
|
interface based on the PC/AT bus. To add to the confusion, some
|
|
vendors, most notably Creative Labs, have shipped many different types
|
|
of CD-ROM drives and have offered proprietary, SCSI, and ATAPI
|
|
interfaces on their sound cards.
|
|
|
|
The table below lists the proprietary CD-ROM drives that are known to
|
|
be supported under Linux. Drivers for additional devices may be
|
|
available in the latest development kernels or as kernel patches. The
|
|
latter can most often be found at <url
|
|
url="ftp://metalab.unc.edu/pub/Linux/kernel/patches/cdrom/">. Also
|
|
check the documentation files included with the kernel distribution,
|
|
usually installed in <file>/usr/src/linux/Documentation/cdrom</file>,
|
|
for the latest information.
|
|
|
|
<verb>
|
|
Proprietary CD-ROM Drives
|
|
|
|
Vendor Model Kernel Driver Notes
|
|
------ ----- ------------- --------
|
|
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
|
|
</verb>
|
|
|
|
Notes:
|
|
|
|
<enum>
|
|
|
|
<item>These drives may be sold under the names Creative Labs,
|
|
Panasonic, Matsushita, or Kotobuki.
|
|
|
|
<item>This drive is the same as a Panasonic CR-562.
|
|
|
|
<item>May also be sold under the Procomm name.
|
|
|
|
<item>This driver is for the CDA268-01A only. Other models, including
|
|
the CDA268-03I and CDA269-031SE are not proprietary and should use the
|
|
IDECD (ATAPI) kernel driver.
|
|
|
|
<item>May also be sold as part of a Reveal Multimedia Kit.
|
|
|
|
<item>The Philips CM205 is not supported by this driver, but there is
|
|
a separate alpha release driver available from ftp://metalab.unc.edu
|
|
in /pub/Linux/kernel/patches/cdrom/lmscd0.4.tar.gz
|
|
|
|
<item>May also be sold under the Radio Shack name.
|
|
|
|
<item>There are two drivers available. "mcd" is the original one, and
|
|
"mcdx" is a newer driver with more features (but possibly less
|
|
stable).
|
|
|
|
<item>This driver works with CD-ROM drives that are attached to the
|
|
interface on an ISP16, MAD16 or Mozart sound card.
|
|
|
|
</enum>
|
|
|
|
If a drive listed here is not supported by your kernel, you probably
|
|
need to upgrade to a newer version.
|
|
|
|
If your drive is not one of the models listed here, particularly if it
|
|
was bought recently and is quad speed or faster, it probably uses the
|
|
IDE/ATAPI interface listed in a previous section. <em>The single most
|
|
common error among Linux CD-ROM users is to assume that any drive
|
|
connected to a SoundBlaster card should use the SBPCD
|
|
driver</em>. Creative Labs and most other vendors are no longer
|
|
selling proprietary interface drives, they are following the standard
|
|
ATAPI/IDE interface.
|
|
|
|
<sect1>Parallel Port Drives<p>
|
|
|
|
There are external storage devices, including CD-ROM drives, that
|
|
attach to the parallel port of personal computers. In many cases the
|
|
devices internally use an IDE interface in conjunction with an adaptor
|
|
which interfaces the internal IDE bus to the PC parallel port.
|
|
|
|
Linux has a parallel port IDE driver which supports most parallel port
|
|
devices. At the time of writing it supported devices from the
|
|
following vendors (as well as most no-name and clone drives compatible
|
|
with these): ATEN, Avatar, DataStor, Fidelity International
|
|
Technology, Freecom, Hewlett-Packard, Imation, KT Technology, KingByte
|
|
Information Corp., Maxell, MicroSolutions, OnSpec, Shuttle Technology,
|
|
SyQuest, and ValuStore.
|
|
|
|
Additional information can be found at <url
|
|
url="http://www.torque.net/parport/">.
|
|
|
|
<sect1>Alternate Drivers<p>
|
|
|
|
There is an alternate kernel driver available for Panasonic/Matsushita
|
|
CR-56x drives written by Zoltan Vorosbaranyi. It can be found at <url
|
|
url="ftp://ftp.honlap.net/pub/linux/pcd/pcd-0.30.tar.gz">.
|
|
|
|
<sect>Installation<p>
|
|
|
|
<idx>Installation</idx> of a CD-ROM under Linux consists of these
|
|
steps:
|
|
|
|
<enum>
|
|
<item>Installing the hardware.
|
|
<item>Configuring and building the Linux kernel.
|
|
<item>Creating device files and setting boot time parameters
|
|
<item>Booting the Linux kernel.
|
|
<item>Mounting the media.
|
|
</enum>
|
|
|
|
The next sections will cover each of these steps in detail.
|
|
|
|
<sect1>Installing the Hardware<p>
|
|
|
|
Follow the manufacturer's instructions for installing the hardware or
|
|
have your dealer perform the installation. The details will vary
|
|
depending on whether the drive is internal or external and on the type
|
|
of interface used. There are no special installation requirements for
|
|
Linux. You may need to set jumpers on the drive and/or interface card
|
|
for correct operation; some of the kernel drivers include
|
|
documentation files that include this information.
|
|
|
|
As explained in the file <file>ide-cd</file>, ATAPI CD-ROMS should be
|
|
jumpered as "single" or "master", and not "slave" when only one IDE
|
|
device is attached to an interface (although this restriction is no
|
|
longer enforced with recent kernels).
|
|
|
|
<sect1>Configuring and Building the Kernel<p>
|
|
|
|
When initially installing Linux from CD-ROM you will likely be using a
|
|
boot and/or root disk provided as part of a Linux distribution. If
|
|
possible, you should choose a boot disk with the kernel driver for
|
|
your CD-ROM device type. If you cannot find a boot disk with the
|
|
necessary <idx>CD-ROM driver</idx>, you have several options:
|
|
|
|
<enum>
|
|
<item>Boot directly from CD-ROM (if supported by your computer and Linux CD)
|
|
<item>Install over a network
|
|
<item>Boot DOS, and install the Linux files onto your hard disk
|
|
<item>Boot DOS, and create a set of floppies to install Linux
|
|
<item>Find someone who can build you a boot disk with the needed
|
|
CD-ROM driver
|
|
</enum>
|
|
|
|
The <url
|
|
url="http://metalab.unc.edu/LDP/HOWTO/Installation-HOWTO.html"
|
|
name="Linux Installation HOWTO"> has more information on installing
|
|
Linux. If you purchased Linux on CD-ROM, it likely also came with some
|
|
installation instructions (that little booklet inside the jewel case,
|
|
and/or files on the CD).
|
|
|
|
Once Linux has initially been installed, most users will want to
|
|
compile their own kernel, usually for one of these reasons:
|
|
|
|
<itemize>
|
|
<item>to support a CD-ROM drive or other hardware
|
|
<item>to upgrade to a newer kernel release
|
|
<item>to free up memory resources by minimizing the size of the kernel
|
|
</itemize>
|
|
|
|
The <url url="http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html"
|
|
name="Linux Kernel HOWTO"> should be consulted for the details of
|
|
<idx>building a kernel</idx>. I will just mention here some issues
|
|
that are specific to CD-ROM drives.
|
|
|
|
Obviously, you need to compile in support for your CD-ROM drive when
|
|
you do a "make config".
|
|
|
|
If you have an ATAPI CD-ROM drive, you need to answer <tt>yes</tt> to
|
|
the questions:
|
|
|
|
<tscreen><verb>
|
|
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/?]
|
|
</verb></tscreen>
|
|
|
|
For SCSI CD-ROM drives, enable these options:
|
|
|
|
<tscreen><verb>
|
|
SCSI support (CONFIG_SCSI) [Y/n/m/?]
|
|
SCSI CDROM support (CONFIG_BLK_DEV_SR) [Y/n/m/?]
|
|
</verb></tscreen>
|
|
|
|
Also enable support for your SCSI host adapter when prompted, e.g.
|
|
|
|
<tscreen><verb>
|
|
Adaptec AHA152X/2825 support (CONFIG_SCSI_AHA152X) [Y/n/m/?]
|
|
</verb></tscreen>
|
|
|
|
For proprietary interface CD-ROM drives, enable the appropriate
|
|
driver. You can use the table listed previously to determine the
|
|
driver to use for your model.
|
|
|
|
Virtually all CD-ROMs use the ISO-9660 file system, so you must
|
|
also enable:
|
|
|
|
<tscreen><verb>
|
|
ISO 9660 CDROM filesystem support (CONFIG_ISO9660_FS) [Y/n/m/?]
|
|
</verb></tscreen>
|
|
|
|
Although not needed for CD-ROM operation, if you have a sound card
|
|
that is supported under Linux you might want to enable and configure
|
|
the kernel sound driver at this time as well. The <url
|
|
url="http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html" name="Sound
|
|
HOWTO"> can be a useful reference here.
|
|
|
|
You should then follow the usual procedure for building the kernel and
|
|
installing it. Don't boot with the new kernel until you create the
|
|
device files and set up any boot time parameters as described in the
|
|
next section.
|
|
|
|
The ISO-9660 filesystem and almost all of the CD-ROM drivers can be
|
|
built as loadable <idx>kernel modules</idx>. This scheme allows the
|
|
kernel drivers to be loaded and unloaded without rebooting the kernel,
|
|
freeing up memory. I recommend you get your CD-ROM installation
|
|
running using compiled-in drivers first. How to use modules is
|
|
described in the modules documentation and the <url
|
|
url="http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html" name="Kernel
|
|
HOWTO">.
|
|
|
|
If a drive type listed here is not supported by your kernel, you
|
|
likely need to upgrade to a newer version.
|
|
|
|
It is possible that you need to use a driver that is distributed
|
|
separately from the kernel source code. This usually involves patching
|
|
the kernel. Again, the <url
|
|
url="http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html" name="Kernel
|
|
HOWTO"> explains how to do this.
|
|
|
|
Note that there is a menu-based <idx>kernel configuration</idx>
|
|
program invoked by "make menuconfig" and an X11-based graphical
|
|
configuration invoked as "make xconfig". All three configuration
|
|
methods offer on-line help.
|
|
|
|
<sect1>Creating Device Files and Setting Boot Time Parameters<p>
|
|
|
|
The kernel uses device files to identify which device driver to use.
|
|
If you are running a standard Linux distribution you may have created
|
|
the necessary device files during installation. Under Slackware
|
|
Linux, for example, there is a menu-based <tt>setup</tt> tool that
|
|
includes CD-ROM setup, and most systems have a <file>/dev/MAKEDEV</file>
|
|
script. If you don't use these methods, you can use the more manual
|
|
procedure listed in this section. Even if you use either of these
|
|
methods, it is recommended that you at least verify the device files
|
|
against the information in this section.
|
|
|
|
You create the device file by running the shell commands indicated for
|
|
your drive type. This should be done as user <tt>root</tt>. Note that
|
|
some Linux distributions may use slightly different CD-ROM device
|
|
names from those listed here.
|
|
|
|
It is recommended that you also create a symbolic link to the CD-ROM
|
|
device to make it easier to remember. For example, for an IDE CD-ROM
|
|
drive that is the second device on the secondary interface, the link
|
|
would be created using
|
|
|
|
<tscreen><verb>
|
|
# ln -s /dev/hdd /dev/cdrom
|
|
</verb></tscreen>
|
|
|
|
If you want to play audio CDs, you will need to set the protection on
|
|
the device file (the real file, not the symbolic link to it) to allow
|
|
all users to read, e.g.
|
|
|
|
<tscreen><verb>
|
|
# chmod 664 /dev/hdd
|
|
# ls -l /dev/hdd
|
|
brw-rw-r-- 1 root disk 22, 64 Feb 4 1995 /dev/hdd
|
|
</verb></tscreen>
|
|
|
|
When booting Linux, the device drivers attempt to determine whether
|
|
the appropriate devices are present, typically by probing specific
|
|
addresses. Many of the drivers auto-probe at several addresses, but
|
|
because of differences in configuration, possible device conflicts,
|
|
and hardware limitations, the drivers sometimes need help identifying
|
|
the addresses and other parameters. Most drivers support an option on
|
|
the kernel command line to pass this information to the device
|
|
driver. This can be done interactively, or more commonly, configured
|
|
into your <idx>boot loader</idx>. With LILO, for example, you would
|
|
add an <tt>append</tt> command such as the following to your
|
|
<file>/etc/lilo.conf</file> file:
|
|
|
|
<tscreen><verb>
|
|
append = "sbpcd=0x230,SoundBlaster"
|
|
</verb></tscreen>
|
|
|
|
See the LILO documentation for more information.
|
|
|
|
In the next section I discuss issues specific to individual device
|
|
drivers, including device files, boot parameters, and the capabilities
|
|
of the different drivers. You probably only need to read the section
|
|
relevant to your drive type. The documentation files are usually found
|
|
in the directory <file>/usr/src/linux/Documentation/cdrom</file>.
|
|
|
|
<sect2>Sbpcd Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Eberhard Moenkeberg (emoenke@gwdg.de)
|
|
Multi-session support: yes (but not all drives)
|
|
Multiple drive support: yes
|
|
Loadable module support: yes
|
|
Reading audio frames: yes (CR-562, CR-563, CD-200 only)
|
|
Auto-probing: yes
|
|
Device file: /dev/sbpcd, major 25
|
|
Configuration file: sbpcd.h
|
|
Kernel config option: Matsushita/Panasonic CDROM support?
|
|
Documentation file: sbpcd
|
|
</verb>
|
|
|
|
This driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
sbpcd=<io-address>,<interface-type>
|
|
</verb></tscreen>
|
|
|
|
where the first parameter is the base address of the device
|
|
(e.g. 0x230), and <interface-type> is one of "SoundBlaster",
|
|
"LaserMate", or "SPEA". See the file <file>sbpcd.h</file> for hints on
|
|
what interface type to use. Using <tt>sbpcd=0</tt> disables
|
|
auto-probing, disabling the driver.
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/sbpcd b 25 0
|
|
</verb></tscreen>
|
|
|
|
Up to four drives per controller are supported. The next three drives
|
|
on the first controller would use minor device numbers 1 through 3.
|
|
If you have more than one controller, create devices with major
|
|
numbers 26, 27, and 28, up to a maximum of 4 controllers (this is 16
|
|
CD-ROM drives in total; hopefully enough for most users :-).
|
|
|
|
See the file <file>sbpcd</file> for more information on this
|
|
driver.
|
|
|
|
<em>If you recently bought a CD-ROM drive, don't assume that if it
|
|
connects to a SoundBlaster card it should use this kernel driver. Most
|
|
CD-ROM drives being sold by Creative Labs are now EIDE/ATAPI
|
|
drives.</em>
|
|
|
|
<sect2>Sonycdu535 Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Ken Pizzini (ken@halcyon.com)
|
|
Multi-session support: no
|
|
Multiple drive support: no
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: no
|
|
Device file: /dev/sonycd535, major 24
|
|
Configuration file: sonycd535.h
|
|
Kernel config option: Sony CDU535 CDROM support?
|
|
Documentation file: sonycd535
|
|
</verb>
|
|
|
|
This driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
sonycd535=<io-address>
|
|
</verb></tscreen>
|
|
|
|
where <io-address> is the base address of the controller
|
|
(e.g. 0x320). Alternatively you can set the address in the file
|
|
<file>sonycd535.h</file> and compile it in.
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/sonycd535 b 24 0
|
|
</verb></tscreen>
|
|
|
|
Some Linux distributions use <file>/dev/sonycd</file> for this device.
|
|
Older versions of the driver used major device number 21; make sure
|
|
your device file is correct.
|
|
|
|
This driver was previously distributed as a patch but is now part of
|
|
the standard kernel. See the file <file>sonycd535</file> for more
|
|
information on this driver.
|
|
|
|
<sect2>Cdu31a Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Corey Minyard (minyard@-rch.cirr.com)
|
|
Multi-session support: yes
|
|
Multiple drive support: no
|
|
Loadable module support: yes
|
|
Reading audio frames: yes
|
|
Auto-probing: no
|
|
Device file: /dev/cdu31a, major 15
|
|
Configuration file: cdu31a.h
|
|
Kernel config option: Sony CDU31A/CDU33A CDROM support?
|
|
Documentation file: cdu31a
|
|
</verb>
|
|
|
|
This driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
cdu31a=<io-address>,<interrupt>,PAS
|
|
</verb></tscreen>
|
|
|
|
The first number is the I/O base address of the card (e.g. 0x340). The
|
|
second is the interrupt number to use (0 means to use polled i/o). The
|
|
optional third parameter should be "PAS" if the drive is connected to
|
|
a Pro-Audio Spectrum 16 sound card, otherwise left blank.
|
|
|
|
If the driver is loaded as a module, it uses a slightly different
|
|
format. When loading the driver using the modprobe or insmod command,
|
|
the parameters take the form:
|
|
|
|
<tscreen><verb>
|
|
cdu31a_port=<io-address> cdu31a_irq=<interrupt>
|
|
</verb></tscreen>
|
|
|
|
The base io-address is required while the interrupt number is optional.
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/cdu31a b 15 0
|
|
</verb></tscreen>
|
|
|
|
See the file <file>cdu31a</file> for more information on this
|
|
driver.
|
|
|
|
Also see the web page put together by Jeffrey Oxenreider (<htmlurl
|
|
url="mailto:zureal@infinet.com" name="zureal@infinet.com">) that
|
|
covers a lot of common problems with these drives. It can be found at
|
|
<url url="http://lemures.shinma.symix.com/~zureal/cdu31a.html">.
|
|
|
|
<sect2>Aztcd Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Werner Zimmermann (zimmerma@rz.fht-esslingen.de)
|
|
Multi-session support: yes
|
|
Multiple drive support: no
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: no
|
|
Device file: /dev/aztcd0, major 29
|
|
Configuration file: aztcd.h
|
|
Kernel config option: Aztech/Orchid/Okano/Wearnes (non IDE) CDROM support?
|
|
Documentation file: aztcd
|
|
</verb>
|
|
|
|
This driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
aztcd=<io-address>
|
|
</verb></tscreen>
|
|
|
|
where the parameter is the I/O base address of the card (e.g. 0x340).
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/aztcd0 b 29 0
|
|
</verb></tscreen>
|
|
|
|
Note that this driver is for the CDA268-01A only. Other models,
|
|
including the CDA268-03I and CDA269-031SE are not proprietary and
|
|
should use the IDECD (ATAPI) kernel driver.
|
|
|
|
See the file <file>aztcd</file> for more information on this driver.
|
|
|
|
<sect2>Gscd Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Oliver Raupach (raupach@nwfs1.rz.fh-hannover.de)
|
|
Multi-session support: no
|
|
Multiple drive support: no
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: no
|
|
Device file: /dev/gscd0, major 16
|
|
Configuration file: gscd.h
|
|
Kernel config option: Goldstar R420 CDROM support?
|
|
Documentation file: gscd
|
|
</verb>
|
|
|
|
This driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
gscd=<io-address>
|
|
</verb></tscreen>
|
|
|
|
specifying the I/O base address of the card (e.g. 0x340).
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/gscd0 b 16 0
|
|
</verb></tscreen>
|
|
|
|
See the file <file>gscd</file> and the world-wide web site
|
|
<url url="http://linux.rz.fh-hannover.de/~raupach/">
|
|
for more information on this driver.
|
|
|
|
<sect2>Mcd Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Martin (martin@bdsi.com)
|
|
Multi-session support: no
|
|
Multiple drive support: no
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: no
|
|
Device file: /dev/mcd, major 23
|
|
Configuration file: mcd.h
|
|
Kernel config option: Standard Mitsumi CDROM support?
|
|
Documentation file: mcd
|
|
</verb>
|
|
|
|
This is the older driver for Mitsumi drivers that has been available
|
|
for some time. You might want to try the newer <tt>mcdx</tt> driver,
|
|
which has some new features but is possibly less stable.
|
|
|
|
This driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
mcd=<io-address>,<irq>
|
|
</verb></tscreen>
|
|
|
|
specifying the I/O base address of the card (e.g. 0x340) and the IRQ
|
|
request number used.
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/mcd b 23 0
|
|
</verb></tscreen>
|
|
|
|
See the file <file>mcd</file> for more information on this driver.
|
|
|
|
<sect2>Mcdx Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Heiko Schlittermann
|
|
Multi-session support: yes
|
|
Multiple drive support: yes
|
|
Loadable module support: yes
|
|
Reading audio frames: no (not supported by hardware)
|
|
Auto-probing: no
|
|
Device file: /dev/mcdx0, major 20
|
|
Configuration file: mcdx.h
|
|
Kernel config option: Experimental Mitsumi support?
|
|
Documentation file: mcdx
|
|
</verb>
|
|
|
|
This is a newer driver for Mitsumi drivers. The older and possibly
|
|
more stable <tt>mcd</tt> driver is still available.
|
|
|
|
This driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
mcdx=<io-address>,<irq>
|
|
</verb></tscreen>
|
|
|
|
specifying the I/O base address of the card (e.g. 0x340) and the IRQ
|
|
request number used.
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/mcdx0 b 20 0
|
|
</verb></tscreen>
|
|
|
|
If you recently bought a Mitsumi CD-ROM drive, don't assume that it
|
|
should use this kernel driver. New Mitsumi drives are now EIDE/ATAPI
|
|
compatible and should use the idecd kernel driver instead.
|
|
|
|
See the file <file>mcdx</file> for more information on this driver.
|
|
|
|
<sect2>Cm206 Driver<p>
|
|
|
|
<verb>
|
|
Principal author: David A. van Leeuwen (david@tm.tno.)
|
|
Multi-session support: yes
|
|
Multiple drive support: no
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: yes
|
|
Device file: /dev/cm206cd, major 32
|
|
Configuration file: cm206.h
|
|
Kernel config option: Philips/LMS CM206 CDROM support?
|
|
Documentation file: cm206
|
|
</verb>
|
|
|
|
The driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
cm206=<io-address>,<interrupt>
|
|
</verb></tscreen>
|
|
|
|
where the first number is the I/O base address of the card
|
|
(e.g. 0x340). The second is the interrupt channel.
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/cm206cd b 32 0
|
|
</verb></tscreen>
|
|
|
|
See the file <file>cm206</file> for more information on this
|
|
driver.
|
|
|
|
<sect2>Optcd Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Leo Spiekman (spiekman@dutette.et.tudelft.nl)
|
|
Multi-session support: yes
|
|
Multiple drive support: no
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: no
|
|
Device file: /dev/optcd0, major 17
|
|
Configuration file: optcd.h
|
|
Kernel config option: Experimental Optics Storage ... CDROM support?
|
|
Documentation file: optcd
|
|
</verb>
|
|
|
|
The driver accepts a kernel command line of the form
|
|
|
|
<tscreen><verb>
|
|
optcd=<io-address>
|
|
</verb></tscreen>
|
|
|
|
to specify the I/O base address of the card (e.g. 0x340).
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/optcd0 b 17 0
|
|
</verb></tscreen>
|
|
|
|
See the file <file>optcd</file> for more information on this
|
|
driver.
|
|
|
|
<sect2>Sjcd Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Vadim V. Model (vadim@rbrf.msk.su)
|
|
Multi-session support: no
|
|
Multiple drive support: no
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: no
|
|
Device file: /dev/sjcd, major 18
|
|
Configuration file: sjcd.h
|
|
Kernel config option: Experimental Sanyo H94A CDROM support?
|
|
Documentation file: sjcd
|
|
</verb>
|
|
|
|
The driver accepts a kernel command line of the form:
|
|
|
|
<tscreen><verb>
|
|
sjcd=<io-address>,<interrupt>,<dma>
|
|
</verb></tscreen>
|
|
|
|
indicating the base address, interrupt, and DMA channel to be used
|
|
(e.g. sjcd=0x340,10,5).
|
|
|
|
The device file can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/sjcd b 18 0
|
|
</verb></tscreen>
|
|
|
|
See the file <file>sjcd</file> for more information on this driver.
|
|
|
|
<sect2>Paride Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Grant R. Guenther (grant@torque.net)
|
|
Multi-session support: no
|
|
Multiple drive support: yes
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: yes
|
|
Device file: /dev/pcd0, major 46
|
|
Configuration file: bpcd.h
|
|
Kernel config option: Parallel port IDE device support?
|
|
Documentation file: paride.txt
|
|
</verb>
|
|
|
|
This is the driver for various types of storage devices that attach to
|
|
a parallel port. Normally the driver will auto-detect the parallel
|
|
port device. The documentation describes parameters that can be used
|
|
to specify the device parameters if auto-detection does not work.
|
|
|
|
The device file for the first drive can be created using:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/pcd0 b 46 0
|
|
</verb></tscreen>
|
|
|
|
See the file <file>/usr/src/linux/Documentation/paride.xt</file> for
|
|
more information on this driver. Note that this replaces the bpcd
|
|
driver that was present in older kernels.
|
|
|
|
<sect2>SCSI Driver<p>
|
|
|
|
<verb>
|
|
Principal author: David Giller
|
|
Multi-session support: yes (depending on drive)
|
|
Multiple drive support: yes
|
|
Loadable module support: yes
|
|
Reading audio frames: no
|
|
Auto-probing: yes
|
|
Device file: /dev/scd0, major 11
|
|
Configuration file: cdrom.h
|
|
Kernel config option: SCSI CDROM support?
|
|
Documentation file: scsi.txt
|
|
</verb>
|
|
|
|
There are kernel command line option specific to each type of SCSI
|
|
controller. See the <htmlurl
|
|
url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/unmaintained/SCSI-HOWTO"
|
|
name="SCSI HOWTO"> for more information.
|
|
|
|
Multiple drives are supported (up to the limit of the maximum number
|
|
of devices on the SCSI bus). Create device files with major number 11
|
|
and minor numbers starting at zero:
|
|
|
|
<tscreen><verb>
|
|
# mknod /dev/scd0 b 11 0
|
|
# mknod /dev/scd1 b 11 1
|
|
</verb></tscreen>
|
|
|
|
While the kernel driver itself does not support reading digital audio
|
|
frames, some SCSI drives have the capability and will work with the
|
|
cdda2wav program (which uses the generic SCSI kernel interface).
|
|
|
|
Also see the discussion of the IDE <idx>SCSI emulation</idx> driver
|
|
earlier in this document.
|
|
|
|
<sect2>IDECD Driver<p>
|
|
|
|
<verb>
|
|
Principal author: Scott Snyder (snyder@fnald0.fnal.gov)
|
|
Multi-session support: yes
|
|
Multiple drive support: yes
|
|
Loadable module support: no
|
|
Reading audio frames: yes (on supported drives)
|
|
Auto-probing: yes
|
|
Device file: /dev/hd{a,b,c,d}, major 22
|
|
Configuration file: cdrom.h
|
|
Kernel config option: Include support for IDE/ATAPI CDROMs?
|
|
Documentation file: ide-cd
|
|
</verb>
|
|
|
|
This is the driver for ATAPI CD-ROMS. The driver accepts a kernel
|
|
command line of the form
|
|
|
|
<tscreen><verb>
|
|
hdx=cyls,heads,sects,wpcom,irq
|
|
or
|
|
hdx=cdrom
|
|
</verb></tscreen>
|
|
|
|
where <tt>hdx</tt> can be any of {hda,hdb,hdc,hdd}, or simply hd, for
|
|
the "next" drive in sequence. Only the first three parameters are
|
|
required (cyls,heads,sects). For example <tt>hdc=1050,32,64
|
|
hdd=cdrom</tt>.
|
|
|
|
Getting the IDE driver to recognize your CD-ROM drive can be tricky,
|
|
especially if you have more than 2 devices or more than one IDE
|
|
controller. Usually all that is required is to pass the right command
|
|
line options from LILO. The file
|
|
<file>/usr/src/linux/Documentation/cdrom/ide-cd</file> explains how to do
|
|
this. Read it carefully.
|
|
|
|
Recent Linux kernels have better support for multiple IDE devices. If
|
|
you have problems with an older kernel, upgrading may help.
|
|
|
|
Some IDE controllers have hardware problems which the kernel driver
|
|
can work around. You may need to pass additional parameters to the
|
|
driver to enable this. See the documentation for details.
|
|
|
|
<sect1>Booting the Linux Kernel<p>
|
|
|
|
You can now reboot with the new kernel. Watch for a message such as
|
|
the following indicating that the CD-ROM has been found by the device
|
|
driver (the message will vary depending on the drive type):
|
|
|
|
<tscreen><verb>
|
|
hdd: NEC CD-ROM DRIVE:282, ATAPI CDROM drive
|
|
</verb></tscreen>
|
|
|
|
If the bootup messages scroll by too quickly to read, you should be
|
|
able to retrieve them using <tt>dmesg</tt> or <tt>tail
|
|
/var/log/messages</tt>.
|
|
|
|
If the drive is not found, then a problem has occurred, See the
|
|
section on troubleshooting.
|
|
|
|
<sect1>Mounting, Unmounting, and Ejecting Devices<p>
|
|
|
|
To mount a CD-ROM, insert a disc in the drive, and run the
|
|
<tt>mount</tt> command as <tt>root</tt> (this assumes you created a
|
|
symbolic link to your device file as recommended above and that an
|
|
empty directory <file>/mnt/cdrom</file> exists):
|
|
|
|
<tscreen><verb>
|
|
# mount -t iso9660 -r /dev/cdrom /mnt/cdrom
|
|
</verb></tscreen>
|
|
|
|
The CD can now be accessed under the directory <file>/mnt/cdrom</file>.
|
|
|
|
There are other options to the <idx>mount command</idx> that you may
|
|
wish to use; see the <tt>mount(8)</tt> man page for details.
|
|
|
|
You can add an entry to <file>/etc/fstab</file> to automatically mount a
|
|
CD-ROM when Linux boots or to specify parameters to use when it is
|
|
mounted; see the <tt>fstab(5)</tt> man page.
|
|
|
|
Note that to play audio CDs you should <em>not</em> try to mount them.
|
|
|
|
To unmount a CD-ROM, use the <tt>umount</tt> command as <tt>root</tt>:
|
|
|
|
<tscreen><verb>
|
|
# umount /mnt/cdrom
|
|
</verb></tscreen>
|
|
|
|
The disc can only be unmounted if no processes are currently accessing
|
|
the drive (including having their default directory set to the mounted
|
|
drive). You can then eject the disc. Most drives have an eject button;
|
|
there is also a standalone <htmlurl
|
|
url="http://www.pobox.com/~tranter/eject.html" name="eject"> program
|
|
that allows ejecting CD-ROMs under software control.
|
|
|
|
Note that you should not <idx>eject</idx> a disc while it is mounted
|
|
(this may or may not be possible depending on the type of drive). Some
|
|
CD-ROM drivers can automatically eject a CD-ROM when it is unmounted
|
|
and insert the CD tray when a disc is mounted (you can turn this
|
|
feature off when compiling the kernel or by using a software command).
|
|
|
|
Its possible that after playing an audio CD you may not be able to
|
|
mount a CD-ROM. You need to send a CD audio "stop" command (using a CD
|
|
player program) before trying the mount. This problem only appears to
|
|
occur with the SBPCD driver.
|
|
|
|
Recent kernels support a kernel-based <idx>automounter</idx> which
|
|
provides transparent mounting of removable media including CD-ROM. You
|
|
can find the tools needed to use it at <url
|
|
url="ftp://ftp.kernel.org/pub/linux/daemons/autofs/">.
|
|
|
|
<sect1>Troubleshooting<p>
|
|
|
|
If you still encounter problems after following the instructions in
|
|
the HOWTO, here are some things to check. The checks are listed in
|
|
increasing order of complexity. If a check fails, solve the problem
|
|
before moving to the next stage.
|
|
|
|
<sect2>Step 1: Make sure you are really running the kernel you compiled<p>
|
|
|
|
You can check the date stamp on the kernel to see if you are running
|
|
the one that you compiled with CD-ROM support. You can do this
|
|
with the <tt>uname</tt> command:
|
|
|
|
<tscreen><verb>
|
|
% uname -a
|
|
Linux fizzbin 2.2.4 #1 Tue Mar 232 11:23:21 EST 1999 i586 unknown
|
|
</verb></tscreen>
|
|
|
|
or by displaying the file <file>/proc/version</file>:
|
|
|
|
<tscreen><verb>
|
|
% 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
|
|
</verb></tscreen>
|
|
|
|
If the date stamp doesn't match when you compiled the kernel, then you
|
|
are running an old kernel. Did you remember to reboot? If you use
|
|
LILO, did you re-install it (typically by running
|
|
<file>/sbin/lilo</file>)? If booting from floppy, did you create a new
|
|
boot floppy and use it when booting?
|
|
|
|
<sect2>Step 2: Make sure the proper kernel drivers are compiled in<p>
|
|
|
|
You can see what drivers are compiled in by looking at
|
|
<file>/proc/devices</file>:
|
|
|
|
<tscreen><verb>
|
|
% cat /proc/devices
|
|
Character devices:
|
|
1 mem
|
|
2 pty
|
|
3 ttyp
|
|
4 ttyS
|
|
5 cua
|
|
7 vcs
|
|
|
|
Block devices:
|
|
3 ide0
|
|
22 ide1
|
|
</verb></tscreen>
|
|
|
|
First look for your CD-ROM device driver. These are all block devices,
|
|
in this case we can see that the <tt>idecd</tt> driver with major
|
|
number 22 was present.
|
|
|
|
Also make sure that ISO-9660 filesystem support was compiled in, by
|
|
looking at <file>/proc/filesystems</file>:
|
|
|
|
<tscreen><verb>
|
|
% cat /proc/filesystems
|
|
ext2
|
|
nodev proc
|
|
nodev devpts
|
|
vfat
|
|
iso9660
|
|
</verb></tscreen>
|
|
|
|
You can also see what i/o port addresses are being used by a driver
|
|
with the file <file>/proc/ioports</file>:
|
|
|
|
<tscreen><verb>
|
|
howto % cat /proc/ioports
|
|
...
|
|
0230-0233 : sbpcd
|
|
...
|
|
</verb></tscreen>
|
|
|
|
If any of the drivers you thought you compiled in are not displayed,
|
|
then something went wrong with the kernel configuration or
|
|
build. Start the installation process again, beginning with
|
|
configuration and building of the kernel.
|
|
|
|
<sect2>Step 3: Did the kernel detect your drive during booting?<p>
|
|
|
|
Make sure that the CD-ROM device was detected when the kernel
|
|
booted. You should have seen a message on bootup. If the messages
|
|
scrolled off the screen, you can usually recall them using the
|
|
<tt>dmesg</tt> command:
|
|
|
|
<tscreen><verb>
|
|
% dmesg
|
|
</verb></tscreen>
|
|
|
|
or
|
|
|
|
<tscreen><verb>
|
|
% tail /var/log/messages
|
|
</verb></tscreen>
|
|
|
|
If your drive was not found then something is wrong. Make sure it is
|
|
powered on and all cables are connected. If your drive has hardware
|
|
jumpers for addressing, check that they are set correctly (e.g. drive
|
|
0 if you have only one drive). ATAPI CD-ROMS must be jumpered as
|
|
"single" or "master", and not "slave" when only one IDE device is
|
|
attached to an interface. If the drive works under DOS then you can be
|
|
reasonably confident that the hardware is working.
|
|
|
|
Many kernel drivers using <idx>auto-probing</idx>, but some do not,
|
|
and in any case the probing is not always reliable. Use the kernel
|
|
command line option listed for your kernel driver type. You may want
|
|
to try several different values if you are not sure of the i/o address
|
|
or other parameters. LILO can be (and usually is) configured to allow
|
|
you to enter the parameters manually when booting.
|
|
|
|
Another possibility is that you used the wrong kernel driver for your
|
|
CD-ROM driver. Some documentation may refer to proprietary interfaces
|
|
as IDE, leading some to mistakenly believe they are ATAPI drives.
|
|
|
|
Another possibility is that your drive (or interface card) is one of
|
|
the "compatible" type that requires initialization by the DOS
|
|
driver. Try booting DOS and loading the vendor supplied DOS device
|
|
driver. Then soft boot Linux using <tt>Control-Alt-Delete</tt>.
|
|
|
|
If your drive is not listed in this document, it is possible that
|
|
there are no drivers for it available under Linux. You can check with
|
|
some of the references listed at the end of this document for
|
|
assistance.
|
|
|
|
<sect2>Step 4: Can you read data from the drive?<p>
|
|
|
|
Try reading from the CD-ROM drive. Typing the following command should
|
|
cause the drive activity light (if present) to come on and no errors
|
|
should be reported. Use whatever device file is appropriate for your
|
|
drive and make sure a CD-ROM is inserted; use Control-C to exit.
|
|
|
|
<tscreen><verb>
|
|
# dd if=/dev/cdrom of=/dev/null bs=2048
|
|
^C
|
|
124+0 records in
|
|
124+0 records out
|
|
</verb></tscreen>
|
|
|
|
If this works, then the kernel is communicating with the drive and you
|
|
can move on to step 5.
|
|
|
|
If not, then a possible cause is the device file. Make sure than the
|
|
device file in the <file>/dev</file> directory has the correct major and
|
|
minor numbers as listed previously for your drive type. Check that the
|
|
permissions on the device file allow reading and writing.
|
|
|
|
A remote possibility is a hardware problem. Try testing the drive
|
|
under another operating system, if possible, to determine if this
|
|
could be the case.
|
|
|
|
<sect2>Step 5: Can you mount the drive?<p>
|
|
|
|
If you can read from the drive but cannot <idx>mount</idx> it, first
|
|
verify that you compiled in ISO-9660 file system support by reading
|
|
<file>/proc/filesystems</file>, as described previously.
|
|
|
|
Make sure you are mounting the drive with the "-t iso9660" and "-r"
|
|
options and that a known good ISO-9660 CD-ROM (not Audio CD) is
|
|
inserted in the drive. You normally must mount drives as user
|
|
<tt>root</tt>.
|
|
|
|
Make sure that the mount point exists and is an empty directory.
|
|
|
|
If you are automatically mounting the CD-ROM on bootup, make sure that
|
|
you have correct entries in the <file>/etc/fstab</file> file.
|
|
|
|
If you are running the syslog daemon, there may be error messages from
|
|
the kernel that you are not seeing. Try using the "dmesg" command:
|
|
|
|
<tscreen><verb>
|
|
% dmesg
|
|
SBPCD: sbpcd_open: no disk in drive
|
|
</verb></tscreen>
|
|
|
|
There may also be errors logged to files in <file>/var/log</file>,
|
|
depending on how your system is configured.
|
|
|
|
<sect2>Debugging Audio Problems<p>
|
|
|
|
If the drive works with CD-ROMs, but not for playing audio CDs, here
|
|
are some possible solutions.
|
|
|
|
You need an application program to play audio CDs. Some applications
|
|
may be broken or may not be compatible with your drive. Try other
|
|
applications and/or try recompiling them yourself. A good place
|
|
to look for software is
|
|
<url url="ftp://metalab.unc.edu/pub/Linux/apps/sound/cdrom/">.
|
|
|
|
A few of the CD-ROM drivers do not support playing Audio CDs. Check
|
|
the documentation file or source code to see if that is the case.
|
|
|
|
Check if the audio can be played through the headphone jack. If so,
|
|
then the problem is likely related to your sound card. Use a mixer
|
|
program to set the input device and volume levels. Make sure you have
|
|
installed an audio cable from the CD-ROM drive to the sound card. Make
|
|
sure that the kernel sound card driver is installed and working (see
|
|
the <htmlurl url="http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html"
|
|
name="Sound HOWTO">).
|
|
|
|
<sect2>When All Else Fails<p>
|
|
|
|
If you still have problems, here are some final suggestions for things
|
|
to try:
|
|
|
|
<itemize>
|
|
<item>carefully re-read this HOWTO document
|
|
<item>read the references listed at the end of this document,
|
|
especially the relevant kernel source files
|
|
<item>post a question to one of the <tt>comp.os.linux</tt> or
|
|
other usenet newsgroups
|
|
<item>send a question to the Linux mailing list
|
|
<item>try using the latest Linux kernel
|
|
<item>contact your computer dealer
|
|
<item>contact the CD-ROM manufacturer
|
|
<item>send mail to the maintainer of the relevant kernel driver (look in
|
|
the file <file>/usr/src/linux/MAINTAINERS</file>)
|
|
<item>send mail to me
|
|
<item>fire up emacs and type <tt>Esc-x doctor</tt> :-)
|
|
</itemize>
|
|
|
|
<sect>Applications<p>
|
|
|
|
This section briefly lists a few of the many <idx>applications</idx>
|
|
related to CD-ROM that are available under Linux. Check the Linux
|
|
Software Map for the latest versions and archive sites.
|
|
|
|
<sect1>Audio CD Players<p>
|
|
|
|
Several programs are available for playing <idx>audio CDs</idx>,
|
|
either through a headphone jack or an attached sound card.
|
|
|
|
<descrip>
|
|
<tag>Workman</tag>a graphical player running under X11 and supporting
|
|
a CD database and many other features
|
|
<tag>WorkBone</tag>an interactive text-mode player
|
|
<tag>xcdplayer</tag>a simple X11 based player
|
|
<tag>cdplayer</tag>a very simple command line based player
|
|
<tag>Xmcd</tag>an X11/Motif based player
|
|
<tag>xmitsumi</tag>another X11 based player for Mitsumi drives
|
|
<tag>xplaycd</tag>another X11 based player, bundled with sound mixer
|
|
and VU meter programs
|
|
<tag>cdtool</tag>command line tools for playing audio CDs
|
|
</descrip>
|
|
|
|
Some of these programs are coded to use a specific device file for the
|
|
CD-ROM (e.g. <file>/dev/cdrom</file>). You may be able to pass the correct
|
|
device name as a parameter, or you can create a symbolic link in the
|
|
<file>/dev</file> directory. If sending the CD output to a sound card, you
|
|
may wish to use a mixer program to set volume settings or select the
|
|
CD-ROM input for recording.
|
|
|
|
<sect1>PhotoCD<p>
|
|
|
|
<idx>PhotoCDs</idx> use an ISO-9660 file system containing image files
|
|
in a proprietary format. Not all CD-ROM drives support reading
|
|
PhotoCDs.
|
|
|
|
The <tt>hpcdtoppm</tt> program by Hadmut Danisch converts PhotoCD
|
|
files to the portable pixmap format. It can be obtained from <url
|
|
url="ftp://ftp.gwdg.de/pub/linux/hpcdtoppm"> or as part of the PBM
|
|
(portable bit map) utilities, available on many archive sites (look
|
|
for "pbm" or "netpbm").
|
|
|
|
The <tt>photocd</tt> program by Gerd Knorr (<htmlurl
|
|
url="mailto:kraxel@cs.tu-berlin.de" name="kraxel@cs.tu-berlin.de">)
|
|
can convert PhotoCD images into Targa or Windows and OS/2 bitmap
|
|
files.
|
|
|
|
The same author has written the program <tt>xpcd</tt>, an X11-based
|
|
program for handling PhotoCD images. You can select the images with a
|
|
mouse, preview the image in a small window, and load the image with
|
|
any of the five possible resolutions. You can also mark a part of the
|
|
Image and load only the selected part. Look for these packages at <url
|
|
url="ftp://ftp.cs.tu-berlin.de/pub/linux/Local/misc/">.
|
|
|
|
The ImageMagick image file manipulation program also supports PhotoCD
|
|
files. It is available from <url
|
|
url="ftp://ftp.x.org/contrib/applications/ImageMagick/">.
|
|
|
|
<sect1>Mkisofs<p>
|
|
|
|
Eric Youngdale's <tt>mkisofs</tt> package allows creating an ISO-9660
|
|
file system on a hard disk partition. This can then be used to assist
|
|
in creating and testing CD-ROM file systems before mastering discs.
|
|
|
|
The tools for actually writing data to <idx>writable CD-ROM
|
|
drives</idx> tend to be vendor specific. They also require writing the
|
|
data with no interruptions, so a multitasking operating system like
|
|
Linux is not particularly well suited.
|
|
|
|
<sect1>ISO-9660 Utilities<p>
|
|
|
|
These are some utilities for verifying the format of ISO-9660
|
|
formatted discs; you may find them useful for testing suspect CDs. The
|
|
package can be found at <url
|
|
url="ftp://ftp.cdrom.com/pub/unixfreeware/archive/">. They were
|
|
written by Bill Siegmund and Rich Morin.
|
|
|
|
<sect>Answers to Frequently Asked Questions<p>
|
|
|
|
<sect1>How can a non-root user mount and unmount discs?<p>
|
|
|
|
Most <tt>mount</tt> commands support the <em>user</em> option. If you
|
|
make an entry such as the following in <file>/etc/fstab</file>:
|
|
|
|
<tscreen><verb>
|
|
/dev/sbpcd /mnt/cdrom iso9660 user,noauto,ro
|
|
</verb></tscreen>
|
|
|
|
then an ordinary user will be allowed to mount and unmount the drive
|
|
using these commands:
|
|
|
|
<tscreen><verb>
|
|
% mount /mnt/cdrom
|
|
% umount /mnt/cdrom
|
|
</verb></tscreen>
|
|
|
|
By default the disc will be mounted with some options that help
|
|
enforce security (e.g. programs cannot executed, device files are
|
|
ignored). If this is too restrictive you can use additional options
|
|
(e.g. the "exec" option will enable execution or programs). See the
|
|
mount(8) man page for details.
|
|
|
|
Another method is to get the <tt>usermount</tt> package which allows
|
|
non-root users to mount and unmount removable devices such as floppies
|
|
and CD-ROMs, but restricts access to other devices (such as hard disk
|
|
partitions). It is available on major archive sites.
|
|
|
|
The archive site <tt>ftp.cdrom.com</tt> has the source file
|
|
<tt>mount.c</tt> which allows mounting an unmounting of CD-ROMs (only)
|
|
by normal users. It runs as a setuid executable.
|
|
|
|
<sect1>Why do I get device is busy when unmounting a CD-ROM?<p>
|
|
|
|
The disc cannot be unmounted if any processes are accessing the drive,
|
|
including having their default directory set to the mounted
|
|
filesystem. If you cannot identify the processes using the disc, you
|
|
can use the <tt>fuser</tt> command, as shown in the following example.
|
|
|
|
<tscreen><verb>
|
|
% umount /cdrom
|
|
umount: /dev/hdd: device is busy
|
|
% fuser -v /cdrom
|
|
USER PID ACCESS COMMAND
|
|
/mnt/cdrom tranter 133 ..c.. bash
|
|
</verb></tscreen>
|
|
|
|
On some systems you may need to be root when running the
|
|
<tt>fuser</tt> command in order to see the processes of other users.
|
|
|
|
<sect1>How do I export a CD-ROM to other hosts over NFS?<p>
|
|
|
|
You need to add an entry to the <file>/etc/exports</file> file. Users on
|
|
other machines will then be able to mount the device. See the
|
|
<tt>exports(5)</tt> man page for details.
|
|
|
|
<sect1>Can I boot Linux from a CD-ROM?<p>
|
|
|
|
When initially installing Linux the most common method is to use a
|
|
boot floppy. Some distributions allow booting a Linux kernel on CD
|
|
directly from DOS.
|
|
|
|
With the right CD-ROM, ROM BIOS, and ATAPI CD-ROM drive it is possible
|
|
to boot directly from CD. The latest version of <tt>mkisofs</tt>
|
|
supports creating such disks using the El Torito standard for bootable
|
|
CDs.
|
|
|
|
<sect1>How can I read digital data from audio CDs?<p>
|
|
|
|
Heiko Eissfeldt (<htmlurl url="mailto:heiko@colossus.escape.de"
|
|
name="heiko@colossus.escape.de">) and Olaf Kindel have written a
|
|
utility that reads audio data and saves it as <tt>.wav</tt> format
|
|
sound files. The package is called <tt>cdda2wav.tar.gz</tt> and can be
|
|
found on <tt>metalab.unc.edu</tt>.
|
|
|
|
Another utility to extract digital audio is <tt>cdparanoia</tt>
|
|
available from <url
|
|
url="http://www.mit.edu/afs/sipb/user/xiphmont/cdparanoia">.
|
|
|
|
Because CD-ROM drives are changing very quickly, it is difficult to
|
|
list which models support reading <idx>digital data</idx>. You best
|
|
bet is to get the latest <tt>cdda2wav</tt> or <tt>cdparanoia</tt>
|
|
package and read the documentation.
|
|
|
|
For more information on this subject, see the web site <htmlurl
|
|
url="http://www.tardis.ed.ac.uk/~psyche/cdda/"
|
|
name="http://www.tardis.ed.ac.uk/~psyche/cdda/"> and the
|
|
alt.cd-rom FAQ listed in the references section.
|
|
|
|
<sect1>Why doesn't the find command work properly?<p>
|
|
|
|
On ISO-9660 formatted discs without the Rock Ridge Extensions, you
|
|
need to add the <tt>-noleaf</tt> option to the <tt>find</tt> command.
|
|
See the find(1) man page for details.
|
|
|
|
(In my experience virtually all recent Linux CDs use the Rock Ridge
|
|
extensions, so this problem should occur very rarely.)
|
|
|
|
<sect1>Does Linux support any recordable CD-ROM drives?<p>
|
|
|
|
The X-CD-Roast package for Linux is a graphical front-end for using CD
|
|
writers. The package can be found at metalab.unc.edu in
|
|
/pub/Linux/utils/disk-management/xcdroast-0.95.tar.gz
|
|
|
|
Also see the Linux CD-Writing HOWTO document, found at <url
|
|
url="ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/CD-Writing-HOWTO"> or
|
|
<url url="http://metalab.unc.edu/LDP/HOWTO/CD-Writing-HOWTO.html">.
|
|
|
|
<sect1>Why do I get mount: Read-only file system when mounting a CD-ROM?<p>
|
|
|
|
CD-ROM is a read-only media. With some early kernels you could mount a
|
|
CD-ROM for read/write; attempts to write data to the CD would simple
|
|
be ignored. As of kernel version 1.1.33 this was corrected so that
|
|
CD-ROMs must be mounted read only (e.g. using the -r option to mount).
|
|
|
|
<sect1>Why does the disc tray open when I shut down the system?<p>
|
|
|
|
The sbpcd driver supports automatically ejecting the CD when it is
|
|
unmounted. In some older kernel versions this was the default
|
|
behaviour. If you shut down the system, a mounted CD will be
|
|
unmounted, causing it to eject.
|
|
|
|
This feature is for convenience when changing discs. If the tray is
|
|
open when you mount or read a CD, it will also automatically be
|
|
closed.
|
|
|
|
I found that this caused problems with a few programs (e.g. cdplay and
|
|
workbone). As of the 1.1.60 kernel you can control this feature under
|
|
software control. A sample program is included in the sbpcd
|
|
documentation file (or use the <htmlurl
|
|
url="http://www.pobox.com/~tranter/eject.html" name="eject"> program).
|
|
You can also control the default behaviour by editing the kernel
|
|
source file <file>sbpcd.h</file>.
|
|
|
|
<sect1>I have a "special" CD that can't be mounted<p>
|
|
|
|
The "special" CD is likely an XA disc (like all Photo CDs or
|
|
"one-offs" created using CD-R drives). Most of the Linux kernel CD-ROM
|
|
drivers do not support XA discs, although you may be able to find a
|
|
patch to add support on one of the archive sites.
|
|
|
|
The sbpcd driver <em>does</em> support XA. If you are using this
|
|
driver you can determine if the disc is XA using the following
|
|
procedure: go into the file sbpcd.c and enable the display of the
|
|
"Table of Contents" (DBG_TOC). Build and install the new kernel
|
|
and boot from it. During each mount the TOC info will be written
|
|
(either to the console or to a log file). If the first displayed value
|
|
in the TOC header line is "20", then it is an XA disc. That byte is
|
|
"00" with normal disks. If the TOC display shows different tracks,
|
|
that is also a sign that it is an XA disc.
|
|
|
|
(thanks to Eberhard Moenkeberg for the above information)
|
|
|
|
Other possibilities for unreadable CDs are:
|
|
|
|
<enum>
|
|
<item>The disc doesn't use an ISO-9660 file system (e.g. some use
|
|
SunOS or HFS)
|
|
<item>It is an audio CD
|
|
<item>The CD is damaged or defective
|
|
<item>You put it in the drive upside down :-)
|
|
</enum>
|
|
|
|
<sect1>Do multi-platter CD-ROM drives work with Linux?<p>
|
|
|
|
Several users have reported success with SCSI multi-disc CD-ROM
|
|
changers. You probably need to enable the "Probe all LUNs on each
|
|
SCSI device" kernel configuration option (this is not necessary if
|
|
your CD changer is already known to the SCSI-driver. Have a look at
|
|
<file>/usr/src/linux/drivers/scsi.c</file>).
|
|
|
|
At least one user also had to increase a SCSI timeout value in the
|
|
kernel driver. A symptom of this is an error message like "wrong fs
|
|
type, bad option, bad superblock on /dev/sr5, or too many mounted file
|
|
systems" when trying to mount a CD for the first time, but a second
|
|
mount immediately afterwards succeeds. To increase the timeout
|
|
increase the value of IOCTL_TIMEOUT at the beginning of
|
|
<file>/usr/src/linux/drivers/scsi/sr_ioctl.c</file> and recompile the
|
|
kernel. A value of 10000 instead of the default 3000 is reported to
|
|
work with a NEC Multispin 4Xc.
|
|
|
|
It might be necessary to create additional block special files, so
|
|
that all LUNs can be accessed. A device file is needed for every
|
|
LUN. So for a 7 disc changer <tt>/dev/sr0</tt> to <tt>/dev/sr6</tt>
|
|
are needed (more if you have additional SCSI CD-ROM drives). To create
|
|
the block special file execute <tt>mknod /dev/sr? b 11 ?</tt> as root
|
|
with ? being the required number.
|
|
|
|
The Nakamichi MBR-7 7 disc changer, NEC Multispin 4Xc and Pioneer 12
|
|
disc changer have been reported to work.
|
|
|
|
EIDE/ATAPI multi-disc changers are also available. The kernel has
|
|
support for some drives using the CDROM_SELECT_DISC ioctl
|
|
function. The IDE-CD kernel driver documentation file includes source
|
|
code for a program to select changer slots, or you can use various
|
|
utilities such as the <tt>eject</tt> program described earlier.
|
|
|
|
<sect1>I get "/cdrom: Permission denied" errors<p>
|
|
|
|
Some CDs have root directory file permissions that only allow user
|
|
<tt>root</tt> to read them. This is an error on the part of the CD-ROM
|
|
vendor and is a real inconvenience. A more common occurrence is for
|
|
certain files or directories not to be world readable. Some people
|
|
have patched their kernels to work around the problem.
|
|
|
|
Also see the related question on hidden files later in this document.
|
|
|
|
<sect1>How do I interpret IDE CD kernel error messages?<p>
|
|
|
|
What does it mean when I get a kernel message from the IDE CD-ROM
|
|
driver like "hdxx: code: xx key: x asc: xx ascq: x"?
|
|
|
|
This is an status/error message from the IDE CD-ROM drive. By default
|
|
the IDECD driver prints out the raw information instead of wasting
|
|
kernel space with error messages. You can change the default to
|
|
display the actual error messages by going into
|
|
<file>/usr/src/linux/drivers/block/ide-cd.c</file>, changing the value of
|
|
VERBOSE_IDE_CD_ERRORS to 1, and recompiling the kernel.
|
|
|
|
<sect1>How can I tell what speed CD-ROM I have?<p>
|
|
|
|
Here's one way. This command measures how long is takes to read 1500K
|
|
of data from CD:
|
|
|
|
<tscreen><verb>
|
|
% 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
|
|
</verb></tscreen>
|
|
|
|
The <idx>transfer rate</idx> of single speed drives is 150 kilobytes
|
|
per second, which should take about 10 seconds. At double speed it
|
|
would take five seconds, quad speed would take 2.5, etc.
|
|
|
|
The "real" time above is probably the best number to look at -- in
|
|
this case it indicates a double speed drive. You can increase the
|
|
amount of data transferred to get a more accurate value (in case you
|
|
were wondering, the data does not get cached). You should probably run
|
|
the command a few times and take the average.
|
|
|
|
I've also written a small C program that measures and reports CD-ROM
|
|
data transfer rate; I can send it to you on request.
|
|
|
|
<sect1>My CD-ROM stopped working after Linux was installed<p>
|
|
|
|
The usual symptom is that the boot disk used to initially install
|
|
Linux recognized your CD-ROM drive, but after Linux was installed on
|
|
the hard drive or floppy and rebooted it no longer recognizes the
|
|
CD-ROM.
|
|
|
|
The most common reason for this problem is that with some Linux
|
|
distributions the kernel that is installed on your hard drive (or
|
|
floppy) is not necessarily the same one that was on your boot
|
|
disk. You selected a boot disk that matched your CD-ROM hardware,
|
|
while the kernel you installed is a "generic" kernel that is lacking
|
|
CD-ROM support. You can verify this by following the troubleshooting
|
|
guidelines discussed previously in this document (e.g. start by
|
|
checking <file>/proc/devices</file>).
|
|
|
|
The solution is to recompile the kernel, ensuring that the drivers for
|
|
your CD-ROM drive and any others that are needed (e.g. SCSI
|
|
controller, ISO-9660 file system) are included. See the <url
|
|
url="http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html" name="Kernel
|
|
HOWTO"> if you don't know how to do this.
|
|
|
|
If you passed any command line options to the boot disk
|
|
(e.g. "hdc=cdrom") you need to add these to your boot program
|
|
configuration file (typically /etc/lilo.conf).
|
|
|
|
<sect1>There are "hidden" files on a CD which I can't read<p>
|
|
|
|
Some CDs have files with the "hidden" bit set on them. Normally these
|
|
files are not visible. If you mount the CD with the "unhide" option
|
|
then the files should be accessible (this doesn't seem to be
|
|
documented anywhere).
|
|
|
|
<sect1>Where is the CD-ROM API documented?<p>
|
|
|
|
If you want to write your own application, such as an audio CD player
|
|
program, you will need to understand the application programming
|
|
interface (API) provided by Linux.
|
|
|
|
Originally the CD-ROM kernel drivers used their own ioctl() functions
|
|
to support features specific to each drive. Header files such as
|
|
<file>/usr/include/linux/sbpcd.h</file> describe these. Because many of
|
|
the drivers were based on other drivers, the interfaces, while not
|
|
identical, have a lot in common.
|
|
|
|
More recently there has been an initiative headed by David van Leeuwen
|
|
(<htmlurl url="mailto:david@tm.tno.nl" name="david@tm.tno.nl">) to
|
|
standardize the <idx>API for CD-ROM</idx> drives, putting common code
|
|
in one place and ensuring that all drivers exhibit the same behaviour.
|
|
This is documented in the file
|
|
<file>/usr/src/linux/Documentation/cdrom/cdrom-standard.tex</file>.
|
|
Several kernel drivers support this. As of the 2.0 kernel all CD-ROM
|
|
drivers conform to this API.
|
|
|
|
My book, <em>Linux Multimedia Guide</em>, goes into quite a bit of
|
|
detail on how to program CD-ROM drives, especially for audio
|
|
functions. See the end of the References section.
|
|
|
|
<sect1>Why don't I see long filenames on this Windows CD-ROM?<p>
|
|
|
|
If you have a CD-ROM which has <idx>long filenames</idx> under Windows
|
|
but not under Linux, it may be formatted using Microsoft's proprietary
|
|
Joliet filesystem. See the next question for a solution.
|
|
|
|
<sect1>Is Microsoft's Joliet filesystem supported?<p>
|
|
|
|
Microsoft has created an extension to the ISO CD-ROM format called
|
|
<idx>Joliet</idx>. It allows for long filenames encoded using the
|
|
16-bit UNICODE format.
|
|
|
|
Starting with version 2.0.34 the Linux kernel has support for the
|
|
Microsoft Joliet file system extensions. You need to enable support
|
|
for it in the kernel.
|
|
|
|
If you want to display filenames with native language characters from
|
|
Joliet CD-ROMs correctly on the screen, you need to enable support in
|
|
the kernel for the appropriate NLS ISO8859 character sets.
|
|
|
|
<sect1>Does Linux support "enhanced" CDs?<p>
|
|
|
|
Some audio CDs are "enhanced" with additional data. Typically you
|
|
will find that these CDs have the usual audio CD tracks as well as a
|
|
data track which can be mounted as an ISO-9660 file system.
|
|
|
|
An enhanced CD I examined had Microsoft Windows and Apple Macintosh
|
|
applications on it (which won't run directly under Linux of course,
|
|
although I had partial success running the Windows application under
|
|
the WINE Windows emulator). There were some GIF images which could be
|
|
viewed using a standard viewer such as <tt>xv</tt> and some animations
|
|
in Apple QuickTime format which could be viewed using the
|
|
<tt>xanim</tt> program. It was a multisession disk which some very old
|
|
CD-ROM drives do not support reading. On the disc was a
|
|
<tt>readme.txt</tt> file containing an Enhanced CD FAQ.
|
|
|
|
<sect1>Does Linux support DVD-ROM?<p>
|
|
|
|
SCSI and ATAPI compliant DVD-ROM drives should work under Linux for
|
|
reading discs formatted with an ISO-9660 file system. In other words
|
|
they will work as a (possibly large) CD-ROM drive.
|
|
|
|
Many DVD-ROM discs use the UDF file system. At the time of writing
|
|
this was still in development. Kernel patches were available from <url
|
|
url="http://trylinux.com/projects/udf/">.
|
|
|
|
However, I am not aware of any support for playing MPEG-2 encoded DVD
|
|
videos either in software or in conjunction with DVD decoder hardware.
|
|
Apparently the standard document for the encoding format can only be
|
|
obtained at a high cost and under a non-disclosure agreement. Another
|
|
issue is that MPEG decoding typically uses proprietary hardware for
|
|
which the vendor may not be willing to release programming
|
|
information. These factors may preclude any freely available DVD video
|
|
software being developed for Linux.
|
|
|
|
<sect1>Does Linux support CD-RW?<p>
|
|
|
|
SCSI and ATAPI compliant CD-RW drives should work under Linux for
|
|
discs formatted with an ISO-9660 file system. This includes the
|
|
ability to write to the disc.
|
|
|
|
Many CD-RW discs use the UDF file system. At the time of writing this
|
|
was still in development. Kernel patches were available from <url
|
|
url="http://trylinux.com/projects/udf/">.
|
|
|
|
<sect>References<p>
|
|
|
|
I have already mentioned the documentation files, typically installed in
|
|
<file>/usr/src/linux/Documentation/cdrom</file>. These can be a gold mine
|
|
of useful information.
|
|
|
|
The following <idx>Usenet</idx> <idx>FAQs</idx> are posted
|
|
periodically to <htmlurl url="news:news.answers" name="news.answers">
|
|
and archived at Internet FTP sites such as <url
|
|
url="ftp://rtfm.mit.edu/">:
|
|
|
|
<itemize>
|
|
<item>alt.cd-rom FAQ
|
|
<item>comp.periphs.scsi FAQ
|
|
<item>Enhanced IDE/Fast-ATA/ATA-2 FAQ
|
|
</itemize>
|
|
|
|
Several other Linux HOWTOs have useful information relevant to CD-ROM:
|
|
|
|
<itemize>
|
|
|
|
<item><url
|
|
url="http://metalab.unc.edu/LDP/HOWTO/unmaintained/SCSI-HOWTO.html"
|
|
name="SCSI HOWTO">
|
|
|
|
<item><url url="http://metalab.unc.edu/LDP/HOWTO/Hardware-HOWTO.html"
|
|
name="Hardware Compatibility HOWTO">
|
|
|
|
<item><url url="http://metalab.unc.edu/LDP/HOWTO/Sound-HOWTO.html"
|
|
name="Sound HOWTO">
|
|
|
|
<item><url url="http://metalab.unc.edu/LDP/HOWTO/Kernel-HOWTO.html"
|
|
name="Kernel HOWTO">
|
|
|
|
<item><url url="http://metalab.unc.edu/LDP/HOWTO/Distribution-HOWTO.html"
|
|
name="Distribution HOWTO">
|
|
|
|
<item><url url="http://metalab.unc.edu/LDP/HOWTO/CD-Writing.html"
|
|
name="CD Writing HOWTO">
|
|
|
|
</itemize>
|
|
|
|
At least a dozen companies sell Linux distributions on CD-ROM; most of
|
|
them are listed in the Distribution HOWTO.
|
|
|
|
The following Usenet news groups cover CD-ROM related topics:
|
|
|
|
<itemize>
|
|
<item><htmlurl url="news:comp.publish.cdrom.hardware"
|
|
name="comp.publish.cdrom.hardware">
|
|
<item><htmlurl url="news:comp.publish.cdrom.multimedia"
|
|
name="comp.publish.cdrom.multimedia">
|
|
<item><htmlurl url="news:comp.publish.cdrom.software"
|
|
name="comp.publish.cdrom.software">
|
|
<item><htmlurl url="news:comp.sys.ibmpc.hardware.cd-rom"
|
|
name="comp.sys.ibm.pc.hardware.cd-rom">
|
|
<item><htmlurl url="news:alt.cd-rom" name="alt.cd-rom">
|
|
<item><htmlurl url="news:alt.cd-rom.reviews" name="alt.cd-rom.reviews">
|
|
</itemize>
|
|
|
|
The <tt>comp.os.linux</tt> newsgroups are also good sources of Linux
|
|
specific information.
|
|
|
|
There is a large archive of CD-ROM information and software at <url
|
|
url="ftp://ftp.cdrom.com/pub/cdrom/">.
|
|
|
|
A FAQ document on IDE and ATA devices can be found at <url
|
|
url="ftp://rtfm.mit.edu/pub/usenet/news.answers/pc-hardware-faq/enhanced-IDE/">
|
|
and at <url url="http://www.seagate.com/techsuppt/faq/faqlist.html">.
|
|
|
|
Western Digital, the company that started the IDE protocol, has
|
|
information available on the IDE protocol available on their FTP site
|
|
at <url url="ftp://fission.dt.wdc.com/pub/standards/atapi">.
|
|
|
|
A web site dedicated to multimedia can be found at <url
|
|
url="http://viswiz.gmd.de/MultimediaInfo/">. Creative Labs has a web
|
|
site at <url url="http://www.creaf.com/">.
|
|
|
|
The <em><idx>Linux Software Map</idx></em> (LSM) is an invaluable
|
|
reference for locating Linux software. The LSM can be found on various
|
|
anonymous FTP sites, including <url
|
|
url="ftp://metalab.unc.edu/pub/Linux/docs/LSM/"> (formerly known as
|
|
sunsite). There are also various web sites that maintain databases of
|
|
Linux applications. One such site is <url url="http://www.freshmeat.net">.
|
|
|
|
The Linux <idx>mailing list</idx> has a number of "channels" dedicated
|
|
to different topics. To find out how to join, send a mail message with
|
|
the word "help" as the message body to <htmlurl
|
|
url="mailto:majordomo@vger.rutgers.edu"
|
|
name="majordomo@vger.rutgers.edu">
|
|
|
|
The Linux Documentation Project has produced several <idx>books</idx>
|
|
on Linux, including <em>Linux Installation and Getting
|
|
Started</em>. These are freely available by anonymous FTP from major
|
|
Linux archive sites or can be purchased in hardcopy format.
|
|
|
|
Finally, a shameless plug: If you want to learn a lot more about
|
|
multimedia under Linux (especially CD-ROM and sound card applications
|
|
and programming), check out my book <em><idx>Linux Multimedia
|
|
Guide</idx></em>, ISBN 1-56592-219-0, published by O'Reilly and
|
|
Associates. As well as the original English version, French and
|
|
Japanese translations are now in print. For details, call 800-998-9938
|
|
in North America or check the web page <url
|
|
url="http://www.ora.com/catalog/multilinux/noframes.html"> or my home
|
|
page <url url="http://www.pobox.com/~tranter/">.
|
|
|
|
</article>
|