XORRECORD(1) User Commands XORRECORD(1)
NAME
xorrecord - Emulation of CD/DVD/BD program cdrecord by program
xorriso
SYNOPSIS
xorrecord [ options ] dev=device [track_source]
DESCRIPTION
xorrecord writes preformatted data to CD, DVD, and BD media.
It understands some options of program cdrecord from cdrtools by
Joerg Schilling. Its implementation is part of program xorriso which
shares no source code with cdrtools, but rather makes use of libburn
for communicating with the drive.
Another, more complete cdrecord emulator is program
cdrskin which
uses the same burn functions as
xorrecord, but is able to burn audio
CDs and to handle CD-TEXT.
MMC, Session, Track, Media types: MMC is a standard out of the SCSI family which defines the
interaction between computers and optical drives. Since more than a
decade all CD, DVD, or BD recorders obey this standard regardless by
what bus cabling they are attached to the computer. libburn relies on
this standard compliance and on the capability of the operating
system to perform SCSI transactions over the particular bus cabling.
A
Session is a data region on an optical disc which usually gets
written in a single sweep. It contains at least one
Track which is a
contiguous string of readable blocks.
xorrecord produces a single
session with a single data track which consists of blocks with 2048
bytes each. It chooses the write mode automatically according to
media type, medium state, and option -multi.
On CD media there are other track types, like audio, and particular
write modes like TAO and SAO. CD and DVD- media can put more than one
track into a session. Some of these features can be addressed by
program
cdrskin.
MMC describes several recordable
media types which roughly form two
families.
Sequentially recordable media are CD-R, CD-RW, DVD-R, DVD-R DL,
DVD-RW, DVD+R, DVD+R DL, BD-R. Except DVD-R DL they can store more
than one session if there is still unwritten space and if the
previous session was written with option
-multi. CD-RW and DVD-RW can
be blanked in order to be re-usable from scratch.
Overwritable media are DVD-RAM, DVD+RW, formatted DVD-RW, BD-RE.
They offer a single session with a single track for random access
writing. There is no need to blank overwritable media before re-use.
DVD-RW media are sold in sequentially recordable state but can be
formatted once to become overwritable. See options
blank=format_overwrite and
blank=deformat.
If ISO 9660 filesystems are to be stored on overwritable media, then
it is possible to emulate multiple sessions, by using option
--grow_overwriteable_iso. In this case, the need for blanking before
re-use is emulated too.
Drive preparation and addressing: The drives, CD, DVD, or BD burners, are accessed via file addresses
which are specific to libburn and the operating system. Those
addresses get listed by a run of
xorrecord --devices or
xorriso -device_links.
On GNU/Linux, FreeBSD, and NetBSD, the user needs rw-permission for
the device file. On Solaris, the user needs r-permission and
privilege "sys_devices", which is usually gained by running
xorrecord via command pfexec.
These permissions or privileges are needed already for listing a
drive. So it might be necessary to get the overview as superuser or
via pfexec.
xorrecord does not perform cdrecord option -scanbus and does not
accept the addresses of form Bus,Target,Lun which are told by
-scanbus. If support for these addresses is necessary, consider to
use program cdrskin.
It is possible to let
xorrecord work on emulated drives. Their
addresses begin by prefix "stdio:" followed by a file address. The
emulated media behavior depends on the file type. See man xorriso
for details.
If standard output is chosen as emulated drive, then all program
result texts, which usually appear on standard output, will get
redirected to standard error.
Relation to program xorriso: xorrecord is actually a command mode of program
xorriso, which gets
entered either by xorriso command "-as cdrecord" or by starting the
program by one of the names "xorrecord", "cdrecord", "wodim", or
"cdrskin".
This command mode can be left by argument "--" which leads to generic
xorriso command mode. See
man xorriso for its description. Other
than in xorriso command mode, the sequence of the cdrecord emulation
options does not matter. All pending actions get performed in a
fixed sequence before the program run ends or before cdrecord
emulation ends.
OPTIONS
Addressing the drive: --devices Print the list of accessible CD, DVD, or BD drives to standard
output. Drives might be inaccessible if the user lacks of
permissions to use them or if the drive is in use by another
program.
Each accessible drive is shown by a line like:
0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'
The libburn address of this drive is '/dev/sr0'. 'TSSTcorp' is
the name of the vendor (in this case: Toshiba Samsung Storage
Technologies Corporation), 'CDDVDW SH-S203B' is the model name
(in this case: a DVD burner).
Afterwards end emulation without performing any further drive
operation.
dev=drive_address Set the libburn address of the drive to be used.
E.g. on GNU/Linux: dev=/dev/sr0
E.g. on FreeBSD: dev=/dev/cd0
E.g. on NetBSD: dev=/dev/rcd0d
E.g. on Solaris: dev=/dev/rdsk/c2t2d0s2
See also above "Drive preparation and addressing".
The medium in the drive should not be mounted or be otherwise
in use.
This option will only get into effect if a track source, a
blank= option, or a drive inquiry option is given. Else it
will lead to a SORRY event and normally cause a non-zero exit
value.
Inquiring drive and media: -inq Print to standard output: vendor, model name, and firmware
revision of the drive.
-checkdrive Print unconditionally that the drive supports burnfree, SAO,
and TAO. Also print the output of option -inq.
-atip Print the output of -checkdrive, the most capable profile of
the medium in the drive, the list of profiles which are
supported by the drive, whether it is erasable (i.e. can be
blanked), the media manufacturer, and the medium product name.
Profiles are usage models, which are often tied to a
particular media type (e.g. CD-RW), but may also apply to a
family of media. E.g. profile CD-ROM applies to all CD media
which contain data.
-toc Print a table of content of the medium in the drive. The
output is not compatible to cdrecord option -toc, but rather
the one of
xorriso command -toc. It lists the address,
vendor, model name, and firmware revision of the drive.
About the medium it tells product name and manufacturer,
whether there is already content written, and if so, whether
the medium is closed or appendable. Appendable media can take
another session. The amount of readable and writable data is
told. If there are sessions, then their start block address
and size is reported. If a session contains an ISO 9660
filesystem, then its Volume Id is reported. If the medium is
writable, then the next writable block address is reported.
If not option
--grow_overwriteable_iso is given or no ISO 9660
file system is present on the medium, then overwritable media
are reported as being blank. This is due to the fact that they
can be written from scratch without further preparation, and
that MMC does not distinguish between data written by the most
previous burn run and older data which have not been
overwritten by that burn run. Consequently, these media are
reported with 0 readable blocks, although all their writable
blocks normally are readable, too.
-msinfo Print the argument text for option -C of programs mkisofs,
genisoimage, or xorrisofs. It consists of two numbers
separated by a comma.
The first number tells the first block of the first track of
the last recorded session. This is also the address used by
default when operating systems mount a medium with e.g. ISO
9660 filesystem.
The second number tells the next writable address, where
xorrecord will begin to write the next session.
This option is only valid for written, appendable media. In
all other cases it will yield no output text but will abort
the program with non-zero exit value.
Settings for the burn run: A burn run requires exactly one track source address argument, which
tells from where to read the data which shall be put into the
upcoming session. The medium state must be either blank or
appendable.
Track source may be "-" for standard input or the address of a
readable file of any type except directories. Nearly all media types
accept a track source with unpredictable byte count, like standard
input or named pipes. Nevertheless, DVD-R DL and DVD-RW blanked by
mode deformat_quickest demand exact in-advance reservation of the
track size, so that they either need to be read from a source of
predictable length, or need to be accompanied by option
tsize= or by
option
-isosize.
Several options expect a size value as argument. A number with a
trailing letter "b" or without a trailing letter is a plain byte
count. Other trailing letters cause multiplication of the given
number by a scaling factor:
"k" or "K" = 1024 , "m" or "M" = 1024k , "g" or "G" = 1024m , "s" or
"S" = 2048
E.g. tsize=234567s means a size of 234567 * 2048 = 480393216 bytes.
blank=mode Blank a CD-RW or DVD-RW to make it re-usable from scratch.
Format a DVD-RW, DVD+RW, DVD-RAM, BD-R, or BD-RE if not yet
formatted.
This operation normally makes any recorded data on the medium
unreadable. It is combinable with burning in the same run of
xorrecord, or it may be performed without a track source,
leaving the medium empty.
The mode given with blank= selects the particular behavior:
as_needed
Try to make the media ready for writing from scratch. If it
needs formatting, then format it. If it is not blank, then try
to apply blank=fast. It is a reason to abort if the medium
cannot assume thoroughly writeable state, e.g. if it is a
non-blank write-once.
This leaves unformatted DVD-RW in unformatted blank state. To
format DVD-RW use blank=format_overwrite. Blank unformatted
BD-R stay unformatted.
(Note: blank=as_needed is not an original cdrecord option.)
all
Blank an entire CD-RW or an unformatted DVD-RW.
fast
Minimally blank an entire CD-RW or blank an unformatted
DVD-RW.
deformat
Like blank=all but with the additional ability to blank
overwritable DVD-RW. This will destroy their formatting and
make them sequentially recordable.
(Note: blank=deformat is not an original cdrecord options)
deformat_quickest
Like blank=deformat but blanking DVD-RW only minimally. This
is faster than full blanking but yields media incapable of
writing tracks of unpredictable size. Multi-session will not
be possible either.
(Note: blank=deformat_quickest is not an original cdrecord
option.)
format_overwrite
Format a DVD-RW to "Restricted Overwrite". The user should
bring some patience.
Format unformatted DVD+RW, BD-RE or blank BD-R to their
default size. It is not mandatory to do this with DVD+RW and
BD-RE media, because they will get formatted automatically on
the first write attempt.
BD-R media may be written in unformatted state. This keeps
disabled the replacement of bad blocks and enables full
nominal write speed. Once BD-R media are written, they cannot
be formatted any more.
For re-formatting already formatted media or for formatting
with non-default size, use program
xorriso with command
-format.
(Note: blank=format_overwrite is not an original cdrecord
options)
help
Print a short overview of blank modes to standard error
output.
Afterwards end emulation without performing any drive
operation.
-multi This option keeps CD, unformatted DVD-R[W], DVD+R, or BD-R
appendable after the current session has been written.
Without it the disc gets closed and may not be written any
more - unless it is a -RW and gets blanked, which causes loss
of its content.
This option cannot be applied to DVD-R DL or to DVD-RW which
were blanked by mode "deformat_quickest". Option
--multi_if_possible may automatically recognize and handle
this situation.
In order to have all filesystem content accessible, the
eventual ISO-9660 filesystem of a follow-up session needs to
be prepared in a special way by the filesystem formatter
program. mkisofs, genisoimage, and xorrisofs expect particular
info about the situation which can be retrieved by
xorrecord option -msinfo.
With overwritable DVD or BD media, -multi cannot mark the end
of the session. So when adding a new session, this end has to
be determined from the payload. Currently only ISO-9660
filesystems can be used that way. See option
--grow_overwriteable_iso.
-dummy Try to perform the drive operations without actually affecting
the inserted media. There is no warranty that this will work
with a particular combination of drive and media. Blanking is
prevented reliably, though. To avoid inadverted real burning,
-dummy refuses burn runs on anything but CD-R[W], DVD-R[W], or
emulated stdio-drives.
-waiti Wait until input data is available at stdin or EOF occurs at
stdin. Only then begin to access any drives.
One should use this if xorrisofs is working at the end of a
pipe where the feeder process reads from the drive before it
starts writing its output into xorrisofs. Example:
xorrisofs ... -C 0,12800 -M /dev/sr0 ... | \
xorrecord dev=/dev/sr0 ... -waiti -
This option works even if standard input is not the track
source. If no process is piping in, then the Enter key of your
terminal will act as trigger for
xorrecord. Note that this
input line will not be consumed by cdrskin if standard input
is not the track source. It will end up as shell command,
usually.
tsize=size Announce the exact size of the track source. This is necessary
with DVD-R DL media and with quickest blanked DVD-RW, if the
size cannot be determined in advance from the track source.
E.g. if it is standard input or a named pipe.
If the track source does not deliver the predicted amount of
bytes, the remainder of the track is padded with zeros. This
is not considered an error. If on the other hand the track
source delivers more than the announced bytes then the track
on media gets truncated to the predicted size and xorrecord
exits with non-zero value.
-isosize Try to obtain the track size from the content of the track
source. This works only if the track source bears an ISO 9660
filesystem. Any other track source content will cause the
burn run to abort.
If the track source is not a regular file or block device,
then this option will work only if the program's fifo size is
at least 64k. See option fs=.
padsize=size Add the given amount of trailing zeros to the upcoming track.
This feature can be disabled by size 0. Default is 300 kB in
order to work around a problem with GNU/Linux which often
fails to read the last few blocks of a CD track which was
written in write mode TAO. TAO is used by
xorrecord if the
track size cannot be predicted or if the CD medium is not
blank but appendable.
-nopad The same as padsize=0.
-pad The same as padsize=15s. This was once sufficient with older
GNU/Linux kernels. Meanwhile one should at least use
padsize=128k, if not padsize=300k.
-data Explicitly announce that the track source shall be recorded as
data track, and not as audio track. This option has no effect
with
xorrecord, because there is no support for other track
formats anyway.
-tao Explicitly demand that write type TAO shall be used for CD, or
Incremental for DVD-R. Normally the program will choose the
write type according to the given medium state, option -multi,
and track source. Demanding it explicitly prevents the start
of a write run, if it is not appropriate to the situation.
-sao Explicitly demand that write type SAO shall be used for CD, or
DAO for DVD-R. This might prevent the write run, if it is not
appropriate to the situation.
-dao Alias of -sao.
fs=size Set the size of the program fifo buffer to the given value
rather than the default of 4m.
The fifo buffers a temporary surplus of track source data in
order to provide the drive with a steady stream during times
of temporary lack of track source supply.
Other than cdrecord, xorrecord enables drive buffer underrun
protection by default and does not wait with writing until the
fifo is full for a first time. On very old CD drives and slow
computers, this might cause aborted burn runs. In this case,
consider to use program
cdrskin for CD burning. DVD and BD
drives tolerate buffer underrun without problems.
The larger the fifo, the longer periods of poor source supply
can be compensated. But a large fifo can deprive the operating
system of read cache for better filesystem performance.
speed=value Set the write speed. Default is 0 = maximum speed. Speed can
be given in media type dependent x-speed numbers or as a
desired throughput per second in MMC compliant kB (= 1000) or
MB (= 1000 kB). Media x-speed factor can be set explicitly by
appending "c" for CD, "d" for DVD, "b" for BD. "x" is
optional.
Example speeds:
706k = 706kB/s = 4c = 4xCD
5540k = 5540kB/s = 4d = 4xDVD
If there is no hint about the speed unit attached, then the
medium in the drive will decide. Default unit is CD, 1x =
176,400 raw bytes/second. With DVD, 1x = 1,385,000
bytes/second. With BD, 1x = 4,495,625 bytes/second.
MMC drives usually activate their own idea of speed and take
the speed value given by the burn program only as a hint for
their own decision.
minbuf=percentage Equivalent to:
modesty_on_drive=<percentage>
-immed Equivalent to:
modesty_on_drive=75
In cdrecord, this also controls use of the Immed bit. But
xorriso uses Immed where possible and appropriate, unless it
is disabled by option use_immed_bit=off .
-eject Eject the drive tray after alll other work is done.
Program version and verbosity: -version Print to standard output a line beginning by
"Cdrecord 2.01-Emulation Copyright"
and further lines which report the version of xorriso and its
supporting libraries. They also state the license under which
the program is provided, and disclaim any warranty, to the
extent permitted by law.
Afterwards end emulation without performing any drive
operation.
-v Increase program verbosity by one level. There are four
verbosity levels from nearly silent to debugging verbosity.
The both highest levels can be enabled by repeated -v or by
-vv or by -vvv.
-V Log SCSI commands and drive replies to standard error. This
might be of interest if
xorrecord and a particular drive or
medium do not cooperate as expected, or if you just want to
know how libburn interacts with the drive. To understand this
extremely verbose log, one needs to read SCSI specs SPC, SBC,
and MMC.
Please do not add such a log to a bug report on the first
hand, unless you want to point out a particular deviation from
said specs, or if you get asked for this log by a maintainer
of
xorrecord who feels in charge for your bug report.
-help Print a sparse list of program options to standard error and
declare not to be cdrecord.
Afterwards end emulation without performing any drive
operation.
Options not compatible to cdrecord: --no_rc Only if used as first command line argument this option
prevents reading and interpretation of startup files. See
section FILES below.
--drive_not_exclusive This option disables the use of device file locking mechanisms
when acquiring the drive. On GNU/Linux the locking is done by
open(O_EXCL), on FreeBSD by flock(LOCK_EX).
Be aware that it can cause problems if you use a drive which
is mounted, or opened by some other process, or guarded by
/dev/pktcdvd*. Make sure that other users of the drive do not
cause drive activities while a xorrecord burn run is going on.
drive_scsi_dev_family=sr|scd|sg|default GNU/Linux specific:
By default, cdrskin tries to map Linux drive addresses to
/dev/sr* before they get opened for operating the drive. This
coordinates well with other use cases of optical drives, like
mount(8). But since year 2010 all /dev/sr* share a global lock
which allows only one drive to process an SCSI command while
all others have to wait for its completion. This yields awful
throughput if more than one drive is writing or reading
simultaneously.
The global lock is not applied to device files /dev/sg* and
also not with the system calls
read(2),
write(2). But
ioctl(SG_IO) is affected, which is needed to perform the SCSI
commands for optical burning.
So for simultaneous burn runs on modern GNU/Linux it is
advisable to use drive_scsi_dev_family="sg". The drive
addresses may then well be given as /dev/sr* but will
nevertheless get used as /dev/sg*.
--grow_overwriteable_iso Enable emulation of multi-session writing on overwritable
media which contain an ISO 9660 filesystem. This emulation is
learned from growisofs -M but adapted to the usage model of
xorrecord -msinfo
xorrisofs -C -M | xorrecord -waiti -multi -
for sequential media.
--grow_overwriteable_iso does not hamper the use of true
multi-session media. I.e. it is possible to use the same
xorrecord options with both kinds of media and to achieve
similar results if ISO 9660 filesystem images are to be
written. This option implies option -isosize and therefore
demands that the track source is a ISO 9660 filesystem image.
With overwritable media and no option blank=fast|all present
it expands an eventual ISO 9660 filesystem on media. It is
assumed that this image's inner size description points to the
end of the valuable data. Overwritable media with a
recognizable ISO 9660 size will be regarded as appendable
rather than as blank. I.e. options -msinfo and -toc will work.
-toc will always show a single session with its size
increasing with every added ISO 9660 image.
--multi_if_possible Apply option -multi if the medium is suitable. Not suitable
are DVD-R DL and DVD-RW, which were blanked with mode
"deformat_quickest".
Not all drives correctly recognize such fast-blanked DVD-RW
which need "on". If there is well founded suspicion that a
burn run failed due to -multi, then this causes a re-try
without -multi.
stream_recording="on"|"off"|number Mode "on" requests that compliance to the desired speed
setting is preferred over management of write errors. With
DVD-RAM and BD this can bring effective write speed near to
the nominal write speed of the media. But it will also
disable the automatic use of replacement blocks if write
errors occur. It might as well be disliked or ignored by the
drive.
If a number is given, then error management stays enabled for
all byte addresses below that number. Any number below 16s is
the same as "off".
dvd_obs="default"|"32k"|"64k" Linux specific: Set the number of bytes to be transmitted with
each write operation to DVD or BD media. Tracks get padded up
to the next multiple of this write size. A number of 64 KB may
improve throughput with bus systems which show latency
problems. The default depends on media type, option
stream_recording=, and on compile time options.
modesty_on_drive=parameter[:parameters] Control whether the drive buffer shall be kept from getting
completely filled. Parameter "on" (or "1") keeps the program
from trying to write to the burner drive while its buffer is
in danger to be filled over a given limit. If this filling is
exceeded then the program will wait until the filling reaches
a given low percentage value.
This can ease the load on operating system and drive
controller and thus help with achieving better input bandwidth
if disk and burner are not on independent controllers (like
hda and hdb). It may also help with simultaneous burns on
different burners with Linux kernels like 3.16, if one has
reason not to fix the problem by drive_scsi_dev_family="sg".
On the other hand it increases the risk of buffer underflow
and thus reduced write speed.
Some burners are not suitable because they report buffer fill
with granularity too coarse in size or time, or expect their
buffer to be filled to the top before they go to full speed.
Parameters "off" or "0" disable this feature.
The threshold for beginning to wait is given by parameter
"max_percent=". Parameter "min_percent=" defines the
threshold for resuming transmission. Percentages are
permissible in the range of 25 to 100. Numbers in this range
without a prepended name are interpreted as "on:min_percent=".
E.g.: modesty_on_drive=75
The optimal values depend on the buffer behavior of the drive.
Parameter "timeout_sec=" defines after which time of
unsuccessful waiting the modesty shall be disabled because it
does not work.
Parameter "min_usec=" defines the initial sleeping period in
microseconds. If the drive buffer appears to be too full for
sending more data, the program will wait the given time and
inquire the buffer fill state again. If repeated inquiry
shows not enough free space, the sleep time will slowly be
increased to what parameter "max_usec=" defines.
Parameters, which are not mentioned with a modesty_on_drive=
option, stay unchanged. Default is:
modesty_on_drive=off:min_percent=90:max_percent=95:
timeout_sec=120:min_usec=5000:max_usec=25000
use_immed_bit="on"|"off"|"default" Control whether several long lasting SCSI commands shall be
executed with the Immed bit, which makes the commands end
early while the drive operation is still going on. xorriso
then inquires progress indication until the drive reports to
be ready again. If this feature is turned off, then blanking
and formatting will show no progress indication.
It may depend on the operating system whether -use_immed_bit
is set to "off" by default.
write_start_address=value Set the block address on overwritable media where to start
writing the track. With DVD+RW, DVD-RAM or BD-RE, byte_offset
must be aligned to 2 kiB blocks, but better is 32 kiB on DVD
and 64 kiB on BD. With formatted DVD-RW 32 kiB alignment is
mandatory.
Other media are not suitable for this option.
stdio_sync="on"|"off"|number Set the number of bytes after which to force output to
emulated stdio: drives. This forcing keeps the memory from
being clogged with lots of pending data for slow devices.
Default "on" is the same as "16m". Forced output can be
disabled by "off".
EXAMPLES
Overview of examples: Get an overview of drives and their addresses
Get info about a particular drive or loaded media
Prepare CD-RW or DVD-RW for re-use, BD-R for bad block handling
Format DVD-RW to avoid need for blanking before re-use
De-format DVD-RW to make it capable of multi-session again
Write a single ISO 9660 filesystem image
Write multiple ISO 9660 sessions
Write ISO 9660 session on-the-fly
Write compressed afio archive on-the-fly
Get an overview of drives and their addresses: $ xorrecord --devices
Get info about a particular drive and loaded media: $ xorrecord dev=/dev/sr0 -atip -toc --grow_overwriteable_iso
Prepare CD-RW or DVD-RW for re-use: $ xorrecord -v dev=/dev/sr0 blank=as_needed -eject
Format DVD-RW to avoid need for blanking before re-use: $ xorrecord -v dev=/dev/sr0 blank=format_overwrite -eject
This command may also be used to format BD-R media before first use,
in order to enable handling of write errors. Several hundred MB of
spare blocks will be reserved and write runs on such media will
perform with less than half nominal speed.
De-format DVD-RW to make it capable of multi-session again: $ xorrecord -v dev=/dev/sr0 blank=deformat
Write a single ISO 9660 filesystem image: $ xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
blank=as_needed -eject padsize=300k my_image.iso
Write multiple ISO 9660 sessions: This is possible with all media except minimally blanked DVD-RW and
DVD-R DL, which cannot do multi-session.
The first session is written like in the previous example, except
that option -multi is used. It will contain the files of hard disk
directory ./tree1 under the ISO 9660 directory /dir1:
$ xorrisofs -o image_1.iso -J -graft-points /dir1=./tree1
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
-multi --grow_overwriteable_iso \
blank=as_needed -eject padsize=300k image_1.iso
For the second session xorrisofs needs to know the -msinfo numbers of
the medium. Further it will read data from the medium by using the
system's read-only CD-ROM driver.
Many systems do not take notice of xorrecord's write activities. It
is necessary to force their attention by ejecting and reloading the
drive tray. Therefore above run uses option -eject.
Get the -msinfo numbers (and properly reload the tray if it has a
motor) by:
$ m=$(xorrecord dev=/dev/sr0 -msinfo)
Offer a victim to any problem caused by obtrusive demons after tray
loading:
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
Use the numbers with xorrisofs to add ./tree2 to the image as /dir2:
$ xorrisofs -M /dev/sr0 -C $m -o image_2.iso \
-J -graft-points /dir2=./tree2
Now burn the new session onto the same medium. This time without
blanking:
$ xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
-multi --grow_overwriteable_iso \
-eject padsize=300k image_2.iso
Operating systems which mount this medium will read the superblock of
the second session and show both directories /dir1 and /dir2.
Write ISO 9660 session on-the-fly: It is possible to combine the run of
xorrisofs and
xorrecord in a
pipeline without storing the ISO 9660 image as file on hard disk.
The piped run is more vulnerable to the problem that some systems
have not enough patience with automatic tray loading and that demons
may interfere with a first CD-ROM driver read attempt from a freshly
loaded medium. It is advised to load the tray manually or via a
separate run of xorriso with a subsequent run of dd.
Again, xorriso has the patience and dd is a dispensable victim for
demons.
$ m=$(xorrecord dev=/dev/sr0 -msinfo)
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
$ xorrisofs -M /dev/sr0 -C $m \
-J -graft-points /dir2=./tree2 \
| xorrecord -v dev=/dev/sr0 speed=12 fs=8m \
-waiti -multi --grow_overwriteable_iso \
-eject padsize=300k -
This is also the main use case of program
xorriso itself, where the
run would need no system workarounds and simply look like:
$ xorriso -dev /dev/sr0 -joliet on -speed 12 -fs 8m \
-map ./tree2 /dir2 -commit_eject all
Write compressed afio archive on-the-fly: This is possible with all media except minimally blanked DVD-RW and
DVD-R DL. Since the compressed output stream is of very variable
speed, a larger fifo is advised. Nevertheless, this example is not
suitable for very old CD drives which have no underrun protection and
thus would abort the burn run on temporary data shortage.
$ find . | afio -oZ - | \
xorrecord -v dev=/dev/sr0 speed=12 fs=64m \
-multi padsize=300k -
afio archives do not contain references to absolute data block
addresses. So they need no special precautions for multi-session. One
may get the session start addresses by option -toc, and then use dd
option skip= to begin reading at one of those addresses. E.g. for
listing its content:
$ dd if=/dev/sr0 bs=2048 skip=64046 | afio -tvZ -
afio will know when the end of the archive is reached.
FILES
Startup files: If not --no_rc is given as the first argument then
xorrecord attempts
on startup to read and execute lines from the following files:
/etc/default/xorriso
/etc/opt/xorriso/rc
/etc/xorriso/xorriso.conf
$HOME/.xorrisorc
The files are read in the sequence given here, but none of them is
required to exist. The lines are not interpreted as
xorrecord options
but as generic
xorriso commands. See man xorriso.
SEE ALSO
For generic xorriso command mode
xorriso(1) Formatting track sources for xorrecord:
xorrisofs(1), mkisofs(8), genisoimage(8), afio(1), star(1) Other programs which burn sessions to optical media
growisofs(1), cdrecord(1), wodim(1), cdrskin(1)BUGS
To report bugs, request help, or suggest enhancements for
xorriso,
please send electronic mail to the public list <bug-xorriso@gnu.org>.
If more privacy is desired, mail to <scdbackup@gmx.net>.
Please describe what you expect
xorriso to do, the program arguments
or dialog commands by which you tried to achieve it, the messages of
xorriso, and the undesirable outcome of your program run.
Expect to get asked more questions before solutions can be proposed.
AUTHOR
Thomas Schmitt <scdbackup@gmx.net>
for libburnia-project.org
COPYRIGHT
Copyright (c) 2011 - 2021 Thomas Schmitt
Permission is granted to distribute this text freely. It shall only
be modified in sync with the technical properties of xorriso. If you
make use of the license to derive modified versions of xorriso then
you are entitled to modify this text under that same license.
CREDITS
xorriso is in part based on work by Vreixo Formoso who provides
libisofs together with Mario Danic who also leads the libburnia team.
Thanks to Andy Polyakov who invented emulated growing, to Derek
Foreman and Ben Jansens who once founded libburn.
Compliments towards Joerg Schilling whose cdrtools served me for ten
years.
Version 1.5.4, Jan 30, 2021 XORRECORD(1)