2092 lines
75 KiB
Plaintext
2092 lines
75 KiB
Plaintext
CD-Writing HOWTO
|
||
Winfried Trümper <winni@xpilot.org>
|
||
v2.9.3, 23 July 2000
|
||
|
||
This document explains how to write CD-ROMs under Linux.
|
||
______________________________________________________________________
|
||
|
||
Table of Contents
|
||
|
||
|
||
|
||
1. Introduction
|
||
|
||
1.1 Copyright, license and terms of usage
|
||
1.2 Availability
|
||
1.3 Suggested readings
|
||
1.4 Terminology ... lasers at maximum ... fire!
|
||
1.4.1 Adaptor vs. Adapter
|
||
1.5 Supported CD-writers
|
||
1.6 Supported "features"
|
||
1.7 Mailing Lists
|
||
|
||
2. Setup the Linux-system for writing CD-ROMs
|
||
|
||
2.1 Quickstart
|
||
2.1.1 Special notes about SCSI CD-writers
|
||
2.1.2 Special notes about CD-writers for the parallel port
|
||
2.1.3 Compiling missing kernel modules (optional)
|
||
2.2 Get the user software for burning CD-Rs
|
||
2.2.1 Command line utilities
|
||
2.2.2 Graphical user interfaces (optional)
|
||
|
||
3. Burning CD-Rs
|
||
|
||
3.1 Writing CD-ROMs (pure data)
|
||
3.1.1 Creating an image of the later CD-ROM
|
||
3.1.2 Test the CD-image
|
||
3.1.3 Write the CD-image to a CD
|
||
3.2 Writing audio CDs
|
||
3.2.1 Writing audio CDs (TAO)
|
||
3.2.2 DAO
|
||
3.3 Mixed mode CD-ROMs
|
||
|
||
4. Dear Winfried,...
|
||
|
||
4.1 How sensitive is the burning process?
|
||
4.2 Has file fragmentation a bad impact on the throughput?
|
||
4.3 Is it possible to store the CD-image on an UMSDOS-filesystem?
|
||
4.4 Isn't there some way to get around the ISO-9660 limitations?
|
||
4.5 How to read the tracks from audio CDs?
|
||
4.6 How to probe for SCSI devices after boot?
|
||
4.7 Is it possible to make a 1:1 copy of a data CD?
|
||
4.8 Can Linux read Joliet CD-ROMs? (obsolete answer)
|
||
4.9 How do I read/mount CD-ROMs with the CD-writer?
|
||
4.10 How to put even more data on the CD-R?
|
||
4.11 How to make bootable CD-ROMs?
|
||
4.12 How to make CD-ROMs writable like a hard disk?
|
||
4.13 Is it possible to use several writers at once?
|
||
4.14 What about Solaris, *BSD, AIX, HP-UX, etc.? Is my variant of Unix supported?
|
||
4.15 Where to store the local configuration permanently?
|
||
4.16 How can the CD-info be retrieved?
|
||
4.17 What about re-writing
|
||
4.18 How to create a multi-session CD?
|
||
4.19 Should I use the SCSI adapter shipped with the writer?
|
||
4.20 How to burn over the network?
|
||
4.21 I hear a crack or click sound at the end of the each track.
|
||
4.22 How can this be set up so that a user can burn CDs instead of always being root?
|
||
4.23 Where do I get the "Yellow Book" and "Orange Book" standards?
|
||
4.24 I've been searching for information on burning Video-CD under Linux.
|
||
4.25 Which is easier to set up, IDE or SCSI?
|
||
4.26 How can I overburn a CD using {cdrecord,cdrdao}?
|
||
4.27 What will cdrecord do when it stops getting input from the pipe?
|
||
4.28 Is there an equivalent to ignore=hdX for the ide-scsi emulation?
|
||
4.29 How many times can you re-use CD-RW before they become faulty?
|
||
4.30 Which format to choose for a platform independant CD-ROM?
|
||
4.31 Is multi-session for audio tracks possible?
|
||
4.32 What hardware resources do I need? Is an old Pentium enough?
|
||
5. Troubleshooting
|
||
|
||
5.1 It doesn't work: under Linux
|
||
5.2 Error-message: No read access for 'dev=0,6,0'.
|
||
5.3 It doesn't work: under DOS and friends
|
||
5.4 SCSI errors during the burning phase
|
||
5.5 Medium errors If cdrecord reports medium errors in the form of "Sense Key: ... Medium Error, Segment ...", then the medium is not empty. If you use CD-RW, then try to switch from blank=fast to the more reliable blank=all. If you use CD-R only, then make sure the CD-R has never seen a CD-writer before or try out discs from another manufacturer.
|
||
5.6 Newly written CDs are not readable on some players.
|
||
5.7 My scanner stopped working after I loaded the ide-scsi module
|
||
|
||
6. Credits
|
||
|
||
|
||
|
||
______________________________________________________________________
|
||
|
||
1. Introduction
|
||
|
||
Many people use Linux to burn CD-ROMs, because it is reliable and
|
||
easy. No bluescreens while burning and no headaches about getting the
|
||
right combination of hard- and software. It just works once properly
|
||
set up. The CD-writing HOWTO explains the setup, how to put data on
|
||
the media and gives some interesting applications kindly submitted by
|
||
the readers.
|
||
|
||
|
||
|
||
1.1. Copyright, license and terms of usage
|
||
|
||
Copyright Winfried Trümper 1996-2000. All rights reserved.
|
||
|
||
Redistribution and use, with or without modification, are permitted
|
||
provided that the name of the author may not be used to endorse or
|
||
promote products derived from this software without specific prior
|
||
written permission. In this sense, translations are welcome and need
|
||
not to be authorized by me.
|
||
|
||
The author disclaims all warranties with regard to this document,
|
||
including all implied warranties of merchantability and fitness for a
|
||
certain purpose; in no event shall the author be liable for any
|
||
special, indirect or consequential damages or any damages whatsoever
|
||
resulting from loss of use, data or profits, whether in an action of
|
||
contract, negligence or other tortious action, arising out of or in
|
||
connection with the use of this document.
|
||
|
||
Short: read and use at your own risk. No money-back guarantee. If you
|
||
want to understand why this document has always been under a very weak
|
||
license and not under the gnu GPL or similar restrictive, then you
|
||
should read this article from the german computer magazine c't:
|
||
<http://www.heise.de/tp/deutsch/inhalt/te/8375/1.html> (currently only
|
||
in German language).
|
||
|
||
|
||
|
||
1.2. Availability
|
||
|
||
|
||
As the editor of this document I mostly sum up what other people
|
||
report to me. I'm not a software developer nor an expert in hardware,
|
||
so for specific problems with hard- or software you may want to ask
|
||
somebody else. What always makes sense is to report solutions for
|
||
problems not already covered by the HOWTO to me.
|
||
|
||
|
||
I get several hundred e-mails concerning the CD-Writing HOWTO each
|
||
year. So please be patient with me, as I cannot always answer within
|
||
hours. However, I read everything immediately and put you on my CDR-
|
||
queue. Before you ask a question, please make sure you are aware of
|
||
the newest version of this document; it is always available from
|
||
<http://www.guug.de/~winni/linux/>.
|
||
|
||
|
||
|
||
1.3. Suggested readings
|
||
|
||
|
||
You may need the handbook for your Linux-distribution to learn about
|
||
installing a new kernel. I'm really clueless about this issue when it
|
||
comes to any other Linux distribution than my own.
|
||
|
||
The CD-R FAQ <http://www.fadden.com/cdrfaq/> is a general FAQ about
|
||
compact-disk recordables (CD-R), CD-writers and the required software.
|
||
As most CD-writers can be used to read CD-ROMs, too, you may want to
|
||
read the Linux CD-ROM HOWTO, the Linux SCSI HOWTO and the Linux Kernel
|
||
HOWTO.
|
||
|
||
|
||
|
||
1.4. Terminology ... lasers at maximum ... fire!
|
||
|
||
|
||
CD-ROM stands for Compact Disc Read Only Memory, a storage medium
|
||
utilizing an optical laser to sense microscopic pits on a colorful
|
||
shimmering disk. The pits represent the bits of the information and
|
||
are so petite that some billions of them fit on the disc. Thus a CD is
|
||
a mass-storage medium.
|
||
|
||
The term CD-R is a short form of CD-ROM recordable and refers to a CD
|
||
that doesn't have those microscopic pits on its surface. Thus it is
|
||
empty. The CD-R has a special chemical film inside into which pits can
|
||
be burned. This is done by giving the laser which normally just senses
|
||
the pits a little bit more power so it burns the pits. This action can
|
||
only be taken once on a CD-R. You can leave out some areas for later
|
||
writing, creating a so called multi-session CD.
|
||
|
||
The CD-ROM rewritable (short: CD-RW) was developed to work around the
|
||
limitation of CD-R media. With a CD-RW burner the laser can do both,
|
||
burn pits into the media and also melt the media back into its
|
||
original state. This is possible, because the laser does not really
|
||
burn holes into the media, which would get lost in a puff of smoke. A
|
||
decent analogy for the technique is an ice-hockey game: by driving
|
||
over the ice, a players (laser) leave scratches in it. The pattern in
|
||
the ice (media) is a recording of what happened on the ice during one
|
||
round. In between the periods of the game, the Zamboni cleaning car
|
||
drives over the ice and fills the scratches by melting the very top
|
||
layer of the ice. (Zamboni is the brand name for cleaning cars in
|
||
ice-hockey stadiums). This way the pattern on the ice is cleared and
|
||
a new round can begin. The scientific term for evaporating,
|
||
condensing, melting and freezing is "phase change", thus the name
|
||
"phase change devices" for CD-RW-writers.
|
||
|
||
This HOWTO deals with the task of writing CD-Rs and CD-RWs. Welcome
|
||
on board, captain.
|
||
|
||
|
||
1.4.1. Adaptor vs. Adapter
|
||
|
||
The the most frequent spelling within the kernel sources is adapter
|
||
(adapter: 4283, adaptor: 154). Even more important, the parameters of
|
||
module options and aliases are naturally affected, like in
|
||
"scsi_hostadapter". So in order to achieve a consistent spelling
|
||
throughout configuration examples and document text, I follow that
|
||
convention regardless of the correct spelling.
|
||
|
||
|
||
|
||
1.5. Supported CD-writers
|
||
|
||
USB CD-writers are currently not supported at all. Apart from that you
|
||
can safely assume that most newer IDE/ATAPI- and SCSI-writers work
|
||
under Linux. Newer drives are mostly MMC-compliant and are therefore
|
||
supported. If the SCSI-version of a particular writer works, the
|
||
IDE/ATAPI-version will most likely work and vice versa. However, some
|
||
people want to get a warm and fuzzy feeling by reading the exact model
|
||
of their writer in some sort of compatibility list. That is the
|
||
reason why I didn't throw the following list out of the HOWTO. Here
|
||
is a comprehensive summary of drives reported to work with cdrecord:
|
||
|
||
|
||
|
||
Acer: CDRW 4432A, CDRW 6206A, CD-R/RW 6X4X32, 8432A
|
||
BTC: BCE 621E (IDE)
|
||
Compro: CW-7502, CW-7502B
|
||
Creative: MK 4211, RW 4224E,
|
||
Delta: OME-W 141
|
||
Dysan: CRW-1622
|
||
Elite: Elite b444.41
|
||
Goldstar: CED-8041B
|
||
Grundig: CDR 100 IPW
|
||
Guillemot: Maxi CD-R 4X/8X
|
||
HP: SureStore 4020i, SureStore 6020i,
|
||
C4324, C4325
|
||
CD-writer+ 7100, 7200i, 7500e, 8100i, 8110i, 8200i Plus,
|
||
8250i, 9100i, 9110i, 9200e, 9210, 9300i, 9310i
|
||
Hi-Val: CDD 2242, CDD-3610,
|
||
Iomega: ZIPCD 4x650
|
||
JVC: XR-W 2001, XR-W 2010, XR-W 2040, XR-W 2042, XR-RW 2224,
|
||
YR 2626
|
||
Kiss: CDRW (no model given)
|
||
Kodak: PCD 200, PCD 225, PCD 260, PCD 600
|
||
Matsushita: matsushita is the japanese name for panasonic, please see there
|
||
Memorex: CRW-620, CDR-622, CRW-1622, CRW-2224, CDRW-4420
|
||
Microboards: PlayWrite 2000, PlayWrite 4000 RW, PlayWrite 4001 RW
|
||
MicroNet: MasterCD Plus 4x4, MasterCD Plus 4x6
|
||
Mitsubishi: CDRW-226
|
||
Mitsumi: CR-2401-TS, CR-2600 TE, CR-2801 TE,
|
||
CR-4801 TE, CR-4802 TE, CR-4804 TE
|
||
Nomai: 680.RW
|
||
Olympus: CDS 615E, CDS 620E
|
||
Optima: DisKovery 650 CD-R
|
||
OTI: CDRW 965, CDRW 975 (Socrates 1.0)
|
||
Panasonic: CW-7285, CW-7502, CW-7503, CW-7582
|
||
Philips: CDD-521/10, CDD-522,
|
||
CDD-2000, CDD-2600, CDD-3600, CDD-3610, CDD 4201
|
||
PCA 267cr, PCA 460 RW, PCRW 404,
|
||
Omniwriter 26, Omniwriter 26A,
|
||
CDRW800
|
||
Pinnacle: RCD-100, RCD-1000, RCD-5020, RCD-5040
|
||
Pioneer: DW-S114X
|
||
Plasmon: CDR 480, CDR 4220, RF-4100, RF-4102, CDR 4400
|
||
Plextor: CDR PX-24 CS, PX-412 C, PX-R412 C
|
||
PX-R 810Ti, PX-R 820T, PX-W 4220Ti, PX-W 8220T, PX-W 8432T
|
||
Plexwriter RW 4/2/20
|
||
Procom: PCDR 4
|
||
REC: 820s
|
||
Ricoh: RO-1420C+, MP 1420C, MP 6200S, MP 6201S, MP 7040A, MP-7060A
|
||
Samsung: SW-204
|
||
Sanyo: CRD-R24S
|
||
Smart and
|
||
Friendly: CD-RW 226, CD-R 1002, CD-R 1002/PRO, CD-R 1004,
|
||
CD-R 2004, CD-R 2006 PLUS, CD-R 2006 PRO, CD-RW 2224,
|
||
CD-R 4000, CD-R 4006, CD-R 4012, CD-RW 4424A
|
||
CD-R 8020, CD-R 8220
|
||
Sony: CDRX 100E, CDRX 120E, CDRX 140S-RP,
|
||
CDU 920S, CDU 924, CDU 926S, CDU 928E, CDU 948S
|
||
Taiyo Yuden: EW-50
|
||
TEAC: CD-R50S, CD-R55S, CDR-55S, CDR-55K,
|
||
CDR-56S-400, CD-R56S-600, R56S-614
|
||
Traxdata: CRW 2260,
|
||
CDR 4120, CDR 4120 Pro, CDRW 4260, CDRW 4424, CDR 4800
|
||
Turtle Beach: 2040R
|
||
Waitec: wt 2036, wt 2444ei
|
||
WPI (Wearnes): CDRW-622, CDR-632P
|
||
Yamaha: CDR-100, CDR 102, CDR-200, CDR-200t, CDR-200tx
|
||
CDR-400, CDR-400c, CDR-400t, CDR-400tx, CDR-400Atx
|
||
CDW-2216E, CRW-2260, CRW-2260t,
|
||
CRW-4250tx, CRW-4260t, CRW-4260tx, CRW-4261, CRW-4416S,
|
||
CRW-6416S, CRW-8424E
|
||
|
||
|
||
|
||
The detailed list of models which have been reported to work or not to
|
||
work under various Unix-like operating systems is available online
|
||
from <http://www.guug.de:8080/cgi-bin/winni/lsc-orig.pl>.
|
||
|
||
|
||
If your hardware isn't supported you can still use Linux to create an
|
||
image of the CD. You may wish to do so because most burning software
|
||
for DOS does not deal with RockRidge-extensions (Unix-like filesystems
|
||
on CD-ROM). In a second step, you can use DOS or Macintosh software to
|
||
write the image to the CD-R.
|
||
|
||
|
||
|
||
1.6. Supported "features"
|
||
|
||
Two There are two classes of utilities: the hardware drivers and the
|
||
data-formatters. The hardware drivers support the following features:
|
||
|
||
|
||
|
||
Supported Feature cdwrite-2.1 cdrecord-1.6 cdrdao
|
||
----------------------------------------------------------
|
||
IDE/ATAPI yes yes yes
|
||
Parallel Port no yes yes
|
||
CD-RW no yes yes
|
||
Audio CD yes yes yes
|
||
Data CD-ROM yes yes partial
|
||
Multisession partial yes no
|
||
TAO (track at once) yes yes yes
|
||
DAO (disk at once) no partial yes
|
||
packet writing no no no
|
||
|
||
|
||
|
||
cdwrite is unmaintained software referenced only for completeness.
|
||
Please use cdrecord instead, as it supports a wider range of hardware
|
||
and has significantly more features. The main benefit of cdrdao is the
|
||
ability to create audio CDs without two seconds of silence between the
|
||
tracks (writing in disk-at-once (DAO) mode).
|
||
|
||
The tools classified as "data-formatters" organize the data on the
|
||
media ("put a filesystem on it").
|
||
|
||
|
||
|
||
Feature mkisofs mkhybrid mkvcdfs
|
||
-------------------------------------------------------
|
||
ISO 9660 yes yes no
|
||
RockRidge yes yes no
|
||
El Torito yes yes no
|
||
HFS no yes no
|
||
Joliet yes yes no
|
||
Multisession yes yes no
|
||
CD-Extra yes yes no
|
||
Video-CD no no yes
|
||
|
||
|
||
|
||
The most obvious difference between the ISO 9660 filesystem compared
|
||
to the ReiserFS or Extended-2 filesystem is: you can't modify files
|
||
once they are written. Other limitations of the ISO-9660-filesystem
|
||
include:
|
||
|
||
|
||
· only 8 levels of sub-directories allowed (counted from the top-
|
||
level directory of the CD)
|
||
|
||
· maximum length for filenames: 32 characters
|
||
|
||
· 650 MB capacity
|
||
|
||
RockRidge is an extension to allow longer filenames and a deeper
|
||
directory hierarchy for the ISO-9660 filesystem. When reading a CD-ROM
|
||
with RockRidge extensions under Linux, all the known properties of
|
||
files like owner, group, permissions, symbolic links appear ("feels
|
||
like a Unix filesystem"). These extensions are not available when
|
||
reading the CD-ROM under DOS or the heterogenous Windows-family of
|
||
operating systems.
|
||
|
||
El Torito can be used to produce bootable CD-ROMs. For this feature to
|
||
work, the BIOS of your PC must support it. Roughly speaking, the first
|
||
1.44 (or 2.88 if supported) Mbytes of the CD-ROM contains a floppy-
|
||
disk image supplied by you. This image is treated like a floppy by the
|
||
BIOS and booted from. (As a consequence, while booting from this
|
||
virtual floppy, your original drive A: (/dev/fd0) may not be
|
||
accessible.)
|
||
|
||
HFS lets a Macintosh read the CD-ROM as if it were an HFS volume (the
|
||
native filesystem for MacOS).
|
||
|
||
Joliet brings long filenames (among other things) to newer variants of
|
||
Windows (95, 98, NT). However, the author knows of no tool that allows
|
||
long filenames under plain DOS or Windows 3.11.
|
||
|
||
Video-CDs can be directly played on DVD-devices.
|
||
|
||
Section 2.8 lists the availability of the mentioned software.
|
||
|
||
|
||
|
||
1.7. Mailing Lists
|
||
|
||
If you want to join the development team (with the intention to
|
||
actively help them), send e-mail to cdwrite-request@other.debian.org
|
||
and put the word subscribe in body of the message.
|
||
|
||
|
||
|
||
2. Setup the Linux-system for writing CD-ROMs
|
||
|
||
|
||
This section applies to the following types of CD-writers: SCSI,
|
||
IDE/ATAPI and the devices for the parallel port. USB CD-writers are
|
||
not supported as of May 2000. Non-SCSI writers require compatibility
|
||
drivers, which make them appear as if they were real SCSI devices. On
|
||
the one side such a unifying strategy is easy ("everything is SCSI"),
|
||
because on the application level you can share your knowledge with
|
||
other users regardless of their kind of CD-writer. On the other side,
|
||
you have to reconfigure applications like audio CD players or the
|
||
mount utility to reflect the change of the driver name. For example,
|
||
if you accessed your ATAPI CD-writer through the device file /dev/hdc
|
||
before, you will have to access it through /dev/scd0 after activating
|
||
the SCSI compatibility drivers.
|
||
|
||
Once you succeed setting up your hardware and the rest of your Linux-
|
||
system, the command cdrecord -scanbus shows you a list of devices on
|
||
your SCSI busses. The goal of this section is to guide you in setting
|
||
up your Linux-system, so that you finally end up seeing something
|
||
like:
|
||
|
||
|
||
|
||
shell> cdrecord -scanbus
|
||
Cdrecord release 1.7a1 Copyright (C) 1995-1998 Jörg Schilling
|
||
scsibus0:
|
||
0,0,0) 'Quantum ' 'XP34300 ' 'F76D' Disk
|
||
0,1,0) 'SEAGATE ' 'ST11200N ' '8334' Disk
|
||
0,2,0) *
|
||
0,3,0) 'TOSHIBA ' 'MK537FB/ ' '6258' Disk
|
||
0,4,0) 'WANGTEK ' '5150ES SCSI 36 ' 'ESB6' Removable Tape
|
||
0,5,0) 'EXABYTE ' 'EXB-8500-85QUE ' '0428' Removable Tape
|
||
0,6,0) 'TOSHIBA ' 'XM-3401TASUNSLCD' '3593' Removable CD-ROM
|
||
0,7,0) *
|
||
scsibus1:
|
||
1,0,0) 'Quantum ' 'XP31070W ' 'L912' Disk
|
||
1,1,0) *
|
||
1,2,0) *
|
||
1,3,0) 'TEAC ' 'CD-R55S ' '1.0H' Removable CD-ROM
|
||
1,4,0) 'MATSHITA' 'CD-R CW-7502 ' '4.02' Removable CD-ROM
|
||
1,5,0) *
|
||
1,6,0) 'YAMAHA ' 'CDR400t ' '1.0d' Removable CD-ROM
|
||
1,7,0) *
|
||
|
||
|
||
|
||
The example was provided by Jörg Schilling and shows a total of four
|
||
CD-writers. Please note that -scanbus also reports other devices, e.g.
|
||
regular CD-ROMs and hard disk drives. The last column gives the SCSI
|
||
description of the device, from which you cannot clearly distinguish
|
||
ordinary CD-ROM drives from those with burning capability. But the
|
||
product identification (middle column) often has hints about the
|
||
feature in form of a R, -R or -RW.
|
||
|
||
|
||
|
||
2.1. Quickstart
|
||
|
||
This section is an attempt to provide an fast and easy description of
|
||
the configuration. Not all possible setups are covered, but please go
|
||
on and try it out anyways. First of all, check the Linux kernel
|
||
version printed by the command "uname -r". It should be something
|
||
like 2.0.X or 2.2.Y, where X is higher than 36 and Y is higher than
|
||
11. If you run older versions or the so called development kernels,
|
||
you are on your own. Installing a new kernel is as much work as fixing
|
||
an old one, so I have removed all hints you need for buggy kernels.
|
||
|
||
The listing below shows a set of commands you could start with. The
|
||
commands create device file entries under /dev unless they already
|
||
exists.
|
||
|
||
|
||
|
||
test `whoami` = 'root' || echo "You must be root to execute the commands."
|
||
cd /dev/
|
||
umask -S u=rwx,g=rwx,o-rwx
|
||
[ -f loop0 ] \
|
||
|| ./MAKEDEV loop \
|
||
|| for i in 0 1 2 3 4 5 6 7; do mknod loop$i b 7 $i; done
|
||
[ -f sg0 -o -f sga ] \
|
||
|| ./MAKEDEV sg \
|
||
|| for i in 0 1 2 3 4 5 6 7; do mknod sg$i c 21 $i; done
|
||
|
||
Hardware access is usally implemented through device files under
|
||
Linux. So before any other thing you make sure those files do exists
|
||
in the directory /dev. Still nobody could give me a compelling reason
|
||
why this has not been automated through techniques like the device
|
||
filesystem (devfs). The devfs is available for years know, brings a
|
||
safer (!) and a far clearer naming of devices and makes the device
|
||
entries appear automatically under /dev. Some prominent people argue
|
||
devfs is not the perfect solution, but they do not come up with
|
||
anything better, not even something comparable and last but least
|
||
nothing available and tested now. Lets start to use devfs, so I can
|
||
remove the above commands from this document. (
|
||
<http://www.atnf.CSIRO.AU/~rgooch/linux/kernel-patches.html>)
|
||
|
||
|
||
Next thing to ensure is, that the Linux kernel is equiped with the
|
||
necessary drivers. The following commands check various files for the
|
||
presence of drivers in the running Linux kernel. Usally the command
|
||
"cdrecord -scanbus" should trigger an automatic loading of all
|
||
drivers. In case a driver is not present in the kernel afterwards, it
|
||
is reported and the modularized driver (module) is manually loaded
|
||
through insmod.
|
||
|
||
|
||
|
||
test `whoami` = 'root' || echo "You must be root to execute the commands."
|
||
cdrecord -scanbus > /dev/null
|
||
if ! (pidof kerneld || test -f "/proc/sys/kernel/modprobe"); then
|
||
echo "Neither kerneld nor kmod are running to automatically load modules".
|
||
fi
|
||
report_no_autoload() {
|
||
echo "Ensure the module $1 is loaded automatically next time."
|
||
}
|
||
if test ! -f "/proc/scsi/scsi"; then
|
||
report_no_autoload scsi_mod && insmod scsi_mod
|
||
fi
|
||
if ! grep "^........ sg_" /proc/ksyms > /dev/null; then
|
||
report_no_autoload sg && insmod sg
|
||
fi
|
||
if ! grep "^........ sr_" /proc/ksyms > /dev/null; then
|
||
report_no_autoload sr_mod && insmod sr_mod
|
||
fi
|
||
if ! grep "^........ loop_" /proc/ksyms > /dev/null; then
|
||
report_no_autoload loop && insmod loop
|
||
fi
|
||
if ! grep iso9660 /proc/filesystems > /dev/null; then
|
||
report_no_autoload iso9660 && insmod iso9660
|
||
fi
|
||
echo "The following is only needed for IDE/ATAPI CD-writers."
|
||
if ! grep ide-scsi /proc/ide/drivers > /dev/null; then
|
||
report_no_autoload ide-scsi && insmod ide-scsi
|
||
fi
|
||
cdrecord -scanbus
|
||
|
||
|
||
|
||
Please read the next chapter if insmod complains about missing module
|
||
files. If you are in text mode (console), the loading of modules may
|
||
cause some messages to be printed on your screen. If you are in
|
||
graphics mode (X11, KDE, Gnome), you can recall these messages with
|
||
the command dmesg.
|
||
|
||
There are several ways to load the modules next time you start up your
|
||
Linux system:
|
||
|
||
(1) Put the relevant insmod command into the startup sequence
|
||
(a shell script named rc.local or equivalent).
|
||
(2a) Run kerneld or kmod and
|
||
(2b) configure them in /etc/modules.conf (to be more precise,
|
||
you configure the utility modprobe, which is called by the daemons)
|
||
|
||
|
||
|
||
People with a SCSI-writer can skip the rest of this section, because
|
||
cdrecord will most likely already detect their hardware. If not, then
|
||
please send me an email with some information about your setup, so I
|
||
can improve the section about SCSI-writers.
|
||
|
||
Now to the people with CD-writers for IDE/ATAPI. As written in the
|
||
previous chapter, you have to load the compatibility driver ide-scsi.
|
||
But this driver can only access your CD-Writer if no other driver has
|
||
already done so. In other words, you have to tell the regular IDE
|
||
driver to leave your CD-writer unrecognized, so the ide-scsi driver
|
||
can grab it.
|
||
|
||
|
||
|
||
hda = IDE bus/connector 0 master device
|
||
hdb = IDE bus/connector 0 slave device
|
||
hdc = IDE bus/connector 1 master device
|
||
hdd = IDE bus/connector 1 slave device
|
||
|
||
|
||
|
||
The table above shows the relation of device file names and the
|
||
placing of devices on the IDE busses. The device file name
|
||
representing your CD-Writer has to be passed to the driver in the
|
||
Linux kernel. Example: hdb=ide-scsi. Such a setting should be added
|
||
to lilo.conf or chos.conf if the driver is statically compiled into
|
||
your kernel, which seems to be the most common setup. If you need to
|
||
pass more than one parameter to the kernel, then seperate them with
|
||
spaces (like shown in the chos example). The next two listings show
|
||
example configurations containing more lines than just the relevant
|
||
append-line. Please note the append- and cmdline-entries are image-
|
||
specific (ie. don't add them immediatly at the top).
|
||
|
||
|
||
|
||
image=/boot/zImage-2.2.14
|
||
label=Linux
|
||
read-only
|
||
append="hdb=ide-scsi"
|
||
|
||
|
||
|
||
linux "Linux 2.1.14" {
|
||
image=/boot/zImage-2.0.37
|
||
cmdline= root=/dev/hda5 readonly hdb=ide-scsi
|
||
}
|
||
|
||
|
||
|
||
If the driver for IDE/ATAPI CD-ROMs is loaded as a module, then the
|
||
above won't make any difference to you, but make sure you include the
|
||
options-line from the next listing. The last three lines of that
|
||
listing are generally suggested to further automate the loading of the
|
||
required modules.
|
||
|
||
|
||
|
||
options ide-cd ignore=hdb # tell the ide-cd module to ignore hdb
|
||
alias scd0 sr_mod # load sr_mod upon access of scd0
|
||
#pre-install ide-scsi modprobe imm # uncomment for some ZIP drives only
|
||
pre-install sg modprobe ide-scsi # load ide-scsi before sg
|
||
pre-install sr_mod modprobe ide-scsi # load ide-scsi before sr_mod
|
||
pre-install ide-scsi modprobe ide-cd # load ide-cd before ide-scsi
|
||
|
||
|
||
|
||
If your CD-writer is the only CD-ROM attached to your machine, then
|
||
remember you have to access the CD-ROM in the writer through the
|
||
device file /dev/scd× where ×=0,..,8. You may want to change the
|
||
symbolic name cdrom to point to the new device file name. The listing
|
||
below shows the command to achieve this with the example scd0.
|
||
|
||
|
||
|
||
cd /dev && rm cdrom && ln -s scd0 cdrom
|
||
|
||
|
||
|
||
If your CD-writer and CD-ROM-drive are two different devices, then
|
||
don't change the cdrom symlink.
|
||
|
||
|
||
|
||
2.1.1. Special notes about SCSI CD-writers
|
||
|
||
|
||
Please make sure that your writer is recognized by the BIOS of your
|
||
SCSI hostadaptor card. Every SCSI hostadaptor scans the SCSI bus after
|
||
power on and reports all devices found connected to the bus. The
|
||
report includes the SCSI ID of the devices and their product label. It
|
||
makes no sense to proceed unless your CD writer is listed in that
|
||
report.
|
||
|
||
If you plan to connect your SCSI device through the parallel port (not
|
||
to confuse with the IDE drives for the parallel port), you need a
|
||
special active cable and a special kernel driver. Read
|
||
<http://www.torque.net/parport/parscsi.html> to learn more about this
|
||
option.
|
||
|
||
|
||
2.1.2. Special notes about CD-writers for the parallel port
|
||
|
||
|
||
I have no clue about this, sorry. Please read
|
||
<http://www.torque.net/parport/paride.html> or your local file
|
||
/usr/src/linux/Documentation/paride.txt.
|
||
|
||
|
||
|
||
2.1.3. Compiling missing kernel modules (optional)
|
||
|
||
|
||
You don't need to read this section if you hardware is already
|
||
sucessfully recognized and configured by the previously described
|
||
configuration steps.
|
||
|
||
|
||
The Linux kernel can be equipped with drivers for various features.
|
||
You can compile the drivers into the kernel image statically or you
|
||
can compile them as a module for on-demand loading. The last method is
|
||
preferred for drivers not essential for bringing your Linux-system
|
||
into life, because your kernel will be smaller and faster then.
|
||
However, some drivers are essential for the system to come up and you
|
||
shouldn't compile them as a module. Example: if your system lives on
|
||
an IDE hard disk, you must have the driver for IDE hard disks in the
|
||
kernel -- not as a module.
|
||
|
||
There are three different types of CD-writers: SCSI, IDE/ATAPI and
|
||
external writers that work through the parallel port. The table shows
|
||
how to configure the Linux kernel for those hardware types. The first
|
||
column of the table is the section of the kernel configuration menu,
|
||
where you can find the setting. The second column is the description
|
||
of the feature (taken from the kernel configuration menu, too). The
|
||
third column gives the name of the resulting module. The columns named
|
||
SCSI, IDE and PP contain the necessary options for the associated
|
||
hardware (PP = parallel port).
|
||
|
||
|
||
|
||
Sect. Description Module SCSI IDE PP
|
||
------------------------------------------------------------
|
||
BLOCK Enhanced IDE/MFM/RLL... Y
|
||
BLOCK IDE/ATAPI CDROM ide-cd M
|
||
BLOCK SCSI emulation support ide-scsi M
|
||
BLOCK Loopback device loop M M M
|
||
|
||
PARIDE Parallel port IDE device paride Y/M
|
||
PARIDE Parallel port ATAPI CD-ROMs M
|
||
PARIDE Parallel port generic ATAPI M
|
||
PARIDE (select a low-level driver) Y
|
||
|
||
SCSI SCSI support scsi_mod Y/M Y/M
|
||
SCSI SCSI CD-ROM support sr_mod Y/M Y/M
|
||
SCSI Enable vendor-specific Y Y
|
||
SCSI SCSI generic support sg Y/M Y/M
|
||
SCSI (select a low-level driver) Y
|
||
|
||
FS ISO 9660 CDROM filesystem iso9660 Y/M Y/M Y/M
|
||
FS Microsoft Joliet cdrom... joliet Y Y Y
|
||
|
||
|
||
|
||
Y stands for yes and means you should put the beast into the kernel.
|
||
M stands for module and means you should or must compile this feature
|
||
as a module. Y/M gives you the option to decide between either (order
|
||
indicates choices with less potential problems). Empty settings don't
|
||
need to be modified and not changing them increases the chance that
|
||
the resulting kernel will work for you (if it did before...).
|
||
Especially in environments where SCSI and ATAPI devices are mixed, you
|
||
better build most things as modules.
|
||
|
||
Compiling loopback device is optional. It allows you to test the
|
||
image before writing it to the media. If you want to be able to read
|
||
CD-ROMs, you need support for the ISO 9660 filesystem. This driver
|
||
automatically includes RockRidge Extensions. The Microsoft Joliet CD-
|
||
ROM extensions have to be explicitly added to the ISO 9660 filesystem.
|
||
In any case, you need a low-level driver for your hardware. Low-level
|
||
refers to the driver, which interacts directly with the hardware. For
|
||
SCSI and the parallel port, there are a lot of low-level drivers
|
||
available.
|
||
|
||
Installing the resulting Linux-kernel is beyond the scope of this
|
||
HOWTO. Please consult the documentation of your Linux-distribution.
|
||
Users of RedHat Linux be aware that you have to compile in the
|
||
features "Ramdisk support" and "Initial ramdisk". Furthermore, you
|
||
have to generate a new ramdisk with the new modules by issuing a
|
||
command like "mkintrd --preload ide-cd initrd-2.2.14.img 2.2.14".
|
||
|
||
|
||
|
||
2.2. Get the user software for burning CD-Rs
|
||
|
||
A more detailed survey of tools related to produce CD-ROMs is
|
||
available from
|
||
<http://www.fokus.gmd.de/research/cc/glone/employees/joerg.schilling/private/cdb.html>.
|
||
|
||
|
||
2.2.1. Command line utilities
|
||
|
||
One of the following packages are required to generate images of CD-Rs
|
||
(only required for data CD-ROMs):
|
||
|
||
|
||
<ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs/> (mkisofs)
|
||
|
||
<ftp://ftp.ge.ucl.ac.uk/pub/mkhfs> (mkhybrid)
|
||
|
||
|
||
To write images to the CD-R, you need one of the following software
|
||
packages:
|
||
|
||
|
||
<ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/> (cdrecord)
|
||
|
||
<http://www.ping.de/sites/daneb/cdrdao.html> (cdrdao)
|
||
|
||
<http://www.munich-vision.de/vcd/> (mkvcdfs)
|
||
|
||
|
||
Don't trust the man page of old versions of mkisofs which state you
|
||
need version 1.5 of cdwrite. Just use cdrecord and you are fine.
|
||
Please note that newer versions of cdrecord ship with an enhanced
|
||
version of mkisofs and some extra tools in the subdirectory misc/
|
||
(readcd, isosize) not found elsewhere.
|
||
|
||
|
||
|
||
2.2.2. Graphical user interfaces (optional)
|
||
|
||
Front-ends are really front-ends under Linux. That means, you still
|
||
have to install the command-line utilities, but you access them in a
|
||
better looking manner.
|
||
|
||
X-CD-Roast is a program package dedicated to easy CD creation under
|
||
Linux. It combines command line tools like cdrecord and mkisofs into a
|
||
nice graphical user interface.
|
||
|
||
|
||
<http://www.fh-muenchen.de/home/ze/rz/services/pro
|
||
jects/xcdroast/e_overview.html>
|
||
|
||
|
||
BurnIT is a JAVA front-end to cdrecord, mkisofs and cdda2wav-0.95
|
||
making it a complete package for burning CDs on the Unix platform. It
|
||
is available from
|
||
|
||
|
||
<http://sunsite.auc.dk/BurnIT/>
|
||
|
||
CD-Tux is a character based frontend for the programs mkisofs and
|
||
cdrecord. "It creates an easy to use enviroment for doing almost
|
||
anything to a CD in full color through the use of the (in)famous
|
||
NCURSES Library. And it does all this whith an executable of under
|
||
75K."
|
||
|
||
|
||
<http://www.datadictator.co.za/cdtux/>
|
||
|
||
|
||
|
||
3. Burning CD-Rs
|
||
|
||
|
||
"If to smoke you turn I shall not cease to fiddle while you
|
||
burn." (Roman emperor Nero about burning his own classic-
|
||
CDs, AD64. He misunderstood it completely and burned Rome
|
||
down.)
|
||
|
||
|
||
|
||
Writing CD-ROMs consists of two steps under Linux:
|
||
|
||
|
||
· packaging the desired data (files, music or both) into files with
|
||
special formats
|
||
|
||
· writing the data from the files to the CD-R with the utility
|
||
cdrecord
|
||
|
||
This chapter describes the steps for data and audio CDs in greater
|
||
detail.
|
||
|
||
|
||
|
||
3.1. Writing CD-ROMs (pure data)
|
||
|
||
Note that collecting the data to put onto a CD usually takes longer
|
||
than one expects. Consider that missing files cannot be added once the
|
||
CD is written and fixated. This is also true for CD-RW, which can
|
||
currently only be rewritten as a whole. Using the multi-session
|
||
feature is no option for single files, as it consumes much space for a
|
||
new complete table of contents (TOC). UDF is not ready yet for Linux.
|
||
|
||
Also keep in mind that a certain amount of the free space of a CD is
|
||
used for storing the information of the ISO-9660-filesystem (usually a
|
||
few MB). 620 MB data will always fit on a 650 MB CD-R.
|
||
|
||
|
||
3.1.1. Creating an image of the later CD-ROM
|
||
|
||
Before any storage medium (e.g. floppy disk, hard disk or CD) can be
|
||
used, it must get a filesystem (DOS speak: get formatted). The
|
||
filesystem is responsible for organizing and incorporating the files
|
||
that should be stored on the medium.
|
||
|
||
The usual utilities for creating filesystems on hard disk partitions
|
||
write an empty filesystem onto them, which is then mounted and filled
|
||
with files by the users as they need it. A writable CD is only
|
||
writable once so if we wrote an empty filesystem to it, it would get
|
||
formatted and remain completely empty forever. This is also true for
|
||
rewritable media as you cannot change arbitrary sectors yet; you must
|
||
erase their whole content.
|
||
|
||
|
||
So what we need is a tool that creates the filesystem while copying
|
||
the files to the CD. This tool is called mkisofs. A sample usage
|
||
looks as follows:
|
||
|
||
|
||
|
||
mkisofs -r -o cd_image private_collection/
|
||
`---------' `-----------------'
|
||
| |
|
||
write output to take directory as input
|
||
|
||
|
||
|
||
The option '-r' sets the permissions of all files to be public
|
||
readable on the CD and enables RockRidge-extensions. You probably want
|
||
to use this option unless you really know what you're doing (hint:
|
||
without '-r' the mount point gets the permissions of
|
||
private_collection!).
|
||
|
||
mkisofs will try to map all filenames to the 8.3 format used by DOS to
|
||
ensure the highest possible compatibility. In case of naming conflicts
|
||
(different files have the same 8.3 name), numbers are used in the
|
||
filenames and information about the chosen filename is printed via
|
||
STDERR (usually the screen). Don't panic: Under Linux you will never
|
||
see these odd 8.3 filenames because Linux makes use of the Rock Ridge
|
||
extensions which contain the original file information (permissions,
|
||
filename, etc.).
|
||
|
||
Remeber do use the Option -J (MS Joliet extensions) or use mkhybrid if
|
||
you want to generate a more Windows-friendly CD-ROM. For HFS CD-ROMS
|
||
used on the Macintosh, you better read the man-page of mkisofs' bigger
|
||
sister mkhybrid for details on various options.
|
||
|
||
Now you may wonder why the output of mkisofs is not directly sent to
|
||
the writer device. There are three reasons:
|
||
|
||
|
||
· mkisofs knows nothing about driving CD-writers.
|
||
|
||
· You may want to test the image before burning it.
|
||
|
||
· On slow machines it would not be reliable (see section 4.).
|
||
|
||
There is a method to write a CD-R in one go, which will be described
|
||
below.
|
||
|
||
One also could think of creating an extra partition and writing the
|
||
image to that partition instead to a file. I vote against such a
|
||
strategy because if you write to the wrong partition due to a typo,
|
||
you can lose your complete Linux system. Read: that happened to me...
|
||
Furthermore, it is a waste of disk space because the CD-image is
|
||
temporary data that can be deleted after writing the CD. However,
|
||
using raw partitions saves you the time for deleting files of 650 MB
|
||
size.
|
||
|
||
|
||
|
||
3.1.2. Test the CD-image
|
||
|
||
Linux has the ability to mount files as if they were disk partitions.
|
||
This feature is useful to check that the directory layout and file
|
||
access permissions of the CD image matches your wishes. Although media
|
||
is very cheap today, the writing process is still time consuming, and
|
||
you may at least want to save your time by doing a quick test.
|
||
|
||
To mount the file cd_image created above on the directory /cdrom, give
|
||
the command
|
||
|
||
|
||
|
||
mount -t iso9660 -o ro,loop=/dev/loop0 cd_image /cdrom
|
||
|
||
|
||
|
||
Now you can inspect the files under /cdrom -- they appear exactly as
|
||
they were on a real CD. To umount the CD-image, just say umount
|
||
/cdrom. (Warning: On Linux kernels prior to 2.0.31 the last file on
|
||
/cdrom may not be fully readable. Please use a more recent kernel like
|
||
2.0.36. The option -pad for cdrecord applies to audio CDs only and the
|
||
option -pad for mkisofs requires a patch, which is as much work to
|
||
apply than to upgrade to a bug-free Linux kernel.)
|
||
|
||
Note:
|
||
|
||
Some ancient versions of mount are not able to deal with
|
||
loopback devices. If you have such an old version of mount,
|
||
then upgrade your Linux-system. Several people have already
|
||
suggested putting information about how to get the newest
|
||
mount utilities into this HOWTO. I always refuse this. If
|
||
your Linux distribution ships with an ancient mount, report
|
||
it as a bug. If your Linux distribution is not easily
|
||
upgradable, report it as a bug.
|
||
|
||
If I include all the information that is necessary to work
|
||
around bugs in badly designed Linux distributions, this
|
||
HOWTO would be a lot bigger and harder to read.
|
||
|
||
|
||
|
||
3.1.3. Write the CD-image to a CD
|
||
|
||
This section only covers writing data CDs in TAO mode, because it is
|
||
the most frequently used mode for data. For more information about the
|
||
differences of TAO and DAO, please see the chapter about audio CD-Rs.
|
||
If you use DAO mode with the tool cdrdao, then remember to add a dummy
|
||
audio track at the end of the TOC file (see the README).
|
||
|
||
Not much more left to do. If you haven't already tried, it's a good
|
||
time for the command
|
||
|
||
|
||
|
||
cdrecord -scanbus
|
||
|
||
|
||
|
||
This will tell you to which SCSI device your CD-writer is attached to.
|
||
All other methods of guessing the information printed so nicely by
|
||
cdrecord have been removed from the HOWTO.
|
||
|
||
Before showing you the last command, let me warn you that CD-writers
|
||
want to be fed with a constant stream of data. So the process of
|
||
writing the CD image to the CD must not be interrupted or a corrupt CD
|
||
will result. It's easy to interrupt the data stream by deleting a very
|
||
large file. Example: if you delete an old CD-image of 650 Mbytes size,
|
||
the kernel must update information about 650,000 blocks on the hard
|
||
disk (assuming you have a block size of 1 Kbyte for your filesystem).
|
||
That takes some time and is very likely to slow down disk activity
|
||
long enough for the data stream to pause for a few seconds. However,
|
||
reading mail, browsing the web, or even compiling a kernel generally
|
||
will not affect the writing process on modern machines.
|
||
|
||
Please note that no writer can re-position its laser and continue at
|
||
the original spot on the CD when it gets disturbed. Therefore any
|
||
strong vibrations or other mechanical shocks will probably destroy the
|
||
CD you are writing.
|
||
|
||
When you are mentally prepared, dress up in a black robe, multiply the
|
||
SCSI-id of the CD-writer with its SCSI-revision and light as many
|
||
candles, speak two verses of the ASR-FAQ (newsgroup
|
||
alt.sysadmin.recovery) and finally type:
|
||
|
||
|
||
|
||
shell> SCSI_BUS=0 # taken from listing 1 "scsibus0:"
|
||
shell> SCSI_ID=6 # taken from listing 1 "TOSHIBA XM-3401"
|
||
shell> SCSI_LUN=0
|
||
shell> cdrecord -v speed=2 dev=$SCSI_BUS,$SCSI_ID,$SCSI_LUN \
|
||
-data cd_image
|
||
|
||
# same as above, but shorter:
|
||
shell> cdrecord -v speed=2 dev=0,6,0 -data cd_image
|
||
|
||
|
||
|
||
For better readability, the coordinates of the writer are stored in
|
||
three environment variables with natural names: SCSI_BUS, SCSI_ID,
|
||
SCSI_LUN.
|
||
|
||
If you use cdrecord to overwrite a CD-RW, you must add the option
|
||
"blank=..." to erase the old content. Please read the man page to
|
||
learn more about the various methods to blank the CD-RW.
|
||
|
||
In times where everybody except me owns a 400 Mhz machine, people feed
|
||
the output of mkisofs directly into cdrecord:
|
||
|
||
|
||
|
||
shell> IMG_SIZE=`mkisofs -R -q -print-size private_collection/ 2>&1 \
|
||
| sed -e "s/.* = //"`
|
||
shell> echo $IMG_SIZE
|
||
shell> [ "0$IMG_SIZE" -ne 0 ] && mkisofs -r private_collection/ \
|
||
|cdrecord speed=2 dev=0,6,0
|
||
tsize=${IMG_SIZE}s -data -
|
||
# don't forget the s --^ ^-- read data from STDIN
|
||
|
||
|
||
|
||
The first command is an empty run to determine the size of the image
|
||
(you need the mkisofs from the cdrecord distribution for this to
|
||
work). You need to specify all parameters you will use on the final
|
||
run (e.g. -J or -hfs). Maybe your writer does not need to know the
|
||
size of the image to be written, so you can leave this dry run out.
|
||
The printed size must be passed as a tsize-parameter to cdrecord (it
|
||
is stored in the environment variable IMG_SIZE). The second command is
|
||
a sequence of mkisofs and cdrecord, coupled via a pipe.
|
||
|
||
The
|
||
|
||
|
||
|
||
3.2. Writing audio CDs
|
||
|
||
Writing audio CDs is very similar to the steps described above for
|
||
data CDs. You can choose between two techniques: DAO or TAO. TAO
|
||
(track at once) is less suitable for music, because you will hear
|
||
clicks between the individual tracks. It is described first anyways,
|
||
because it is a little bit easier to deal with and DAO is not
|
||
available for all drives yet.
|
||
|
||
The main difference compared to writing data CD-Rs is the format of
|
||
the images. ISO-9660 (or whatever filesystem you prefer) would not be
|
||
suitable, because no audio CD player is able to deal with filesystems.
|
||
Instead the audio data must be writen as "16 bit stereo samples in PCM
|
||
coding at 44100 samples/second (44.1 kHz)".
|
||
|
||
One utility to convert your sound files into the required format is
|
||
sox. Its usage is straightforward:
|
||
|
||
|
||
|
||
shell> sox killing-my-software.wav killing-my-software.cdr
|
||
|
||
|
||
|
||
This command would convert the song killing-my-software from the WAV-
|
||
format into the CDR audio-format. See the man page for sox for more
|
||
details about formats and filename-extensions sox recognizes. Because
|
||
the output of the manual conversion takes up much disk space, it was
|
||
made a built-in feature of cdrecord for the sound formats WAV and AU.
|
||
So as long as your sound files have the extensions .wav or .au (and
|
||
the sample rate "stereo, 16 bit, 44.1 kHz"), you can use them as audio
|
||
tracks without manual conversion into the CDR format. However,
|
||
cdrecord requires the size of the sound data to be a integer multiple
|
||
of 2352 and to be greater than 705,600 bytes, which is not fullfilled
|
||
for some WAV files. For such files the usage of sox is needed to pad
|
||
the audio data up to 2352 bytes.
|
||
|
||
|
||
3.2.1. Writing audio CDs (TAO)
|
||
|
||
|
||
An audio CD consists of audio tracks, which are organized as separate
|
||
images when using TAO mode. So if you want to have ten tracks on your
|
||
CD, you have to make ten images.
|
||
|
||
Cdrecord writes CD images as audio tracks if the option -audio is
|
||
specified. The other options are identical to those used for writing
|
||
data-CDs (unless you have very special requirements). These three
|
||
examples all do the same thing, but read the tracks from different
|
||
sound file formats:
|
||
|
||
|
||
|
||
shell> cdrecord -v speed=2 dev=0,6,0 -audio track1.cdr track2.cdr...
|
||
shell> cdrecord -v speed=2 dev=0,6,0 -audio track1.wav track2.wav...
|
||
shell> cdrecord -v speed=2 dev=0,6,0 -audio track1.au track2.au...
|
||
|
||
|
||
|
||
By doing this, you will produce an audio CD which has a 2 seconds of
|
||
pause between audio tracks. One notable format not directly readable
|
||
by cdrecord is MPEG Layer 3. To convert files in this format to the
|
||
CDR-format, you can use the command "mpg123 --cdr - track1.mp3 >
|
||
track1.cdr". The option --cdr ensures the track is encoded in the
|
||
required format (see above). Older versions of mpg123 require -s
|
||
instead of the plain - to write to stdout. The other direction
|
||
(converting from WAV to MPEG) can be done with LAME for WAV-files
|
||
(extract the track with cdda2wav from the audio CD and encode it into
|
||
MP3 with the help of LAME).
|
||
|
||
To create a CD-R from a whole bunch of MP3-files, you can use the
|
||
following command sequence:
|
||
|
||
|
||
|
||
for I in *.mp3
|
||
do
|
||
mpg123 --cdr - "$I" | cdrecord -audio -pad -nofix -
|
||
done
|
||
cdrecord -fix
|
||
|
||
|
||
|
||
Depending on the speed of your machine, you may want to slow down
|
||
writing to "speed=1" (cdrecord option). If you use "speed=4", your
|
||
machine must be able to play the MP3-file at quadruple speed. mpg123
|
||
consumes much CPU-time! If you are in doubt, try an empty run with
|
||
-dummy (keeps the laser switched off).
|
||
|
||
|
||
3.2.2. DAO
|
||
|
||
If you want to get rid of the pauses between the audio tracks, you
|
||
have to use disk-at-once (DAO) recording versus the (individual)
|
||
track-at-once (TAO) recording described above. Support for DAO is
|
||
currently most advanced in cdrdao. Please see its homepage for
|
||
details.
|
||
|
||
If you master the CD in DAO mode, then you use a monolithic image
|
||
(sound file) and control track information with a configuration file.
|
||
|
||
|
||
|
||
CD_DA
|
||
TRACK AUDIO
|
||
FILE "live.wav" 0 5:0:0
|
||
INDEX 3:0:0
|
||
TRACK AUDIO
|
||
FILE "live.wav" 5:0:0 5:0:0
|
||
TRACK AUDIO
|
||
FILE "live.wav" 10:0:0 5:0:0
|
||
INDEX 2:0:0
|
||
|
||
|
||
|
||
3.3. Mixed mode CD-ROMs
|
||
|
||
|
||
There is not much to say about this topic. Just indicate the type of
|
||
the (subse quent) images with the options -data and -audio. Example:
|
||
|
||
|
||
|
||
cdrecord -v dev=0,6,0 -data cd_image -audio track*.cdr
|
||
|
||
|
||
4. Dear Winfried,...
|
||
|
||
This is the section usually known as "frequently asked questions with
|
||
answers". If you have a problem with your partner, kids or dog, just
|
||
send it in, as long as it is related to writing CD-Rs or is otherwise
|
||
entertaining.
|
||
|
||
|
||
4.1. How sensitive is the burning process?
|
||
|
||
Test it. Use the option -dummy to do an empty run of cdrecord. Do
|
||
everything you would do otherwise and watch if the burning process
|
||
survives.
|
||
|
||
If you feed cdrecord directly from mkisofs, then disk intensive
|
||
processes such as updating the locate database lower the maximum flow
|
||
rate and may corrupt the CD. You better check such processes are not
|
||
started via cron, at or anacron while you burn CD-Rs on older
|
||
machines.
|
||
|
||
|
||
4.2. Has file fragmentation a bad impact on the throughput?
|
||
|
||
Fragmentation of files is usually so low that its impact isn't
|
||
noticed. However, you can easily construct pathological cases of
|
||
fragmentation, which lower the throughput of your hard disks under 100
|
||
kbytes/second. So don't do that. :-) Yes, files on a hard disk get
|
||
fragmented over the years. The faster, the fuller the filesystem is.
|
||
Always leave 10% or 20% free space, and you should run fine with
|
||
respect to writing CD-Rs.
|
||
|
||
If you're uncertain then look at the messages printed while booting.
|
||
The percentage of fragmentation is reported while checking the
|
||
filesystems. You can check for this value with the very dangerous
|
||
command
|
||
|
||
|
||
|
||
shell> e2fsck -n /dev/sda5 # '-n' is important!
|
||
[stuff deleted -- ignore any errors]
|
||
/dev/sda5: 73/12288 files (12.3% non-contiguous)
|
||
|
||
|
||
|
||
In this example the fragmentation seems to be very high -- but there
|
||
are only 73 very small files on the filesystem. So the value is not
|
||
alarming.
|
||
|
||
There is an experimental utility called e2defrag to defragment
|
||
extended-2 filesystems. The current version does not work reliable
|
||
enough to use it even for private environments. If you really want to
|
||
defragment your filesystem, make a backup copy (better: two copies),
|
||
practice restoring the data, then create a new filesystem (that will
|
||
destroy the old) and restore the data. This sketch is currently the
|
||
safest technique.
|
||
|
||
|
||
|
||
4.3. Is it possible to store the CD-image on an UMSDOS-filesystem?
|
||
|
||
Yes. The only filesystem that isn't reliable and fast enough for
|
||
writing CD-ROMs from is the network filesystem (NFS). I used UMSDOS
|
||
myself to share the disk-space between Linux and DOS/Win on a PC
|
||
(486/66) dedicated for writing CD-ROMs.
|
||
|
||
4.4. Isn't there some way to get around the ISO-9660 limitations?
|
||
|
||
Yes. You can put any filesystem you like on the CD. But other
|
||
operating systems than Linux won't be able to deal with this CD. Here
|
||
goes the recipe:
|
||
|
||
|
||
· Create an empty file of 650MB size.
|
||
|
||
|
||
dd if=/dev/zero of="empty_file" bs=1024k count=650
|
||
|
||
|
||
|
||
· Create an extended-2 filesystem on this file
|
||
|
||
|
||
shell> /sbin/mke2fs -b 2048 empty_file
|
||
empty_file is not a block special device.
|
||
Proceed anyway? (y,n) y
|
||
|
||
|
||
|
||
· Mount this empty file through the loopback devices (you need a
|
||
reasonable new mount for this; read above).
|
||
|
||
|
||
mount -t ext2 -o loop=/dev/loop1 empty_file /mnt
|
||
|
||
|
||
|
||
· Copy files to /mnt and umount it afterwards.
|
||
|
||
· Use cdrecord on empty_file (which is no longer empty) as if it were
|
||
an ISO-9660-image.
|
||
|
||
If you want to make an entry in /etc/fstab for such a CD, then disable
|
||
the checking of the device file on system startup. For example:
|
||
|
||
|
||
|
||
/dev/cdrom /cdrom ext2 defaults,ro 0 0
|
||
|
||
|
||
|
||
The first 0 means "don't include in dumps" (backup), the second
|
||
(=important) one means "don't check for errors on startup" (fsck would
|
||
fail to check the CD for errors).
|
||
|
||
|
||
|
||
4.5. How to read the tracks from audio CDs?
|
||
|
||
There are several software packages available. The newest one is
|
||
"cdpranoia" and can be downloaded from
|
||
|
||
|
||
<http://www.xiph.org/paranoia/>
|
||
|
||
Or you want to try the combination of "cdda2wav" and "sox", available
|
||
from sunsite and its mirrors:
|
||
|
||
|
||
<ftp://sun
|
||
site.unc.edu/pub/Linux/apps/sound/cdrom/cdda2wav0.71.src.tar.gz>
|
||
|
||
<ftp://sunsite.unc.edu/pub/Linux/apps/sound/convert/sox-11gamma-
|
||
cb3.tar.gz>
|
||
|
||
|
||
cdda2wav enables you to get a specific interval (or a whole track)
|
||
from your audio CD and converts it into a .wav-file. sox converts the
|
||
WAV files back into the (audio CD) cdda-format so it can be written to
|
||
the CD-R using cdrecord. You don't necessarily need sox if you use a
|
||
recent version of cdrecord, because it has built-in support for .au
|
||
and .wav files.
|
||
|
||
|
||
|
||
4.6. How to probe for SCSI devices after boot?
|
||
|
||
The file drivers/scsi/scsi.c contains the information
|
||
|
||
|
||
|
||
/*
|
||
* Usage: echo "scsi add-single-device 0 1 2 3" >/proc/scsi/scsi
|
||
* with "0 1 2 3" replaced by your "Host Channel Id Lun".
|
||
* Consider this feature BETA.
|
||
* CAUTION: This is not for hot plugging your peripherals. As
|
||
* SCSI was not designed for this you could damage your
|
||
* hardware !
|
||
* However perhaps it is legal to switch on an
|
||
* already connected device. It is perhaps not
|
||
* guaranteed this device doesn't corrupt an ongoing data transfer.
|
||
*/
|
||
|
||
|
||
|
||
Please note that this should only be used if your add SCSI devices to
|
||
the end of the chain. Inserting new SCSI devices into an existing
|
||
chain disturbs the naming of devices (directory /dev) and may destroy
|
||
the complete content of your hard disk.
|
||
|
||
Some kernel versions do not like re-scanning the SCSI bus at all and
|
||
your system may freeze solid when trying out the above. You have been
|
||
warned.
|
||
|
||
|
||
4.7. Is it possible to make a 1:1 copy of a data CD?
|
||
|
||
|
||
|
||
Yes. But you should be aware of the fact that any errors while reading
|
||
the original (due to dust or scratches) will result in a defective
|
||
copy. Please note that both methods will fail on audio CDs! You have
|
||
to use cdrdao or cdda2wav on audio CDs.
|
||
|
||
First case: you have a CD-writer and a separate CD-ROM drive. By
|
||
issuing the command
|
||
|
||
|
||
|
||
cdrecord -v dev=0,6,0 speed=2 -isosize /dev/scd0
|
||
|
||
|
||
|
||
you read the data stream from the CD-ROM drive attached as /dev/scd0
|
||
and write it directly to the CD-writer.
|
||
|
||
Second case: you don't have a separate CD-ROM drive. In this case you
|
||
have to use the CD-writer to read out the CD-ROM first:
|
||
|
||
|
||
|
||
dd if=/dev/scd0 of=cdimage
|
||
|
||
|
||
|
||
This command reads the content of the CD-ROM from the device /dev/scd0
|
||
and writes it into the file "cdimage". The contents of this file are
|
||
equivalent to what mkisofs produces, so you can proceed as described
|
||
earlier in this document (which is to take the file cdimage as input
|
||
for cdrecord). If you want to see a progress-meter and other fancy
|
||
stuff, then you can also use Jörg Schillings sdd.
|
||
|
||
In case you run into errors, then install a recent version of
|
||
cdrecord, which ships a tool called "readcd" (found under misc/). It
|
||
gives you the same result as dd, but reads sectors on the CD-ROM
|
||
several times in case of errors.
|
||
|
||
|
||
|
||
4.8. Can Linux read Joliet CD-ROMs? (obsolete answer)
|
||
|
||
Yes. Newer Kernels (2.0.36 and the upcoming 2.2) have built-in support
|
||
for the joliet format. Remember you have to use both options in your
|
||
/etc/fstab: the keywords iso9660 and joliet (later is really an
|
||
extension). For more details, see <http://www-
|
||
plateau.cs.berkeley.edu/people/chaffee/joliet.html>.
|
||
|
||
|
||
|
||
4.9. How do I read/mount CD-ROMs with the CD-writer?
|
||
|
||
Just as you do with regular CD-ROM drives. No tricks at all. Note that
|
||
you have to use the scd devices (SCSI CD-ROM) to mount CD-ROMs for
|
||
reading, even if you have an ATAPI CD-ROM (remember you configured
|
||
your ATAPI devices to act like SCSI). Example entry for /etc/fstab:
|
||
|
||
|
||
|
||
/dev/scd0 /cdrom iso9660 ro,user,noauto 0 0
|
||
|
||
|
||
|
||
4.10. How to put even more data on the CD-R?
|
||
|
||
Use bzip2 instead of any other compressor like gzip or pkzip. It will
|
||
save you up to 30% of disk-space for larger (>100kb) files. You can
|
||
download it from
|
||
|
||
|
||
|
||
<http://www.muraroa.demon.co.uk/>
|
||
|
||
|
||
|
||
Instead of writing a true audio CD, you can optionally convert your
|
||
WAV audio files into MP3 audio files and store them on a ISO-9660
|
||
filesystem as regular files. Usually MPEG III give you a compression
|
||
of 1:10. Of course, most CD-players are not able to read files... this
|
||
is the drawback. On the other hand, why not running the music for your
|
||
next party from hard disk? 18 Gbytes are enough for 3000-4000 titles.
|
||
:-)
|
||
|
||
A software MPEG III-encoder is available from
|
||
|
||
<http://www.sulaco.org/mp3/>
|
||
|
||
|
||
|
||
A MPEG III-player is available from
|
||
|
||
<http://www.mpg123.org/>
|
||
|
||
|
||
|
||
For recorded speech, you may want to try to reduce its size using
|
||
shorten or "GSM lossy speech compression":
|
||
|
||
|
||
<ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/>
|
||
|
||
|
||
<http://kbs.cs.tu-berlin.de/~jutta/toast.html>
|
||
|
||
|
||
|
||
4.11. How to make bootable CD-ROMs?
|
||
|
||
You must have an 1.44 MB bootable floppy-disk. Create an exact image
|
||
of this floppy-disk by issuing the command
|
||
|
||
|
||
|
||
dd if=/dev/fd0 of=boot.img bs=18k
|
||
|
||
|
||
|
||
Place this floppy image into the directory holding the collection of
|
||
your files (or into a subdirectory of it, just as you like). Tell
|
||
mkisofs about this file with the option '-b' and also use '-c'. For
|
||
details read the file README.eltorito in the mkisofs-distribution.
|
||
|
||
An interesting application for a custom bootable CD is as a virus safe
|
||
DOS- or Windows-system. It saves you the money for the hard disks (if
|
||
you have a network and use samba to put the user-data on a file
|
||
server). The German computer magazine c't has a article about this
|
||
issue in the issue 11/99, page 206 ( <http://www.heise.de/>).
|
||
|
||
Some details about the bootable RedHat CD-ROM is available from
|
||
<http://members.bellatlantic.net/~smithrod/rhjol-technical.html>.
|
||
|
||
|
||
|
||
4.12. How to make CD-ROMs writable like a hard disk?
|
||
|
||
There is an overlay filesystem available for Linux, which is mounted
|
||
over the CD-ROM and intercepts all writing operations. New and
|
||
modified files are stored elsewhere, but for the user it looks like
|
||
the CD-ROM is modified. For more information, see
|
||
<http://home.att.net/~artnaseef/ovlfs/ovlfs.html>.
|
||
|
||
If that is not enough for your needs: wait for the UDF-filesystem to
|
||
be supported by Linux or help developing it (see
|
||
<http://trylinux.com/projects/udf/>. At the moment only reading of CD-
|
||
media is supported due to a limitation in the CD-ROM drivers of the
|
||
Linux kernel.
|
||
|
||
|
||
|
||
4.13. Is it possible to use several writers at once?
|
||
|
||
Yes. It is reported to work with at least 3 writers at full speed (6x)
|
||
on a PC with 233 Mhz and a single SCSI bus running kernel 2.2.12. You
|
||
need either a recent version of the Linux kernel (2.2.12 or higher).
|
||
|
||
|
||
|
||
4.14. What about Solaris, *BSD, AIX, HP-UX, etc.? Is my variant of
|
||
Unix supported?
|
||
|
||
Only chapter 2 is Linux-specific. You can apply chapter 3 and 4 even
|
||
if you run another family of operating systems than Linux. Please see
|
||
the files README.NetBSD, README.aix, README.hpux, README.next,
|
||
README.solaris, README.sunos, README.vms or README.xxxBSD from the
|
||
cdrecord-distribution.
|
||
|
||
Probably yes. Compile cdrecord for your platform and issue the command
|
||
"cdrecord -scanbus". Read the README.* file for your Unix distributed
|
||
with the sources of cdrecord. However, not all variants of Unix can
|
||
read the RockRidge, Joliet or HFS extensions on your newly written CD-
|
||
R.
|
||
|
||
|
||
|
||
4.15. Where to store the local configuration permanently?
|
||
|
||
|
||
You have two options. Either you use the built-in configuration file
|
||
for cdrecord, or you use a shell wrapper like the one shown below.
|
||
This shell script reads a configuration file, which lists the options
|
||
and parameters for cdrecord line by line. The names are exactly the
|
||
same as on the command line, but without the leading dash. Comments
|
||
are allowed. Example:
|
||
|
||
|
||
|
||
# be verbose
|
||
v
|
||
# set the speed of the writer
|
||
speed=2
|
||
# the device-coordinates in the form BUS,ID,LUN
|
||
dev=0,6,0
|
||
|
||
|
||
|
||
The configuration files for the wrapper belong into /etc/cdrecord/ and
|
||
must be referenced on the command line. Example: if you want to refer
|
||
to the configuration /etc/cdrecord/mywriter.cfg, then you can issue
|
||
the command "cdrecord.sh mywriter.cfg -audio track1...". Everything
|
||
after mywrite.cfg is passed to cdrecord.
|
||
|
||
|
||
|
||
#! /bin/bash
|
||
|
||
CFGDIR="/etc/cdrecord"
|
||
|
||
CFG="$1"
|
||
shift
|
||
ARGS_LEFT="$@"
|
||
|
||
if [ ! -f "$CFGDIR/$CFG" ]
|
||
then
|
||
echo "Configuration file $CFGDIR/$CFG not found. Exiting."
|
||
exit 1
|
||
fi
|
||
|
||
while read LINE
|
||
do
|
||
case $LINE in
|
||
\#*|"") continue;;
|
||
esac
|
||
old_IFS="$IFS"
|
||
IFS="$IFS="
|
||
set -- $LINE
|
||
IFS="$old_IFS"
|
||
O_NAME="$1"
|
||
O_VALUE=""
|
||
while shift
|
||
do
|
||
case $1 in
|
||
"") continue;;
|
||
esac
|
||
O_VALUE="$1"
|
||
done
|
||
|
||
if [ -z "$O_VALUE" ]
|
||
then
|
||
O_CDRECORD="$O_CDRECORD -$O_NAME "
|
||
continue
|
||
fi
|
||
O_CDRECORD="$O_CDRECORD $O_NAME=$O_VALUE "
|
||
|
||
done < "$CFGDIR/$CFG"
|
||
|
||
set -x #DEBUG
|
||
exec cdrecord $O_CDRECORD $ARGS_LEFT
|
||
echo "Execution of cdrecord failed."
|
||
|
||
|
||
|
||
4.16. How can the CD-info be retrieved?
|
||
|
||
Somewhere behind the first 32 k on the CD, a block with information
|
||
about the CD is located. You can extract the information with the
|
||
following shell script:
|
||
|
||
|
||
|
||
#! /bin/bash
|
||
|
||
RD=/dev/cdrom
|
||
for i in 32768,7 32776,32 32808,32 32958,128 33086,128 33214,128 \
|
||
33342,128 33470,32 33581,16 33598,16 33615,16 33632,16
|
||
do
|
||
old_IFS="$IFS"
|
||
IFS=","
|
||
set -- $i
|
||
IFS="$old_IFS"
|
||
OFFSET=$1
|
||
LENGTH=$2
|
||
echo "*`dd if=$RD bs=1 skip=$OFFSET count=$LENGTH 2> /dev/null`#"
|
||
done
|
||
|
||
|
||
|
||
4.17. What about re-writing
|
||
|
||
When overwriting CD-RW media, specify the parameter blank=fast to
|
||
cdrecord. That's all. See the man page of cdrecord for details about
|
||
this parameter.
|
||
|
||
|
||
4.18. How to create a multi-session CD?
|
||
|
||
First of all, the image for a multi-session CD must be formatted using
|
||
the ISO-9660 filesystem using RockRidge-extensions. And you must use
|
||
the option -multi for cdrecord as long as you want to add further
|
||
sessions. So at least for the first session, you must specify the
|
||
option -multi.
|
||
|
||
Some CD-writers have no support for CD-ROM XA mode 2 or for session-
|
||
at-once (SAO), so you need to specify the switch -data for cdrecord on
|
||
the command line.
|
||
|
||
The images for the second and subsequent sessions are a little bit
|
||
more complicated to generate. Mkisofs must know where the free space
|
||
on the CD-R begins. That information can be gathered by using the
|
||
option -msinfo on cdrecord (see example below).
|
||
|
||
|
||
|
||
shell> NEXT_TRACK=`cdrecord -msinfo dev=0,6,0`
|
||
shell> echo $NEXT_TRACK
|
||
shell> mkisofs -R -o cd_image2 -C $NEXT_TRACK -M /dev/scd5
|
||
private_collection/ \
|
||
|
||
|
||
|
||
For more information, please read the file README.multi, which is
|
||
distributed with cdrecord.
|
||
|
||
|
||
4.19. Should I use the SCSI adapter shipped with the writer?
|
||
|
||
Reported via email: Most CD-writer docs say to use a separate SCSI bus
|
||
if going from a CD-ROM to a CD-writer and I have seen this myself in
|
||
the following scenario:
|
||
|
||
Adaptec 2940UW SCSI card, a 24x SCSI CD-ROM and a 4x4 SCSI CD-writer.
|
||
When I got the CD-writer, it came with its own ISA SCSI card which
|
||
could only handle one device. I figured I'd toss this and use my
|
||
better adaptec card for all the stuff. I noticed it was quite prone to
|
||
buffer under-runs when recording at the 4x speed, but as soon as I
|
||
tried hooking up the ISA SCSI card, it had no problems. I know 2 other
|
||
people (both using adaptec 2940 cards), who have experienced exactely
|
||
the same symptoms, usually when writing from a CD-ROM to a CD-
|
||
recorder. Though I've never experienced the problem when going from a
|
||
hard drive to a CD-writer on the same bus.
|
||
|
||
|
||
|
||
4.20. How to burn over the network?
|
||
|
||
Usally a file transfer with FTP is fast enough to feed a CD-recorder
|
||
at quadruple (4x) speed even over a 10 Mbit ethernet. You can couple
|
||
the ftp-client and cdrecord via a fifo. First create a fifo named
|
||
cdimage:
|
||
|
||
|
||
|
||
mkfifo cdimage
|
||
ftp other.host.org
|
||
get cdimg cdimage
|
||
|
||
|
||
|
||
Then treat cdimage like a regular file, i.e. issue the following
|
||
command:
|
||
|
||
|
||
|
||
cdrecord dev=0,1,0 speed=2 cdimage
|
||
|
||
|
||
|
||
Your ftp-client will notice when cdrecord wants to read from the file
|
||
and will start transfering data from the ftp-host.
|
||
|
||
|
||
|
||
4.21. I hear a crack or click sound at the end of the each track.
|
||
|
||
You have to use disk-at-once mode (DAO) to get rid of the cracks.
|
||
|
||
|
||
|
||
4.22. being root? How can this be set up so that a user can burn CDs
|
||
instead of always
|
||
|
||
You can add the setuid-bit to the cdrecord-executable. However, this
|
||
might be a security risk. Just setting the permissions on the device
|
||
files does not help as cdrecord issues privileged commands via the
|
||
SCSI generic interfaces.
|
||
|
||
|
||
|
||
which cdrecord
|
||
chown root.root /usr/bin/cdrecord
|
||
chmod 4111 /usr/bin/cdrecord
|
||
|
||
|
||
|
||
4.23. Where do I get the "Yellow Book" and "Orange Book" standards?
|
||
|
||
You get the printed specifications from Philips and they are
|
||
expensive.
|
||
|
||
|
||
|
||
4.24. I've been searching for information on burning Video-CD under
|
||
Linux.
|
||
|
||
|
||
Here you can find utilities for creation of MPEG videos and Video-CDs:
|
||
<http://www.mainconcept.de/>
|
||
|
||
<http://www.johanni.de/munich-vision/vcd/>
|
||
|
||
Political correct people mention the Berkeley-tools and other YUV-
|
||
strategies. Their usage is complicated, takes much time and harddisk-
|
||
space and gives you no audio track. I recommend to use conceptually
|
||
higher level applications like the ones mentioned above.
|
||
|
||
|
||
|
||
4.25. Which is easier to set up, IDE or SCSI?
|
||
|
||
SCSI CD-writers are slightly easier to set up with regard to CD-
|
||
writing under Linux. And they are reported to have better error
|
||
recovery. If that outweights the higher price cannot be answered
|
||
generally.
|
||
|
||
|
||
|
||
4.26. How can I overburn a CD using {cdrecord,cdrdao}?
|
||
|
||
Overburning a CD-R is nothing special. It is at your own risk that the
|
||
data fits on the CD-ROM, but thats all. There are no 650 Mbytes-limits
|
||
in the software under Linux.
|
||
|
||
|
||
|
||
4.27. What will cdrecord do when it stops getting input from the
|
||
pipe?
|
||
|
||
It will finish writing. So you can just couple your favourite backup
|
||
tool with cdrecord using a pipe, like in "bru -size=640m -f - |
|
||
cdrecord dev=0,1,0 speed=2 -". You have to take special care within
|
||
the backup utility if the backup spans multiple CD-Rs.
|
||
|
||
|
||
|
||
4.28. Is there an equivalent to ignore=hdX for the ide-scsi emula
|
||
tion?
|
||
|
||
I know of no way, but anybody is welcome to add this feature to the
|
||
Linux kernel sources.
|
||
|
||
|
||
|
||
4.29. How many times can you re-use CD-RW before they become faulty?
|
||
|
||
Good question.
|
||
|
||
|
||
|
||
4.30. Which format to choose for a platform independant CD-ROM?
|
||
|
||
A CD-ROM to be read by all systems can only use the plain ISO 9660
|
||
format. That means stupid 8+3 filenames from old MS-DOS and without
|
||
any HFS (Macintosh), Joliet (Microsoft) or RockRidge (newer Unices)
|
||
extensions. There is no extension for longer filenames, which could
|
||
be read by all operating systems.
|
||
|
||
|
||
|
||
4.31. Is multi-session for audio tracks possible?
|
||
|
||
Audio CD-players are only able to deal with audio tracks stored in the
|
||
first session. In other words, you cannot add audio tracks using
|
||
subsequent sessions. However, writing data tracks into the second
|
||
session effectively hides them from audio CD-players. This way you
|
||
prevent having an silent track on your mixed mode CD (audio and data
|
||
mixed).
|
||
|
||
|
||
|
||
4.32. What hardware resources do I need? Is an old Pentium enough?
|
||
|
||
An answer depends on your wishes. If you need a reason to buy a new
|
||
computer, here is the answer from the international association of
|
||
computer manufactures: Whatever you plan to do, you need a processor
|
||
with 800 Mhz. Because it won't fit into your existing motherboard, you
|
||
need a new motherboard, too. The easiest solution is just to buy the
|
||
typical complete offer as seen in advertisements on TV. Please ignore
|
||
the rest of this section.
|
||
|
||
Now the case if you just want a rational answer: I wrote several CD-
|
||
ROMs sucessfully using a "486" with 66 Mhz. Although MS does not
|
||
consider them to be PCs anymore, but recommends to run a CE version on
|
||
them (seen on the CeBIT), Linux runs even fine on the predecessors of
|
||
the Pentium and is even able to write CDs. You can easily find out if
|
||
the power of your hardware is sufficient for writing CD-ROMs by
|
||
testing it out. Just add the command line switch -dummy when executing
|
||
cdrecord and the laser will be kept off. Watch the burning process.
|
||
|
||
|
||
|
||
5. Troubleshooting
|
||
|
||
Always remember, that you can still use corrupt CD-ROMs as coasters.
|
||
:-)
|
||
|
||
|
||
5.1. It doesn't work: under Linux
|
||
|
||
Please check first, that the writer works under the software it is
|
||
shipped with (=under another operating system). Concretely:
|
||
|
||
|
||
· Does the controller recognize the writer as a SCSI device?
|
||
|
||
· Does the driver software recognize the writer?
|
||
|
||
· Is it possible to make a CD using the accompanied software?
|
||
|
||
If "it doesn't even work" with the accompanied software you have a
|
||
hardware conflict or defective hardware. If it works and you use
|
||
loadlin to boot Linux, then that is a problem with loadlin. Loadlin
|
||
makes a warm-boot with most of the hardware already initialized and
|
||
that can confuse the Linux kernel.
|
||
|
||
5.2. Error-message: No read access for 'dev=0,6,0'.
|
||
|
||
Under Linux, some versions of the C-library are incompatible (buggy),
|
||
so that an application linked against one version will not work with
|
||
another. An example for an error triggered by pre-compiled binaries is
|
||
the following:
|
||
|
||
|
||
|
||
[root@Blue /dev]# cdrecord -eject dev=0,6,0
|
||
cdrecord: No such file or directory. No read access for 'dev=0,6,0'.
|
||
|
||
|
||
|
||
The solution is to install a newer C-library.
|
||
|
||
|
||
|
||
5.3. It doesn't work: under DOS and friends
|
||
|
||
Try to use Linux. Installation and configuration of SCSI drivers for
|
||
DOS is the hell. Linux is too complicated? Ha!
|
||
|
||
|
||
|
||
5.4. SCSI errors during the burning phase
|
||
|
||
Most likely those errors are caused by
|
||
|
||
|
||
· missing dis-/reconnect feature on the SCSI bus
|
||
|
||
· insufficiently cooled hardware
|
||
|
||
· defective hardware (should be detected by 5.1.)
|
||
|
||
Under various circumstances SCSI devices dis- and reconnect themselves
|
||
(electronically) from the SCSI bus. If this feature is not available
|
||
(check controller and kernel parameters) some writers run into trouble
|
||
during burning or fixating the CD-R.
|
||
|
||
Especially the NCR 53c7,8xx SCSI driver has the feature disabled by
|
||
default, so you might want to check it first:
|
||
|
||
|
||
|
||
NCR53c7,8xx SCSI support [N/y/m/?] y
|
||
always negotiate synchronous transfers [N/y/?] (NEW) n
|
||
allow FAST-SCSI [10MHz] [N/y/?] (NEW) y
|
||
allow DISCONNECT [N/y/?] (NEW) y
|
||
|
||
|
||
|
||
5.5. If cdrecord reports medium errors in the form of "Sense Key: ...
|
||
Medium Error, Segment ...", then the medium is not empty. If you use
|
||
CD-RW, then try to switch from blank=fast to the more reliable
|
||
blank=all. If you use CD-R only, then make sure the CD-R has never
|
||
seen a CD-writer before or try out discs from another manufacturer.
|
||
Medium errors
|
||
|
||
|
||
|
||
5.6. Newly written CDs are not readable on some players.
|
||
|
||
Some people reported problems with playing their self-written CDs.
|
||
Very old audio players or car devices can have problems with CD-Rs,
|
||
although this is extremly rare. Quite frequent are problems with CD-
|
||
RWs, because they don't reflect the laserlight as good as CD-Rs and
|
||
factory-pressed "silver" discs.
|
||
|
||
|
||
|
||
5.7. My scanner stopped working after I loaded the ide-scsi module
|
||
|
||
|
||
By inserting the SCSI-hostadaptor emulation, the naming of SCSI
|
||
devices changes. If your scanner was /dev/sg0 before, it might be
|
||
/dev/sg1 or /dev/sg2 now. Prominent kernel developers did not think
|
||
this is completely braindead and denied solutions like devfs in the
|
||
past. But that is another story, the first thing you should try is to
|
||
set the link /dev/scanner to point to the actual generic SCSI device.
|
||
Examples:
|
||
|
||
|
||
|
||
cd /dev
|
||
ls -l scanner # shows current setting
|
||
ln -sf sg2 scanner
|
||
# test the scanner
|
||
ln -sf sg1 scanner
|
||
# test the scanner
|
||
# and so on
|
||
|
||
|
||
|
||
Application developers should carefully think about support for this
|
||
dangerous and error prone naming scheme. Please consider at least to
|
||
use intermediate solutions like the SCSI coordinates used by cdrecord.
|
||
|
||
|
||
|
||
6. Credits
|
||
|
||
|
||
Many thanks go to the readers of this HOWTO, who contributed actively
|
||
to its contents. As I don't had access to a CD-writer myself for
|
||
several years, reports about real live setups and experience have
|
||
always been of great value to me.
|
||
|
||
|
||
Doug Alcorn <doug@lathi.net>
|
||
helped to improve the handling of newer kernels
|
||
|
||
|
||
Kalle Andersson <kalle@sslug.dk>
|
||
How to write audio CDs directly from MP3.
|
||
|
||
|
||
Alan Brown <alan@manawatu.net.nz>
|
||
|
||
Rick Cochran <rick@msc.cornell.edu>
|
||
hint about dis-/reconnect disabled by default in the ncr driver
|
||
|
||
|
||
Robert Doolittle <bob.doolittle@sun.com>
|
||
good arguments for dropping cdwrite from the HOWTO
|
||
Markus Dickebohm <m.dickebohm@uni-koeln.de>
|
||
|
||
Thomas Duffy <tduffy@sgi.com>
|
||
major cleanup of syntax and spelling
|
||
|
||
|
||
Dave Forrest <dforrest@virginia.edu>
|
||
fixed adapter spelling problems
|
||
|
||
|
||
Jos van Geffen <jos@tnj.phys.tue.nl>
|
||
noted the problem in 4.9.
|
||
|
||
|
||
Bernhard Gubanka <beg@ipp-garching.mpg.de>
|
||
noticed the need of a recent version of mount to utilize the
|
||
loopback device
|
||
|
||
|
||
Stephen Harris <sweh@mpn.com>
|
||
contributed hint about writing audio CDs
|
||
|
||
|
||
Janne Himanka <shem@oyt.oulu.fi>
|
||
pointer to kernel patch to read Joliet CD-ROMs
|
||
|
||
|
||
Stephan Noy <stnoy@mi.uni-koeln.de>
|
||
information and experience about writing audio CDs
|
||
|
||
|
||
Don H. Olive <don@andromeda.campbellsvil.edu>
|
||
URL of the mkhybrid tool
|
||
|
||
|
||
Jesper Pedersen <jews@imada.ou.dk>
|
||
|
||
Pierre Pfister <pp@uplift.fr>
|
||
helped to develop the recipe on 1:1 copies.
|
||
|
||
|
||
Daniel A. Quist <dquist@cs.nmt.edu>
|
||
information about IDE CD-R and newer kernel versions
|
||
|
||
|
||
Martti.Rahkila@hut.fi
|
||
Reported problem with pre-initialized writers when booting via
|
||
loadlin.
|
||
|
||
|
||
Dale Scheetz <dwarf@polaris.net>
|
||
|
||
Joerg Schilling <schilling@fokus.gmd.de>
|
||
many informations about cdrecord
|
||
|
||
|
||
Martin Schulze <joey@Infodrom.North.DE>
|
||
gave information about the cdwrite-mailinglist
|
||
|
||
|
||
Gerald C Snyder <gcsnyd@loop.com>
|
||
tested writing of an ext2 CD-ROM (see 4.4)
|
||
|
||
|
||
Art Stone <stone@math.ubc.ca>
|
||
had the idea to put non-ISO-9660 filesystems on a CD
|
||
The Sheepy One <kero@escape.com>
|
||
suggested using defective CD-ROMs as coasters for drinks
|
||
|
||
|
||
Erwin Zoer <ezoer@wxs.nl>
|
||
|
||
Futhermore, I would like to thank the following people for reporting
|
||
spelling mistakes: Bartosz Maruszewski
|
||
<B.Maruszewski@zsmeie.torun.pl>, Alessandro Rubini <rubini@prosa.it>,
|
||
Ian Stirling <ian@opus131.com>, Brian H. Toby.
|
||
|
||
End of the Linux CD-Writing HOWTO. (You can stop reading here.)
|
||
|
||
|
||
|