Complete.Org: Mailing Lists: Archives: linux-help: October 2003:
[linux-help] Re: Burning music CD's
Home

[linux-help] Re: Burning music CD's

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: linux-help@xxxxxxxxx
Subject: [linux-help] Re: Burning music CD's
From: John Goerzen <jgoerzen@xxxxxxxxxxxx>
Date: Wed, 8 Oct 2003 10:28:51 -0500
Reply-to: linux-help@xxxxxxxxx

On Tue, Oct 07, 2003 at 11:24:21PM -0500, Jonathan Hall wrote:
> CDRWs are actually entirely multi-session.  The cdrw is used like a
> standard data disk and may get written  to once or many times before it
> is finalized, including the ability to edit files stored there, which
> cannot be done on a CDR disk.
> 
> That is NOT true.

You are correct that CDRWs are not entirely multi-session -- and, in fact,
rarely are.  But:

> There is _some_ software (for Windows, and probably Mac.. never seen any for
> *nix) that _emulates_ a R/W disk with a CD-RW or CD-R.  But it does it with
> proprietary drivers that don't use a standard ISO-9660 filesystem at all.

That is mostly incorrect.

What you describe is a standard mode for most modern CD burners, and is in
fact well standardized, and supported on Linux as Packet Writing.  See 
http://packet-cd.sourceforge.net/ for details on the Linux support.

I actually use packet writing in Linux on two platforms (my Alpha desktop
and an i386 laptop) with CD-RWs and can confirm that it works well.
Technically, packet writing also can be used on CD-Rs, but the Linux drivers
do not yet support it and the filesytem implementation would be rather
difficult, I'd think.

This message may explain it more:

http://mail.gnu.org/archive/html/dvdrtools-users/2002-10/msg00039.html

Packet written CDs normally use the UDF filesystem, the same filesystem
normally used for DVDs.  It is not ISO9660, but it *is* a standard and is
supported by all the major platforms (Windows, Mac, Linux).  UDF is
generally put forth as the successor to ISO9660.

> What it does, in essence, is, the first time you write data to the disk, it
> will write a track of data, leaving the session open (to be added to later).
> When you are ready to add more data (or change the existing data), it writes
> a new track after the first one, reflecting the changes you've made.  It
> will continue to do this until the disk is full.

This isn't how packet writing works.  To set up a packet writing device in
Linux, the low-level actions basically blank the CD-RW in the normal way and
then create one big track.  Packet writing is truly random access, however,
due to some hardware implications, you do wind up with less space on your CD
than you would if you burned it in disc-at-once or track-at-once mode.

To set up packet writing in Linux, you need the packet writing tools and a
small kernel patch.  (The tools are part of Debian, on other distros, YMMV).

Then, you might do something like this (assuming an already initialized
disc):

pktsetup /dev/pktcdvd0 /dev/sr0

mke2fs /dev/pktcdvd0
mount /dev/pktcdvd0 /mnt
cp /home/foo.* /mnt
umount /dev/pktcdvd0
pktsetup -d /dev/pktcdvd0

Now, this will put the ext2 filesystem on it, so it can only be read by
another Linux machine.  cdrwtool is normally used to initialize a packet
writing CD, and can lay down a UDF filesystem for you.  The pktsetup manpage
shows this example:

              cdrwtool -d /dev/sr0 -q
              pktsetup /dev/pktcdvd0 /dev/sr0

              mount -t udf /dev/pktcdvd0 /mnt
               ...
              umount /dev/pktcdvd0
              pktsetup -d /dev/pktcdvd0

A CD used thusly will be compatible with other operating systems, and likely
even with their packet writing implementations, if any.

> Some implimentations of this method may automatically erase and rewrite the
> CD once it's full (or maybe even every time something is changed), but it is
> STILL a CD-ROM (Remember, ROM stands for Read ONLY Memory).

Well, a CD-RW is not ROM :-)

-- John
-- This is the linux-help@xxxxxxxxx list.  To unsubscribe,
visit http://www.complete.org/cgi-bin/listargate-aclug.cgi


[Prev in Thread] Current Thread [Next in Thread]