264 lines
11 KiB
Plaintext
264 lines
11 KiB
Plaintext
|
------------------------------------------------------------------------------
|
||
|
libburnia-project.org scdbackup.sourceforge.net/xorriso_eng.html
|
||
|
------------------------------------------------------------------------------
|
||
|
xorriso. By Thomas Schmitt <scdbackup@gmx.net>
|
||
|
Integrated sub project of libburnia-project.org but also published via:
|
||
|
http://scdbackup.sourceforge.net/xorriso_eng.html
|
||
|
http://scdbackup.sourceforge.net/xorriso-0.3.9.tar.gz
|
||
|
Copyright (C) 2006-2009 Thomas Schmitt, provided under GPL version 2.
|
||
|
------------------------------------------------------------------------------
|
||
|
|
||
|
|
||
|
xorriso is a program which maps file objects from POSIX compliant
|
||
|
filesystems into Rock Ridge enhanced ISO 9660 filesystems and allows
|
||
|
session-wise manipulation of such filesystems. It can load the management
|
||
|
information of existing ISO images and it writes the session results to
|
||
|
optical media or to filesystem objects.
|
||
|
Vice versa xorriso is able to restore file objects from ISO 9660 filesystems.
|
||
|
|
||
|
A special property of xorriso is that it needs neither an external ISO 9660
|
||
|
formatter program nor an external burn program for CD or DVD but rather
|
||
|
incorporates the libraries of libburnia-project.org .
|
||
|
|
||
|
Currently it is fully supported on Linux with kernels >= 2.4 and on
|
||
|
FreeBSD versions with ATAPI/CAM support enabled in the kernel, see atapicam(4).
|
||
|
On other X/Open compliant systems there will only be POSIX i/o with disk
|
||
|
file objects, but no direct MMC operation on CD/DVD/BD drives.
|
||
|
|
||
|
By using this software you agree to the disclaimer at the end of this text:
|
||
|
"... without even the implied warranty ..."
|
||
|
|
||
|
|
||
|
Compilation, First Glimpse, Installation
|
||
|
|
||
|
The most simple way to get xorriso from source code is the xorriso standalone
|
||
|
tarball.
|
||
|
|
||
|
Prerequisites:
|
||
|
The tarball contains anything that is needed except the following system
|
||
|
components:
|
||
|
libc, libpthread
|
||
|
plus on FreeBSD: libiconv, libcam
|
||
|
Optional at compile time are:
|
||
|
libreadline and the readline-dev headers make dialog mode more convenient.
|
||
|
on Linux: libacl and libacl-devel allow getting and setting ACLs.
|
||
|
zlib and zlib-devel allow zisofs compression.
|
||
|
If they were present at compile time, then the optional libraries have to
|
||
|
be present at runtime, too.
|
||
|
|
||
|
Obtain xorriso-0.3.9.tar.gz, take it to a directory of your choice and do:
|
||
|
|
||
|
tar xzf xorriso-0.3.9.tar.gz
|
||
|
cd xorriso-0.3.9
|
||
|
|
||
|
Within that directory execute:
|
||
|
|
||
|
./configure --prefix=/usr
|
||
|
make
|
||
|
|
||
|
This will produce a binary named
|
||
|
./xorriso/xorriso
|
||
|
|
||
|
which you may strip to reduce it in size
|
||
|
strip ./xorriso/xorriso
|
||
|
|
||
|
You may copy or move it to a directory where it can be found by the shell,
|
||
|
or you may execute xorriso at the place where it was built,
|
||
|
or you may execute as superuser:
|
||
|
make install
|
||
|
|
||
|
For general concepts, options and usage examples see
|
||
|
man 1 xorriso
|
||
|
|
||
|
This man page is part of the tarball as
|
||
|
xorriso/xorriso.1
|
||
|
You may get a first glimpse by
|
||
|
man ./xorriso/xorriso.1
|
||
|
|
||
|
It gets installed with "make install" but may also be placed manually in the
|
||
|
./man1 directory below one of the directories mentioned in environment
|
||
|
variable $MANPATH.
|
||
|
|
||
|
The installation creates several alias links pointing to the xorriso binary:
|
||
|
xorrisofs starts xorriso with -as mkisofs emulation already enabled
|
||
|
xorrecord starts xorriso with -as cdrecord emulation already enabled
|
||
|
osirrox starts with -osirrox image-to-disk copying already enabled
|
||
|
|
||
|
If you want to avoid dependecy on libreadline although the libreadline
|
||
|
development package is installed, then rather build xorriso by:
|
||
|
./configure --prefix=/usr --disable-libreadline
|
||
|
make clean ; make
|
||
|
Never omit the "make clean" command after switching libreadline enabling.
|
||
|
Other deliberate dependency reduction options of ./configure are:
|
||
|
--disable-libacl avoid use of ACL functions like acl_to_text()
|
||
|
--disable-xattr avoid use of xattr functions like listxattr()
|
||
|
--disable-zlib avoid use of zlib functions like compress2()
|
||
|
|
||
|
xorriso allows to use external processes as file content filters. This is
|
||
|
a potential security risk which may be avoided by ./configure option
|
||
|
--disable-external-filters
|
||
|
|
||
|
By default the filter feature is disabled if effective user id and real
|
||
|
user id differ. This ban can be lifted by
|
||
|
--enable-external-filters-setuid
|
||
|
|
||
|
If you want xorriso to report a "Build timestamp" with its option -version:
|
||
|
make buildstamped
|
||
|
|
||
|
|
||
|
Drives and Disk File Objects
|
||
|
|
||
|
The user of xorriso needs rw-permission for the CD burner device.
|
||
|
A list of rw-accessible drives can be obtained by
|
||
|
|
||
|
xorriso -devices
|
||
|
|
||
|
CD devices which offer no rw-permission are invisible to normal users.
|
||
|
The superuser should be able to see any usable drive and then set the
|
||
|
permissions as needed.
|
||
|
|
||
|
The output of xorriso -devices might look like
|
||
|
|
||
|
0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'
|
||
|
1 -dev '/dev/hda' rwrw-- : 'HL-DT-ST' 'DVD-ROM GDR8162B'
|
||
|
|
||
|
Full and insecure enabling of both for everybody would look like
|
||
|
chmod a+rw /dev/sr0 /dev/hda
|
||
|
This is equivalent to the traditional setup chmod a+x,u+s cdrecord.
|
||
|
|
||
|
I strongly discourage to run xorriso with setuid root or via sudo !
|
||
|
It is not checked for the necessary degree of hacker safety.
|
||
|
|
||
|
Consider to put all authorized users into group "floppy", to chgrp the
|
||
|
device file to that group and to disallow w-access to others.
|
||
|
|
||
|
|
||
|
A possible source of problems are hald or other automounters.
|
||
|
If you can spot a process "hald-addon-storage" with the address of
|
||
|
your desired drive, then consider to kill it.
|
||
|
|
||
|
If you cannot get rid of the automounter that easily, try whether it helps
|
||
|
to always load the drive tray manually before starting a write run of
|
||
|
xorriso. Wait until the drive light is off.
|
||
|
Better try to unmount an eventually mounted media before a write run.
|
||
|
|
||
|
|
||
|
Besides true optical drives, xorriso can also address disk files as input or
|
||
|
output drives. By default paths to files under /dev are accepted only if the
|
||
|
device represents a real optical drive. Other device files may be addressed
|
||
|
by prepending "stdio:" to the path.
|
||
|
Like:
|
||
|
xorriso -dev stdio:/dev/sdb ...more arguments...
|
||
|
This rule may be changed by xorriso option -drive_class.
|
||
|
Prefix "mmc:" causes a path to be accepted only if it is a real optical drive
|
||
|
which is accessible by generic SCSI/MMC commands.
|
||
|
|
||
|
|
||
|
Testing
|
||
|
|
||
|
We are quite sure that libisofs produces accurate representations of the disk
|
||
|
files. This opinion is founded on a lot of test burns and checks by a little
|
||
|
test program which compares files from the mounted image with the orignals
|
||
|
on disk. It uses the normal POSIX filesystem calls, i.e. no libburnia stuff.
|
||
|
|
||
|
This program is not installed systemwide but stays in the installation
|
||
|
directory of the xorriso tarball as test/compare_file . Usually it is
|
||
|
run as -exec payload of a find command. It demands at least three arguments:
|
||
|
The path of the first file to compare, the prefix1 to be cut off from path
|
||
|
and the prefix2 which gets prepended afterwards to obtain the path of the
|
||
|
second file to compare.
|
||
|
As further argument there can be -no_ctime which suppresses the comparison
|
||
|
of ctime date stamps.
|
||
|
The exit value is 0 if no difference was detected, non-0 else.
|
||
|
|
||
|
Example: After
|
||
|
xorriso ... -pathspecs on -add /=/original/dir -- -commit_eject all
|
||
|
mount /media/dvd
|
||
|
cd test
|
||
|
compare tree /media/dvd with tree /original/dir :
|
||
|
find /original/dir -exec ./compare_file '{}' /original/dir /media/dvd ';' \
|
||
|
| less
|
||
|
and vice versa:
|
||
|
find /media/dvd -exec ./compare_file '{}' /media/dvd /original/dir ';' \
|
||
|
| less
|
||
|
|
||
|
|
||
|
File Formats
|
||
|
|
||
|
Currently there is only one file format peculiar to xorriso : sector maps
|
||
|
which describe the valid and invalid blocks on a media or a disk copy of
|
||
|
a media. xorriso creates and reads these file with its option -check_media.
|
||
|
|
||
|
The file begins with 32 bytes of cleartext of which the last one is a
|
||
|
newline character. The first 25 say "xorriso sector bitmap v2 ", the
|
||
|
remaining six characters give the size of the info text as decimal number.
|
||
|
This number of bytes follows the first 32 and will not be interpreted
|
||
|
by xorriso. They are rather to inform a human reader about the media type
|
||
|
and its track layout.
|
||
|
After the info text there are two 4 byte signed integers, most significant
|
||
|
byte first. The first one, N, gives the number of bits in the following bitmap
|
||
|
and the second number S gives the number of 2 KiB blocks governed by a single
|
||
|
bit in the map. Then come the bits in form of 8-bit bytes.
|
||
|
Data block M is covered by bit B=M/S in the map, bit number B is stored in
|
||
|
byte B/8 as bit B%8. A valid readable data block has its bit set to 1.
|
||
|
|
||
|
|
||
|
libisoburn
|
||
|
|
||
|
xorriso is based on libisofs which does ISO 9600 filesystem aspects and on
|
||
|
libburn which does the input and output aspects. Parts of this foundation
|
||
|
are accessed via libisoburn, which is closely related to xorriso.
|
||
|
|
||
|
libisoburn provides two services:
|
||
|
- Encapsulation of coordination between libisofs and libburn.
|
||
|
- Emulation of ISO 9660 multi-session on overwriteable media
|
||
|
or random access files.
|
||
|
|
||
|
The sourcecode of all three libraries is included in the xorriso standalone
|
||
|
tarball. It is compiled with xorriso and linked statically.
|
||
|
But you may as well get and install releases of libburn and libisofs, in order
|
||
|
to be able to install a release of libisoburn which produces libisoburn.so.1
|
||
|
and a matching dynamically linked xorriso binary.
|
||
|
This binary is leaner but depends on properly installed libraries of suitable
|
||
|
revision.
|
||
|
|
||
|
Dynamic library and compile time header requirements for libisoburn-0.3.8 :
|
||
|
- libburn.so.4 , version libburn-0.6.4 or higher
|
||
|
- libisofs.so.6 , version libisofs-0.6.18 or higher
|
||
|
libisoburn and xorriso will not start with libraries which are older than their
|
||
|
headers seen at compile time. So compile in the oldest possible installation
|
||
|
setup unless you have reason to enforce a newer bug fix level.
|
||
|
|
||
|
Standalone xorriso has less runtime dependencies and can be moved more freely.
|
||
|
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
|
||
|
This program is free software; you can redistribute it and/or modify
|
||
|
it under the terms of the GNU General Public License version 2 as
|
||
|
published by the Free Software Foundation.
|
||
|
|
||
|
This program is distributed in the hope that it will be useful,
|
||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
GNU General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU General Public License
|
||
|
along with this program; if not, write to the Free Software
|
||
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||
|
|
||
|
------------------------------------------------------------------------------
|
||
|
Based on and sub project of:
|
||
|
libburnia-project.org
|
||
|
By Mario Danic <mario.danic@gmail.com>,
|
||
|
Vreixo Formoso <metalpain2002@yahoo.es>
|
||
|
Thomas Schmitt <scdbackup@gmx.net>
|
||
|
Copyright (C) 2006-2009 Mario Danic, Vreixo Formoso, Thomas Schmitt.
|
||
|
|
||
|
libburnia-project.org is inspired by and in other components still containing
|
||
|
parts of old
|
||
|
Libburn. By Derek Foreman <derek@signalmarketing.com> and
|
||
|
Ben Jansens <xor@orodu.net>
|
||
|
Copyright (C) 2002-2006 Derek Foreman and Ben Jansens
|
||
|
|