<HTML> <HEAD> <META NAME="description" CONTENT="xorriso, creates, loads, manipulates and writes ISO 9660 filesystem images with Rock Ridge extensions"> <META NAME="keywords" CONTENT="xorriso, libburn, libburnia, burn, CD, DVD, ISO, ISO 9660, RockRidge, Rock Ridge, Linux, FreeBSD, recording, burning, CD-R, CD-RW, DVD-R, DVD-RW, DVD+RW, DVD+R, DVD+R DL, BD-RE, BD-R, scdbackup"> <META NAME="robots" CONTENT="follow"> <TITLE>xorriso homepage english</TITLE> </HEAD> <BODY BGCOLOR="#F5DEB3" TEXT=#000000 LINK=#0000A0 VLINK=#800000> <FONT SIZE=+1> <CENTER> <P><H2> Homepage of </H2> <H1> xorriso </H1> <H2>ISO 9660 Rock Ridge Filesystem Manipulator for Linux and FreeBSD</H2> </CENTER> <P> <H2>Purpose:</H2> xorriso copies 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. <BR> Vice versa xorriso is able to restore file objects from ISO 9660 filesystems. </P> <P> <HR> <A HREF="#download">Direct hop to download links -></A> <P> <H2>Hardware requirements:</H2> A CD/DVD/BD recorder suitable for <A HREF="http://libburnia-project.org">http://libburnia-project.org</A> <BR> (SCSI , ATA , USB , or SATA writers compliant to standard MMC-3 for CD and to MMC-5 for DVD or BD). <BR> </P> <P> <H2>Software requirements :</H2> <DL> <DT>Linux with kernel 2.4 or higher, libc, libpthread :</DT> <DD>With kernel 2.4 an ATA drive has to be under ide-scsi emulation.</DD> <DD>With kernel 2.6 the drive should not be under ide-scsi.</DD> <DT>or FreeBSD, libc, libpthread :</DT> <DD>ATAPI/CAM support has to be enabled in the kernel, see atapicam(4).</DD> <DD>libcam has to be installed.</DD> <DD>libiconv has to be installed.</DD> <DT>or some other X/Open system, libc, libpthread :</DT> <DD> There will be no direct operation of optical drives, but only POSIX i/o with objects of the local filesystem. </DD> <DD> Might work with DVD-RAM, DVD+RW, BD-RE but rather not with CD, DVD-R, DVD+R, BD-R. </DD> </DL> <H3>Optional supporting software:</H2> <DL> <DT>libreadline and libreadline-dev</DT> <DD>eventually make dialog more convenient.</DD> <DT>libacl and libacl-devel</DT> <DD>eventually allow on Linux to get and set ACLs.</DD> <DT>zlib and zlib-devel</DT> <DD>eventually allow zisofs and gzip compression.</DD> </DL> </P> <P> This program has been tested on Linux, FreeBSD, and Solaris systems.<BR> For ports to other usable systems <A HREF="#contact">contact us</A>. </P> <HR> <P> <H2>Special features:</H2> <UL> <LI> ISO 9660 formatter and burner for CD, DVD, BD are fixely integrated. </LI> <LI> Operates on an existing ISO image or creates a new one. </LI> <LI> Copies files from filesystem into the ISO image and vice versa, with ACL and xattr. </LI> <LI> Changes file properties, renames or deletes file objects in the ISO image. </LI> <LI> Updates ISO subtrees incrementally to match given disk subtrees. </LI> <LI> File content may get zisofs or gzip compressed or filtered by external processes. </LI> <LI> Writes result as completely new image or as add-on session to optical media or filesystem objects. </LI> <LI> Can activate ISOLINUX boot images by El Torito boot record and by MBR. </LI> <LI> Can perform multi-session tasks as emulation of mkisofs and cdrecord. </LI> <LI> Can issue commands to mount older sessions on Linux or FreeBSD. </LI> <LI> Can check media for damages and copy readable blocks to disk. </LI> <LI> Scans for optical drives, blanks re-useable optical media, formats media. </LI> <LI> Suitable for: CD-R, CD-RW, DVD-R, DVD-RW, DVD+R, DVD+R DL, DVD+RW, DVD-RAM, BD-R, BD-RE. </LI> <LI> Reads its instructions from command line arguments, dialog, and batch files. </LI> <LI> Provides navigation commands for interactive ISO image manipulation. </LI> </UL> </P> <P> <H2>Command Examples:</H2> <DL> <DT>Get an overview of drives and their addresses</DT> <DD>#<KBD> xorriso -devices</KBD></DD> <DD><KBD>...</KBD></DD> <DD><KBD>0 -dev '/dev/sr0' rwrw-- : 'TSSTcorp' 'CDDVDW SH-S203B'</KBD></DD> <DD><KBD>1 -dev '/dev/scd1' rwrw-- : 'PHILIPS ' 'SPD3300L'</KBD></DD> <DD><KBD>2 -dev '/dev/hda' rwrw-- : 'HL-DT-ST' 'DVD-ROM GDR8162B'</KBD></DD> <DD><KBD>...</KBD></DD> <DT>Being superuser avoids permission problems with /dev/srN resp. /dev/hdX . </DT> <DT>Ordinary users should then get granted rw access to the /dev files as listed by option -devices.</DT> <DT> </DT> <DT>Options are either performed as program arguments or as dialog input. Some options have a parameter list of variable length. This list has to be terminated by word '--' or by the end of the input line. Option -add may accept pathspecs of form target=source as known from program mkisofs.</DT> <HR> <DT>Get info about a particular drive and loaded media:</DT> <DD>$<KBD> xorriso -indev /dev/sr0 -du / -- -toc 2>&1 | less</KBD></DD> <DT>Make re-usable media writable again, delete any ISO 9660 image, eventually prepare yet unused BD-RE:</DT> <DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed -eject all</KBD></DD> <DT> <HR> </DT> <DT>Write some directories into a new or existing ISO 9660 image:</DT> <DD>$<KBD> xorriso -dev /dev/sr0 -add /home/me/sounds /home/me/pictures </KBD></DD> <DT>Have a look at the result:</DT> <DD>$<KBD> xorriso -indev /dev/sr0 -du / -- -toc 2>&1 | less</KBD></DD> <DT> <HR> </DT> <DT>Create new ISO-9660 filesystem image, compose content, adjust permissions to make it publicly read-only, write it to media and immediately eject media without previously reloading the written image. </DT> <DD>$<KBD> cd /home/me</KBD></DD> <DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD> <DD><KBD> -map /home/me/sounds /sounds \</KBD></DD> <DD><KBD> -map /home/me/pictures /pictures \</KBD></DD> <DD><KBD> -rm_r /sounds/indecent '/pictures/*private*' -- \</KBD></DD> <DD><KBD> -cd / \</KBD></DD> <DD><KBD> -add pictures/private/horses* -- \</KBD></DD> <DD><KBD> -chmod_r a+r,a-w / -- \</KBD></DD> <DD><KBD> -find / -type d -exec chmod a+x -- \</KBD></DD> <DD><KBD> -volid SOUNDS_PICS_2008_01_16 \</KBD></DD> <DD><KBD> -commit_eject all</KBD></DD> <DT> <HR> </DT> <DT>Load the previous session from media, remove (i.e. hide) directory /sounds, rename /pictures/private/horses, add new directory trees /sounds and /movies, disallow any access for group and others. Finally write as additional session to media and eject:</DT> <DD>$<KBD> xorriso -dev /dev/sr0 \</KBD></DD> <DD><KBD> -rm_r /sounds -- \</KBD></DD> <DD><KBD> -mv /pictures/private/horses /horse_show -- \</KBD></DD> <DD><KBD> -map /home/me/prepared_for_dvd/sounds_dummy /sounds \</KBD></DD> <DD><KBD> -map /home/me/prepared_for_dvd/movies /movies \</KBD></DD> <DD><KBD> -chmod_r go-rwx / -- \</KBD></DD> <DD><KBD> -volid SOUNDS_PICS_2008_01_17 \</KBD></DD> <DD><KBD> -commit_eject all</KBD></DD> <DT> <HR> </DT> <DT>Merge the various sessions from old readable media into a single session on new writeable media, cleaning out all invalidated files and session overhead. Touch / in order to mark the image as worth to be written. <BR> Important: -indev and -outdev have to be different drives. </DT> <DD>$<KBD> xorriso -indev /dev/dvd \</KBD></DD> <DD><KBD> -alter_date a +0 / -- \</KBD></DD> <DD><KBD> -outdev /dev/sr0 -blank fast \</KBD></DD> <DD><KBD> -commit_eject all</KBD></DD> <DT> <HR> </DT> <DT>Dialog mode accepts one or more options per line. An option and all its arguments have to be given in one single line. Command -end stops the program run. It will write eventually pending changes to media, if that has not already been done by a previous -commit.</DT> <DD>$<KBD> xorriso -dialog on</KBD></DD> <DD><KBD>enter option and arguments :</KBD></DD> <DD><KBD><B>-dev /dev/sr0</B></KBD></DD> <DD><KBD>enter option and arguments :</KBD></DD> <DD><KBD><B>-map /home/me/prepared_for_dvd/sounds_dummy /sounds</B></KBD></DD> <DD><KBD>enter option and arguments :</KBD></DD> <DD><KBD><B>-map /home/me/prepared_for_dvd/movies /movies</B></KBD></DD> <DD>Available navigation commands: -cd, -ls, -du, -find</DD> <DD><KBD>enter option and arguments :</KBD></DD> <DD><KBD><B>-commit</B></KBD></DD> <DD>... perform further commands and finally do:</DD> <DD><KBD>enter option and arguments :</KBD></DD> <DD><KBD><B>-end</B></KBD></DD> <DT> <HR> </DT> <DT>The following command performs incremental backup. It can be run on blank media to create a copy of the mentioned disk directory trees, and it can be run on appendable media to perform a minimal set of change operations which update the old ISO copies to match the new disk trees. Older states can be retrieved by help of mount options like "sbsector=" or by help of xorriso option -mount. <BR> Eventual ACL or xattr will be recorded. Data reading will be avoided by accelerator option -disk_dev_ino. Only blank media or media with volume id "PROJECTS_MAIL_..." will be accepted. Files with names ending by ".o" or ".swp" are excluded by options -not_leaf. </DT> <DD>$<KBD> xorriso -acl on -xattr on -disk_dev_ino on \</KBD></DD> <DD><KBD> -assert_volid 'PROJECTS_MAIL_*' FATAL \</KBD></DD> <DD><KBD> -dev /dev/sr0 \</KBD></DD> <DD><KBD> -volid PROJECTS_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" \</KBD></DD> <DD><KBD> -not_leaf '*.o' -not_leaf '*.swp' \</KBD></DD> <DD><KBD> -update_r /home/thomas/open_source_projects /open_source_projects \</KBD></DD> <DD><KBD> -update_r /home/thomas/personal_mail /personal_mail \</KBD></DD> <DD><KBD> -commit -toc -eject all</KBD></DD> <DT> To apply zisofs compression to those data files which get newly copied from the local filesystem, perform immediately before -commit : <DD> <KBD> -find / -type f -lba_range -1 2000000000 -exec set_filter --zisofs -- \</KBD></DD> </DD> </DT> <DT> <HR> </DT> <DT> Operating systems usually mount the most recent session on media. xorriso can issue the appropriate mount commands for older sessions. First get an overview of the sessions on the media: </DT> <DD>$<KBD> xorriso -outdev /dev/sr0 -toc</KBD></DD> <PRE> TOC layout : Idx , sbsector , Size , Volume Id ISO session : 1 , 0 , 104719s , PROJECTS_MAIL_2008_08_10_231435 ISO session : 2 , 106928 , 6785s , PROJECTS_MAIL_2008_08_14_184548 ... ISO session : 76 , 820384 , 11035s , PROJECTS_MAIL_2009_01_04_191150 </PRE> <DT> Then become superuser and let xorriso mount the session of August 14, 2008 to directory /mnt: </DT> <DD>#<KBD> xorriso -osirrox on -mount /dev/sr0 volid '*_2008_08_14_*' /mnt </KBD></DD> <DT> To be later unmounted by: <KBD>umount /mnt</KBD> </DT> <DT> <HR> </DT> <DT> After the user has already created a suitable file tree on disk and copied the ISOLINUX files into subdirectory ./boot/isolinux of that tree, xorriso can burn an El Torito bootable media: </DT> <DD>$<KBD> xorriso -outdev /dev/sr0 -blank as_needed \</KBD></DD> <DD><KBD> -map /home/me/ISOLINUX_prepared_tree / \</KBD></DD> <DD><KBD> -boot_image isolinux dir=/boot/isolinux</KBD></DD> <DT> An additional MBR is generated if the file isolinux.bin is modern enough (syslinux version 3.72) and ready for "isohybrid". An MBR enables booting from hard disk or USB stick. <HR> </DT> <DT>ISO images may not only be stored on optical media but also in regular disk files or block devices for full multi-session operation. </DT> <DD>$<KBD> xorriso -dev /tmp/regular_file ...other.options...</DD> <DT> A default setting for safety reasons requires that files below /dev/ need prefix "stdio:" if they do not lead to MMC burner devices. Be cautious not to overwrite your hard disk instead of your USB stick: </DT> <DD>$<KBD> xorriso -dev stdio:/dev/sdb ...other.options...</DD> <DT>Other file types are suitable only for writing but not for reading:</DT> <DD>$<KBD> xorriso -outdev /tmp/named_pipe ...other.options...</DD> <DT>In batch mode it is possible to operate xorriso in a pipeline with an external consumer of the generated ISO image. Any message output will be redirected to stderr in this case.</DT> <DD>$<KBD> xorriso -outdev - ...other.options... | consumer</KBD></DD> <DT> <HR> </DT> <DT> Let xorriso serve underneath growisofs via its alias name "xorrisofs" which enables mkisofs emulation: </DT> <DD>$<KBD> export MKISOFS="xorrisofs"</KBD></DD> <DD>$<KBD> growisofs -Z /dev/dvd /some/files</KBD></DD> <DD>$<KBD> growisofs -M /dev/dvd /more/files</KBD></DD> <DT> One may switch from mkisofs emulation to xorriso's own command mode: </DT> <DD>$<KBD> growisofs -M /dev/dvd -- outdev - -update_r /my/files /files </KBD></DD> <DT> <HR> </DT> <DT>If for any reason the reading operating system mishandles the ISO image or some files in it, one may enable reverse operation of xorriso and copy files or trees to disk: <DD>$<KBD> xorriso -acl on -xattr on \</KBD></DD> <DD><KBD> -indev /dev/sr0 \</KBD></DD> <DD><KBD> -osirrox on \</KBD></DD> <DD><KBD> -cpx '/pictures/private/horses*/*buttercup*' \</KBD></DD> <DD><KBD> /home/her/buttercup_dir -- \</KBD> <DD><KBD> -extract /sounds /home/her/sounds_from_me</KBD></DD> </DD> <DT>Consider to enter dialog mode and use commands like <KBD>-cd , -du , -lsl , -find<KBD>. <DT> <HR> </DT> <DT>Get overview of the options:</DT> <DD>$<KBD> <A HREF="xorriso_help">xorriso -help</A></KBD></DD> <DT>Read the detailed manual page:</DT> <DD>$<KBD> <A HREF="man_1_xorriso.html">man xorriso</A></KBD></DD> </DL> </P> <HR> <A NAME="download"></A> <P> <DL> <DT><H3>Download as source code (see README):</H3></DT> <DD><A HREF="xorriso-0.3.8.pl00.tar.gz">xorriso-0.3.8.pl00.tar.gz</A> (1220 KB). </DD> </DL> </DD> </DL> <DL><DT>Documentation:</DT> <DD><A HREF="README_xorriso">README</A> about installation and drive setup</DD> <DD><A HREF="xorriso_help">xorriso -help</A> gives an overview of options</DD> <DD><A HREF="man_1_xorriso.html">man xorriso</A> is the manual page</DD> </DL> <A NAME="contact"></A> <DL><DT>Contact:</DT> <DD>Thomas Schmitt, <A HREF="mailto:scdbackup@gmx.net">scdbackup@gmx.net</A></DD> <DD>libburn development mailing list, <A HREF="mailto:libburn-hackers@pykix.org">libburn-hackers@pykix.org</A></DD> </DL> <DL><DT>License:</DT> <DD><A HREF="COPYING_xorriso">GPL version 2</A>, an <A HREF="http://www.opensource.org/">Open Source</A> approved license</DD> <DD> </DD> </DL> </P> <HR> <P> Bug fixes towards xorriso-0.3.6.pl00: <UL> <LI>- none -</LI> <!-- --> </UL> </P> <P> Enhancements towards previous stable version xorriso-0.3.6.pl00: <UL> <LI> New options -set_filter , -set_filter_r, -find -exec set_filter </LI> <LI> New option -zisofs, built-in filters --zisofs , --gzip , --gunzip</LI> </LI> <LI> New options -external_filter , -unregister_filter, -close_filter_list </LI> <LI> New options -show_stream, -show_stream_r </LI> <LI> New -osirrox mode "banned" </LI> <LI> New option -auto_charset based on xattr "isofs.cs" </LI> </UL> </P> <HR> <P> <H3> Library copies included in xorriso tarballs: </H3> <DL> <DT>libburn-0.6.5</DT> <DD>reads and writes data from and to CD, DVD, BD.</DD> <DD>(founded by Derek Foreman and Ben Jansens, developed and maintained since August 2006 by Thomas Schmitt from team of libburnia-project.org)</DD> <DT>libisofs-0.6.19</DT> <DD>operates on ISO 9660 filesystem images.</DD> <DD>(By Vreixo Formoso, Mario Danic and Thomas Schmitt from team of libburnia-project.org)</DD> <DT>libisoburn-0.3.8</DT> <DD>coordinates libburn and libisofs, emulates multi-session where needed.</DD> <DD>(By Vreixo Formoso and Thomas Schmitt from team of libburnia-project.org)</DD> <DD> </DD> <DT>The source code of this software is independent of cdrecord and mkisofs.</DT> </DL> </P> <HR> <P> <DL> <DT><H3>Development snapshot, version 0.3.9 :</H3></DT> <DD>Bug fixes towards xorriso-0.3.8.pl00: <UL> <LI>- none yet -</LI> <!-- --> </UL> </DD> <DD>Enhancements towards stable version 0.3.8.pl00: <UL> <LI>Operators with option -find : -not, -or, -and, brackets, -if, -then, -else</LI> <!-- <LI>- none yet -</LI> --> </UL> </DD> <DD> </DD> <DD><A HREF="README_xorriso_devel">README 0.3.9</A> <DD><A HREF="xorriso_help_devel">xorriso_0.3.9 -help</A></DD> <DD><A HREF="man_1_xorriso_devel.html">man xorriso (as of 0.3.9)</A></DD> <DD> </DD> <DT>If you want to distribute development versions of xorriso, then use this tarball which produces static linking between xorriso and the libburnia libraries. </DT> <DD>Source (./bootstrap is already applied, build tested, installation see README) </DD> <DD> <A HREF="xorriso-0.3.9.tar.gz">xorriso-0.3.9.tar.gz</A> (1220 KB). </DD> <DT>A dynamically linked development version of xorriso can be obtained from repositories of <A HREF="http://libburnia-project.org"> libburnia-project.org</A>. xorriso is part of libisoburn/trunk and will get built by its "make". </DT> <DT>Be warned that the libraries in SVN and bzr are development versions with possibly unstable API/ABI enhancements. Do not distribute development versions for dynamic linking. Only release versions are safe for that. </DT> <DD>Download: <KBD><B>svn co http://svn.libburnia-project.org/libburn/trunk libburn</B> </KBD></DD> <DD>Install: <KBD><B>cd libburn ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B> </KBD></DD> <DD>Download: <KBD><B>bzr branch lp:~libburnia-team/libisofs/scdbackup</B></KBD> </DD> <DD>Install: <KBD><B>cd libisofs ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B> </KBD></DD> <DD>Download: <KBD><B>svn co http://svn.libburnia-project.org/libisoburn/trunk libisoburn</B> </KBD></DD> <DD>Install: <KBD><B>cd libisoburn ; ./bootstrap ; ./configure --prefix /usr ; make ; make install</B> </KBD></DD> <DT>Build of SVN versions needs <A HREF="http://sources.redhat.com/autobook/"> autotools</A> of at least version 1.7 installed. But after the run of <KBD>./bootstrap</KBD>, only vanilla tools like make and gcc are needed. </DT> <DD> </DD> </DL> </P> <HR> <P> Many thanks to Derek Foreman and Ben Jansens for starting libburn. <BR> Very special thanks to Andy Polyakov whose <A HREF="http://fy.chalmers.se/~appro/linux/DVD+RW/tools">dvd+rw-tools</A> provide the libburnia project with invaluable examples on how to deal with DVD media and how to emulate multi-session on overwriteable media. </P> <HR> <CENTER><FONT SIZE=+0> <!-- <A NAME="bottom" HREF="main_ger.html#bottom">deutsch (german)</A> <BR><BR> --> <BR><BR> <FONT SIZE=+0>Enjoying free Open Source hosting by <A HREF="http://www.webframe.org">www.webframe.org</A><BR> <A HREF="http://www.webframe.org"> <IMG SRC="msfree.gif" ALT="100 % Microsoft free" BORDER=0></A><BR> and by <A HREF="http://sourceforge.net">sourceforge.net</A><BR> <A href="http://sourceforge.net"> <IMG src="sflogo-88-1.png" BORDER="0" ALT="SourceForge Logo"></A> <!-- on sourceforge use : <IMG src="http://sourceforge.net/sflogo.php?group_id=16010" width="88" height="31" border="0" alt="SourceForge Logo"></A> --> <P> Enjoying a FreeBSD shell account with the opportunity to build, install and test xorriso at<BR> <A HREF="http://www.en.free-shells.com.ar">free-shells.com.ar</A> </P> </FONT></CENTER> <HR> <DL> <DT>Links to my other published software projects :</DT> <DD><A HREF=http://scdbackup.webframe.org/cdrskin_eng.html> cdrskin, a cdrecord emulator</A></DD> <DD><A HREF=http://scdbackup.webframe.org/main_eng.html> scdbackup, multi volume CD backup</A></DD> <DL><DD><A HREF=http://scdbackup.sourceforge.net/main_eng.html> (a second source of above)</A></DD></DL> <DD><A HREF=http://stic.sourceforge.net>Some Tools for Image Collectors</A></DD> <DD><A HREF=http://scdbackup.webframe.org/pppoem> pppoem, a DSL throughput monitor (mainly for Linux kernel 2.4)</A></DD> </DL> <BR><BR> Legal statement: This website does not serve any commercial purpose.<BR> <BR><BR> </FONT> </BODY> </HTML>