libisoburn/xorriso/xorrisofs.texi

3098 lines
121 KiB
Plaintext

\input texinfo @c -*-texinfo-*-
@c %**start of header
@setfilename xorrisofs.info
@settitle GNU xorrisofs 1.5.7
@c %**end of header
@c
@c man-ignore-lines begin
@dircategory Archiving
@direntry
* Xorrisofs: (xorrisofs). Emulates ISO 9660 program mkisofs
@end direntry
@c man-ignore-lines end
@c
@c Notes about embedded man page:
@c This texinfo code contains the necessary info to produce a man page
@c which resembles much the version of xorriso.1 from which this code
@c was originally derived in march 2010.
@c One can produce the man page by applying the following rules:
@c The first line gets discarded.
@c Line start "@c man " will become "", the remainder is put out unaltered.
@c Lines "@*" will be converted to ".br"
@c "@c man-ignore-lines N" will discard N following lines.
@c "@c man-ignore-lines begin" discards all following lines
@c up to "@c man-ignore-lines end".
@c Line blocks of "@menu" "@end menu" will be discarded.
@c "@item word words" becomes "\fBword\fR words".
@c @b{...}, @command{...}, @dfn{...}, @emph{...}, @strong{...}
@c get mapped to \fB...\fR .
@c @abbr{...}, @code{...}, @file{...}, @i{...}, @option{...}, @r{...},
@c @ref{...}, @samp{...},@var{...}, get mapped to ... .
@c @ref{...}, @xref{...} get mapped to empty text.
@c @email{...} gets mapped to <...> .
@c Mapped {...} content is subject to the rules except {...} mapping.
@c @minus{} will become "-".
@c @@ , @{, @} will get stripped of their first @.
@c Other lines which begin by "@" will be discarded.
@c In lines not stemming from "@c man", "\" becomes "\\"
@c "-" which are not preceded by an uneven number of "\" will get
@c prepended one "\".
@c
@c
@c man .\" Hey, EMACS: -*- nroff -*-
@c man .\"
@c man .\" IMPORTANT NOTE:
@c man .\"
@c man .\" The original of this file is kept in xorriso/xorrisofs.texi
@c man .\" This here was generated by program xorriso/make_xorriso_1
@c man .\"
@c man .\"
@c man .\" First parameter, NAME, should be all caps
@c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
@c man .\" other parameters are allowed: see man(7), man(1)
@c man .TH XORRISOFS 1 "Version 1.5.7, Nov 17, 2024"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@c man .\" .nh disable hyphenation
@c man .\" .hy enable hyphenation
@c man .\" .ad l left justify
@c man .\" .ad b justify to both left and right margins
@c man .\" .nf disable filling
@c man .\" .fi enable filling
@c man .\" .br insert line break
@c man .\" .sp <n> insert n+1 empty lines
@c man .\" for manpage-specific macros, see man(7)
@c man .nh
@c man-ignore-lines begin
@copying
xorrisofs - Emulation of ISO 9660 program mkisofs by program xorriso
Copyright @copyright{} 2011 - 2024 Thomas Schmitt
@quotation
Permission is granted to distribute this text freely.
@end quotation
@end copying
@c man-ignore-lines end
@titlepage
@title Manual of GNU xorriso personality xorrisofs 1.5.7
@author Thomas Schmitt
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage
@contents
@ifnottex
@node Top
@top xorrisofs 1.5.7
@c man-ignore-lines 1
@c man .SH NAME
xorrisofs - Emulation of ISO 9660 program mkisofs by program xorriso
@end ifnottex
@menu
* Overview:: Overview
* Standards:: ISO 9660, Rock Ridge, Joliet
* Insert:: Inserting files into the ISO image
* Xorriso:: Relation to program xorriso
* Options:: Options
* Examples:: Examples
* Files:: Files
* Environ:: Environment
* Seealso:: See also
* Bugreport:: Reporting bugs
* Legal:: Author, Copyright, Credits
* CommandIdx:: Alphabetic Command List
* ConceptIdx:: Alphabetic List of Concepts and Objects
@end menu
@node Overview, Standards, Top, Top
@chapter Overview
@c man .SH SYNOPSIS
@c man .B xorrisofs
@c man [ options ] [-o filename ] pathspec [pathspecs ...]
@c man .br
@c man .SH DESCRIPTION
@c man .PP
@command{xorrisofs}
produces Rock Ridge enhanced ISO 9660 filesystems and add-on sessions to
such filesystems. Optionally it can produce Joliet directory trees too.
@*
@sp 1
@c man .PP
@command{xorrisofs} understands options of program mkisofs from cdrtools by
Joerg Schilling.
Its implementation is part of program xorriso which shares no source
code with cdrtools.
@c man .SS
@node Standards, Insert, Overview, Top
@chapter ISO 9660, Rock Ridge, Joliet, HFS+
@c man \fBISO 9660, Rock Ridge, Joliet, HFS+:\fR
@c man .br
@cindex ISO 9660, _definition
@cindex ECMA-119, _definition
@strong{ISO 9660}
(aka @strong{ECMA-119}) is a read-only filesystem that is mainly used for
optical media CD, DVD, BD, but may also reside on other storage devices like
disk files, USB sticks or disk partitions. It is widely readable by many
operating systems and by boot facilities of personal computers.
@*
ISO 9660 describes directories and data files by
very restricted filenames with no distinction of upper case and lower case.
Its metadata do not comply to fundamental POSIX specifications.
@*
@cindex Rock Ridge, _definition
@strong{Rock Ridge}
is the name of a set of additional information which enhance
an ISO 9660 filesystem so that it can represent a POSIX compliant filesystem
with ownership, access permissions, symbolic links, and other attributes.
Rock Ridge allows filenames of up to 255 bytes and paths of up to
1024 bytes.
@*
xorrisofs produces Rock Ridge information by default. It is strongly
discouraged to disable this feature.
@*
@cindex Joliet, _definition
@strong{Joliet}
is the name of an additional directory tree which provides
filenames up to 64 characters encoded as UTF-16.
A Joliet tree is mainly interesting for reading the ISO image by
operating systems of Microsoft Corporation.
Production of this directory tree may be enabled by option -J.
@*
@cindex ISO 9660:1999, _definition
@strong{ISO 9660:1999}
is the folkloric name of an additional directory tree which provides longer
filenames. It allows single file names to have up to 207 characters. Its
starting point is specified officially as Enhanced Volume Descriptor in
ECMA-119 4th Edition.
@*
It might be of use with some older computer system boot
facilities which read neither Rock Ridge nor Joliet but
need longer filenames nevertheless.
Production of this directory tree may be enabled by option -iso-level 4.
@*
@cindex HFS+, _definition
@strong{HFS+}
is the name of a filesystem which is normally used for writing and reading
on hard disks and similar devices. It is possible to embed a HFS+ partition
into the emerging ISO 9660 image and to mark it by Apple Partition Map
entries. This interferes with options which copy data into the first 32 KiB
of the ISO image, like -G or -isohybrid-mbr. See option -hfsplus.
@*
The main purpose for having an embedded HFS+ partition is booting of
certain models of Apple computers.
@c man .SS
@sp 1
@c man .B Inserting files into the ISO image:
@node Insert, Xorriso, Standards, Top
@chapter Inserting files into the ISO image
@c man .PP
@command{xorrisofs} deals with two kinds of file addresses:
@*
@cindex disk_path, _definition
@strong{disk_path}
is a path to an object in the local filesystem tree.
@*
@cindex iso_rr_path, _definition
@strong{iso_rr_path}
is the Rock Ridge address of a file object in the ISO image.
If no Rock Ridge information shall be stored in an emerging ISO, then the
names will get mapped to ISO 9660 names of limited length and character set.
@cindex pathspec, _definition
@*
@sp 1
@c man .PP
A program argument is handled as a @strong{pathspec}, if it is not
recognized as original mkisofs option or additional @command{xorrisofs} option.
A pathspec depicts an input file object by a disk_path.
If option -graft-points is not present, then the behavior depends on the
file type of disk_path. Directories get merged with the /-directory of the
ISO image. Files of other types get copied into the /-directory.
@*
If -graft-points is present then each pathspec gets split at the first
occurrence of the =-character.
The part before the = is taken as @strong{target}, i.e. the iso_rr_path for
the file object in the ISO image. The part after the first = is taken
as @strong{source}, i.e. the disk_path of the input object.
@*
It is possible to make =-characters part of the iso_rr_path by preceding
them with a \-character. The same must be done for \-characters which
shall be part of the iso_rr_path.
@*
@sp 1
@c man .PP
If the source part of the pathspec leads to a directory, then all files
underneath this directory get inserted into the image, too.
It is possible to exclude particular files from being inserted
by help of option -m.
@*
In case that target already exists, the following rules apply:
Directories and other files may overwrite existing non-directories.
Directories get merged with existing directories.
Non-directories may not overwrite existing directories.
@c man .SS
@node Xorriso, Options, Insert, Top
@chapter Relation to program xorriso
@c man \fBRelation to program xorriso:\fR
@c man .br
@cindex xorriso, mkisofs emulation
@command{xorrisofs} is actually a command mode of program @strong{xorriso},
which gets entered either by xorriso command "-as mkisofs" or by
starting the program by one of the names "xorrisofs", "mkisofs",
"genisoimage", or "genisofs".
@*
This command mode can be left by argument "@minus{}@minus{}" which leads
to generic xorriso command mode. See @strong{man xorriso} for its description.
@*
@sp 1
@c man .PP
xorriso performs image reading and writing by help of libburn, which is
mainly intended for optical drives, but also operates on all POSIX
file types except directories.
@*
The program messages call any image file a "drive". File types which are not
supported for reading are reported as "blank". The reported free media
space may be quite fictional.
@*
Nevertheless @command{xorrisofs} does not operate directly on optical drives,
but rather forces libburn to regard them as general device files.
So for writing of sequential optical media (CD, DVD-R, DVD+R, BD-R)
one will have to use a burn program. E.g the cdrecord emulation of xorriso.
See EXAMPLES.
@c man .SS
@node Options, Examples, Xorriso, Top
@chapter Options
@cindex xorriso, options
@c man .br
@c man .SH OPTIONS
@c man .br
@menu
* Loading:: Image loading
* SetInsert:: Settings for file insertion
* SetProduct:: Settings for image production
* SetCompl:: Settings for standards compliance
* SetExtras:: Settings for standards extensions
* SetHide:: Settings for file hiding
* ImageId:: ISO image ID strings
* Bootable:: El Torito Bootable ISO images
* SystemArea:: System Area, MBR, GPT, APM, other boot blocks
* Charset:: Character sets
* Jigdo:: Jigdo Template Extraction
* Miscellaneous:: Miscellaneous options
@end menu
@c man .PP
@c man .TP
@c man .B Image loading:
@node Loading, SetInsert, Options, Options
@section Influencing the behavior of image loading
@c man .PP
The following options control loading of an existing ISO image for the purpose
of preparing a suitable add-on session.
If they are missing then a new image is composed from scratch.
@table @asis
@sp 1
@c man .TP
@item -M disk_path
@kindex -M set path for loading existing ISO image
@cindex Session, select path, -M, -prev-session, -dev
Set the path from which to load the existing ISO image directory tree
on which to base the upcoming directory tree as add-on session.
The path must lead to a random-access readable file object.
On GNU/Linux: regular data files or block device files.
@*
A special kind of pseudo disk_path has the form "/dev/fd/"number.
It depicts the open file descriptor with the given number, regardless whether
the operating system supports this feature by file nodes in /dev/fd or not.
E.g. /dev/fd/3 is file descriptor 3 which was opened by the program that
later started xorriso.
@c man .TP
@item -prev-session disk_path
@kindex -prev-session set path for loading existing ISO image
Alias of -M.
@c man .TP
@item -dev disk_path
@kindex -dev set path for loading existing ISO image
Alias of -M.
@c man .TP
@item -C last_session_start,next_writeable_address
@kindex -C set load address and write address offset
@cindex Session, set load and write address, -C, -cdrecord-params
Set the 2 KiB block address last_session_start from where to read the
ISO image out of the file given by option -M.
@*
Separated by a comma, set the next_writeable_address to which the
add-on session will finally be written. Decisive is actually the block
address which the intended readers will have to use as superblock address
on the intended medium.
@*
Both values can be inquired from optical media by help of burn programs
and cdrecord option -msinfo. xorriso itself can obtain it in its
cdrecord emulation.
@*
values=$(xorriso -as cdrecord dev=/dev/... -msinfo)
@*
echo $values
@*
@sp 1
Option -C may be used without option -M to create an ISO image from
scratch and prepare it for being finally written to a block address
other than 0. Parameter last_session_start must then be set to 0.
@c man .TP
@item -cdrecord-params last_session_start,next_writeable_address
@kindex -cdrecord-params set load address and write address offset
Alias of -C.
@end table
@c man .TP
@c man .B Settings for file insertion:
@node SetInsert, SetProduct, Loading, Options
@section Settings for file insertion
@table @asis
@sp 1
@c man .TP
@item -path-list disk_path
@kindex -path-list read pathspecs from disk file
@cindex pathspec, read list of, -path-list
Read pathspecs line-by-line from disk_file and insert the depicted file
objects into the ISO image. If disk_path is "-" then read the pathspecs
from standard input.
@c man .TP
@item @minus{}@minus{}quoted_path_list disk_path
@kindex @minus{}@minus{}quoted_path_list read pathspecs from disk file
@cindex pathspec, read list of, @minus{}@minus{}quoted_path_list
Like option -path-list but reading quoted words rather than plain lines.
Whitespace outside of quotes will be discarded. On the other hand it is
possible to represent pathspecs which contain newline characters.
@*
The double quotation mark " and the single quotation mark ' can be used to
enclose whitespace and make it part of pathspecs. Each mark
type can enclose the marks of the other type. A trailing backslash \ outside
quotations or an open quotation cause the next input line to be appended.
@c man .TP
@item -cut_out disk_path byte_offset byte_count iso_rr_path
@kindex -cut_out insert piece of data file or device
@cindex Insert, piece of data file or device, -cut_out
Map a byte interval of a regular disk file or of a device file into a regular
file in the ISO image. The file depicted by disk_path has to support random
read access.
@*
byte_offset and byte_count may be plain numbers counting bytes, or numbers
with appended letter "d", "s", "k", "m", "g" to count disk blocks (512 bytes),
disc sectors (2048 bytes), KiB (1024 bytes), MiB (1024 KiB), or GiB (1024 MiB).
@*
E.g:
@*
-cut_out bootable.iso 562s 18s /formerly_hidden_boot_image
@c man .TP
@item -f
@kindex -f follow symbolic links on disk
@cindex Links, follow on disk, -f, -follow-links
@*
Resolve symbolic links on disk rather than storing them as symbolic
links in the ISO image.
@c man .TP
@item -follow-links
@kindex -follow-links follow symbolic links on disk
Alias of -f.
@c man .TP
@item -graft-points
@kindex -graft-points enable target=source pathspecs
@cindex pathspec, enable target=source, -graft-points
Enable interpretation of input file pathspecs as combination of iso_rr_path
and disk_path, separated by a =-character.
@c man .TP
@item -m disk_pattern
@kindex -m exclude disk files from inserting
@cindex Disk files, exclude, -m, -exclude, -x, -old-exclude
Exclude files from being inserted into the image. Silently ignored are
those files of which the disk_path matches the given shell parser pattern.
If no /-character is part of the pattern, then it gets matched against
the leaf name of the disk file.
@*
It is possible to give more than one -m option.
@c man .TP
@item -exclude
@kindex -exclude exclude disk files from inserting
Alias of -m.
@c man .TP
@item -x
@kindex -x exclude disk files from inserting
@*
Alias of -m.
@c man .TP
@item -old-exclude
@kindex -old-exclude exclude disk files from inserting
Alias of -m.
@c man .TP
@item -exclude-list disk_path
@kindex -exclude-list exclude disk files from inserting
@cindex Disk files, exclude, -exclude-list
Perform -m using each line out of file disk_path as argument disk_pattern.
@c man .TP
@item -z
@kindex -z enable recognition of zisofs files
@cindex zisofs file, enable recognition, -z, -transparent-compression
@*
Enable recognition and proper processing of zisofs compressed files
as produced by program mkzftree. These files will get equipped with the
necessary meta data so that a Linux kernel will recognize them and
deliver their content in uncompressed form.
@c man .TP
@item -transparent-compression
@kindex -transparent-compression enable recognition of zisofs files
Alias of -z.
@c man .TP
@item --zisofs-version-2
@kindex --zisofs-version-2 enable recognition of zisofs2 files
@cindex zisofs2 file, enable recognition, --zisofs-version-2
@*
Enable the recognition and proper processing of experimental zisofs version 2
compressed files.
The Linux kernel (as of 5.9) does not yet know this format and will complain
like
@*
isofs: Unknown ZF compression algorithm: PZ
@*
This complaint can be prevented by option --zisofs2-susp-z2 .
@*
The files will be shown by unaware kernels as they were submitted to xorriso,
i.e. with zisofs2 header, block pointer list, and compressed data.
@*
--zisofs-version-2 also enables -z.
@c man .TP
@item --zisofs2-susp-z2
@kindex --zisofs2-susp-z2 produce Z2 for version 2 instead of ZF
@cindex Z2 instead of ZF for version 2, --zisofs2-susp-z2
Enable the production of SUSP entries "Z2" instead of "ZF" with zisofs2
compressed files. Unaware Linux kernels silently ignore "Z2" entries.
@c man .TP
@item --zisofs2-susp-zf
@kindex --zisofs2-susp-zf produce ZF for version 2 instead of Z2
@cindex ZF instead of Z2 for version 2, --zisofs2-susp-zf
Enable the production of SUSP entries "ZF" instead of "Z2" with zisofs2
compressed files. Unaware Linux kernels complain about zisofs2 "ZF" by
"Unknown ZF compression algorithm" and thus leave a mark in the system log.
@c man .TP
@item -root iso_rr_path
@kindex -root redirect ISO root directory
@cindex ISO root directory, redirect, -root
Insert all files under the given iso_rr_path. If option -graft-points is given,
then iso_rr_path is prepended to each target part of a pathspec.
@*
The default for -root is "/".
@c man .TP
@item -old-root iso_rr_path
@kindex -old-root enable incremental insertion
@cindex Incremental insertion, enable, -old-root
Enable incremental insertion of files into the loaded image.
The effective target and source addresses of given pathspecs get compared
whether the target already exists in the ISO image and is still identical
to the source on disk. Metadata in the ISO image will get adjusted, if they
differ from those on disk.
New files and files with changed content will get newly added.
Target files which do not exist in any of the according pathspec sources
will get removed from the ISO directory tree.
@*
If the effective setting of -root differs from the iso_rr_path given
with -old-root, then the files underneath the -old-root directory get cloned
underneath the -root directory. Cloning happens before file comparison.
@c man .TP
@item @minus{}@minus{}old-root-no-ino
@kindex @minus{}@minus{}old-root-no-ino disable disk ino with -old-root
@cindex Incremental insertion, disable disk ino, @minus{}@minus{}old-root-no-ino
Disable recording and use of disk inode numbers.
If no disk inode numbers are recorded, then option -old-root will have
to read disk file content and compare it with the MD5 checksum that is
recorded in the ISO image.
@*
With recorded disk inode numbers and with credible ctime and mtime,
it is possible to detect potential changes in the content without actually
reading it.
A loophole remains if multiple different filesystems may get mounted
at the same directory, like it is habit with /mnt.
In this case one has to use option @minus{}@minus{}old-root-devno
or disable the inode number shortcut by @minus{}@minus{}old-root-no-ino.
@c man .TP
@item @minus{}@minus{}old-root-devno
@kindex @minus{}@minus{}old-root-devno enable disk idevno with -old-root
@cindex Incremental insertion, enable disk devno, @minus{}@minus{}old-root-devno
Enable comparison of recorded device numbers together with recorded
inode numbers. This works only with good old stable device numbers which
get out of fashion, regrettably. If the hard disk has a different
device number after each reboot, then this comparison will see all
files as changed and thus prevent any incremental size saving.
@c man .TP
@item @minus{}@minus{}old-root-no-md5
@kindex @minus{}@minus{}old-root-no-md5 disable MD5 with -old-root
@cindex Incremental insertion, disable MD5, @minus{}@minus{}old-root-no-md5
Disable recording and use of MD5 checksums for data file content.
If neither checksums and nor disk inode numbers are recorded, then
option -old-root will have to read ISO image file content when comparing
it with disk file content.
@end table
@c man .TP
@c man .B Settings for image production:
@node SetProduct, SetCompl, SetInsert, Options
@section Settings for image production
@table @asis
@sp 1
@c man .TP
@item -o disk_path
@kindex -o set output file address
@cindex Output file, set address, -o, -output
Set the output file address for the emerging ISO image.
If the address exists as regular file, it will be truncated to length 0
when image production begins. It may not already exist as directory.
If it does not exist yet then its parent directory must exist and
a regular file will get created.
@*
A special kind of pseudo disk_path has the form "/dev/fd/"number.
It depicts the open file descriptor with the given number, regardless whether
the operating system supports this feature by file nodes in /dev/fd or not.
E.g. /dev/fd/4 is file descriptor 4 which was opened by the program that
later started xorriso.
@*
Default is standard output (/dev/fd/1) which may also be set by disk_path "-".
@c man .TP
@item -output disk_path
@kindex -output set output file address
Alias of -o.
@c man .TP
@item @minus{}@minus{}stdio_sync "on"|"off"|"end"|number
@kindex @minus{}@minus{}stdio_sync control forced output to disk files
@cindex Forced output, control, @minus{}@minus{}stdio_sync
Set the number of bytes after which to force output to disk
in order to keep the memory from being clogged with lots of
pending data for slow devices. "on" is the same as "16m".
Forced output can be disabled by "off", or be delayed by "end" until all
data are produced. If a number is chosen, then it must be at least 64k.
@*
The default with xorriso mkisofs emulation is @minus{}@minus{}stdio_sync "off".
@*
xorriso uses an inner fifo buffer with default size 4 MiB. So forcing
the operating system i/o cache to disk does not necessarily block the
simultaneous production of more image content.
@c man .TP
@item @minus{}@minus{}emul-toc
@kindex @minus{}@minus{}emul-toc enable table-of-content emulation
@cindex Table-of-content, emulation, @minus{}@minus{}emul-toc
Write a second superblock with the first session into random-access
files. If further sessions get appended and the first superblock gets updated,
then the second superblock will not be overwritten. So it is still possible to
mount the first session and to find the start blocks of the further sessions.
@*
The price is 64 KiB extra space consumption. If -partition_offset is non-zero,
then it is 128 KiB plus twice the partition offset.
@c man .TP
@item @minus{}@minus{}no-emul-toc
@kindex @minus{}@minus{}no-emul-toc no table-of-content emulation
@cindex Table-of-content, emulation off, @minus{}@minus{}no-emul-toc
Do not write a second superblock with the first session into random-access
files.
@*
This is the default.
@c man .TP
@item @minus{}@minus{}sort-weight weight_number iso_rr_path
@kindex @minus{}@minus{}sort-weight set block address sorting weight
@cindex Block address, set sorting weight, @minus{}@minus{}sort-weight
Attribute a LBA weight number to regular files. If iso_rr_path leads
to a directory then all regular files underneath will get the weight_number.
@*
The weight_number may range from -2147483648 to 2147483647.
The higher it is, the lower will be the block address of the file data
in the emerging ISO image.
Currently the El Torito boot catalog has a hardcoded weight of 1 billion.
Normally it should occupy the block with the lowest possible address.
Data files get added or loaded with initial weight 0. Boot image files
have a default weight of 2.
@c man .TP
@item @minus{}@minus{}sort-weight-list disk_path
@kindex @minus{}@minus{}sort-weight-list set block address sorting weight
@cindex Block address, set sorting weight, @minus{}@minus{}sort-weight-list
Read pairs of weight number and iso_rr_path from a file of the
local filesystem. Apply each pair like with @minus{}@minus{}sort-weight.
@*
Only the last @minus{}@minus{}sort-weight-list or
@minus{}@minus{}sort-weight-patterns of a xorrisofs run gets into effect.
@*
The weight number is read from the start of the line.
The iso_rr_path part of an input line begins immediately after the first blank
or tab character of the line.
@*
Notes for the case that this feature is used within a sequence of generic
xorriso commands (not an issue with a pure mkisofs emulation run):
@*
The addressed files must already be in the ISO image model when you execute
@*
-as mkisofs @minus{}@minus{}sort-weight-list disk_path @minus{}@minus{}
@*
Several such commands may be used to apply more than one weight file.
@*
Data files which are loaded by -indev or -dev get a weight between 1 and
2 exp 28 = 268,435,456, depending on their block address. This shall keep
them roughly in the same order if the write method of modifying is applied.
@c man .TP
@item @minus{}@minus{}sort-weight-patterns disk_path
@kindex @minus{}@minus{}sort-weight-patterns set block address sorting weight
@cindex Block address, set sorting weight, @minus{}@minus{}sort-weight-patterns
Like @minus{}@minus{}sort-weight-list , but expanding the iso_rr_paths as
shell parser patterns and applying @minus{}@minus{}sort-weight to each
matching file.
@c man .TP
@item -uid number|name
@kindex -uid ownership for all files
@cindex Ownership, for all files, -uid
Use the given number or locally existing user name as owner id of all files
and directories in the emerging filesystem.
Empty name or name "-" revoke this feature.
@c man .TP
@item -gid number|name
@kindex -gid group assignment for all files
@cindex Group, for all files, -gid
Use the given number or locally existing group name as group id of all files
and directories in the emerging filesystem.
Empty name or name "-" revoke this feature.
@c man .TP
@item -dir-mode mode
@kindex -dir-mode permissions for all directories
@cindex Permissions, for all directories, -dir-mode
Set the access permissions for all directories in the image to the given
mode which is either an octal number beginning with "0" or a comma separated
list of statements of the form [ugoa]*[+-=][rwxst]* . E.g. ug=rx,a-rwx
@c man .TP
@item -file-mode mode
@kindex -file-mode permissions for all data files
@cindex Permissions, for all data files, -file-mode
Like -dir-mode but for all regular data files in the image.
@c man .TP
@item -pad
@kindex -pad add 300 KiB of zeros to ISO tree
@cindex Padding, 300 KiB, -pad
@*
Add 300 KiB to the end of the produced ISO image. This circumvents possible
read errors from ISO images which have been written to CD media in TAO mode.
The additional bytes are claimed as part of the ISO image if not --emul-toc
is given.
@*
Option -pad is the default.
@c man .TP
@item -no-pad
@kindex -no-pad do not add zeros to ISO tree
@cindex Padding, disable, -no-pad
Disable padding of 300 KiB to the end of the produced ISO image.
This is safe if the image is not meant to be written on CD or if it
gets written to CD as only track in write mode SAO.
@c man .TP
@item @minus{}@minus{}old-empty
@kindex @minus{}@minus{}old-empty old block addresses for empty files
@cindex Padding, disable, @minus{}@minus{}old-empty
Use the old way of of giving block addresses in the range
of [0,31] to files with no own data content. The new way is to have
a dedicated block to which all such files will point.
@end table
@c man .TP
@c man .B Settings for standards compliance:
@node SetCompl, SetExtras, SetProduct, Options
@section Settings for standards compliance
@table @asis
@sp 1
@kindex -iso-level define ISO 9660 limitations
@cindex ISO level, specify, -iso-level
@c man .TP
@item -iso-level number
@kindex -iso-level define ISO 9660 limitations
@cindex ISO level, specify, -iso-level
Specify the ISO 9660 version which defines the limitations of file naming
and data file size. The naming restrictions do not apply to the
Rock Ridge names but only to the low-level ISO 9660 names.
There are three conformance levels:
@*
Level 1 allows ISO names of the form 8.3 and file size up to 4 GiB - 1.
@*
Level 2 allows ISO names with up to 32 characters
and file size up to 4 GiB - 1.
@*
Level 3 allows ISO names with up to 32 characters
and file size of up to 400 GiB - 200 KiB. (This size limitation is
set by the xorriso implementation and not by ISO 9660 which would
allow nearly 8 TiB.)
@*
Pseudo-level 4 enables production of an additional directory tree beginning at
an Enhanced Volume Descriptor (aka ISO 9660:1999) as of ECMA-119 4th Edition.
@c man .TP
@item -disallow_dir_id_ext
@kindex -disallow_dir_id_ext enforce ISO level 1 directory names
@cindex ISO level 1, enforce directory names, -disallow_dir_id_ext
Do not follow a bad habit of mkisofs which allows dots in the ISO names
of directories. On the other hand, some bootable GNU/Linux images depend on
this bad habit.
@c man .TP
@item -U
@kindex -U very relaxed filename rules
@cindex ISO file names, very relaxed rules, -U, -untranslated-filenames
@*
This option allows ISO file names without dot and up to 37 characters,
ISO file paths longer than 255 characters, and all ASCII characters in file
names. Further it omits the semicolon and the version numbers at the end
of ISO names.
@*
This all violates ISO 9660 specs.
@c man .TP
@item -untranslated-filenames
@kindex -untranslated-filenames very relaxed filename rules
Alias of -U.
@c man .TP
@item -untranslated_name_len number
@kindex -untranslated_name_len untranslated file names
@cindex ISO file names, untranslated, -untranslated_name_len
Allow ISO file names up to the given number of characters
without any character conversion. The maximum number is 96.
If a file name has more characters, then image production will
fail deliberately.
@*
This violates ISO 9660 specs.
@c man .TP
@item -allow-lowercase
@kindex -allow-lowercase lowercase in ISO file names
@cindex ISO file names, allow lowercase, -allow-lowercase
Allow lowercase character in ISO file names.
@*
This violates ISO 9660 specs.
@c man .TP
@item -relaxed-filenames
@kindex -relaxed-filenames 7-bit special characters in ISO file names
@cindex ISO file names, 7-bit special characters, -relaxed-filenames
Allow nearly all 7-bit characters in ISO file names.
Not allowed are 0x0 and '/'. If not option -allow-lowercase is given,
then lowercase letters get converted to uppercase.
@*
This violates ISO 9660 specs.
@c man .TP
@item -d
@kindex -d omit trailing dot in ISO file names
@cindex ISO file names, omit trailing dot, -d, -omit-period
@*
Do not add trailing dot to ISO file names without dot.
@*
This violates ISO 9660 specs.
@c man .TP
@item -omit-period
@kindex -omit-period omit trailing dot in ISO file names
Alias of -d.
@c man .TP
@item -l
@kindex -l allow 31 characters in ISO file names
@cindex ISO file names, allow 31 characters, -l, -full-iso9660-filenames
@*
Allow up to 31 characters in ISO file names.
@c man .TP
@item -full-iso9660-filenames
@kindex -full-iso9660-filenames allow 31 characters in ISO file names
Alias of -l.
@c man .TP
@item -max-iso9660-filenames
@kindex -max-iso9660-filenames allow 37 characters in ISO file names
@cindex ISO file names, allow 37 characters, -max-iso9660-filenames
Allow up to 37 characters in ISO file names.
@*
This violates ISO 9660 specs.
@c man .TP
@item -N
@kindex -N omit version number in ISO file names
@cindex ISO file names, omit version number, -N, -omit-version-number
@*
Omit the semicolon and the version numbers at the end of ISO names.
@*
This violates ISO 9660 specs.
@c man .TP
@item -omit-version-number
@kindex -omit-version-number omit version number in ISO file names
Alias of -N.
@end table
@c man .TP
@c man .B Settings for standards extensions:
@node SetExtras, SetHide, SetCompl, Options
@section Settings for standards extensions
@table @asis
@sp 1
@c man .TP
@item -R
@kindex -R Rock Ridge (is enabled by default)
@cindex Rock Ridge, (enabled by default), -R, -rock
@*
With mkisofs this option enables Rock Ridge extensions. @command{xorrisofs}
produces them by default. It is strongly discouraged to disable them
by option @minus{}@minus{}norock.
@c man .TP
@item -rock
@kindex -rock Rock Ridge (is enabled by default)
@*
Alias of -R.
@c man .TP
@item -r
@kindex -r Rock Ridge with altered owner and permission
@cindex Rock Ridge, altered owner and permission, -r, -rational-rock
@*
Enable Rock Ridge and set user and group id of all files in the ISO image to 0.
Grant r-permissions to all. Deny all w-permissions.
If any x-permission is set, grant x-permission to all.
Remove s-bit and t-bit.
@*
These attribute changes stay delayed until mkisofs emulation ends. Within the
same -as mkisofs emulation command they can be revoked by a subsequent
option @minus{}@minus{}norock. For compatibility reasons, option -R does not
revoke the changes ordered by -r.
@c man .TP
@item -rational-rock
@kindex -rational-rock Rock Ridge with altered owner and permission
Alias of -r.
@c man .TP
@item @minus{}@minus{}norock
@kindex @minus{}@minus{}norock disable Rock Ridge production
@cindex Rock Ridge, disable production, @minus{}@minus{}norock
@*
This option disables the production of Rock Ridge extensions for the
ISO 9660 file objects. The multi-session capabilities of @command{xorrisofs}
depend much on the naming fidelity of Rock Ridge. So it is strongly
discouraged to disable it by this option, except for the special use case
to revoke the effect of -r by:
@minus{}@minus{}norock -R
@c man .TP
@item @minus{}@minus{}set_all_file_dates timestring
@kindex @minus{}@minus{}set_all_file_dates set all file timestamps
@cindex File timestamps, set all, @minus{}@minus{}set_all_file_dates
Set mtime, atime, and ctime of all files and directories to the given time.
@*
Valid timestring formats are: 'Nov 8 14:51:13 CET 2007', 110814512007.13,
2007110814511300. See also @minus{}@minus{}modification-date= and man xorriso,
Examples of input timestrings.
@*
If the timestring is "set_to_mtime", then the
atime and ctime of each file and directory get set to the value found in their
mtime.
@*
These actions stay delayed until actual ISO production begins.
Up to then they can be revoked by @minus{}@minus{}set_all_file_dates
with empty timestring or timestring "default".
@*
The timestamps of the El Torito boot catalog file get refreshed when the ISO
is produced. They can be influenced by @minus{}@minus{}modification-date=.
@c man .TP
@item -file_name_limit number
@kindex -file_name_limit curbs length of file names
@cindex File names, curb length, -file_name_limit
Set the maximum permissible length for file names in the range of 64 to 255.
Path components which are longer than the given number will get truncated
and have their last 33 bytes overwritten by a colon ':' and the
hex representation of the MD5 of the first 4095 bytes of the whole
oversized name. Potential incomplete UTF-8 characters will get their
leading bytes replaced by '_'.
@*
Linux kernels up to at least 4.1 misrepresent names of length 254 and 255.
If you expect such names in or under disk_paths and plan to mount the ISO
by such Linux kernels, consider to set -file_name_limit 253.
@c man .TP
@item -D
@kindex -D allow deep directory hierarchies
@cindex Deep directories, allow, -D, -disable-deep-relocation
The standard ECMA-119 demands that no path in the image shall have more
than 8 name components or 255 characters. Therefore it would be necessary
to move deeper directory trees to a higher directory. Rock Ridge offers an
opportunity to let these relocated directories appear at their original
deep position, but this feature might not be implemented properly by
operating systems which mount the image.
@*
Option -D disables this deep directory relocation, and thus violates
ISO 9660 specs.
@*
xorrisofs has -D set by default. If given explicitly then it overrides
the options -rr_reloc_dir and -hide-rr-moved.
@c man .TP
@item -disable-deep-relocation
@kindex -disable-deep-relocation allow deep directory hierarchies
Alias of -D.
@c man .TP
@item -rr_reloc_dir name
@kindex -rr_reloc_dir set deep directory relocation target
@cindex Deep directories, relocation target, -rr_reloc_dir
Enable the relocation of deep directories and thus avoid ECMA-119 file paths
of more than 8 name components or 255 characters. Directories which lead to
such file paths will get moved to a directory in the root directory of the
image. Its name gets set by this option.
It is permissible to use the root directory itself.
@*
The overall directory tree will appear originally deep when interpreted as
Rock Ridge tree. It will appear as re-arranged if only ECMA-119 information
is considered.
@*
If the given relocation target directory does not already exist when image
production begins, then it will get created and marked for Rock Ridge as
relocation artefact. At least on GNU/Linux it will not be displayed in
mounted Rock Ridge images.
@*
The name must not contain a '/' character after its first character and it
must not be longer than 255 bytes.
@*
This option has no effect if option -D is present.
@c man .TP
@item -hide-rr-moved
@kindex -hide-rr-moved set deep directory relocation target
@cindex Deep directories, relocation target, -hide-rr-moved
Alias of -rr_reloc_dir "/.rr_moved"
@c man .TP
@item @minus{}@minus{}for_backup
@kindex @minus{}@minus{}for_backup Enable backup fidelity
@cindex Backup, enable fidelity, @minus{}@minus{}for_backup
Enable all options which improve backup fidelity:
@*
@minus{}@minus{}acl, @minus{}@minus{}xattr-any, @minus{}@minus{}md5,
@minus{}@minus{}hardlinks, @minus{}@minus{}projid,
and possibly @minus{}@minus{}lfa_flags.
@*
If you later restore a backup with xattr from non-user namespaces, then make
sure that the target operating system and filesystem know what these attributes
mean. Possibly you will need administrator privileges to record or restore
such attributes. At recording time, xorriso will try to tolerate missing
privileges and just record what is readable.
@*
Option @minus{}@minus{}xattr after option @minus{}@minus{}for_backup excludes
non-user attributes from being recorded.
@*
Option @minus{}@minus{}for_backup enables @minus{}@minus{}lfa_flags only if
the underlying libisofs was compiled with support for Linux file attributes,
which is typically not the case on non-Linux systems.
@c man .TP
@item @minus{}@minus{}acl
@kindex @minus{}@minus{}acl Recording of ACLs
@cindex ACL, record and load, @minus{}@minus{}acl
@*
Enable recording and loading of ACLs from GNU/Linux or FreeBSD
(see man getfacl, man acl).
They will not be in effect with mounted ISO images. But xorriso can
restore them on the same systems when extracting files from the ISO image.
@c man .TP
@item @minus{}@minus{}xattr
@kindex @minus{}@minus{}xattr Recording of user xattr
@cindex xattr, record and load, @minus{}@minus{}xattr
@*
Enable recording and loading of GNU/Linux or FreeBSD extended attributes in
user namespace (see man getfattr and man attr,
man getextattr and man 9 extattr, respectively).
They will not be in effect with mounted ISO images. But xorriso can
restore them on the same systems when extracting files from the ISO image.
@c man .TP
@item @minus{}@minus{}xattr-any
@kindex @minus{}@minus{}xattr Recording of any xattr
@cindex xattr, record and load, @minus{}@minus{}xattr-any
@*
Enable recording and loading of GNU/Linux or FreeBSD extended attributes in
all namespaces. This might need administrator privileges, even if the owner
of the disk file tries to read the attributes.
@c man .TP
@item @minus{}@minus{}lfa_flags
@kindex @minus{}@minus{}lfa_flags Recording of Linux file attributes
@cindex Linux file attributes, record and load, @minus{}@minus{}lfa_flags
@*
Enable recording and loading of Linux file attributes as described in
man 1 chattr.
@*
Disable restoring of such attributes just in case that the mkisofs emulation
gets ended and files get restored to disk. If restoring of the attributes is
desired in this case, execute xorriso command -lfa_flags "restore" with
possibly appended mode texts like ":restore_mask=aAcdDijmPsStTux".
@c man .TP
@item @minus{}@minus{}projid
@kindex @minus{}@minus{}projid Recording of XFS-style project ids
@cindex XFS-style project ids, record and load, @minus{}@minus{}projid
Enable recording and loading of XFS-style project ids as described in
man 5 xfs_quota or man 5 ext4.
@c man .TP
@item @minus{}@minus{}md5
@kindex @minus{}@minus{}md5 Recording of MD5 checksums
@cindex MD5, record and load, @minus{}@minus{}md5
@*
Enable recording of MD5 checksums for the overall ISO image and for each
single data file in the image. xorriso can check the content of an ISO
image with these sums and raise alert on mismatch.
See man xorriso, options -check_media, check_md5_r.
xorriso can print recorded MD5 checksums. E.g. by:
@*
-find / -exec get_md5
@c man .TP
@item @minus{}@minus{}hardlinks
@kindex @minus{}@minus{}hardlinks Recording of hardlink relations
@cindex Links, record and load hard links, @minus{}@minus{}hardlinks
Enable loading and recording of hardlink relations.
Search for families of iso_rr files which stem from the same disk file,
have identical content filtering and have identical properties.
The members of each family get the same inode number in the ISO image.
@*
Whether these numbers are respected at mount time depends on the operating
system. xorriso can create hardlink families when extracting files from
the ISO image.
@c man .TP
@item @minus{}@minus{}scdbackup_tag disk_path record_name
@kindex @minus{}@minus{}scdbackup_tag Recording of MD5 checksum
@cindex scdbackup, record checksum tag, @minus{}@minus{}scdbackup_tag
Append a scdbackup checksum record to the image. This works only if the
parameter next_writeable_address of option -C is 0 and --md5 is enabled.
If disk_path is not an empty string, then append a scdbackup checksum record
to the end of this file. record_name is a word that gets part of tag
and record.
@*
Program scdbackup_verify will recognize and verify tag and file record.
@*
An empty record_name disables this feature.
@c man .TP
@item -J
@kindex -J enable production of Joliet directory tree
@cindex Joliet, enable, -J, -joliet
@*
Enable the production of an additional Joliet directory tree along
with the ISO 9660 Rock Ridge tree.
@c man .TP
@item -joliet
@kindex -joliet enable production of Joliet directory tree
Alias of -J.
@c man .TP
@item -joliet-long
@kindex -joliet-long allow longer Joliet names
@cindex Joliet, allows longer names, -joliet-long
Allow 103 characters in Joliet file names rather than 64 as is prescribed
by the specification. Allow Joliet paths longer than the prescribed limit of
240 characters.
@*
Oversized names get truncated. Without this option, oversized paths get
excluded from the Joliet tree.
@c man .TP
@item -joliet-utf16
@kindex -joliet-utf16 use UTF-16 with Joliet names
@cindex UTF-16, for Joliet paths, -joliet-utf16
Encode Joliet file names in UTF-16BE rather than UCS-2.
The difference is with characters which are not present
in UCS-2 and get encoded in UTF-16 by 2 words of 16 bit each.
Both words then stem from a reserved subset of UCS-2.
@c man .TP
@item -hfsplus
@kindex -hfsplus enable production of HFS+ partition
@cindex HFS+, enables production
Enable the production of an additional HFS+ filesystem inside the ISO 9660
image and mark it by Apple Partition Map (APM) entries in the System Area,
the first 32 KiB of the image.
@*
This may collide with options like -G or -isohybrid-mbr which submit user data
for inclusion in the same address range.
The first 8 bytes of the System Area get overwritten by
@{ 0x45, 0x52, 0x08 0x00, 0xeb, 0x02, 0xff, 0xff @}
which can be executed as x86 machine code without negative effects.
So if an MBR gets combined with this feature, then its first 8 bytes
should contain no essential commands.
@*
The next blocks of 2 KiB in the System Area will be occupied by APM entries.
The first one covers the part of the ISO image before the HFS+ filesystem
metadata. The second one marks the range from HFS+ metadata to the end
of file content data. If more ISO image data follow, then a third partition
entry gets produced. Other features of xorriso might cause the need for
more APM entries.
@*
Be aware that HFS+ is case-insensitive although it can record file names
with upper-case and lower-case letters. Therefore, file names from the iso_rr
name tree may collide in the HFS+ name tree. In this case they get changed
by adding underscore characters and counting numbers. In case of very long
names, it might be necessary to map them to "MANGLED_...".
@*
WARNING:
@*
The HFS+ implementation in libisofs has a limit of 125,829,120 bytes for the
size of the overall directory tree. This suffices for about 300,000 files
of normal name length. If the limit gets exceeded, a FAILURE event will be
issued and the ISO production will not happen.
@c man .TP
@item -hfsplus-serial-no
@kindex -hfsplus-serial-no set HFS+ serial number
@cindex HFS+, set serial number
Set a string of 16 digits "0" to "9"
and letters "a" to "f", which will be used as unique serial number of
an emerging HFS+ filesystem.
@c man .TP
@item -hfsplus-block-size number
@kindex -hfsplus-block-size set HFS+ allocation block size
@cindex HFS+, set allocation block size
Set the allocation block size to
be used when producing HFS+ filesystems. Permissible are 512, 2048, or 0.
The latter lets the program decide.
@c man .TP
@item -apm-block-size number
@kindex -hfsplus-block-size set APM block size
@cindex HFS+, set APM block size
Set the block size to be used when
describing partitions by an Apple Partition Map. Permissible are 512, 2048,
or 0. The latter lets the program decide.
@*
Note that size 512 is not compatible with production of GPT, and that
size 2048 will not be mountable -t hfsplus at least by older Linux kernels.
@c man .TP
@item -hfsplus-file-creator-type creator type iso_rr_path
@kindex -hfsplus-file-creator-type HFS+ creator-type attribute
@cindex HFS+, set creator and type of file, -hfsplus-file-creator-type
Set the HFS+ creator and type attributes of a file in the emerging image.
These are two codes of 4 characters each.
@c man .TP
@item -hfs-bless-by blessing iso_rr_path
@kindex -hfs-bless-by HFS+ blessing
@cindex HFS+, issue blessing, -hfs-bless-by
Issue a HFS+ blessing. They are roles which can be attributed to
up to four directories and a data file:
@*
"ppc_bootdir", "intel_bootfile", "show_folder", "os9_folder", "osx_folder".
@*
They may be abbreviated as "p", "i", "s", "9", and "x".
@*
Each such role can be attributed to at most one file object. "intel_bootfile"
is the one that would apply to a data file. All others apply to directories.
No file object can bear more than one blessing.
@c man .TP
@item -hfs-bless disk_path
@kindex -hfs-bless HFS+ blessing ppc_bootdir
@cindex HFS+, issue blessing ppc_bootdir, -hfs-bless
Issue HFS+ blessing "ppc_bootdir" to the directory which stems from the
directory disk_path in the local filesystem tree.
@*
This works only if there is at least one data file underneath the directory.
disk_path can become ambiguous if files from different local filesystem
sub-trees are put into the same sub-tree of the ISO image.
Consider to use -hfs-bless-by "p" for unambiguous addressing via iso_rr_path.
@end table
@c man .TP
@c man .B Settings for file hiding:
@node SetHide, ImageId, SetExtras, Options
@section Settings for file hiding
@table @asis
@sp 1
@c man .TP
@item -hide disk_path_pattern
@kindex -hide keep matching files invisible in ISO tree
@cindex Hiding, from ISO and Rock Ridge, -hide
Make files invisible in the directory tree of ISO 9660 and Rock Ridge,
if their disk_path matches the given shell parser pattern.
The data content of such hidden files will be included in the
resulting image, even if they do not show up in any directory.
But you will need own means to find nameless data in the image.
@*
This command does not apply to the boot catalog.
@c man .TP
@item -hide-list disk_path
@kindex -hide-list keep matching files invisible in ISO tree
@cindex Hiding, from ISO and Rock Ridge, -hide-list
Perform -hide using each line out of file disk_path as argument
disk_path_pattern.
@c man .TP
@item -hide-joliet disk_path_pattern
@kindex -hide-joliet keep matching files invisible in Joliet tree
@cindex Hiding, from Joliet, -hide-joliet
Like option -hide but making files invisible in the directory tree of Joliet,
if their disk_path matches the given shell parser pattern.
@c man .TP
@item -hide-joliet-list disk_path
@kindex -hide-joliet-list keep matching files invisible in Joliet tree
@cindex Hiding, from Joliet, -hide-joliet-list
Perform -hide-joliet using each line out of file disk_path as argument
disk_path_pattern.
@c man .TP
@item -hide-hfsplus disk_path_pattern
@kindex -hide-hfsplus keep matching files invisible in HFS+ tree
@cindex Hiding, from HFS+, -hide-hfsplus
Like option -hide but making files invisible in the directory tree of HFS+,
if their disk_path matches the given shell parser pattern.
@c man .TP
@item -hide-hfsplus-list disk_path
@kindex -hide-hfsplus-list keep matching files invisible in HFS+ tree
@cindex Hiding, from HFS+, -hide-hfsplus-list
Perform -hide-hfsplus using each line out of file disk_path as argument
disk_path_pattern.
@c man .TP
@item -hide_iso_path hide_state iso_rr_path
@kindex -hide_iso_path keep a file invisible in ISO tree
@cindex Hiding, by ISO RR path, -hide_iso_path
Prevent the name of the given file from showing up in the directory trees
of ISO 9660 and/or Joliet and/or HFS+ when the image gets written.
Other than the above hide options, this one takes the path of a file
in the emerging ISO filesystem, not the path of a file on hard disk.
@*
Possible values of hide_state are: "iso_rr" for hiding from ISO 9660 tree,
"joliet" for Joliet tree, "hfsplus" for HFS+, "on" for them all.
"off" means visibility in all directory trees.
@*
These values may be combined.
E.g.: joliet:hfsplus
@*
This command does not apply to the boot catalog.
Rather use: @minus{}@minus{}boot-catalog-hide
@end table
@c man .TP
@c man .B ISO image ID strings:
@node ImageId, Bootable, SetHide, Options
@section ISO image ID strings
@c man .PP
The following strings and file addresses get stored in the Primary Volume
Descriptor of the ISO9660 image. The file addresses are ISO 9660
paths. These files should have iso_rr_paths which consist only of
the characters [A-Z0-9_] and exactly one dot which separates
at most 8 characters from at most 3 characters.
@table @asis
@sp 1
@c man .TP
@item -V text
@kindex -V set Volume Id
@cindex Volume Id, set, -V, -volid
Set the Volume Id of the ISO image.
xorriso accepts any text up to 32 characters,
but according to rarely obeyed specs stricter rules apply:
@*
Conformant are ASCII characters out of [A-Z0-9_]. Like: "IMAGE_23"
@*
Joliet allows 16 UCS-2 characters. Like: "Windows name"
@*
Be aware that the volume id might get used automatically as name of the
mount point when the medium is inserted into a playful computer system.
@c man .TP
@item -volid text
@kindex -volid set Volume Id
Alias of -V.
@c man .TP
@item -volset text
@kindex -volset set Volume Set Id
@cindex Volume Set Id, set, -volset
Set the Volume Set Id of the ISO image.
Permissible are up to 128 characters.
@c man .TP
@item -P text
@kindex -P set Publisher Id
@cindex Publisher Id, set, -P, -publisher
Set the Publisher Id of the ISO image. This may identify the person or
organisation who specified what shall be recorded.
Permissible are up to 128 characters.
@c man .TP
@item -publisher text
@kindex -publisher set Publisher Id
Alias of -P.
@c man .TP
@item -A text
@kindex -A set Application Id
@cindex Application Id, set, -A, -appid
Set the Application Id of the ISO image.
This may identify the specification of how the data are recorded.
Permissible are up to 128 characters.
@*
The special text "@@xorriso@@" gets converted to the id string of xorriso
which is normally written as Preparer Id. It is a wrong tradition to write
the program id as Application Id.
@c man .TP
@item -appid text
@kindex -appid set Application Id
Alias of -A.
@c man .TP
@item -sysid text
@kindex -sysid set System Id
@cindex System Id, set, -sysid
Set the System Id of the ISO image. This may
identify the system which can recognize and act upon the content of the
System Area in image blocks 0 to 15.
Permissible are up to 32 characters.
@c man .TP
@item -p text
@kindex -p set Preparer Id
@cindex Preparer Id, set, -p
Set the Preparer Id of the ISO image. This may
identify the person or other entity which controls the preparation of the data
which shall be recorded. Normally this should be the id of xorriso and not
of the person or program which operates xorriso. Please avoid to change it.
Permissible are up to 128 characters.
@*
The special text "@@xorriso@@" gets converted to the id string of xorriso
which is default at program startup.
@c man .TP
@item -preparer text
@kindex -preparer set Preparer Id
Alias of -p.
@c man .TP
@item -abstract iso_path
@kindex -abstract set Abstract File path
@cindex Abstract File, set path, -abstract
Set the address of the Abstract File of the ISO image. This should
be the ISO 9660 path of a file in the image which contains an abstract
statement about the image content.
Permissible are up to 37 characters.
@c man .TP
@item -biblio iso_path
@kindex -biblio set Biblio File path
@cindex Biblio File, set path, -biblio
Set the address of the Biblio File of the ISO image. This should
be the ISO 9660 path of a file in the image which contains bibliographic
records.
Permissible are up to 37 characters.
@c man .TP
@item -copyright iso_path
@kindex -copyright set Copyright File path
@cindex Copyright File, set path, -copyright
Set the address of the Copyright File of the ISO image. This should
be the ISO 9660 path of a file in the image which contains a copyright
statement.
Permissible are up to 37 characters.
@c man .TP
@item @minus{}@minus{}modification-date=YYYYMMDDhhmmsscc
@kindex @minus{}@minus{}modification-date set ISO image timestamps
@cindex ISO image, set timestamps, @minus{}@minus{}modification-date=
Set a timestring that overrides ISO image creation and modification timestamps
literally.
It must consist of 16 decimal digits which form YYYYMMDDhhmmsscc, with
YYYY between 1970 and 2999. Time zone is GMT.
It is supposed to match this GRUB line:
@*
search @minus{}@minus{}fs-uuid @minus{}@minus{}set YYYY-MM-DD-hh-mm-ss-cc
@*
E.g. 2010040711405800 is 7 Apr 2010 11:40:58 (+0 centiseconds).
@*
Among the influenced timestamps are:
isohybrid MBR id, El Torito boot catalog file, HFS+ superblock.
@c man .TP
@item @minus{}@minus{}application_use character|0xXY|disk_path
@kindex @minus{}@minus{}application_use set Application Use field
@cindex ISO image, set Application Use field, @minus{}@minus{}application_use
Specify the content of the Application Use field which can take at most
512 bytes.
@*
If the parameter of this command is empty, then the field is filled
with 512 0-bytes. If it is a single character, then it gets repeated 512 times.
If it begins by "0x" followed by two hex digits [0-9a-fA-F], then the digits
are read as byte value which gets repeated 512 times.
@*
Any other parameter text is used as disk_path to open a data file and to
read up to 512 bytes from it. If the file is smaller than 512 bytes, then the
remaining bytes in the field get set to binary 0.
@end table
@c man .TP
@c man .B El Torito Bootable ISO images:
@node Bootable, SystemArea, ImageId, Options
@section El Torito Bootable ISO images
@c man .PP
The precondition for a bootable ISO image is to have in the ISO image
the files of a boot loader. The boot facilities of computers get
directed to such files, which usually execute further program files
from the ISO image.
@command{xorrisofs} can produce several kinds of boot block or boot record,
which become part of the ISO image, and get interpreted by the according
boot facility.
@*
@c man .PP
@sp 1
@cindex El Torito, _definition
An @strong{El Torito}
boot record points the bootstrapping facility to a boot catalog
with one or more boot images, which are binary program files stored in
the ISO image.
The content of the boot image files is not in the scope of El Torito.
@*
xorriso composes the boot catalog according to the boot image
files given and structured by options -b, -e, -eltorito-alt-boot,
and @minus{}@minus{}efi-boot. Often it contains only one entry.
@*
Normally the boot images are data files inside the ISO filesystem. By
special path "--interval:appended_partition_NNN:all::" it is possible to
refer to an appended partition. The number NNN gives the partition number
as used with the corresponding option -append_partition.
E.g.:
@*
-append_partition 2 0xef /tmp/efi.img
@*
-e --interval:appended_partition_2:all::
@*
El Torito gets interpreted by boot facilities PC-BIOS and EFI.
Most bootable GNU/Linux CDs are equipped with ISOLINUX or GRUB boot images
for PC-BIOS.
@*
@command{xorrisofs} supports the example options out of the ISOLINUX wiki,
the options used in GRUB script grub-mkrescue, and the example in the
FreeBSD AvgLiveCD wiki.
@*
@c man .PP
@sp 1
For CD booting via boot facilities other than PC-BIOS and EFI, and
for booting from USB sticks or hard disks, see the next section
about the System Area.
@*
@table @asis
@sp 1
@c man .TP
@item -b iso_rr_path
@kindex -b El Torito PC-BIOS boot image
@cindex Bootability, control, -b, -eltorito-boot
Specify the boot image file which shall be mentioned in the current
entry of the El Torito boot catalog. It will be marked as suitable for
PC-BIOS.
@*
With boot images from ISOLINUX and GRUB this option should be accompanied by
options -c , -no-emul-boot , -boot-load-size 4 , -boot-info-table.
@c man .TP
@item -eltorito-boot iso_rr_path
@kindex -eltorito-boot El Torito PC-BIOS boot image
Alias of -b.
@c man .TP
@item -eltorito-alt-boot
@kindex -eltorito-alt-boot begin next boot catalog entry
@cindex Bootability, next entry, -eltorito-alt-boot
Finalize the current El Torito boot catalog entry and begin a new one.
A boot image file and all its necessary options shall be specified before
option -eltorito-alt-boot.
All further El Torito boot options apply to the new catalog
entry. Up to 32 catalog entries are possible.
@c man .TP
@item -e iso_rr_path
@kindex -e El Torito EFI boot image
@cindex Bootability, control, -e
Specify the boot image file which shall be mentioned in the current
entry of the El Torito boot catalog. It will be marked as suitable for EFI.
@*
Option -e should be followed by option -no-emul-boot and no other El Torito
options before an eventual -eltorito-alt-boot.
@c man .TP
@item @minus{}@minus{}efi-boot iso_rr_path
@kindex @minus{}@minus{}efi-boot El Torito EFI boot image
@cindex Bootability, control, @minus{}@minus{}efi-boot
Perform -eltorito-alt-boot, option -e with the given
iso_rr_path, -no-emul-boot, and again -eltorito-alt-boot. This gesture is
used for achieving EFI-bootability of the GRUB2 rescue CD.
@c man .TP
@item -eltorito-platform "x86"|"PPC"|"Mac"|"efi"|0xnn|nnn
@kindex -eltorito-platform El Torito Platform Id
@cindex Bootability, control, -eltorito-platform
Set the Platform Id number for the next option -b or -eltorito-boot.
The number may be chosen by a platform name or by a number between
0 and 255 (0x00 and 0xFF). "x86" = 0 is for PC-BIOS,
"PPC" = 1 for some PowerPC systems, "Mac" = 2 for some MacIntosh systems,
"efi" = 0xEF for EFI on modern PCs with x86 compatible CPUs or others.
@*
If the new platform id differs from the previous one, -eltorito-alt-boot
gets performed.
@c man .TP
@item -boot-load-size number|"full"
@kindex -boot-load-size El Torito boot image load size
@cindex Bootability, boot image load size, -boot-load-size
Set the number of 512-byte blocks to be loaded at boot time
from the boot image in the current catalog entry.
@*
Non-emulating BIOS bootimages usually need a load size of 4.
Nevertheless the default setting of mkisofs is to use the full size of the
boot image rounded up to a multiple of 4 512-byte blocks. This default
may be explicitly enforced by the word "full" instead of a number.
@*
EFI boot images usually get set the number of blocks occupied
by the boot image file.
@*
El Torito cannot represent load sizes higher than 65535.
@c man .TP
@item -hard-disk-boot
@kindex -hard-disk-boot El Torito boot image emulation
@cindex Bootability, boot image emulation, -hard-disk-boot
Mark the boot image in the current catalog entry as emulated hard disk.
(Not suitable for any known boot loader.)
@c man .TP
@item -no-emul-boot
@kindex -no-emul-boot El Torito boot image emulation
@cindex Bootability, no boot image emulation, -no-emul-boot
Mark the boot image in the current catalog entry as not emulating
floppy or hard disk. (This is to be used with all known boot loaders.)
@*
If neither -hard-disk-boot nor -no-emul-boot is given, then the
boot image will be marked as emulating a floppy.
(Not suitable for any known boot loader.)
@c man .TP
@item -eltorito-id text|56_hexdigits
@kindex -eltorito-id El Torito boot section id string
@cindex Bootability, El Torito section id string, -eltorito-id
Define the ID string of the boot catalog
section where the boot image will be listed. If the value consists of 56
characters [0-9A-Fa-f] then it is converted into 28 bytes, else the first
28 characters become the ID string.
The ID string of the first boot image becomes the overall catalog ID.
It is limited to 24 characters. Other id_strings become section IDs.
@c man .TP
@item -eltorito-selcrit hexdigits
@kindex -eltorito-selcrit El Torito boot selection criteria
@cindex Bootability, El Torito selection criteria, -eltorito-selcrit
Define the Selection Criteria of the boot image.
Up to 20 bytes get read from the given characters [0-9A-Fa-f].
They get attributed to the boot image entry in the catalog.
@c man .TP
@item -boot-info-table
@kindex -boot-info-table Patch El Torito boot image
@cindex Bootability, boot image patching, -boot-info-table
Overwrite bytes 8 to 63 in the current boot image. The information will be
supplied by xorriso in the course of image production: Block address of
the Primary Volume Descriptor, block address of the boot image file,
size of the boot image file.
@c man .TP
@item @minus{}@minus{}grub2-boot-info
@kindex @minus{}@minus{}grub2-boot-info Patch El Torito boot image
@cindex Bootability, boot image patching, @minus{}@minus{}grub2-boot-info
Overwrite bytes 2548 to 2555 in the current boot image by the address
of that boot image.
The address is written as 64 bit little-endian number. It is the
2KB block address of the boot image content, multiplied by 4,
and then incremented by 5.
@c man .TP
@item -c iso_rr_path
@kindex -c El Torito boot catalog name
@cindex Bootability, boot catalog name, -c, -eltorito-catalog
Set the address of the El Torito boot catalog file within the image.
This file address is not significant for the booting PC-BIOS or EFI,
but it may later be read by other programs in order to learn about
the available boot images.
@c man .TP
@item -eltorito-catalog iso_rr_path
@kindex -eltorito-catalog El Torito boot catalog name
Alias of -c.
@c man .TP
@item @minus{}@minus{}boot-catalog-hide
@kindex @minus{}@minus{}boot-catalog-hide Hide El Torito boot catalog
@cindex Bootability, boot catalog hidden, @minus{}@minus{}boot-catalog-hide
Prevent the El Torito boot catalog from appearing as file
in the directory trees of the image.
@end table
@c man .TP
@c man .B System Area, MBR, GPT, APM, other boot blocks:
@node SystemArea, Charset, Bootable, Options
@section System Area, MBR, GPT, APM, other boot blocks
@c man .PP
@cindex System Area, _definition
The first 16 blocks of an ISO image are the System Area.
It is reserved for system dependent boot software. This may be the
boot facilities and partition tables of various hardware architectures.
@*
@cindex MBR, _definition
A @strong{MBR} (Master Boot Record) contains boot code and a partition table.
It is read by PC-BIOS when booting from USB stick or hard disk,
and by PowerPC CHRP or PReP when booting.
An MBR partition with type 0xee indicates the presence of GPT.
@*
@cindex GPT, _definition
A @strong{GPT} (GUID Partition Table) marks partitions in a more modern way.
It is read by EFI when booting from USB stick or hard disk, and may be used
for finding and mounting a HFS+ partition inside the ISO image.
@*
@cindex APM, _definition
An @strong{APM} (Apple Partition Map) marks the HFS+ partition.
It is read by Macs for booting and for mounting.
@*
MBR, GPT and APM are combinable. APM occupies the first 8 bytes of
MBR boot code. All three do not hamper El Torito booting from CDROM.
@*
@command{xorrisofs} supports further boot facilities:
MIPS Big Endian (SGI), MIPS Little Endian (DEC), SUN SPARC, HP-PA, DEC Alpha.
Those are mutually not combinable and also not combinable with MBR, GPT,
or APM.
@c man .PP
@sp 1
@cindex Interval reader for system area and partitions
Several of the following options expect disk paths as input but also accept
description strings for the libisofs interval reader, which is able to cut
out data from disk files or -indev and to zeroize parts of the content:
-G, -generic-boot, @minus{}@minus{}embedded-boot, @minus{}@minus{}grub2-mbr,
-isohybrid-mbr, -efi-boot-part, -prep-boot-part, -B, -sparc-boot,
-append_partition.
@*
The description string consists
of the following components, separated by colon ':'
@*
"@minus{}@minus{}interval:"Flags":"Interval":"Zeroizers":"Source
@*
The component "@minus{}@minus{}interval" states that this is not
a plain disk path but rather a interval reader description string.
@*
The component Flags modifies the further interpretation:
@*
"local_fs" demands to read from a file depicted by the path in Source.
@*
"imported_iso" demands to read from the -indev. This works only if -outdev
is not the same as -indev. The Source component is ignored.
@*
"appended_partition_NNN" with a decimal number NNN works only for options
which announce El Torito boot image paths: -b, -e, --efi-boot. The number gives
the partition number as used with the corresponding option -append_partition.
@*
The component Interval consists of two byte address numbers separated by a "-" character. E.g. "0-429" means to read bytes 0 to 429.
@*
The component Zeroizers consists of zero or more comma separated strings.
They define which part of the read data to zeroize. Byte number 0 means
the byte read from the Interval start address.
Each string may be one of:
@*
"zero_mbrpt" demands to zeroize the MBR partition table if
bytes 510 and 511 bear the MBR signature 0x55 0xaa.
@*
"zero_gpt" demands to check for a GPT header in bytes 512 to 1023,
to zeroize it and its partition table blocks.
@*
"zero_apm" demands to check for an APM block 0 and to zeroize
its partition table blocks.
@*
Start_byte"-"End_byte demands to zeroize the read-in bytes beginning
with number Start_byte and ending after End_byte.
@*
The component Source is the file path with flag "local_fs", and ignored with
flag "imported_iso".
@*
Byte numbers may be scaled by a suffix out of @{k,m,g,t,s,d@} meaning
multiplication by @{1024, 1024k, 1024m, 1024g, 2048, 512@}. A scaled value
end number depicts the last byte of the scaled range.
@*
E.g. "0d-0d" is "0-511".
@*
Examples:
@*
"local_fs:0-32767:zero_mbrpt,zero_gpt,440-443:/tmp/template.iso"
@*
"imported_iso:45056d-47103d::"
@*
@table @asis
@sp 1
@c man .TP
@item -G disk_path
@kindex -G Fill System Area e.g. by MBR
@cindex Bootability, fill System Area e.g. by MBR, -G, @minus{}@minus{}embedded-boot, -generic-boot
Copy at most 32768 bytes from the given disk file to the very start of
the ISO image.
@*
Other than a El Torito boot image, the file disk_path needs not to be added
to the ISO image. It will not show up as file in the directory trees.
@*
In multi-session situations, the special disk_path "." prevents reading of
a disk file but nevertheless causes the adjustments in the
existing MBR, which were ordered by other options.
@c man .TP
@item -generic-boot disk_path
@kindex -generic-boot Fill System Area e.g. by MBR
Alias of -G.
@c man .TP
@item @minus{}@minus{}embedded-boot disk_path
@kindex @minus{}@minus{}embedded-boot Fill System Area e.g. by MBR
Alias of -G.
@c man .TP
@item @minus{}@minus{}grub2-mbr disk_path
@kindex @minus{}@minus{}grub2-mbr Install modern GRUB2 MBR
@cindex Bootability, install modern GRUB2 MBR, @minus{}@minus{}grub2-mbr
Install disk_path in the System Area and treat it as modern GRUB2 MBR.
The content start address of the first boot
image is converted to a count of 512 byte blocks, and an offset of 4 is added.
The result is written as 64 bit little-endian number to byte address 0x1b0.
@c man .TP
@item -isohybrid-mbr disk_path
@kindex -isohybrid-mbr Install ISOLINUX isohybrid MBR
@cindex Bootability, install ISOLINUX isohybrid MBR, -isohybrid-mbr
Install disk_path as ISOLINUX isohybrid MBR which makes the boot image
given by option -b bootable from USB sticks and hard disks via PC-BIOS.
This preparation is normally done by ISOLINUX program isohybrid
on the already produced ISO image.
@*
The disk path should lead to one of the Syslinux files isohdp[fp]x*.bin .
The MBR gets patched according to isohybrid needs. The first partition
describes the range of the ISO image. Its start is at block 0 by default,
but may be set to 64 disk blocks by option -partition_offset 16.
@*
For the meaning of special disk_path "." see option -G.
@c man .TP
@item -isohybrid-gpt-basdat
@kindex -isohybrid-gpt-basdat Mark boot image in GPT
@cindex Bootability, mark boot image in GPT, -isohybrid-gpt-basdat
Mark the current El Torito boot image (see options -b and -e) in an actually
invalid GPT as partition of type Basic Data. This works only with
-isohybrid-mbr and has the same impact on the system area as -efi-boot-part.
It cannot be combined with -efi-boot-part or -hfsplus.
@*
The first three boot images which are marked by GPT will also show up
as partition entries in MBR. The MBR partition of type 0xEF is what actually
is used by EFI firmware for booting from USB stick.
The MBR partition for PC-BIOS gets type 0x00 rather than 0x17 in this case.
Often the further MBR entries are the ones which actually get used by EFI.
@c man .TP
@item -isohybrid-gpt-hfsplus
@kindex -isohybrid-gpt-hfsplus Mark boot image in GPT
@cindex Bootability, mark boot image in GPT, -isohybrid-gpt-hfsplus
Mark the current El Torito boot image (see options -b and -e) in GPT as
partition of type HFS+.
Impact and restrictions are like with -isohybrid-gpt-basdat.
@c man .TP
@item -isohybrid-apm-hfsplus
@kindex -isohybrid-apm-hfsplus Mark boot image in APM
@cindex Bootability, mark boot image in APM, -isohybrid-apm-hfsplus
Mark the current El Torito boot image (see options -b and -e) in Apple
Partition Map as partition of type HFS+. This works only with -isohybrid-mbr
and has a similar impact on the system area as -hfsplus. It cannot be
combined with -efi-boot-part or -hfsplus.
@*
The ISOLINUX isohybrid MBR file must begin by a known pattern of
32 bytes of x86 machine code which essentially does nothing. It will get
overwritten by 32 bytes of APM header mock-up.
@c man .TP
@item -part_like_isohybrid
@kindex -part_like_isohybrid Mark partitions like with isohybrid
@cindex Bootability, partitions like with isohybrid, -part_like_isohybrid
Control whether -isohybrid-gpt-basdat, -isohybrid-gpt-hfsplus, and
-isohybrid-apm-hfsplus apply even if not -isohybrid-mbr is present.
No MBR partition of type 0xee emerges, even if GPT gets produced.
Gaps between GPT and APM partitions will not be filled by more partitions.
Appended partitions get mentioned in APM if other APM partitions emerge.
@c man .TP
@item -iso_mbr_part_type "default"|number|type_guid
@kindex -iso_mbr_part_type Set type of ISO MBR partition
@cindex Bootability, type of ISO MBR partition, -iso_mbr_part_type
Set the partition type
of the MBR or GPT partition which represents the ISO or at least protects it.
@*
Number may be 0x00 to 0xff. The text "default" re-enables the default types
of the various occasions to create an ISO MBR partition.
This is without effect if no such partition emerges by other settings or
if the partition type is prescribed mandatorily like 0xee for GPT protective
MBR or 0x96 for CHRP.
@*
If instead a type_guid is given by a 32-digit hex string like
a2a0d0ebe5b9334487c068b6b72699c7 or by a structured text like
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, then it will be used as partition type
if the ISO filesystem appears as partition in GPT.
In MBR, C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped to 0xef.
Any other GUID will be mapped to 0x83.
@c man .TP
@item @minus{}@minus{}protective-msdos-label
@kindex @minus{}@minus{}protective-msdos-label Patch System Area partition table
@cindex Bootability, patch System Area partition table, @minus{}@minus{}protective-msdos-label
Patch the System Area by a simple PC-DOS partition table where partition 1
claims the range of the ISO image but leaves the first block unclaimed.
This is mutally exclusive to option -isohybrid-mbr.
@c man .TP
@item @minus{}@minus{}mbr-force-bootable
@kindex @minus{}@minus{}mbr-force-bootable Enforce MBR bootable/active flag
@cindex Bootability, bootable MBR partition, @minus{}@minus{}mbr-force-bootable
Enforce an MBR partition with "bootable/active" flag if options like
@minus{}@minus{}protective-msdos-label or @minus{}@minus{}grub2-mbr are given.
These options normally cause the flag to be set if there is an
MBR partition of type other than 0xee or 0xef.
If no such partition exists, then no bootflag is set, unless
@minus{}@minus{}mbr-force-bootable forces creation of a dummy partition
of type 0x00 which covers only the first block of the ISO image.
@*
If no bootable MBR is indicated by other options and a partition gets created
by -append_partition, then @minus{}@minus{}mbr-force-bootable causes a
bootflag like it would do with e.g. @minus{}@minus{}protective-msdos-label.
@c man .TP
@item @minus{}@minus{}gpt-iso-bootable
@kindex @minus{}@minus{}gpt-iso-bootable Set Legacy BIOS bootable flag
@cindex Bootability, GPT Legacy BIOS bootable, @minus{}@minus{}gpt-iso-bootable
Set bit 2 of the GPT partition flags for the ISO 9660 partition if such a GPT
partition emerges. This bit is specified as "Legacy BIOS bootable" but its
true significance is unclear.
Some GPT-aware BIOS might want to see it in some partition.
@c man .TP
@item @minus{}@minus{}gpt-iso-not-ro
@kindex @minus{}@minus{}gpt-iso-not-ro Do not set Read-only flag
@cindex Bootability, GPT Read-only flag, @minus{}@minus{}gpt-iso-not-ro
Do not set bit 60 of the GPT partition flags for the ISO 9660 partition if such
a GPT partition emerges. This bit is specified as "Read-only" and thus
appropriate. But it is unusual in GPT disk partitions.
@c man .TP
@item -partition_offset 2kb_block_adr
@kindex -partition_offset Make mountable by partition 1
@cindex Mountability, by non-trivial partition 1, -partition_offset
Cause a partition table with a single partition that begins at the
given block address. This is counted in 2048 byte
blocks, not in 512 byte blocks. If the block address is non-zero then it must
be at least 16. Values larger than 16 are hardly of use.
A non-zero partition offset causes two superblocks to be
generated and two sets of directory trees. The image is then mountable from its
absolute start as well as from the partition start.
@*
The offset value of an ISO image gets preserved when a new session is added
to a loaded image.
So the value defined here is only in effect if a new ISO image gets written.
@c man .TP
@item -partition_hd_cyl number
@kindex -partition_hd_cyl MBR heads per cylinder
@cindex MBR, sectors per head, -partition_sec_hd
Set the number of heads per cylinder for the MBR partition table.
0 chooses a default value. Maximum is 255.
@c man .TP
@item -partition_sec_hd number
@kindex -partition_sec_hd MBR sectors per head
@cindex MBR, sectors per head, -partition_sec_hd
Set the number of sectors per head for the MBR partition table.
0 chooses a default value. Maximum is 63.
@*
The product partition_sec_hd * partition_hd_cyl * 512 is the cylinder size.
It should be divisible by 2048 in order to make exact alignment possible.
With appended partitions and -appended_part_as_gpt there is no limit for
the number of cylinders. Else there may be at most 1024 of them.
If the cylinder size is too small to stay below the limit,
then appropriate values of partition_hd_cyl are chosen with
partition_sec_hd 32 or 63. If the image is larger than 8,422,686,720 bytes,
then the cylinder size constraints cannot be fulfilled for MBR.
They seem not overly important anyway.
Flat block addresses in partition tables are good for 1 TiB.
@c man .TP
@item -partition_cyl_align mode
@kindex -partition_cyl_align Image size alignment
@cindex Image size, alignment, -partition_cyl_align
Control image size alignment to an integer number of cylinders.
It is prescribed by isohybrid specs and it seems to please program fdisk.
Cylinder size must be divisible by 2048.
Images larger than 8,323,596,288 bytes cannot be aligned in MBR partition
table.
@*
Mode "auto" is default. Alignment by padding happens only if
option -isohybrid-mbr is given.
@*
Mode "on" causes alignment by padding with option
@minus{}@minus{}protective-msdos-label too.
Mode "all" is like "on" but also pads up partitions from -append_partition
to an aligned size.
@*
Mode "off" disables alignment unconditionally.
@c man .TP
@item -append_partition partition_number type_code disk_path
@kindex -append_partition Append MBR or GPT partition after image
@cindex MBR, GPT, append partition, -append_partition
Cause a prepared filesystem image to be appended to the ISO image and to be
described by a partition table entry in a boot block at the start of the
emerging ISO image. The partition entry will bear the size of the submitted
file rounded up to the next multiple of 2048 bytes or to the next multiple
of the cylinder size.
@*
Beware of subsequent multi-session runs. The appended partition will get
overwritten.
@*
@cindex Appended partitions, MBR
With @strong{MBR}:
@*
partition_number may be 1 to 4. Number 1 will put the whole ISO image into
the unclaimed space before partition 1. So together with most xorriso MBR
or GPT features, number 2 would be the most natural choice.
@*
The type_code may be "FAT12", "FAT16", "Linux",
or a hexadecimal number between 0x00 and 0xff. Not all those numbers will
yield usable results. For a list of codes search the Internet for
"Partition Types" or run fdisk command "L".
If the partition appears in GPT then type_code 0xef is mapped to the EFI System
Partition Type GUID. All others get mapped to Basic Data Type GUID.
@*
type_code may also be a type GUID as plain hex string like
a2a0d0ebe5b9334487c068b6b72699c7 or as structured text like
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7. It will be used if the partition is
mentioned in GPT. In MBR, C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped
to 0xef. Any other GUID will be mapped to 0x83.
In APM, 48465300-0000-11AA-AA11-00306543ECAC will be mapped to partition
type "Apple_HFS", any other to "Data".
@*
If some other command causes the production of GPT, then the appended
partitions will be mentioned there too, even if not -appended_part_as_gpt
is given.
@*
@cindex Appended partitions, GPT
@strong{GPT} can be forced by option -appended_part_as_gpt.
@*
partition_number may be 1 to 8. But other than with MBR partitions it is not
guaranteed that the resulting GPT partition will have this number, because
it might get occupied by a partition entry which fills a gap in the coverage
of the whole emerging image.
@*
The chance to get the desired partition number is increased much by
option -appended_gpt_with_gaps.
@*
The type_code may be the same as described with MBR. Given GUIDs are used
unchanged. Given MBR partition types get translated. 0xef becomes
C12A7328-F81F-11D2-BA4B-00A0C93EC93B, others become
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7.
@*
@c man .TP
@item -appended_part_as_gpt
@kindex -appended_part_as_gpt Appended partitions in GPT
@cindex GPT, mark appended partitions, -appended_part_as_gpt
Marks partitions from -append_partition in GPT rather than in MBR.
In this case the MBR shows a single partition
of type 0xee which covers the whole output data.
@*
By default, appended partitions get marked in GPT only if GPT is produced
because of other options.
@*
This option raises the maximum number of appended partitions from 4 to 8.
But it is not guaranteed that the resulting GPT partition will have the
given partition_number. Other GPT partitions may emerge. The final sorting by
start block address may put one of them in the partition entry with the desired
number, so that the appended partition will get a higher number.
@*
Given MBR partition types get translated.
0xef becomes C12A7328-F81F-11D2-BA4B-00A0C93EC93B, others become
EBD0A0A2-B9E5-4433-87C0-68B6B72699C7.
@c man .TP
@item -appended_part_as_apm
@kindex -appended_part_as_apm Appended partitions in APM
@cindex APM, mark appended partitions, -appended_part_as_apm
Marks partitions from -append_partition in Apple Partition Map, too.
The partition number in APM will not be influenced by -append_partition
parameter partition_number.
@*
By default, appended partitions get marked in APM only if APM is produced
because of other options and -part_like_isohybrid is enabled.
@c man .TP
@item -appended_gpt_with_gaps
@kindex appended_gpt_with_gaps Sparsely filled GPT
@cindex GPT, sparsely filled, -appended_gpt_with_gaps
Possibly leave some parts of the resulting image unclaimed by partitions in
the emerging GPT in order to increase he chance to get in GPT the
partition numbers given with option -append_partition.
@*
The ISO 9660 filesystem gets marked by a GPT partition
only if none of the appended partitions has partition number 1,
and if no other command causes a partition inside the emerging ISO 9660
filesystem, and if -partition_offset is 16.
@*
If this option is not given, then gap filling partitions will be inserted
so that no part of the emerging image after block 16 is unclaimed by GPT
partitions. This happens only if partitions get appended and a valid GPT
emerges, e.g. by option -appended_part_as_gpt.
Commands which produce isohybrid-style invalid GPT disable gap filling.
@c man .TP
@item -efi-boot-part disk_path
@kindex -efi-boot-part EFI boot partition
@cindex Bootability, for EFI, -efi-boot-part
Copy a file from disk into the emerging ISO image and mark it by a GPT entry as
EFI System Partition. EFI boot firmware is supposed to use a FAT filesystem
image in such a partition for booting from USB stick or hard disk.
@*
Instead of a disk_path, the word @minus{}@minus{}efi-boot-image may be given.
It exposes in GPT the content of the first El Torito EFI boot image as
EFI system partition. EFI boot images are introduced by options -e or
@minus{}@minus{}efi-boot.
The affected EFI boot image cannot show up in HFS+ because it is stored
outside the HFS+ partition.
@c man .TP
@item @minus{}@minus{}gpt_disk_guid value
@kindex @minus{}@minus{}gpt_disk_guid GPT GUID
@cindex Disk GUID, for GPT, @minus{}@minus{}gpt_disk_guid
Control whether an emerging GPT shall get a randomly generated disk GUID
or whether the GUID is supplied by the user.
Value "random" is default. Value "modification-date" produces a low quality
GUID from the value set by option @minus{}@minus{}modification-date=.
@*
A string of 32 hex digits, or a RFC 4122 compliant GUID string may be used to
set the disk GUID directly. UEFI prescribes the first three components of
a RFC 4122 GUID string to be byte-swapped in the binary representation:
@*
E.g. @minus{}@minus{}gpt_disk_guid 2303cd2a-73c7-424a-a298-25632da7f446
equals @minus{}@minus{}gpt_disk_guid 2acd0323c7734a42a29825632da7f446
@*
The partition GUIDs get generated by minimally varying the disk GUID.
@c man .TP
@item -chrp-boot-part
@kindex -chrp-boot-part CHRP partition
@cindex Bootability, for CHRP, -chrp-boot-part
Mark the block range of the whole emerging ISO image as MBR partition of type
0x96. This is not compatible with any other feature that produces MBR
partition entries. It makes GPT unrecognizable.
@*
CHRP is often used in conjunction with HFS. It is not yet tested whether HFS+
filesystems produced with option -hfsplus would boot on any
CHRP capable machine which does not boot pure ISO 9660 as well.
@c man .TP
@item -chrp-boot
@kindex -chrp-boot CHRP partition
Alias of -chrp-boot-part.
@c man .TP
@item -prep-boot-part disk_path
@kindex -prep-boot-part PReP partition
@cindex Bootability, for PReP, -prep-boot-part
Copy a file from disk into the emerging ISO image and mark it by a MBR
partition entry of type 0x41. PReP boot firmware is supposed to read
the content of the partition as single ELF executable file.
This option is compatible with other MBR partitions and with GPT.
@c man .TP
@item -mips-boot iso_rr_path
@kindex -mips-boot MIPS Big Endian boot image
@cindex Bootability, control, -mips-boot
Declare a data file in the image to be a
MIPS Big Endian boot file and cause production of a MIPS Big Endian Volume
Header. This is mutually exclusive with production of other boot blocks
like MBR.
It will overwrite the first 512 bytes of any data provided by -G.
Up to 15 boot files can be declared by multiple -mips-boot options.
@c man .TP
@item -mipsel-boot iso_rr_path
@kindex -mipsel-boot MIPS Little Endian boot image
@cindex Bootability, control, -mipsel-boot
Declare a data file in the image to be the
MIPS Little Endian boot file. This is mutually exclusive with other boot
blocks.
It will overwrite the first 512 bytes of any data provided by -G.
Only a single boot file can be declared by -mipsel-boot.
@c man .TP
@item -B disk_path[,disk_path ...]
@kindex -B SUN SPARC boot images
@cindex Bootability, control, -B, -sparc-boot
Cause one or more data files on disk to be written after the end of the
ISO image. A SUN Disk Label will be written into the first 512 bytes of the
ISO image which lists this image as partition 1 and the given disk_paths as
partition 2 up to 8.
@*
The disk files should contain suitable boot images for SUN SPARC systems.
@*
The pseudo disk_path "..." causes that all empty partition entries become
copies of the last non-empty entry. If no other disk_path is given before
"..." then all partitions describe the ISO image. In this case, the boot
loader code has to be imported by option -G.
@c man .TP
@item -sparc-boot disk_path[,disk_path ...]
@kindex -sparc-boot SUN SPARC boot images
Alias of -B.
@c man .TP
@item -sparc-label text
@kindex -sparc-label SUN Disk Label text
@cindex Bootability, SUN Disk Label text, -sparc-label
Set the ASCII label text of a SUN Disk Label.
@c man .TP
@item @minus{}@minus{}grub2-sparc-core iso_rr_path
@kindex @minus{}@minus{}grub2-sparc-core SUN SPARC core file
@cindex Bootability, control, @minus{}@minus{}grub2-sparc-core
Cause the content address and size of the given data file in the image
to be written after the SUN Disk Label. Both numbers are counted in bytes.
The address is written as 64 bit big-endian number to byte 0x228.
The size is written as 32 bit big-endian number to byte 0x230.
@c man .TP
@item -hppa-cmdline text
@kindex -hppa-cmdline HP-PA PALO command line
@cindex Bootability, control, -hppa-cmdline
Set the PALO command line for HP-PA. Up to 1023 characters are permitted
by default. With -hppa-hdrversion 4 the limit is 127.
@*
Note that the first five -hppa options are mandatory, if any of the -hppa
options is given. Only option -hppa-hdrversion is allowed to be missing.
@c man .TP
@item -hppa-bootloader iso_rr_path
@kindex -hppa-bootloader HP-PA bootloader file
@cindex Bootability, control, -hppa-bootloader
Designate the given path as HP-PA bootloader file.
@c man .TP
@item -hppa-kernel-32 iso_rr_path
@kindex -hppa-kernel_32 HP-PA kernel_32 file
@cindex Bootability, control, -hppa-kernel_32
Designate the given path as HP-PA 32 bit kernel file.
@c man .TP
@item -hppa-kernel-64 iso_rr_path
@kindex -hppa-kernel_64 HP-PA kernel_64 file
@cindex Bootability, control, -hppa-kernel_64
Designate the given path as HP-PA 64 bit kernel file.
@c man .TP
@item -hppa-ramdisk iso_rr_path
@kindex -hppa-ramdisk HP-PA ramdisk file
@cindex Bootability, control, -hppa-ramdisk
Designate the given path as HP-PA RAM disk file.
@c man .TP
@item -hppa-hdrversion number
@kindex -hppa-hdrversion HP-PA PALO header version
@cindex Bootability, control, -hppa-hdrversion
Choose between PALO header version 5 (default) and version 4.
For the appropriate value see in PALO source code: PALOHDRVERSION.
@c man .TP
@item -alpha-boot iso_rr_path
@kindex -alpha-boot DEC Alpha SRM bootloader
@cindex Bootability, control, -alpha-boot
Declare a data file in the image to be the DEC Alpha SRM Secondary Bootstrap
Loader and cause production of a boot sector which points to it.
This is mutually exclusive with production of other boot blocks like MBR.
@end table
@c man .TP
@c man .B Character sets:
@node Charset, Jigdo, SystemArea, Options
@section Character sets
@c man .PP
@cindex Character sets, _definition
Character sets should not matter as long as only english alphanumeric
characters are used for file names or as long as all writers and readers
of the medium use the same character set.
Outside these constraints it may be necessary to let xorriso convert byte
codes.
@*
A conversion from input character set to the output character set is
performed when an ISO image gets written.
Vice versa there is a conversion from output character set to the
input character set when an ISO image gets loaded.
The sets can be defined by options -input-charset and -output-charset,
if needed.
@*
@table @asis
@sp 1
@c man .TP
@item -input-charset character_set_name
@kindex -input-charset set character set of disk file names
@cindex Character Set, for disk file names, -input-charset
Set the character set from which to convert disk file names when
inserting them into the ISO image.
@sp 1
@c man .TP
@item -output-charset character_set_name
@kindex -output-charset set character set of ISO file names
@cindex Character Set, for ISO file names, -output-charset
Set the character set from which to convert names of loaded ISO images
and to which to convert names when writing ISO images.
@end table
@c man .TP
@c man .B Jigdo Template Extraction:
@node Jigdo, Miscellaneous, Charset, Options
@section Jigdo Template Extraction
@c man .PP
@cindex Jigdo Template Extraction, _definition
From man genisoimage:
"Jigdo is a tool to help in the distribution of large files like CD and
DVD images; see http://atterer.net/jigdo/ for more details. Debian CDs
and DVD ISO images are published on the web in jigdo format to allow
end users to download them more efficiently."
@*
If the use of libjte was enabled at compile time of xorriso, then
@command{xorrisofs} can produce a .jigdo and a .template file together with a
single-session ISO image. If not, then Jigdo options will cause a
FAILURE event, which normally leads to program abort.
@*
One may determine the ability for Jigdo by:
@*
@sp 1
$ xorrisofs -version 2>&1 | grep '^libjte' && echo YES
@*
@sp 1
@c man .PP
The .jigdo file contains checksums and symbolic file addresses.
The .template file contains the compressed ISO image with reference tags
instead of the content bytes of the listed files.
@*
Input for this process are the normal arguments for a @command{xorrisofs}
session with no image loaded, and a checksum file which lists those
data files which may be
listed in the .jigdo file and externally referenced in the .template file.
Each designated file is represented in the checksum file by a single text line:
@*
Checksum as hex digits, 2 blanks, size as 12 decimal digits or blanks, 2 blanks,
symbolic file address
@*
The kind of checksum is chosen by -jigdo "checksum_algorithm" with values "md5"
(32 hex digits) or "sha256" (64 hex digits).
It will also be used for the file address lines in the .jigdo file.
The default is "md5".
@*
The file address in a checksum file line has to bear the same basename as the
disk_path of the file which it shall match. The directory path of
the file address is decisive for To=From mapping, not for file recognition.
After To=From mapping, the file address gets written into the .jigdo
file. Jigdo restore tools will convert these addresses into really
reachable data source addresses from which they can read.
@*
If the list of jigdo parameters is not empty, then padding will be
counted as part of the ISO image.
@*
@table @asis
@sp 1
@c man .TP
@item -jigdo-checksum-algorithm "md5"|"sha256"
@kindex -jigdo-checksum-algorithm set data file checksum algorithm
@cindex Jigdo Template Extraction, -jigdo-checksum-algorithm
Set the checksum algorithm which shall be used for the data file entries
in the .jigdo file and is expected in the checksum file. Default is "md5".
@c man .TP
@item -jigdo-jigdo disk_path
@kindex -jigdo-jigdo set name of .jigdo file
@cindex Jigdo Template Extraction, -jigdo-jigdo
Set the disk_path for the .jigdo file with the checksums
and download addresses for filling the holes in .template.
@c man .TP
@item -jigdo-template disk_path
@kindex -jigdo-template set name of .template file
@cindex Jigdo Template Extraction, -jigdo-template
Set the disk_path for the .template file with the
holed and compressed ISO image copy.
@c man .TP
@item -jigdo-min-file-size size
@kindex -jigdo-min-file-size set minimum extract size
@cindex Jigdo Template Extraction, -jigdo-min-file-size
Set the minimum size for a data file to be listed
in the .jigdo file and being a hole in the .template file.
size may be a plain number counting bytes, or a number with appended
letter "k", "m", "g" to count KiB (1024 bytes), MiB (1024 KiB), or
GiB (1024 MiB).
@c man .TP
@item -jigdo-force-checksum disk_path_pattern
@kindex -jigdo-force-checksum add check pattern for checksum file
@cindex Jigdo Template Extraction, -jigdo-force-checksum
adds a regular expression pattern which will get compared
with the absolute disk_path of any data file that was not found in the
checksum file.
A match causes a MISHAP event, which normally does not abort the
program run but finally causes a non-zero exit value of the program.
@c man .TP
@item -jigdo-force-md5 disk_path_pattern
@kindex -jigdo-force-md5 add check pattern for checksum file
@cindex Jigdo Template Extraction, -jigdo-force-md5
Outdated alias of -jigdo-force-checksum.
@c man .TP
@item -jigdo-exclude disk_path_pattern
@kindex -jigdo-exclude add exclusion pattern for checksum file
@cindex Jigdo Template Extraction, -jigdo-exclude
Add a regular expression pattern which will get compared
with the absolute disk_path of any data file. A match causes the file to
stay in .template in any case.
@c man .TP
@item -jigdo-map To=From
@kindex -jigdo-map add address translation for .jigdo
@cindex Jigdo Template Extraction, -jigdo-map
Add a string pair of the form To=From to the parameter list.
If a data file gets listed in the .jigdo file, then it is referred by the
file address from its line in the checksum file. This file address gets checked
whether it begins with the From string. If so, then this string will be
replaced by the To string and a ':' character, before it goes into the .jigdo
file. The From string should end by a '/' character.
@c man .TP
@item -checksum-list disk_path
@kindex -checksum-list set path of input checksum file
@cindex Jigdo Template Extraction, -checksum-list
Set the disk_path where to find the checksum file file with
symbolic file addresses and checksums according to -jigdo-checksum-algorithm.
@c man .TP
@item -md5-list disk_path
@kindex -md5-list set path of input checksum file
@cindex Jigdo Template Extraction, -md5-list
Outdated alias of -checksum-list.
@c man .TP
@item -jigdo-template-compress "gzip"|"bzip2"
@kindex -jigdo-template-compress choose compression algorithm
@cindex Jigdo Template Extraction, -jigdo-template-compress
Choose one of "bzip2" or "gzip" for the compression of
the template file. The jigdo file is put out uncompressed.
@c man .TP
@item -checksum_algorithm_iso list_of_names
@kindex -checksum_algorithm_iso choose .jigdo checksums
@cindex Jigdo Template Extraction, -checksum_algorithm_iso
Choose one or more of "md5", "sha1", "sha256", "sha512"
for the auxiliary "# Image Hex" checksums in the .jigdo file. The list_of_names
may e.g. look like "md5,sha1,sha512". Value "all" chooses all available
algorithms.
Note that MD5 stays always enabled.
@c man .TP
@item -checksum_algorithm_template list_of_names
@kindex -checksum_algorithm_template choose .template checksums
@cindex Jigdo Template Extraction, -checksum_algorithm_template
Choose the algorithms for the "# Template Hex" checksums in the .jigdo file.
The rules for list_of_names are the same as with -checksum_algorithm_iso.
@end table
@c man .TP
@c man .B Miscellaneous options:
@node Miscellaneous, ExSimple, Jigdo, Options
@section Miscellaneous options
@table @asis
@sp 1
@c man .TP
@item -genisoimage_completion
@kindex -genisoimage_completion completion of genisoimage options
@cindex Options completion, -genisoimage_completion
Match unrecognized option arguments which begin by a dash '-' against the
known genisoimage options, like program
genisoimage does unconditionally (and undocumentedly). If the given argument
matches the beginning of exactly one genisoimage option, then it gets replaced
by that option. Options which are genuine to mkisofs or xorriso's mkisofs
emulation are not matched that way.
Option arguments which consist entirely of a leading dash and letters out of
"dDfJlNRrTUvz" are not matched but rather interpreted as usual, i.e. as
multiple options with leading dash and each single letter.
If no genisoimage option is found or more than one are found, then a SORRY
message is issued and the argument stays as is.
@*
To enable this mode by default, write the xorriso command
@*
-genisoimage_completion on
@*
into one of the xorriso start files. See section FILES.
@c man .TP
@item -print-size
@kindex -print-size predict ISO image size
@cindex ISO image size, predict, -print-size
Print to stdandard output the foreseeable number of 2048 byte blocks in
the emerging ISO image. Do not produce this image.
@*
The result depends on several settings.
@*
If option --emul-toc is given, then padding (see -pad) is not
counted as part of the image size. In this case either use -no-pad or
add 150 (= 300 KiB) to the resulting number.
@*
If mkisofs emulation ends after option -print-size, then the properties of
the most recently specified boot image file cannot be edited by subsequent
xorriso commands.
@c man .TP
@item @minus{}@minus{}no_rc
@kindex @minus{}@minus{}no_rc do not execute startup files
@cindex Startup files, suppress, @minus{}@minus{}no_rc
Only if used as first argument this option
prevents reading and interpretation of startup files. See section FILES below.
@c man .TP
@item -help
@kindex -help list supported options
@cindex Options, list, -help
@*
List supported options to stderr. Original mkisofs options bear their
original mkisofs description texts.
@c man .TP
@item -quiet
@kindex -quiet suppress most messages
@cindex Message output, suppress, -quiet
@*
Suppress most messages of the program run, except those which indicate
problems or errors.
@c man .TP
@item -gui
@kindex -gui increase frequency of pacifier messages
@cindex Message output, increase frequency, -gui
@*
Increase the frequency of pacifier messages while writing an ISO image.
@c man .TP
@item -log-file disk_path
@kindex -log-file redirect stderr messages
@cindex Message output, redirect stderr, -log-file
@*
Truncate file disk_path to 0 size and redirect to it all messages which would
normally appear on stderr. -log-file with empty text as disk_path re-enables
output to stderr.
@c man .TP
@item -v
@kindex -v enable verbose messages
@cindex Verbosity, high, -v, -verbose
@*
Enable the output of informational program messages.
@c man .TP
@item -verbose
@kindex -verbose enable verbose messages
Alias of -v.
@c man .TP
@item -version
@kindex -version report program version
@cindex Program version, report, -version
Print to standard output a text that begins with
@*
"mkisofs 2.01-Emulation Copyright (C)"
@*
and to standard error the version information of xorriso.
@end table
@c man .br
@node Examples, Files, Options, Top
@chapter Examples
@c man .SH EXAMPLES
@c man .SS
@c man .B Overview of examples:
@c man A simple image production run
@c man .br
@c man Set ISO image paths by -graft-points
@c man .br
@c man Perform multi-session runs
@c man .br
@c man Let xorrisofs work underneath growisofs
@c man .br
@c man Incremental backup of a few directory trees
@c man .br
@c man Incremental backup with accumulated trees
@c man .br
@c man Create bootable images for PC-BIOS and EFI
@c man .br
@cindex Examples
@menu
* ExSimple:: A simple image production run
* ExGraft:: Set ISO image paths by -graft-points
* ExMkisofs:: Perform multi-session runs
* ExGrowisofs:: Let xorriso work underneath growisofs
* ExIncBackup:: Incremental backup of a few directory trees
* ExIncBckAcc:: Incremental backup with accumulated trees
* ExBootable:: Create bootable images for PC-BIOS and EFI
@end menu
@c man .SS
@c man .B A simple image production run
@node ExSimple, ExGraft, Miscellaneous, Examples
@section A simple image production run
A prepared file tree in directory ./for_iso gets copied into the root
directory of the ISO image. File permissions get set to read-only for
everybody.
Joliet attributes for Microsoft systems get added.
The resulting image gets written as data file ./image.iso on disk.
@*
@sp 1
$ xorrisofs -r -J -o ./image.iso ./for_iso
@c man .SS
@c man .B Set ISO image paths by -graft-points
@node ExGraft, ExMkisofs, ExSimple, Examples
@section Set ISO image paths by -graft-points
Without option -graft-points each given disk file is copied into the root
directory of the ISO image, maintaining its name. If a directory is given,
then its files and sub-directories are copied into the root directory,
maintaining their names.
@*
@sp 1
$ xorrisofs ... /home/me/datafile /tmp/directory
@*
@sp 1
yields in the ISO image root directory:
@*
@sp 1
/datafile
@*
/file_1_from_directory
@*
...
@*
/file_N_from_directory
@*
@sp 1
@c man .sp 1
With option -graft-points it is possible to put files and directories to
arbitrary paths in the ISO image.
@*
@sp 1
$ xorrisofs ... -graft-points /home/me/datafile /dir=/tmp/directory
@*
@sp 1
yields in the ISO image root directory:
@*
@sp 1
/datafile
@*
/dir
@*
@sp 1
Eventually needed parent directories in
the image will be created automatically:
@*
@sp 1
/datafiles/file1=/home/me/datafile
@*
@sp 1
yields in the ISO image:
@sp 1
@*
/datafiles/file1
@*
@sp 1
The attributes of directory /datafiles get copied from /home/me on disk.
@*
@sp 1
@c man .sp 1
Normally one should avoid = and \ characters in the ISO part of a pathspec.
But if it must be, one may escape them:
@sp 1
@*
/with_\=_and_\\/file=/tmp/directory/file
@*
@sp 1
yields in the ISO image:
@*
@sp 1
/with_=_and_\/file
@c man .SS
@c man .B Perform multi-session runs
@node ExMkisofs, ExGrowisofs, ExGraft, Examples
@section Perform multi-session runs
This example works for multi-session media only:
CD-R[W], DVD-R[W], DVD+R, BD-R.
Add cdrskin option @minus{}@minus{}grow_overwriteable_iso
to all -as cdrecord runs
in order to enable multi-session emulation on overwritable media.
@*
The first session is written like this:
@*
@sp 1
$ xorrisofs -graft-points \
@*
/tree1=prepared_for_iso/tree1 \
@*
| xorriso -as cdrecord -v dev=/dev/sr0 blank=fast -multi -eject -
@*
@sp 1
Follow-up sessions are written like this (the run of dd is only to give demons
a chance to spoil it):
@*
@sp 1
$ m=$(xorriso -as cdrecord dev=/dev/sr0 -msinfo)
@*
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
@*
$ xorrisofs -M /dev/sr0 -C $m -graft-points \
@*
/tree2=prepared_for_iso/tree2 \
@*
| xorriso -as cdrecord -v dev=/dev/sr0 -waiti -multi -eject -
@*
@sp 1
Always eject the drive tray between sessions.
@*
The run of xorriso -as mkisofs will read old sessions via the CD-ROM
driver of /dev/sr0. This driver might not be aware of the changed content
as long as the medium is not loaded again. In this case the previous session
would not be properly assessed by xorriso and the new session would contain
only the newly added files.
@*
Some systems have not enough patience with automatic tray loading and some
demons may interfere with a first CD-ROM driver read attempt from a freshly
loaded medium.
@*
When loading the tray manually, wait 10 seconds after the drive has stopped
blinking.
@*
A safe automatic way seems to be a separate run of xorriso for loading
the tray with proper waiting, and a subsequent run of dd which shall offer
itself to any problems caused by demons assessing the changed drive status.
If this does not help, insert a run of "sleep 10" between xorriso and dd.
@c man .SS
@c man .B Let xorrisofs work underneath growisofs
@node ExGrowisofs, ExIncBackup, ExMkisofs, Examples
@section Let xorriso work underneath growisofs
growisofs expects an ISO formatter program which understands options -C and
-M. A variable is defined to override the hardcoded default name.
@*
@sp 1
$ export MKISOFS="xorrisofs"
@*
$ growisofs -Z /dev/dvd /some/files
@*
$ growisofs -M /dev/dvd /more/files
@*
@sp 1
If no "xorrisofs" is available on your system, then you will have to create
a link pointing to the xorriso binary and tell growisofs to use it. E.g. by:
@*
@sp 1
$ ln -s $(which xorriso) "$HOME/xorrisofs"
@*
$ export MKISOFS="$HOME/xorrisofs"
@*
@sp 1
One may quit mkisofs emulation by argument "@minus{}@minus{}" and make
use of all xorriso commands. growisofs dislikes options which
start with "-o" but -outdev must be set to "-".
So use "outdev" instead:
@*
@sp 1
$ growisofs -Z /dev/dvd @minus{}@minus{}for_backup @minus{}@minus{} \
@*
outdev - -update_r /my/files /files
@*
$ growisofs -M /dev/dvd @minus{}@minus{}for_backup @minus{}@minus{} \
@*
outdev - -update_r /my/files /files
@*
Note that @minus{}@minus{}for_backup is given in the mkisofs emulation.
To preserve the recorded extra data it must already be in effect, when
the emulation loads the image.
@c man .SS
@c man .B Incremental backup of a few directory trees
@node ExIncBackup, ExIncBckAcc, ExGrowisofs, Examples
@section Incremental backup of a few directory trees
This changes the directory trees /open_source_project and /personal_mail
in the ISO image so that they become exact copies of their disk counterparts.
ISO file objects get created, deleted or get their attributes adjusted
accordingly.
@*
ACL, xattr, hard links and MD5 checksums will be recorded.
It is expected that inode numbers in the disk filesystem are persistent
over cycles of mounting and booting.
Files with names matching *.o or *.swp get excluded explicitly.
@*
@sp 1
@c man .sp 1
To be used several times on the same medium, whenever an update of
the two disk trees to the medium is desired. Begin with a blank medium and
update it until he run fails gracefully due to lack of remaining space on
the old one.
@*
Always eject the drive tray between sessions.
A run of dd shall give demons a chance to spoil the first read on freshly
loaded media.
@*
@sp 1
$ msinfo=$(xorriso -as cdrecord dev=/dev/sr0 -msinfo)
@*
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
@*
$ load_opts=
@*
$ test -n "$msinfo" && load_opts="-M /dev/sr0 -C $msinfo"
@*
$ xorrisofs $load_opts -o - @minus{}@minus{}for_backup -m '*.o' -m '*.swp' \
@*
-V PROJ_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" -graft-points \
@*
-old-root / \
@*
/projects=/home/thomas/projects \
@*
/personal_mail=/home/thomas/personal_mail \
@*
| xorriso -as cdrecord dev=/dev/sr0 -v -multi -waiti -eject -
@*
@sp 1
@c man .sp 1
This makes sense if the full backup leaves substantial remaining capacity
on media and if the expected changes are much smaller than the full backup.
@*
@sp 1
@c man .sp 1
@strong{Better do not use your youngest backup for -old-root}.
Have at least two media which you use alternatingly. So only older backups
get endangered by the new write operation, while the newest backup is
stored safely on a different medium.
@*
Always have a blank medium ready to perform a full backup in case the update
attempt fails due to insufficient remaining capacity. This failure will
not spoil the old medium, of course.
@*
@sp 1
@c man .sp 1
If inode numbers on disk are not persistent, then use
option @minus{}@minus{}old-root-no-ino .
In this case an update run will compare recorded MD5
sums against the current file content on hard disk.
@*
@sp 1
@c man .sp 1
With @strong{mount} option @strong{-o "sbsector="} on GNU/Linux
or @strong{-s} on FreeBSD or NetBSD
it is possible to access the session trees which represent the older backup
versions. With CD media, GNU/Linux mount accepts session numbers directly by
its option "session=".
@*
Multi-session media and most overwritable media written by xorriso can tell
the sbsectors of their sessions by xorriso option -toc:
@*
@sp 1
$ xorriso -dev /dev/sr0 -toc
@*
@sp 1
xorriso can print the matching mount command for a session number:
@*
@sp 1
$ xorriso -mount_cmd /dev/sr0 session 12 /mnt
@*
@sp 1
or for a volume id that matches a search expression:
@*
@sp 1
$ xorriso -mount_cmd /dev/sr0 volid '*2008_12_05*' /mnt
@*
@sp 1
Both yield on standard output something like:
@*
mount -t iso9660 -o nodev,noexec,nosuid,ro,sbsector=1460256 '/dev/sr0' '/mnt'
@*
@sp 1
The superuser may let xorriso execute the mount command directly:
@*
@sp 1
# osirrox -mount /dev/sr0 "volid" '*2008_12_05*' /mnt
@c man .SS
@c man .B Incremental backup with accumulated trees
@node ExIncBckAcc, ExBootable, ExIncBackup, Examples
@section Incremental backup with accumulated trees
Solaris does not offer the option to mount older sessions.
In order to keep them accessible, one may map all files to a file tree under
a session directory and accumulate those directories from session to session.
The -root tree is cloned from the -old-root tree before it gets
compared with the appropriate trees on disk.
@*
This demands to know the previously used session directory name.
@*
With the first session:
@*
@sp 1
$ xorrisofs -root /session1 \
@*
-o - @minus{}@minus{}for_backup -m '*.o' -m '*.swp' \
@*
-V PROJ_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" -graft-points \
@*
/projects=/home/thomas/projects \
@*
/personal_mail=/home/thomas/personal_mail \
@*
| xorriso -as cdrecord dev=/dev/sr0 -v blank=as_needed \
@*
-multi -waiti -eject -
@*
@sp 1
@c man .sp 1
With the second session, option -old-root refers to /session1 and the
new -root is /session2.
@*
Always eject the drive tray between sessions.
A run of dd shall give demons a chance to spoil the first read on freshly
loaded media.
@*
@sp 1
$ msinfo=$(xorriso -as cdrecord dev=/dev/sr0 -msinfo)
@*
$ dd if=/dev/sr0 count=1 >/dev/null 2>&1
@*
$ load_opts=
@*
$ test -n "$msinfo" && load_opts="-M /dev/sr0 -C $msinfo"
@*
$ xorrisofs $load_opts -root /session2 -old-root /session1 \
@*
-o - @minus{}@minus{}for_backup -m '*.o' -m '*.swp' \
@*
-V PROJ_MAIL_"$(date '+%Y_%m_%d_%H%M%S')" -graft-points \
@*
/projects=/home/thomas/projects \
@*
/personal_mail=/home/thomas/personal_mail \
@*
| xorriso -as cdrecord dev=/dev/sr0 -v -multi -waiti -eject -
@*
@sp 1
With the third session, option -old-root refers to /session2.
The new -root is /session3. And so on.
@c man .SS
@c man .B Create bootable images for PC-BIOS and EFI
@node ExBootable, , ExIncBckAcc, Examples
@section Create bootable images for PC-BIOS and EFI
The SYSLINUX/ISOLINUX boot loader suite is popular for booting PC-BIOS.
The ISOLINUX wiki prescribes to create on disk a directory ./CD_root and
to copy all desired files underneath that directory. Especially file
isolinux.bin shall be copied to ./CD_root/isolinux/isolinux.bin .
This is the boot image file.
@*
The prescribed mkisofs options can be used unchanged with @command{xorrisofs}:
@*
@sp 1
$ xorrisofs -o output.iso \
@*
-b isolinux/isolinux.bin -c isolinux/boot.cat \
@*
-no-emul-boot -boot-load-size 4 -boot-info-table \
@*
./CD_root
@*
@sp 1
Put it on CD by a burn program. E.g.:
@*
@sp 1
$ xorriso -as cdrecord -v dev=/dev/sr0 blank=as_needed output.iso
@*
@sp 1
@c man .sp 1
The image from above example will boot from CD, DVD or BD, but not from
USB stick or other hard-disk-like devices. This can be done by help of an
isohybrid MBR. Syslinux provides matching template files
as isohdp[fp]x*.bin . E.g. /usr/lib/syslinux/isohdpfx.bin .
@*
If a few hundred KB of size do not matter, then option -partition_offset
can be used to create a partition table where partition 1 starts not
at block 0. This facilitates later manipulations of the USB stick by
tools for partitioning and formatting.
@*
The image from the following example will be prepared for booting via MBR
and its first partition will start at hard disk block 64.
@*
It will also boot from optical media.
@*
@sp 1
$ xorrisofs -o output.iso \
@*
-b isolinux/isolinux.bin -c isolinux/boot.cat \
@*
-no-emul-boot -boot-load-size 4 -boot-info-table \
@*
-isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin \
@*
-partition_offset 16 \
@*
./CD_root
@*
@sp 1
Become superuser and copy the image to the unpartitioned base device file
of the USB stick. On GNU/Linux this is e.g. /dev/sdb, not /dev/sdb1.
@*
CAUTION:
This will overwrite any partitioning on the USB stick and make
remaining data unaccessible.
@*
So first make sure you got the correct address of the intended device.
E.g. by reading 100 MiB data from it and watching it blinking:
@*
@sp 1
# dd bs=2K if=/dev/sdb count=50K >/dev/null
@*
@sp 1
Now copy the image onto it
@*
@sp 1
# dd bs=2K if=output.iso of=/dev/sdb
@*
@sp 1
@c man .sp 1
Now for EFI:
@*
The boot image file has to be the image of an EFI System Partition,
i.e. a FAT filesystem with directory /EFI/BOOT and boot files with
EFI prescribed names: BOOTIA32.EFI for 32 bit x86,
BOOTx64.EFI for 64 bit AMD/x86 (in UEFI-2.4 there is indeed a lower case "x"),
BOOTAA64.EFI for 64 bit ARM. The software in the FAT filesystem should be
able to find and inspect the ISO filesystem for boot loader configuration and
start of operating system. GRUB2 program grub-mkimage can produce such a
FAT filesystem with suitable content, which then uses further GRUB2
software from the ISO filesystem.
@*
EFI boot equipment may be combined with above ISOLINUX isohybrid for PC-BIOS
in a not really UEFI-2.4 compliant way, which obviously works well. It yields
MBR and GPT partition tables, both with nested partitions.
Assumed the EFI System Partition image is ready as ./CD_root/boot/grub/efi.img,
add the following options before the directory address ./CD_root:
@*
@sp 1
-eltorito-alt-boot -e 'boot/grub/efi.img' -no-emul-boot \
@*
-isohybrid-gpt-basdat \
@*
@sp 1
More compliant with UEFI-2.4 is to decide for either MBR or GPT and to
append a copy of the EFI System Partition in order to avoid overlap of
ISO partition and EFI partition. Here for MBR:
@*
@sp 1
-eltorito-alt-boot -e 'boot/grub/efi.img' -no-emul-boot \
-append_partition 2 0xef ./CD_root/boot/grub/efi.img \
@*
@sp 1
The resulting ISOs are supposed to boot from optical media and USB stick.
One may omit option -eltorito-alt-boot if no option -b is used to make
the ISO bootable via PC-BIOS.
@*
@sp 1
@c man .sp 1
For ISOs with pure GRUB2 boot equipment consider to use GRUB2 tool
grub-mkrescue as frontend to xorrisofs.
@*
@sp 1
@c man .sp 1
If you have a bootable ISO filesystem and want to know its equipment plus
a proposal how to reproduce it, try:
@*
@sp 1
$ xorriso -hfsplus on -indev IMAGE.iso \
-report_el_torito plain -report_system_area plain \
-print "" -print "======= Proposal for xorrisofs options:" \
-report_el_torito as_mkisofs
@*
@sp 1
@*
@sp 1
@c man .SH FILES
@node Files, Environ, Examples, Top
@chapter Files
@c man .SS
@c man .B Startup files:
@section Startup Files
@*
If not --no_rc is given as the first argument then @command{xorrisofs}
attempts on startup to read and execute lines from the following files:
@*
@sp 1
/etc/default/xorriso
@*
/etc/opt/xorriso/rc
@*
/etc/xorriso/xorriso.conf
@*
$HOME/.xorrisorc
@*
@sp 1
The files are read in the sequence given here, but none of them is required
to exist. The lines are not interpreted as @command{xorrisofs} options but
as generic xorriso commands. See man xorriso.
@c man .PP
After the xorriso startup files, the program tries one by one to open for
reading:
@*
@sp 1
./.mkisofsrc
@*
$MKISOFSRC
@*
$HOME/.mkisofsrc
@*
$(dirname $0)/.mkisofsrc
@*
@sp 1
On success it interprets the file content and does not try further files.
The last address is used only if start argument 0 has a non-trivial dirname.
@*
The reader currently interprets the following NAME=VALUE pairs:
@*
@sp 1
APPI default for -A
@*
PUBL default for -publisher
@*
SYSI default for -sysid
@*
VOLI default for -V
@*
VOLS default for -volset
@*
@sp 1
Any other lines will be silently ignored.
@*
@sp 1
@c man .SH ENVIRONMENT
@node Environ, Seealso, Files, Top
@chapter Environ
The following environment variables influence the program behavior:
@*
HOME is used to find xorriso and mkisofs startup files.
@*
MKISOFSRC may be used to point the program to a mkisofs startup file.
@*
SOURCE_DATE_EPOCH belongs to the specs of reproducible-builds.org.
It is supposed to be either undefined or to contain a decimal number
which tells the seconds since january 1st 1970. If it contains a number,
then it is used as time value to set the default of
@minus{}@minus{}modification-date=.
@minus{}@minus{}gpt_disk_guid defaults to "modification-date".
The default of @minus{}@minus{}set_all_file_dates is then "set_to_mtime".
Further the "now" time for ISO nodes without disk source is then set to
the SOURCE_DATE_EPOCH value.
@*
Startup files and program options can override the effect of SOURCE_DATE_EPOCH.
@c man .SS
@c man .SH SEE ALSO
@c man .TP
@c man For generic xorriso command mode
@c man .BR xorriso(1)
@c man .TP
@c man For the cdrecord emulation of xorriso
@c man .BR xorrecord(1)
@c man .TP
@c man For mounting xorriso generated ISO 9660 images (-t iso9660)
@c man .BR mount(8)
@c man .TP
@c man Other programs which produce ISO 9660 images
@c man .BR mkisofs(8),
@c man .BR genisoimage(8)
@c man .TP
@c man Programs which burn sessions to optical media
@c man .BR growisofs(1),
@c man .BR cdrecord(1),
@c man .BR wodim(1),
@c man .BR cdrskin(1),
@c man .BR xorriso(1)
@c man .TP
@c man ACL, xattr, Linux file attributes, project ids
@c man .BR getfacl(1),
@c man .BR setfacl(1),
@c man .BR getfattr(1),
@c man .BR setfattr(1),
@c man .BR lsattr(1),
@c man .BR chattr(1),
@c man .BR ext4(5),
@c man .BR xfs_quota(8)
@c man .TP
@c man MD5 checksums
@c man .BR md5sum(1)
@c man .TP
@c man On FreeBSD the commands for xattr and MD5 differ
@c man .BR getextattr(8),
@c man .BR setextattr(8),
@c man .BR md5(1)
@c man-ignore-lines begin
@node Seealso, Bugreport, Environ, Top
@chapter See also
@table @asis
@item For generic @command{xorriso} command mode
xorriso(1)
@item For the cdrecord emulation of @command{xorriso}
xorrecord(1)
@item For mounting xorriso generated ISO 9660 images (-t iso9660)
mount(8)
@item Other programs which produce ISO 9660 images
mkisofs(8),
genisoimage(1)
@item Programs which burn sessions to optical media
growisofs(1),
cdrecord(1),
wodim(1),
cdrskin(1),
xorriso(1)
@item ACL and xattr
getfacl(1),
setfacl(1),
getfattr(1),
setfattr(1),
lsattr(1),
chattr(1),
ext4(5),
xfs_quota(8)
@item MD5 checksums
md5sum(1)
@item On FreeBSD some commands differ:
getextattr(8),
setextattr(8),
md5(1)
@end table
@c man-ignore-lines end
@c man .SH BUGS
@node Bugreport, Legal, Seealso, Top
@chapter Reporting bugs
@cindex Bugs, reporting
@cindex Problems, reporting
To report bugs, request help, or suggest enhancements for @command{xorriso},
please send electronic mail to the public list @email{bug-xorriso@@gnu.org}.
If more privacy is desired, mail to @email{scdbackup@@gmx.net}.
@*
@sp 1
Please describe what you expect @command{xorriso} to do,
the program arguments or dialog commands by which you tried to achieve it,
the messages of @command{xorriso}, and the undesirable outcome of your
program run.
@*
@sp 1
Expect to get asked more questions before solutions can be proposed.
@c man .SH AUTHOR
@node Legal, CommandIdx, Bugreport, Top
@chapter Author, Copyright, Credits
@section Author
Thomas Schmitt <scdbackup@@gmx.net>
@*
for libburnia-project.org
@c man .SH COPYRIGHT
@section Copyright
Copyright (c) 2011 - 2024 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.
@c man .SH CREDITS
@section Credits
@command{xorrisofs} is in part based on work by Vreixo Formoso who provides
libisofs together with Mario Danic who also leads the libburnia team.
Vladimir Serbinenko contributed the HFS+ filesystem code and related knowledge.
@*
Compliments towards Joerg Schilling whose cdrtools served me for ten years.
@c man-ignore-lines begin
@node CommandIdx, ConceptIdx, Legal, Top
@chapter Alphabetic Command List
@printindex ky
@node ConceptIdx,, CommandIdx, Top
@chapter Alphabetic List of Concepts and Objects
@printindex cp
@c man-ignore-lines end
@bye