genisoimage
create ISO9660/Joliet/HFS filesystem with optional Rock Ridge attributes
see also :
wodim - mkzftree
Synopsis
genisoimage
[options] [-o filename]
pathspec [pathspec ...]
add an example, a script, a trick and tips
examples
To create a vanilla ISO9660 filesystem image in the file
cd.iso, where the directory cd_dir will become the
root directory of the CD, call:
% genisoimage -o cd.iso cd_dir
To create a CD with Rock Ridge extensions of the source directory
cd_dir:
% genisoimage -o cd.iso -R cd_dir
To create a CD with Rock Ridge extensions of the source directory
cd_dir where all files have at least read permission and
all files are owned by root, call:
% genisoimage -o cd.iso -r cd_dir
To write a tar archive directly to a CD that will later contain a
simple ISO9660 filesystem with the tar archive call:
% tar cf - . | genisoimage -stream-media-size 333000 | \
wodim dev=b,t,l -dao tsize=333000s -
To create a HFS hybrid CD with the Joliet and Rock Ridge
extensions of the source directory cd_dir:
% genisoimage -o cd.iso -R -J -hfs cd_dir
To create a HFS hybrid CD from the source directory cd_dir
that contains Netatalk Apple/Unix files:
% genisoimage -o cd.iso --netatalk cd_dir
To create a HFS hybrid CD from the source directory
cd_dir, giving all files CREATOR and TYPES based on just
their filename extensions listed in the file "mapping".:
% genisoimage -o cd.iso -map mapping cd_dir
To create a CD with the Apple Extensions to ISO9660, from the
source directories cd_dir and another_dir. Files in
all the known Apple/Unix format are decoded and any other files
are given CREATOR and TYPE based on their magic number given in
the file magic:
% genisoimage -o cd.iso -apple -magic magic -probe \
cd_dir another_dir
The following example puts different files on the CD that all
have the name README, but have different contents when seen as a
ISO9660/Rock Ridge, Joliet or HFS CD.
Current directory contains:
% ls -F
README.hfs README.joliet README.Unix cd_dir/
The following command puts the contents of the directory
cd_dir on the CD along with the three README files — but
only one will be seen from each of the three filesystems:
% genisoimage -o cd.iso -hfs -J -r -graft-points \
-hide README.hfs -hide README.joliet \
-hide-joliet README.hfs -hide-joliet README.Unix \
-hide-hfs README.joliet -hide-hfs README.Unix \
README=README.hfs README=README.joliet \
README=README.Unix cd_dir
i.e. the file README.hfs will be seen as README on the HFS CD and
the other two README files will be hidden. Similarly for the
Joliet and ISO9660/Rock Ridge CD.
There are probably all sorts of strange results possible with
combinations of the hide options ...
description
genisoimage
is a pre-mastering program to generate ISO9660/Joliet/HFS
hybrid filesystems.
genisoimage
is capable of generating the System Use Sharing Protocol
records (SUSP) specified by the Rock Ridge
Interchange Protocol. This is used to further describe
the files in the ISO9660 filesystem to a Unix host, and
provides information such as long filenames, UID/GID, POSIX
permissions, symbolic links, and block and character device
files.
If Joliet or
HFS hybrid command line options are specified,
genisoimage will create the additional filesystem
metadata needed for Joliet or HFS. Otherwise
genisoimage will generate a pure ISO9660
filesystem.
genisoimage
can generate a true (or shared) HFS hybrid
filesystem. The same files are seen as HFS files when
accessed from a Macintosh and as ISO9660 files when accessed
from other machines. HFS stands for Hierarchical File
System and is the native filesystem used on Macintosh
computers.
As an
alternative, genisoimage can generate the Apple
Extensions to ISO9660 for each file. These extensions
provide each file with CREATOR, TYPE and certain Finder
flags when accessed from a Macintosh. See the HFS
MACINTOSH FILE FORMATS section below.
genisoimage
takes a snapshot of a given directory tree, and generates a
binary image which will correspond to an ISO9660 and/or HFS
filesystem when written to a block device.
Each file
written to the ISO9660 filesystem must have a filename in
the 8.3 format (up to 8 characters, period, up to 3
characters, all uppercase), even if Rock Ridge is in use.
This filename is used on systems that are not able to make
use of the Rock Ridge extensions (such as MS-DOS), and each
filename in each directory must be different from the other
filenames in the same directory. genisoimage
generally tries to form correct names by forcing the Unix
filename to uppercase and truncating as required, but often
this yields unsatisfactory results when the truncated names
are not all unique. genisoimage assigns weightings to
each filename, and if two names that are otherwise the same
are found, the name with the lower priority is renamed to
include a 3-digit number (guaranteed to be unique). For
example, the two files foo.bar and foo.bar.~1~
could be rendered as FOO.BAR;1 and
FOO000.BAR;1.
When used with
various HFS options, genisoimage will attempt to
recognise files stored in a number of Apple/Unix file
formats and will copy the data and resource forks as well as
any relevant Finder information. See the HFS MACINTOSH
FILE FORMATS section below for more about formats
genisoimage supports.
Note that
genisoimage is not designed to communicate with the
writer directly. Most writers have proprietary command sets
which vary from one manufacturer to another, and you need a
specialized tool to actually burn the disc. wodim is
one such tool. The latest version of wodim is
available from http://www.cdrkit.org/.
pathspec
is the path of the directory tree to be copied into the
ISO9660 filesystem. Multiple paths can be specified, and
genisoimage will merge the files found in all of the
specified path components to form the filesystem image.
If the option
-graft-points has been specified, it is
possible to graft the paths at points other than the root
directory, and it is possible to graft files or directories
onto the cdrom image with names different than what they
have in the source filesystem. This is easiest to illustrate
with a couple of examples. Let’s start by assuming
that a local file ../old.lis exists, and you wish to
include it in the cdrom image.
foo/bar/=../old.lis
will include
old.lis in the cdrom image at
/foo/bar/old.lis, while
foo/bar/xxx=../old.lis
will include
old.lis in the cdrom image at /foo/bar/xxx.
The same sort of syntax can be used with directories as
well. genisoimage will create any directories
required such that the graft points exist on the cdrom image
— the directories do not need to appear in one of the
paths. By default, any directories that are created on the
fly like this will have permissions 0555 and appear to be
owned by the person running genisoimage. If you wish
other permissions or owners of the intermediate directories,
see -uid, -gid,
-dir-mode, -file-mode
and -new-dir-mode.
genisoimage
will also run on Windows machines when compiled with
Cygnus’ cygwin (available from
http://www.cygwin.com/). Therefore most references in
this man page to Unix can be replaced with
Win32.
options
Several options
can be specified as defaults in a .genisoimagerc
configuration file, as well as on the command line. If a
parameter is specified in both places, the setting from the
command line is used. For details on the format and possible
locations of this file, see genisoimagerc(5).
-abstract file
Specifies the abstract
filename. There is space for 37 characters. Equivalent to
ABST in the .genisoimagerc file.
-A
application_id
Specifies a text string that
will be written into the volume header. This should describe
the application that will be on the disc. There is space for
128 characters. Equivalent to APPI in the
.genisoimagerc file.
-allow-limited-size
When processing files larger
than 2GiB which cannot be easily represented in ISO9660, add
them with a shrunk visible file size to ISO9660 and with the
correct visible file size to the UDF system. The result is
an inconsistent filesystem and users need to make sure that
they really use UDF rather than ISO9660 driver to read a
such disk. Implies enabling -udf.
-allow-leading-dots
-ldots
Allow ISO9660 filenames to begin with a period. Usually,
a leading dot is replaced with an underscore in order to
maintain MS-DOS compatibility.
This violates the ISO9660
standard, but it happens to work on many systems. Use with
caution.
-allow-lowercase
This options allows lowercase
characters to appear in ISO9660 filenames.
This violates the ISO9660 standard, but it happens to work
on some systems. Use with caution.
-allow-multidot
This options allows more than
one dot to appear in ISO9660 filenames. A leading dot is not
affected by this option, it may be allowed separately using
-allow-leading-dots.
This violates the ISO9660 standard, but it happens to work
on many systems. Use with caution.
-biblio
file
Specifies the bibliographic
filename. There is space for 37 characters. Equivalent to
BIBL in the .genisoimagerc file.
-cache-inodes
-no-cache-inodes
Enable or disable caching inode
and device numbers to find hard links to files. If
genisoimage finds a hard link (a file with multiple
names), the file will also be hard-linked on the CD, so the
file contents only appear once. This helps to save space.
-cache-inodes is default on Unix-like
operating systems, but
-no-cache-inodes is default on some
other systems such as Cygwin, because it is not safe to
assume that inode numbers are unique on those systems. (Some
versions of Cygwin create fake inode numbers using a weak
hashing algorithm, which may produce duplicates.) If two
files have the same inode number but are not hard links to
the same file, genisoimage -cache-inodes
will not behave correctly.
-no-cache-inodes is safe in all
situations, but in that case genisoimage cannot
detect hard links, so the resulting CD image may be larger
than necessary.
-alpha-boot
alpha_boot_image
Specifies the path and filename
of the boot image to be used when making an Alpha/SRM
bootable CD. The pathname must be relative to the source
path specified to genisoimage.
-hppa-bootloader
hppa_bootloader_image
Specifies the path and filename
of the boot image to be used when making an HPPA bootable
CD. The pathname must be relative to the source path
specified to genisoimage. Other options are required,
at the very least a kernel filename and a boot command line.
See the HPPA NOTES section below for more
information.
-hppa-cmdline
hppa_boot_command_line
Specifies the command line to
be passed to the HPPA boot loader when making a bootable CD.
Separate the parameters with spaces or commas. More options
must be passed to genisoimage, at the very least a
kernel filename and the boot loader filename. See the
HPPA NOTES section below for more information.
-hppa-kernel-32
hppa_kernel_32
-hppa-kernel-64
hppa_kernel_64
Specifies the path and filename
of the 32-bit and/or 64-bit kernel images to be used when
making an HPPA bootable CD. The pathnames must be relative
to the source path specified to genisoimage. Other
options are required, at the very least the boot loader
filename and the boot command line. See the HPPA
NOTES section below for more information.
-hppa-ramdisk
hppa_ramdisk_image
Specifies the path and filename
of the ramdisk image to be used when making an HPPA bootable
CD. The pathname must be relative to the source path
specified to genisoimage. This parameter is optional.
Other options are required, at the very least a kernel
filename and the boot command line. See the HPPA
NOTES section below for more information.
-mips-boot
mips_boot_image
Specifies the path and filename
of the boot image to be used when making an SGI/big-endian
MIPS bootable CD. The pathname must be relative to the
source path specified to genisoimage. This option may
be specified several times, to store up to 15 boot
images.
-mipsel-boot
mipsel_boot_image
Specifies the path and filename
of the boot image to be used when making an
DEC/little-endian MIPS bootable CD. The pathname must be
relative to the source path specified to
genisoimage.
-B
img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e
-sparc-boot
img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e
Specifies a comma-separated
list of boot images that are needed to make a bootable CD
for SPARC systems. Partition 0 is used for the ISO9660
image, the first image file is mapped to partition 1. The
comma-separated list may have up to 7 fields, including
empty fields. This option is required to make a bootable CD
for Sun SPARC systems. If -B or
-sparc-boot has been specified, the first
sector of the resulting image will contain a Sun disk label.
This disk label specifies slice 0 for the ISO9660 image and
slices 1 to 7 for the boot images that have been specified
with this option. Byte offsets 512 to 8191 within each of
the additional boot images must contain a primary boot that
works for the appropriate SPARC architecture. The rest of
each of the images usually contains a UFS filesystem used
for the primary kernel boot stage.
The implemented
boot method is the one found with SunOS 4.x and SunOS 5.x.
However, it does not depend on SunOS internals but only on
properties of the Open Boot prom, so it should be usable for
any OS for SPARC systems. For more information also see the
NOTES section below.
If the special
filename ... is used, the actual and all following
boot partitions are mapped to the previous partition. If
genisoimage is called with -G
image -B ... all boot partitions
are mapped to the partition that contains the ISO9660
filesystem image and the generic boot image that is located
in the first 16 sectors of the disc is used for all
architectures.
-G
generic_boot_image
Specifies the path and filename
of the generic boot image to be used when making a generic
bootable CD. The boot image will be placed on the first 16
sectors of the CD, before the ISO9660 primary volume
descriptor. If this option is used together with
-sparc-boot, the Sun disk label will
overlay the first 512 bytes of the generic boot image.
-b
eltorito_boot_image
Specifies the path and filename
of the boot image to be used when making an El Torito
bootable CD for x86 PCs. The pathname must be relative to
the source path specified to genisoimage. This option
is required to make an El Torito bootable CD. The boot image
must be exactly 1200 kB, 1440 kB or 2880 kB, and
genisoimage will use this size when creating the
output ISO9660 filesystem. The PC BIOS will use the image to
emulate a floppy disk, so the first 512-byte sector should
contain PC boot code. This will work, for example, if the
boot image is a LILO-based boot floppy.
If the boot
image is not an image of a floppy, you need to add either
-hard-disk-boot or
-no-emul-boot. If the system should
not boot off the emulated disk, use
-no-boot.
If
-sort has not been specified, the boot images
are sorted with low priority (+2) to the beginning of the
medium. If you don’t like this, you need to specify a
sort weight of 0 for the boot images.
-eltorito-alt-boot
Start with a new set of El
Torito boot parameters. Up to 63 El Torito boot entries may
be stored on a single CD.
-hard-disk-boot
Specifies that the boot image
used to create El Torito bootable CDs is a hard disk image.
The image must begin with a master boot record that contains
a single partition.
-no-emul-boot
Specifies that the boot image
used to create El Torito bootable CDs is a "no
emulation" image. The system will load and execute this
image without performing any disk emulation.
-no-boot
Specifies that the created El
Torito CD should be marked as not bootable. The system will
provide an emulated drive for the image, but will boot off a
standard boot device.
-boot-load-seg
segment_address
Specifies the load segment
address of the boot image for no-emulation El Torito
CDs.
-boot-load-size
load_sectors
Specifies the number of
"virtual" (512-byte) sectors to load in
no-emulation mode. The default is to load the entire boot
file. Some BIOSes may have problems if this is not a
multiple of 4.
-boot-info-table
Specifies that a 56-byte table
with information of the CD-ROM layout will be patched in at
offset 8 in the boot file. If this option is given, the boot
file is modified in the source filesystem, so make a
copy of this file if it cannot be easily regenerated! See
the EL TORITO BOOT INFO TABLE section for a
description of this table.
-C
last_sess_start,next_sess_start
This option is needed to create
a CD Extra or the image of a second session or a
higher-level session for a multisession disc.
-C takes two numbers separated by a comma. The
first is the first sector in the last session of the disc
that should be appended to. The second number is the
starting sector number of the new session. The correct
numbers may be retrieved by calling wodim -msinfo
... If -C is used in conjunction with
-M, genisoimage will create a filesystem
image that is intended to be a continuation of the previous
session. If -C is used without -M,
genisoimage will create a filesystem image that is
intended to be used for a second session on a CD Extra. This
is a multisession CD that holds audio data in the first
session and an ISO9660 filesystem in the second session.
-c
boot_catalog
Specifies the path and filename
of the boot catalog, which is required for an El Torito
bootable CD. The pathname must be relative to the source
path specified to genisoimage. This file will be
inserted into the output tree and not created in the source
filesystem, so be sure the specified filename does not
conflict with an existing file, or it will be excluded.
Usually a name like boot.catalog is chosen.
If
-sort has not been specified, the boot catalog
sorted with low priority (+1) to the beginning of the
medium. If you don’t like this, you need to specify a
sort weight of 0 for the boot catalog.
-check-oldnames
Check all filenames imported
from the old session for compliance with the ISO9660 file
naming rules. Without this option, only names longer than 31
characters are checked, as these files are a serious
violation of the ISO9660 standard.
-check-session
file
Check all old sessions for
compliance with actual genisoimage ISO9660 file
naming rules. This is a high-level option that combines
-M file -C 0,0
-check-oldnames. For the parameter
file, see the description of -M.
-copyright
file
Specifies copyright
information, typically a filename on the disc. There is
space for 37 characters. Equivalent to COPY in the
.genisoimagerc file.
-d
Do not append a period to files that do not have
one.
This violates the ISO9660
standard, but it happens to work on many systems. Use with
caution.
-D
Do not use deep directory
relocation, and instead just pack them in the way we see
them.
If ISO9660:1999 has not been
selected, this violates the ISO9660 standard, but it happens
to work on many systems. Use with caution.
-dir-mode
mode
Overrides the mode of
directories used to create the image to mode,
specified as 4 digits of permission bits as in
chmod(1). This option automatically enables Rock
Ridge extensions.
-dvd-video
Generate a DVD-Video compliant
UDF filesystem. This is done by sorting the order of the
content of the appropriate files and by adding padding
between the files if needed. Note that the sorting only
works if the DVD-Video filenames include uppercase
characters only.
Note that in
order to get a DVD-Video compliant filesystem image, you
need to prepare a DVD-Video compliant directory tree. This
requires a directory VIDEO_TS (all caps) in the root
directory of the resulting DVD, and usually another
directory AUDIO_TS. VIDEO_TS needs to include
all needed files (filenames must be all caps) for a
compliant DVD-Video filesystem.
-f
Follow symbolic links when generating the filesystem.
When this option is not in use, symbolic links will be
entered using Rock Ridge if enabled, otherwise they will be
ignored.
-file-mode
mode
Overrides the mode of regular
files used to create the image to mode, specified as
4 digits of permission bits as in chmod(1). This
option automatically enables Rock Ridge extensions.
-gid
gid
Overrides the group ID read
from the source files to the value of gid. Specifying
this option automatically enables Rock Ridge extensions.
-gui
Switch the behaviour for a GUI. This currently makes the
output more verbose but may have other effects in the
future.
-graft-points
Allow use of graft points for
filenames. If this option is used, all filenames are checked
for graft points. The filename is divided at the first
unescaped equal sign. All occurrences of ’\’ and
’=’ characters must be escaped with
’\’ if -graft-points has been
specified.
-hide
glob
Hide any files matching
glob, a shell wildcard pattern, from being seen in
the ISO9660 or Rock Ridge directory. glob may match
any part of the filename or path. If glob matches a
directory, the contents of that directory will be hidden. In
order to match a directory name, make sure the pathname does
not include a trailing ’/’ character. All the
hidden files will still be written to the output CD image
file. See also -hide-joliet, and
README.hide. This option may be used multiple
times.
-hide-list
file
A file containing a list of
shell wildcards to be hidden. See -hide.
-hidden
glob
Add the hidden (existence)
ISO9660 directory attribute for files and directories
matching glob, a shell wildcard pattern. This
attribute will prevent the files from being shown by some
MS-DOS and Windows commands. glob may match any part
of the filename or path. In order to match a directory name,
make sure the pathname does not include a trailing
’/’ character. This option may be used multiple
times.
-hidden-list
file
A file containing a list of
shell wildcards to get the hidden attribute. See
-hidden.
-hide-joliet
glob
Hide files and directories
matching glob, a shell wildcard pattern, from being
seen in the Joliet directory. glob may match any part
of the filename or path. If glob matches a directory,
the contents of that directory will be hidden. In order to
match a directory name, make sure the pathname does not
include a trailing ’/’ character. All the hidden
files will still be written to the output CD image file.
This option is usually used with -hide. See
also README.hide. This option may be used multiple
times.
-hide-joliet-list
file
A file containing a list of
shell wildcards to be hidden from the Joliet tree. See
-hide-joliet.
-hide-joliet-trans-tbl
Hide the TRANS.TBL files
from the Joliet tree. These files usually don’t make
sense in the Joliet world as they list the real name and the
ISO9660 name which may both be different from the Joliet
name.
-hide-rr-moved
Rename the directory
RR_MOVED to .rr_moved in the Rock Ridge tree.
It seems to be impossible to completely hide the
RR_MOVED directory from the Rock Ridge tree. This
option only makes the visible tree less confusing for people
who don’t know what this directory is for. If you need
to have no RR_MOVED directory at all, you should use
-D. Note that if -D has been
specified, the resulting filesystem is not ISO9660 level-1
compliant and will not be readable on MS-DOS. See also the
NOTES section.
-input-charset
charset
Input charset that defines the
characters used in local filenames. To get a list of valid
charset names, call genisoimage
-input-charset help. To get a 1:1 mapping,
you may use default as charset name. The default
initial values are cp437 on DOS-based systems and
iso8859-1 on all other systems. See the CHARACTER
SETS section below for more details.
-output-charset
charset
Output charset that defines the
characters that will be used in Rock Ridge filenames.
Defaults to the input charset. See CHARACTER SETS
section below for more details.
-iso-level
level
Set the ISO9660 conformance
level. Valid numbers are 1 to 4.
With level 1,
files may only consist of one section and filenames are
restricted to 8.3 characters.
With level 2,
files may only consist of one section.
With level 3,
no restrictions (other than ISO-9660:1988) do apply.
With all
ISO9660 levels from 1 to 3, all filenames are restricted to
uppercase letters, numbers and underscores (_). Filenames
are limited to 31 characters, directory nesting is limited
to 8 levels, and pathnames are limited to 255
characters.
Level 4
officially does not exist but genisoimage maps it to
ISO-9660:1999, which is ISO9660 version 2.
With level 4,
an enhanced volume descriptor with version number and file
structure version number set to 2 is emitted. Directory
nesting is not limited to 8 levels, there is no need for a
file to contain a dot and the dot has no special meaning,
filenames do not have version numbers, and filenames can be
up to 207 characters long, or 197 characters if Rock Ridge
is used.
When creating
Version 2 images, genisoimage emits an enhanced
volume descriptor, similar but not identical to a primary
volume descriptor. Be careful not to use broken software to
make ISO9660 images bootable by assuming a second PVD copy
and patching this putative PVD copy into an El Torito
VD.
-J
Generate Joliet directory records in addition to regular
ISO9660 filenames. This is primarily useful when the discs
are to be used on Windows machines. Joliet filenames are
specified in Unicode and each path component can be up to 64
Unicode characters long. Note that Joliet is not a standard
— only Microsoft Windows and Linux systems can read
Joliet extensions. For greater portability, consider using
both Joliet and Rock Ridge extensions.
-joliet-long
Allow Joliet filenames to be up
to 103 Unicode characters, instead of 64. This breaks the
Joliet specification, but appears to work. Use with
caution.
-jcharset
charset
A combination of -J
-input-charset charset. See the
CHARACTER SETS section below for more details.
-l
Allow full 31-character filenames. Normally the ISO9660
filename will be in an 8.3 format which is compatible with
MS-DOS, even though the ISO9660 standard allows filenames of
up to 31 characters. If you use this option, the disc may be
difficult to use on a MS-DOS system, but will work on most
other systems. Use with caution.
-L
Outdated option; use
-allow-leading-dots instead.
-jigdo-jigdo
jigdo_file
Produce a jigdo
.jigdo metadata file as well as the filesystem image.
See the JIGDO NOTES section below for more
information.
-jigdo-template
template_file
Produce a jigdo
.template file as well as the filesystem image. See
the JIGDO NOTES section below for more
information.
-jigdo-min-file-size
size
Specify the minimum size for a
file to be listed in the .jigdo file. Default (and
minimum allowed) is 1KB. See the JIGDO NOTES section
below for more information.
-jigdo-force-md5
path
Specify a file pattern where
files must be contained in the externally-supplied
MD5 list as supplied by -md5-list. See
the JIGDO NOTES section below for more
information.
-jigdo-exclude
path
Specify a file pattern where
files will not be listed in the .jigdo file. See the
JIGDO NOTES section below for more information.
-jigdo-map
path
Specify a pattern mapping for
the jigdo file (e.g. Debian=/mirror/debian). See the
JIGDO NOTES section below for more information.
-md5-list
md5_file
Specify a file containing the
MD5sums, sizes and pathnames of the files to be included in
the .jigdo file. See the JIGDO NOTES section
below for more information.
-jigdo-template-compress
algorithm
Specify a compression algorithm
to use for template date. gzip and bzip2 are currently
supported, and gzip is the default. See the JIGDO
NOTES section below for more information.
-log-file
log_file
Redirect all error, warning and
informational messages to log_file instead of the
standard error.
-m glob
Exclude files matching
glob, a shell wildcard pattern, from being written to
CD-ROM. glob may match either the filename component
or the full pathname. This option may be used multiple
times. For example:
genisoimage
-o rom -m '*.o' -m core -m
foobar
would exclude
all files ending in ’.o’, or called core
or foobar from the image. Note that if you had a
directory called foobar, it too (and of course all
its descendants) would be excluded.
-exclude-list
file
A file containing a list of
shell wildcards to be excluded. See -m.
-max-iso9660-filenames
Allow ISO9660 filenames to be
up to 37 characters long. This option enables
-N as the extra name space is taken from the
space reserved for file version numbers.
This violates the ISO9660 standard, but it happens to work
on many systems. Although a conforming application needs to
provide a buffer space of at least 37 characters, discs
created with this option may cause a buffer overflow in the
reading operating system. Use with extreme care.
-M path
-M device
-dev device
Specifies path to existing
ISO9660 image to be merged. The alternate form takes a SCSI
device specifier that uses the same syntax as the
dev= parameter of wodim. The output of
genisoimage will be a new session which should get
written to the end of the image specified in
-M. Typically this requires multisession
capability for the CD recorder used to write the image. This
option may only be used in conjunction with
-C.
-N
Omit version numbers from ISO9660 filenames.
This violates the ISO9660
standard, but no one really uses the version numbers anyway.
Use with caution.
-new-dir-mode
mode
Specify the mode, a 4-digit
number as used in chmod(1), to use when creating new
directories in the filesystem image. The default is
0555.
-no-bak
Exclude backup files files on
the ISO9660 filesystem; that is, filenames that contain the
characters ’~’ or ’#’ or end in
.bak. These are typically backup files for Unix text
editors.
-force-rr
Do not use the automatic Rock
Ridge attributes recognition for previous sessions. This can
work around problems with images created by, e.g., NERO
Burning ROM.
-no-rr
Do not use the Rock Ridge attributes from previous
sessions. This may help to avoid problems when
genisoimage finds illegal Rock Ridge signatures on an
old session.
-no-split-symlink-components
Don’t split the symlink
components, but begin a new Continuation Area (CE) instead.
This may waste some space, but the SunOS 4.1.4 cdrom driver
has a bug in reading split symlink components.
It is
questionable whether this option is useful nowadays.
-no-split-symlink-fields
Don’t split the symlink
fields, but begin a new Continuation Area (CE) instead. This
may waste some space, but the SunOS 4.1.4 and Solaris 2.5.1
cdrom driver have a bug in reading split symlink fields (a
’/’ can be dropped).
It is
questionable whether this option is useful nowadays.
-o
filename
Specify the output file for the
the ISO9660 filesystem image. This can be a disk file, a
tape drive, or it can correspond directly to the device name
of the optical disc writer. If not specified, stdout is
used. Note that the output can also be a block device for a
regular disk partition, in which case the ISO9660 filesystem
can be mounted normally to verify that it was generated
correctly.
-pad
Pad the end of the whole image by 150 sectors (300 kB).
This option is enabled by default. If used in combination
with -B, padding is inserted between the
ISO9660 partition and the boot partitions, such that the
first boot partition starts on a sector number that is a
multiple of 16.
The padding is
needed as many operating systems (e.g. Linux) implement
read-ahead bugs in their filesystem I/O. These bugs result
in read errors on files that are located near the end of a
track, particularly if the disc is written in Track At Once
mode, or where a CD audio track follows the data track.
-no-pad
Do not pad the end by 150
sectors (300 kB) and do not make the the boot partitions
start on a multiple of 16 sectors.
-path-list
file
A file containing a list of
pathspec directories and filenames to be added to the
ISO9660 filesystem. This list of pathspecs are processed
after any that appear on the command line. If the argument
is -, the list is read from the standard
input.
-P
Outdated option; use -publisher
instead.
-publisher
publisher_id
Specifies a text string that
will be written into the volume header. This should describe
the publisher of the CD-ROM, usually with a mailing address
and phone number. There is space for 128 characters.
Equivalent to PUBL in the .genisoimagerc
file.
-p
preparer_id
Specifies a text string that
will be written into the volume header. This should describe
the preparer of the CD-ROM, usually with a mailing address
and phone number. There is space for 128 characters.
Equivalent to PREP in the .genisoimagerc
file.
-print-size
Print estimated filesystem size
in multiples of the sector size (2048 bytes) and exit. This
option is needed for Disk At Once mode and with some CD-R
drives when piping directly into wodim, cases where
wodim needs to know the size of the filesystem image
in advance. Old versions of mkisofs wrote this
information (among other information) to stderr. As
this turns out to be hard to parse, the number without any
other information is now printed on stdout too. If
you like to write a simple shell script, redirect
stderr and catch the number from stdout. This
may be done with:
cdblocks=`
genisoimage -print-size -quiet ... `
genisoimage ... | wodim ... tsize=${cdblocks}s -
-quiet
This makes genisoimage even less verbose. No
progress output will be provided.
-R
Generate SUSP and RR records using the Rock Ridge
protocol to further describe the files on the ISO9660
filesystem.
-r
This is like the -R option, but file ownership and
modes are set to more useful values. The uid and gid are set
to zero, because they are usually only useful on the
author’s system, and not useful to the client. All the
file read bits are set true, so that files and directories
are globally readable on the client. If any execute bit is
set for a file, set all of the execute bits, so that
executables are globally executable on the client. If any
search bit is set for a directory, set all of the search
bits, so that directories are globally searchable on the
client. All write bits are cleared, because the filesystem
will be mounted read-only in any case. If any of the special
mode bits are set, clear them, because file locks are not
useful on a read-only filesystem, and set-id bits are not
desirable for uid 0 or gid 0. When used on Win32, the
execute bit is set on all files. This is a result of
the lack of file permissions on Win32 and the Cygwin POSIX
emulation layer. See also -uid,
-gid, -dir-mode,
-file-mode and
-new-dir-mode.
-relaxed-filenames
Allows ISO9660 filenames to
include all 7-bit ASCII characters except lowercase letters.
This violates the ISO9660 standard, but it happens to work
on many systems. Use with caution.
-root
dir
Moves all files and directories
into dir in the image. This is essentially the same
as using -graft-points and adding
dir in front of every pathspec, but is easier to use.
dir may actually be several levels deep. It is
created with the same permissions as other graft points.
-old-root
dir
This option is necessary when
writing a multisession image and the previous (or even
older) session was written with -root dir.
Using a directory name not found in the previous session
causes genisoimage to abort with an error. Without
this option, genisoimage would not be able to find
unmodified files and would be forced to write their data
into the image once more. -root and
-old-root are meant to be used together to do
incremental backups. The initial session would e.g. use:
genisoimage -root backup_1 dirs. The
next incremental backup with genisoimage -root
backup_2 -old-root backup_1 dirs would take
another snapshot of these directories. The first snapshot
would be found in backup_1, the second one in
backup_2, but only modified or new files need to be
written into the second session. Without these options, new
files would be added and old ones would be preserved. But
old ones would be overwritten if the file was modified.
Recovering the files by copying the whole directory back
from CD would also restore files that were deleted
intentionally. Accessing several older versions of a file
requires support by the operating system to choose which
sessions are to be mounted.
-sort
sort_file
Sort file locations on the
media. Sorting is controlled by a file that contains pairs
of filenames and sorting offset weighting. If the weighting
is higher, the file will be located closer to the beginning
of the media, if the weighting is lower, the file will be
located closer to the end of the media. There must be only
one space or tabs character between the filename and the
weight and the weight must be the last characters on a line.
The filename is taken to include all the characters up to,
but not including the last space or tab character on a line.
This is to allow for space characters to be in, or at the
end of a filename. This option does not sort the
order of the filenames that appear in the ISO9660 directory.
It sorts the order in which the file data is written to the
CD image, which is useful in order to optimize the data
layout on a CD. See README.sort for more details.
-sparc-boot
img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e
See -B above.
-sparc-label
label
Set the Sun disk label name for
the Sun disk label that is created with
-sparc-boot.
-split-output
Split the output image into
several files of approximately 1 GB each. This helps to
create DVD-sized ISO9660 images on operating systems without
large file support. wodim will concatenate more than
one file into a single track if writing to a DVD. To make
-split-output work, -o
filename must be specified. The resulting output
images will be named: filename_00,
filename_01, filename_02....
-stream-media-size
#
Select streaming operation and
set the media size to # sectors. This allows you to pipe the
output of the tar(1) program into genisoimage
and to create an ISO9660 filesystem without the need of an
intermediate tar archive file. If this option has been
specified, genisoimage reads from stdin and
creates a file with the name STREAM.IMG. The maximum
size of the file (with padding) is 200 sectors less than the
specified media size. If -no-pad has been
specified, the file size is 50 sectors less than the
specified media size. If the file is smaller,
genisoimage will write padding. This may take
awhile.
The option
-stream-media-size creates simple
ISO9660 filesystems only and may not used together with
multisession or hybrid filesystem options.
-stream-file-name
name
Reserved for future use.
-sunx86-boot
UFS_img,,,AUX1_img
Specifies a comma-separated
list of filesystem images that are needed to make a bootable
CD for Solaris x86 systems.
Note that
partition 1 is used for the ISO9660 image and that partition
2 is the whole disk, so partition 1 and 2 may not be used by
external partition data. The first image file is mapped to
partition 0. There may be empty fields in the
comma-separated list, and list entries for partition 1 and 2
must be empty. The maximum number of supported partitions is
8 (although the Solaris x86 partition table could support up
to 16 partitions), so it is impossible to specify more than
6 partition images. This option is required to make a
bootable CD for Solaris x86 systems.
If
-sunx86-boot has been specified, the
first sector of the resulting image will contain a PC fdisk
label with a Solaris type 0x82 fdisk partition that starts
at offset 512 and spans the whole CD. In addition, for the
Solaris type 0x82 fdisk partition, there is a SVr4 disk
label at offset 1024 in the first sector of the CD. This
disk label specifies slice 0 for the first (usually UFS
type) filesystem image that is used to boot the PC and slice
1 for the ISO9660 image. Slice 2 spans the whole CD slice 3
... slice 7 may be used for additional filesystem images
that have been specified with this option.
A Solaris x86
boot CD uses a 1024 byte sized primary boot that uses the
El-Torito no-emulation boot mode and a secondary
generic boot that is in CD sectors 1..15. For this reason,
both -b bootimage
-no-emul-boot and -G
genboot must be specified.
-sunx86-label
label
Set the SVr4 disk label name
for the SVr4 disk label that is created with
-sunx86-boot.
-sysid
ID
Specifies the system ID. There
is space for 32 characters. Equivalent to SYSI in the
.genisoimagerc file.
-T
Generate a file TRANS.TBL in each directory on
the CD-ROM, which can be used on non-Rock Ridge-capable
systems to help establish the correct filenames. There is
also information present in the file that indicates the
major and minor numbers for block and character devices, and
each symlink has the name of the link file given.
-table-name
table_name
Alternative translation table
filename (see above). Implies -T. If you are
creating a multisession image you must use the same name as
in the previous session.
-ucs-level
level
Set Unicode conformance level
in the Joliet SVD. The default level is 3. It may be set to
1..3 using this option.
-udf
Include UDF filesystem support in the generated
filesystem image. UDF support is currently in alpha status
and for this reason, it is not possible to create UDF-only
images. UDF data structures are currently coupled to the
Joliet structures, so there are many pitfalls with the
current implementation. There is no UID/GID support, there
is no POSIX permission support, there is no support for
symlinks. Note that UDF wastes the space from sector ~20 to
sector 256 at the beginning of the disc in addition to the
space needed for real UDF data structures.
-uid
uid
Overrides the uid read from the
source files to the value of uid. Specifying this
option automatically enables Rock Ridge extensions.
-use-fileversion
The option
-use-fileversion allows
genisoimage to use file version numbers from the
filesystem. If the option is not specified,
genisoimage creates a version number of 1 for all
files. File versions are strings in the range ;1 to
;32767 This option is the default on VMS.
-U
Allows "untranslated" filenames, completely
violating the ISO9660 standards described above. Enables the
following flags: -d -l -N
-allow-leading-dots
-relaxed-filenames -allow-lowercase
-allow-multidot
-no-iso-translate. Allows more than
one ’.’ character in the filename, as well as
mixed-case filenames. This is useful on HP-UX, where the
built-in cdfs filesystem does not recognize any
extensions. Use with extreme caution.
-no-iso-translate
Do not translate the characters
’#’ and ’~’ which are invalid for
ISO9660 filenames. Although invalid, these characters are
often used by Microsoft systems.
This violates the ISO9660 standard, but it happens to work
on many systems. Use with caution.
-V
volid
Specifies the volume ID (volume
name or label) to be written into the master block. There is
space for 32 characters. Equivalent to VOLI in the
.genisoimagerc file. The volume ID is used as the
mount point by the Solaris volume manager and as a label
assigned to a disc on various other platforms such as
Windows and Apple Mac OS.
-volset
ID
Specifies the volume set ID.
There is space for 128 characters. Equivalent to VOLS
in the .genisoimagerc file.
-volset-size
#
Sets the volume set size to #.
The volume set size is the number of CDs that are in a CD
volume set. A volume set is a collection of one or more
volumes, on which a set of files is recorded.
Volume Sets are
not intended to be used to create a set numbered CDs that
are part of e.g. a Operation System installation set of CDs.
Volume Sets are rather used to record a big directory tree
that would not fit on a single volume. Each volume of a
Volume Set contains a description of all the directories and
files that are recorded on the volumes where the sequence
numbers are less than, or equal to, the assigned Volume Set
Size of the current volume.
genisoimage
currently does not support a -volset-size
that is larger than 1.
The option
-volset-size must be specified before
-volset-seqno on each command line.
-volset-seqno
#
Sets the volume set sequence
number to #. The volume set sequence number is the index
number of the current CD in a CD set. The option
-volset-size must be specified before
-volset-seqno on each command line.
-v
Verbose execution. If given twice on the command line,
extra debug information will be printed.
-x glob
Identical to -m
glob.
-z
Generate special RRIP records for transparently
compressed files. This is only of use and interest for hosts
that support transparent decompression, such as Linux 2.4.14
or later. You must specify -R or
-r to enable Rock Ridge, and generate
compressed files using the mkzftree utility before
running genisoimage. Note that transparent
compression is a nonstandard Rock Ridge extension. The
resulting disks are only transparently readable if used on
Linux. On other operating systems you will need to call
mkzftree by hand to decompress the files.
acknowledgements
UNIX is a registered trademark of The Open Group in the US and
other countries.
character sets
genisoimage processes filenames in a POSIX-compliant way
as strings of 8-bit characters. To represent all codings for all
languages, 8-bit characters are not sufficient. Unicode or
ISO-10646 define character codings that need at least 21 bits to
represent all known languages. They may be represented with
UTF-32, UTF-16 or UTF-8 coding. UTF-32 uses
a plain 32-bit coding but seems to be uncommon. UTF-16 is used by
Microsoft with Win32 with the disadvantage that 16-bit characters
are not compliant with the POSIX filesystem interface.
Modern Unix operating systems may use UTF-8 coding for filenames.
Each 32-bit character is represented by one or more 8-bit
characters. If a character is coded in ISO-8859-1 (used in
Central Europe and North America) is maps 1:1 to a UTF-32 or
UTF-16 coded Unicode character. If a character is coded in
7-Bit ASCII (used in USA and other countries with limited
character set) is maps 1:1 to a UTF-32, UTF-16 or UTF-8 coded
Unicode character. Character codes that cannot be represented as
a single byte in UTF-8 (if the value is > 0x7F) use escape
sequences that map to more than one 8-bit character.
If all operating systems used UTF-8, genisoimage would not
need to recode characters in filenames. Unfortunately, Apple uses
completely nonstandard codings and Microsoft uses a Unicode
coding that is not compatible with the POSIX filename interface.
For all non-UTF-8-coded operating systems, the actual character
that each byte represents depends on the character set or
codepage (the name used by Microsoft) used by the local
operating system — the characters in a character set will reflect
the region or natural language set by the user.
Usually character codes 0x00-0x1f are control characters, codes
0x20-0x7f are the 7-bit ASCII characters and (on PCs and Macs)
0x80-0xff are used for other characters.
As there are a lot more than 256 characters/symbols in use, only
a small subset are represented in a character set. Therefore the
same character code may represent a different character in
different character sets. So a filename generated, say in central
Europe, may not display the same character when viewed on a
machine in, say eastern Europe.
To make matters more complicated, different operating systems use
different character sets for the region or language. For example,
the character code for ’é’ (small e with acute accent) may be
character code 0x82 on a PC, code 0x8e on a Macintosh, code 0xe9
on a Unix system in western Europe, and code 0x000e9 in Unicode.
As long as not all operating systems and applications use the
same character set as the basis for filenames, it may be
necessary to specify which character set your filenames use in
and which character set the filenames should appear on the CD.
There are four options to specify the character sets you want to
use:
-input-charset
Defines the local character set you are using on your host
machine. Any character set conversions that take place will use
this character set as the starting point. The default input
character sets are cp437 on MS-DOS-based systems and
iso8859-1 on all other systems. If -J is given, the
Unicode equivalents of the input character set will be used in
the Joliet directory. -jcharset is the same as
-input-charset -J.
-output-charset
Defines the character set that will be used with for the Rock
Ridge names on the CD. Defaults to the input character set.
-input-hfs-charset
Defines the HFS character set used for HFS filenames decoded from
any of the various Apple/Unix file formats. Only useful when used
with -mac-name. See the HFS MACINTOSH FILENAMES for
more information. Defaults to cp10000 (Mac Roman).
-output-hfs-charset
Defines the HFS character set used to create HFS filenames from
the input character set in use. In most cases this will be from
the character set given with -input-charset. Defaults to
the input HFS character set.
There are a number of character sets built in to
genisoimage. To get a listing, use -input-charset
help. This list doesn’t include the charset derived from the
current locale, if genisoimage is built with iconv
support.
Additional character sets can be read from file for any of the
character set options by giving a filename as the argument to the
options. The given file will only be read if its name does not
match one of the built-in character sets.
The format of the character set files is the same as the mapping
files available from
http://www.unicode.org/Public/MAPPINGS. This format is:
Column #1 is the input byte code (in hex as 0xXX)
Column #2 is the Unicode (in hex as 0xXXXX)
The rest of the line is ignored.
Any blank line, line without two (or more) columns in the above
format or comments lines (starting with the # character) are
ignored without any warnings. Any missing input code is mapped to
Unicode character 0x0000.
Note that, while UTF-8 is supported, other Unicode encodings such
as UCS-2/UTF-16 and UCS-4/UTF-32 are not, as POSIX operating
systems cannot handle them natively.
A 1:1 character set mapping can be defined by using the keyword
default as the argument to any of the character set
options. This is the behaviour of old versions of mkisofs.
The ISO9660 filenames generated from the input filenames are not
converted from the input character set. The ISO9660 character set
is a very limited subset of the ASCII characters, so any
conversion would be pointless.
Any character that genisoimage cannot convert will be
replaced with a ’_’ character.
el torito boot information table
When -boot-info-table is given, genisoimage will
modify the boot file specified by -b by inserting a
56-byte boot information table at offset 8 in the file.
This modification is done in the source filesystem, so make sure
you use a copy if this file is not easily recreated! This file
contains pointers which may not be easily or reliably obtained at
boot time.
The format of this table is as follows; all integers are in
section 7.3.1 ("little endian") format.
Offset Name Size Meaning
8
bi_pvd
4 bytes
LBA of primary volume descriptor
12
bi_file
4 bytes
LBA of boot file
16
bi_length
4 bytes
Boot file length in bytes
20
bi_csum
4 bytes
32-bit checksum
24
bi_reserved
40 bytes
Reserved
The 32-bit checksum is the sum of all the 32-bit words in the
boot file starting at byte offset 64. All linear block addresses
(LBAs) are given in CD sectors (normally 2048 bytes).
hfs boot driver
It may be possible to make the hybrid CD bootable on a
Macintosh.
A bootable HFS CD requires an Apple CD-ROM (or compatible)
driver, a bootable HFS partition and the necessary System,
Finder, etc. files.
A driver can be obtained from any other Macintosh bootable CD-ROM
using the apple_driver utility. This file can then be used
with -boot-hfs-file.
The HFS partition (i.e. the hybrid disk in our case) must contain
a suitable System Folder, again from another CD-ROM or disk.
For a partition to be bootable, it must have its boot
block set. The boot block is in the first two blocks of a
partition. For a non-bootable partition the boot block is full of
zeros. Normally, when a System file is copied to partition on a
Macintosh disk, the boot block is filled with a number of
required settings — unfortunately I don’t know the full spec for
the boot block, so I’m guessing that the following will work.
Therefore, the utility apple_driver also extracts the boot
block from the first HFS partition it finds on the given CD-ROM
and this is used for the HFS partition created by
genisoimage.
Please note: By using a driver from an Apple CD and
copying Apple software to your CD, you become liable to obey
Apple Computer, Inc. Software License Agreements.
hfs creator
hfs creator type
A Macintosh file has two properties associated with it which
define which application created the file, the CREATOR and
what data the file contains, the TYPE. Both are (exactly)
4 letter strings. Usually this allows a Macintosh user to
double-click on a file and launch the correct application etc.
The CREATOR and TYPE of a particular file can be found by using
something like ResEdit (or similar) on a Macintosh.
The CREATOR and TYPE information is stored in all the various
Apple/Unix encoded files. For other files it is possible to base
the CREATOR and TYPE on the filename’s extension using a
mapping file (with -map) and/or using the magic
number (usually a signature in the first few bytes) of
a file (with -magic). If both these options are given,
their order on the command line is significant. If -map is
given first, a filename extension match is attempted before a
magic number match. However, if -magic is given first, a
magic number match is attempted before a filename extension
match.
If a mapping or magic file is not used, or no match is found, the
default CREATOR and TYPE for all regular files can be set by
using entries in the .genisoimagerc file or using
-hfs-creator and/or -hfs-type, otherwise the
default CREATOR and TYPE are Unix and TEXT.
The format of the mapping file is the same afpfile
format as used by aufs. This file has five columns for the
extension, file translation, CREATOR,
TYPE and Comment. Lines starting with the ’#’
character are comment lines and are ignored. An example file
would be like:
Where:
The first column EXTN defines the Unix filename extension
to be mapped. The default mapping for any filename extension that
doesn’t match is defined with the ’*’ character.
The Xlate column defines the type of text translation
between the Unix and Macintosh file it is ignored by
genisoimage, but is kept to be compatible with
aufs(1). Although genisoimage does not alter the
contents of a file, if a binary file has its TYPE set as
TEXT, it may be read incorrectly on a Macintosh.
Therefore a better choice for the default TYPE may be
????.
The CREATOR and TYPE keywords must be 4 characters
long and enclosed in single quotes.
The comment field is enclosed in double quotes — it is ignored by
genisoimage, but is kept to be compatible with
aufs.
The format of the magic file is almost identical to the
magic(5) file used by the file(1) command.
This file has four tab-separated columns for the byte
offset, type, test and message. Lines
starting with the ’#’ character are comment lines and are
ignored. An example file would be like:
The format of the file is described in magic(5). The only
difference here is that for each entry in the magic file, the
message for the initial offset must be be 4 characters for
the CREATOR followed by 4 characters for the TYPE — white space
is optional between them. Any other characters on this line are
ignored. Continuation lines (starting with a ’>’) are also
ignored, i.e., only the initial offset lines are used.
Using -magic may significantly increase processing time as
each file has to opened and read to find its magic number.
In summary, for all files, the default CREATOR is Unix and
the default TYPE is TEXT. These can be changed by using
entries in the .genisoimagerc file or by using
-hfs-creator and/or -hfs-type.
If the a file is in one of the known Apple/Unix formats (and the
format has been selected), the CREATOR and TYPE are taken from
the values stored in the Apple/Unix file.
Other files can have their CREATOR and TYPE set from their
filename extension (with -map), or their magic number
(with -magic). If the default match is used in the
mapping file, these values override the default CREATOR
and TYPE.
A full CREATOR/TYPE database can be found at
http://www.angelfire.com/il/szekely/.
hfs custom volume
hfs custom volume folder icons
To give a HFS CD a custom icon, make sure the root (top level)
folder includes a standard Macintosh volume icon file. To give a
volume a custom icon on a Macintosh, an icon has to be pasted
over the volume’s icon in the "Get Info" box of the volume. This
creates an invisible file called Icon\r (’\r’ is the
carriage return character) in the root folder.
A custom folder icon is very similar — an invisible file called
Icon\r exists in the folder itself.
Probably the easiest way to create a custom icon that
genisoimage can use is to format a blank HFS floppy disk
on a Mac and paste an icon to its "Get Info" box. If using Linux
with the HFS module installed, mount the floppy:
mount -t hfs /dev/fd0 /mnt/floppy
The floppy will be mounted as a CAP filesystem by default. Then
run genisoimage using something like:
genisoimage --cap -o output source_dir /mnt/floppy
If you are not using Linux, you can use hfsutils to copy
the icon file from the floppy. However, care has to be taken, as
the icon file contains a control character. For example:
hmount /dev/fd0
hdir -a
hcopy -m Icon^V^M icon_dir/icon
Where ’^V^M’ is control-V followed by control-M. Then run
genisoimage by using something like:
genisoimage --macbin -o output source_dir icon_dir
The procedure for creating/using custom folder icons is very
similar — paste an icon to folder’s "Get Info" box and transfer
the resulting Icon\r file to the relevant directory in the
genisoimage source tree.
You may want to hide the icon files from the ISO9660 and Joliet
trees.
To give a custom icon to a Joliet CD, follow the instructions
found at http://www.cdrfaq.org/faq03.html#S3-21-1.
hfs macintosh filenames
Where possible, the HFS filename that is stored with an
Apple/Unix file is used for the HFS part of the CD. However, not
all the Apple/Unix encodings store the HFS filename with the
finderinfo. In these cases, the Unix filename is used — with
escaped special characters. Special characters include ’/’ and
characters with codes over 127.
AUFS escapes these characters by using ’:’ followed by the
character code as two hex digits. Netatalk and EtherShare have a
similar scheme, but uses ’%’ instead of a ’:’.
If genisoimage cannot find an HFS filename, it uses the
Unix name, with any %xx or :xx characters
(xx are two hex digits) converted to a single character
code. If xx are not hex digits ([0-9a-fA-F]), they are
left alone — although any remaining ’:’ is converted to ’%’, as
’:’ is the HFS directory separator. Care must be taken, as an
ordinary Unix file with %xx or :xx will also be
converted. e.g.
Although HFS filenames appear to support uppercase and lowercase
letters, the filesystem is case-insensitive, i.e., the filenames
aBc and AbC are the same. If a file is found in a
directory with the same HFS name, genisoimage will attempt
to make a unique name by adding ’_’ characters to one of the
filenames.
If an HFS filename exists for a file, genisoimage can use
this name as the starting point for the ISO9660, Joliet and Rock
Ridge filenames using -mac-name. Normal Unix files without
an HFS name will still use their Unix name. e.g.
If a MacBinary (or PC Exchange) file is stored as
someimage.gif.bin on the Unix filesystem, but contains a
HFS file called someimage.gif, this is the name that would
appear on the HFS part of the CD. However, as genisoimage
uses the Unix name as the starting point for the other names, the
ISO9660 name generated will probably be SOMEIMAG.BIN and
the Joliet/Rock Ridge would be someimage.gif.bin. This
option will use the HFS filename as the starting point and the
ISO9660 name will probably be SOMEIMAG.GIF and the
Joliet/Rock Ridge would be someimage.gif.
-mac-name will not currently work with -T — the
Unix name will be used in the TRANS.TBL file, not the
Macintosh name.
The character set used to convert any HFS filename to a
Joliet/Rock Ridge filename defaults to cp10000 (Mac
Roman). The character set used can be specified using
-input-hfs-charset. Other built-in HFS character sets are:
cp10006 (MacGreek), cp10007 (MacCyrillic),
cp10029 (MacLatin2), cp10079 (MacIcelandandic) and
cp10081 (MacTurkish).
Note: the character codes used by HFS filenames taken from the
various Apple/Unix formats will not be converted as they are
assumed to be in the correct Apple character set. Only the
Joliet/Rock Ridge names derived from the HFS filenames will be
converted.
The existing genisoimage code will filter out any illegal
characters for the ISO9660 and Joliet filenames, but as
genisoimage expects to be dealing directly with Unix
names, it leaves the Rock Ridge names as is. But as ’/’ is a
legal HFS filename character, -mac-name converts ’/’ to a
’_’ in Rock Ridge filenames.
If the Apple extensions are used, only the ISO9660 filenames will
appear on the Macintosh. However, as the Macintosh ISO9660
drivers can use Level 2 filenames, you can use options
like -allow-multidot without problems on a Macintosh —
still take care over the names, for example this.file.name
will be converted to THIS.FILE i.e. only have one ’.’,
also filename abcdefgh will be seen as ABCDEFGH but
abcdefghi will be seen as ABCDEFGHI. i.e. with a
’.’ at the end — don’t know if this is a Macintosh problem or a
genisoimage/mkhybrid problem. All filenames will be
in uppercase when viewed on a Macintosh. Of course, DOS/Win3.X
machines will not be able to see Level 2 filenames...
hfs macintosh file formats
Macintosh files have two parts called the Data and
Resource fork. Either may be empty. Unix (and many other
OSs) can only cope with files having one part (or fork). To add
to this, Macintosh files have a number of attributes associated
with them — probably the most important are the TYPE and CREATOR.
Again, Unix has no concept of these types of attributes.
E.g., a Macintosh file may be a JPEG image where the image is
stored in the Data fork and a desktop thumbnail stored in the
Resource fork. It is usually the information in the data fork
that is useful across platforms.
Therefore to store a Macintosh file on a Unix filesystem, a way
has to be found to cope with the two forks and the extra
attributes (which are referred to as the Finder info).
Unfortunately, it seems that every software package that stores
Macintosh files on Unix has chosen a completely different storage
method.
The Apple/Unix formats that genisoimage (partially)
supports are:
CAP AUFS format
Data fork stored in a file. Resource fork in subdirectory
.resource with same filename as data fork. Finder info in
subdirectory .finderinfo with same filename.
AppleDouble/Netatalk
Data fork stored in a file. Resource fork stored in a file with
same name prefixed with ’%’. Finder info also stored in same ’%’
file. Netatalk uses the same format, but the resource fork/Finder
info stored in subdirectory .AppleDouble with same
filename as data fork.
AppleSingle
Data structures similar to above, except both forks and Finder
info are stored in one file.
Helios EtherShare
Data fork stored in a file. Resource fork and Finder info
together in subdirectory .rsrc with same filename as data
fork.
IPT UShare
Like the EtherShare format, but the Finder info is stored
slightly differently.
MacBinary
Both forks and Finder info stored in one file.
Apple PC Exchange
Used by Macintoshes to store Apple files on DOS (FAT) disks. Data
fork stored in a file. Resource fork in subdirectory
resource.frk (or RESOURCE.FRK). Finder info as one
record in file finder.dat (or FINDER.DAT). Separate
finder.dat for each data fork directory.
Note: genisoimage needs to know the native FAT cluster
size of the disk that the PC Exchange files are on (or have been
copied from). This size is given by -cluster-size. The
cluster or allocation size can be found by using the DOS utility
chkdsk.
May not work with PC Exchange v2.2 or higher files (available
with MacOS 8.1). DOS media containing PC Exchange files should be
mounted as type msdos (not vfat) when using Linux.
SGI/XINET
Used by SGI machines when they mount HFS disks. Data fork stored
in a file. Resource fork in subdirectory .HSResource with
same filename. Finder info as one record in file
.HSancillary. Separate .HSancillary for each data
fork directory.
Thursby Software Systems DAVE
Allows Macintoshes to store Apple files on SMB servers. Data fork
stored in a file. Resource fork in subdirectory
resource.frk. Uses the AppleDouble format to store
resource fork.
Services for Macintosh
Format of files stored by NT Servers on NTFS filesystems. Data
fork is stored as filename. Resource fork stored as a NTFS
stream called filename:AFP_Resource. The Finder info is
stored as a NTFS stream called filename:Afp_AfpInfo. NTFS
streams are normally invisible to the user.
Warning: genisoimage only partially supports the SFM
format. If an HFS file or folder stored on the NT server contains
an illegal NT character in its name, NT converts these characters
to Private Use Unicode characters. The characters are: " *
/ < > ? \ | and a space or period if it is the last
character of the filename, character codes 0x01 to 0x1f (control
characters) and Apple’s apple logo.
Unfortunately, these private Unicode characters are not readable
by the genisoimage NT executable. Therefore any file or
directory name containing these characters will be ignored —
including the contents of any such directory.
Mac OS X AppleDouble
When HFS/HFS+ files are copied or saved by Mac OS X on to a
non-HFS filesystem (e.g. UFS, NFS etc.), the files are stored in
AppleDouble format. Data fork stored in a file. Resource fork
stored in a file with same name prefixed with ’._’. Finder info
also stored in same ’._’ file.
Mac OS X HFS (Alpha)
Not really an Apple/Unix encoding, but actual HFS/HFS+ files on a
Mac OS X system. Data fork stored in a file. Resource
fork stored in a pseudo file with the same name with the suffix
/rsrc. The Finder info is only available via a Mac OS X
library call.
See also README.macosx.
Only works when used on Mac OS X.
If a file is found with a zero length resource fork and empty
finderinfo, it is assumed not to have any Apple/Unix encoding —
therefore a TYPE and CREATOR can be set using other methods.
genisoimage will attempt to set the CREATOR, TYPE, date
and possibly other flags from the finder info. Additionally, if
it exists, the Macintosh filename is set from the finder info,
otherwise the Macintosh name is based on the Unix filename — see
the HFS MACINTOSH FILENAMES section below.
When using -apple, the TYPE and CREATOR are stored in the
optional System Use or SUSP field in the ISO9660 Directory
Record — in much the same way as the Rock Ridge attributes are.
In fact to make life easy, the Apple extensions are added at the
beginning of the existing Rock Ridge attributes (i.e., to get the
Apple extensions you get the Rock Ridge extensions as well).
The Apple extensions require the resource fork to be stored as an
ISO9660 associated file. This is just like any normal file
stored in the ISO9660 filesystem except that the associated file
flag is set in the Directory Record (bit 2). This file has the
same name as the data fork (the file seen by non-Apple machines).
Associated files are normally ignored by other OSs
When using -hfs, the TYPE and CREATOR plus other finder
info, are stored in a separate HFS directory, not visible on the
ISO9660 volume. The HFS directory references the same data and
resource fork files described above.
In most cases, it is better to use -hfs instead of
-apple, as the latter imposes the limited ISO9660
characters allowed in filenames. However, the Apple extensions do
give the advantage that the files are packed on the disk more
efficiently and it may be possible to fit more files on a CD.
hfs options
-hfs
Create an ISO9660/HFS hybrid CD. This option should be used in
conjunction with the -map, -magic and/or the
various double dash options given below.
-apple
Create an ISO9660 CD with Apple’s extensions. Similar to
-hfs, except that the Apple Extensions to ISO9660 are
added instead of creating an HFS hybrid volume. Former
genisoimage versions did include Rock Ridge attributes by
default if -apple was specified. This versions of
genisoimage does not do this anymore. If you like to have
Rock Ridge attributes, you need to specify this separately.
-map mapping_file
Use the mapping_file to set the CREATOR and TYPE
information for a file based on the filename’s extension. A
filename is mapped only if it is not one of the know Apple/Unix
file formats. See the HFS CREATOR/TYPE section below.
-magic magic_file
The CREATOR and TYPE information is set by using a file’s
magic number (usually the first few bytes of a file). The
magic_file is only used if a file is not one of the known
Apple/Unix file formats, or the filename extension has not been
mapped using -map. See the HFS CREATOR/TYPE section
below for more details.
-hfs-creator creator
Set the default CREATOR for all files. Must be exactly 4
characters. See the HFS CREATOR/TYPE section below for
more details.
-hfs-type type
Set the default TYPE for all files. Must be exactly 4 characters.
See the HFS CREATOR/TYPE section below for more details.
-probe
Search the contents of files for all the known Apple/Unix file
formats. See the HFS MACINTOSH FILE FORMATS section below
for more about these formats. However, the only way to check for
MacBinary and AppleSingle files is to open and read
them, so this option may increase processing time. It is better
to use one or more double dash options given below if the
Apple/Unix formats in use are known.
-no-desktop
Do not create (empty) Desktop files. New HFS Desktop files will
be created when the CD is used on a Macintosh (and stored in the
System Folder). By default, empty Desktop files are added to the
HFS volume.
-mac-name
Use the HFS filename as the starting point for the ISO9660,
Joliet and Rock Ridge filenames. See the HFS MACINTOSH
FILENAMES section below for more information.
-boot-hfs-file driver_file
Installs the driver_file that may make the CD
bootable on a Macintosh. See the HFS BOOT DRIVER section
below. (Alpha).
-part
Generate an HFS partition table. By default, no partition table
is generated, but some older Macintosh CD-ROM drivers need an HFS
partition table on the CD-ROM to be able to recognize a hybrid
CD-ROM.
-auto AutoStart_file
Make the HFS CD use the QuickTime 2.0 Autostart feature to launch
an application or document. The given filename must be the name
of a document or application located at the top level of the CD.
The filename must be less than 12 characters. (Alpha).
-cluster-size size
Set the size in bytes of the cluster or allocation units of PC
Exchange files. Implies --exchange. See the HFS
MACINTOSH FILE FORMATS section below.
-hide-hfs glob
Hide glob, a shell wildcard pattern, from the HFS volume.
The file or directory will still exist in the ISO9660 and/or
Joliet directory. glob may match any part of the filename.
Multiple globs may be excluded. Example:
genisoimage -o rom -hfs -hide-hfs '*.o' -hide-hfs foobar
would exclude all files ending in ’.o’ or called foobar
from the HFS volume. Note that if you had a directory called
foobar, it too (and of course all its descendants) would
be excluded. The glob can also be a path name relative to
the source directories given on the command line. Example:
genisoimage -o rom -hfs -hide-hfs src/html src
would exclude just the file or directory called html from
the src directory. Any other file or directory called
html in the tree will not be excluded. Should be used with
-hide and/or -hide-joliet. In order to match a
directory name, make sure the pattern does not include a trailing
’/’ character. See README.hide for more details.
-hide-hfs-list file
Specify a file containing a list of wildcard patterns to be
hidden as in -hide-hfs.
-hfs-volid hfs_volid
Volume name for the HFS partition. This is the name that is
assigned to the disc on a Macintosh and replaces the volid
used with -V.
-icon-position
Use the icon position information, if it exists, from the
Apple/Unix file. The icons will appear in the same position as
they would on a Macintosh desktop. Folder location and size on
screen, its scroll positions, folder View (view as Icons, Small
Icons, etc.) are also preserved. (Alpha).
-root-info file
Set the location, size on screen, scroll positions, folder View
etc. for the root folder of an HFS volume. See
README.rootinfo for more information. (Alpha)
-prep-boot file
PReP boot image file. Up to 4 are allowed. See
README.prep_boot for more information. (Alpha)
-chrp-boot
Add CHRP boot header.
-input-hfs-charset charset
Input charset that defines the characters used in HFS filenames
when used with -mac-name. The default charset is
cp10000 (Mac Roman). See the CHARACTER SETS and
HFS MACINTOSH FILENAMES sections below for more details.
-output-hfs-charset charset
Output charset that defines the characters that will be used in
the HFS filenames. Defaults to the input charset. See the
CHARACTER SETS section below for more details.
-hfs-unlock
By default, genisoimage will create an HFS volume that is
locked. This option leaves the volume unlocked so that other
applications (e.g. hfsutils) can modify the volume. See
the HFS PROBLEMS/LIMITATIONS section below for warnings
about using this option.
-hfs-bless folder_name
"Bless" the given directory (folder). This is usually the
System Folder and is used in creating HFS bootable CDs.
The name of the directory must be the whole path name as
genisoimage sees it. E.g., if the given pathspec is
./cddata and the required folder is called System
Folder, the whole path name is "/cddata/System Folder"
(remember to use quotes if the name contains spaces).
-hfs-parms parameters
Override certain parameters used to create the HFS filesystem.
Unlikely to be used in normal circumstances. See the
libhfs_iso/hybrid.h source file for details.
--cap
Look for AUFS CAP Macintosh files. Search for CAP Apple/Unix file
formats only. Searching for the other possible Apple/Unix file
formats is disabled, unless other double dash options are
given.
--netatalk
Look for NETATALK Macintosh files
--double
Look for AppleDouble Macintosh files
--ethershare
Look for Helios EtherShare Macintosh files
--ushare
Look for IPT UShare Macintosh files
--exchange
Look for PC Exchange Macintosh files
--sgi
Look for SGI Macintosh files
--xinet
Look for XINET Macintosh files
--macbin
Look for MacBinary Macintosh files
--single
Look for AppleSingle Macintosh files
--dave
Look for Thursby Software Systems DAVE Macintosh files
--sfm
Look for Microsoft’s Services for Macintosh files (NT only)
(Alpha)
--osx-double
Look for Mac OS X AppleDouble Macintosh files
--osx-hfs
Look for Mac OS X HFS Macintosh files
hfs problems
hfs problems limitations
I have had to make several assumptions on how I expect the
modified libhfs routines to work, however there may be situations
that either I haven’t thought of, or come across when these
assumptions fail. Therefore I can’t guarantee that
genisoimage will work as expected (although I haven’t had
a major problem yet). Most of the HFS features work fine, but
some are not fully tested. These are marked as Alpha
above.
Although HFS filenames appear to support uppercase and lowercase
letters, the filesystem is case-insensitive, i.e., the filenames
aBc and AbC are the same. If a file is found in a
directory with the same HFS name, genisoimage will attempt
to make a unique name by adding ’_’ characters to one of the
filenames.
HFS file/directory names that share the first 31 characters have
’_N’ (a decimal number) substituted for the last few characters
to generate unique names.
Care must be taken when "grafting" Apple/Unix files or
directories (see above for the method and syntax involved). It is
not possible to use a new name for an Apple/Unix encoded
file/directory. e.g. If a Apple/Unix encoded file called
oldname is to added to the CD, you cannot use the command
line:
genisoimage -o output.raw -hfs -graft-points newname=oldname
cd_dir
genisoimage will be unable to decode oldname.
However, you can graft Apple/Unix encoded files or directories as
long as you do not attempt to give them new names as above.
When creating an HFS volume with the multisession options,
-M and -C, only files in the last session will be
in the HFS volume. i.e. genisoimage cannot add
existing files from previous sessions to the HFS volume.
However, if each session is created with -part, each
session will appear as separate volumes when mounted on a Mac. In
this case, it is worth using -V or -hfs-volid to
give each session a unique volume name, otherwise each "volume"
will appear on the Desktop with the same name.
Symbolic links (as with all other non-regular files) are not
added to the HFS directory.
Hybrid volumes may be larger than pure ISO9660 volumes containing
the same data. In some cases (e.g. DVD sized volumes) the
difference can be significant. As an HFS volume gets bigger, so
does the allocation block size (the smallest amount of space a
file can occupy). For a 650MB CD, the allocation block is 10kB,
for a 4.7GB DVD it will be about 70kB.
The maximum number of files in an HFS volume is about 65500 —
although the real limit will be somewhat less than this.
The resulting hybrid volume can be accessed on a Unix machine by
using the hfsutils routines. However, no changes can be made to
the volume as it is set as locked. The option
-hfs-unlock will create an output image that is unlocked —
however no changes should be made to the contents of the volume
(unless you really know what you are doing) as it’s not a "real"
HFS volume.
-mac-name will not currently work with -T — the
Unix name will be used in the TRANS.TBL file, not the
Macintosh name.
Although genisoimage does not alter the contents of a
file, if a binary file has its TYPE set as TEXT, it
may be read incorrectly on a Macintosh. Therefore a better
choice for the default TYPE may be ????.
-mac-boot-file may not work at all...
May not work with PC Exchange v2.2 or higher files (available
with MacOS 8.1). DOS media containing PC Exchange files should be
mounted as type msdos (not vfat) when using Linux.
The SFM format is only partially supported — see HFS MACINTOSH
FILE FORMATS section above.
It is not possible to use -sparc-boot or
-generic-boot with -boot-hfs-file or
-prep-boot.
genisoimage should be able to create HFS hybrid images
over 4Gb, although this has not been fully tested.
hppa notes
To make a bootable CD for HPPA, at the very least a boot loader
file (-hppa-bootloader), a kernel image file (32-bit,
64-bit, or both, depending on hardware) and a boot command line
(-hppa-cmdline) must be specified. Some systems can boot
either a 32- or a 64-bit kernel, and the firmware will choose one
if both are present. Optionally, a ramdisk can be used for the
root filesystem using -hppa-cmdline.
jigdo notes
Jigdo is a tool to help in the distribution of large files like
CD and DVD images; see http://atterer.org/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.
To create jigdo and template files alongside the ISO image from
genisoimage, you must first generate a list of the files
that will be used, in the following format:
MD5sum File size Path
32 chars 12 chars to end of line
The MD5sum must be written in standard hexadecimal notation, the
file size must list the size of the file in bytes, and the path
must list the absolute path to the file. For example:
00006dcd58ff0756c36d2efae21be376 14736 /mirror/debian/file1
000635c69b254a1be8badcec3a8d05c1 211822 /mirror/debian/file2
00083436a3899a09633fc1026ef1e66e 22762 /mirror/debian/file3
Once you have this file, call genisoimage with all of your
normal command-line parameters. Specify the output filenames for
the jigdo and template files using -jigdo-jigdo and
-jigdo-template, and pass in the location of your MD5 list
with -md5-list.
If there are files that you do NOT want to be added into the
jigdo file (e.g. if they are likely to change often), specify
them using -jigdo-exclude. If you want to verify some of the
files as they are written into the image, specify them using
-jigdo-force-md5. If any files don’t match, genisoimage
will then abort. Both of these options take regular expressions
as input. It is possible to restrict the set of files that will
be used further based on size — use the -jigdo-min-file-size
option.
Finally, the jigdo code needs to know how to map the files it is
given onto a mirror-style configuration. Specify how to map paths
using -jigdo-map. Using Debian=/mirror/debian will
cause all paths starting with /mirror/debian to be mapped
to Debian:<file> in the output jigdo file.
notes
genisoimage may safely be installed suid root. This may be
needed to allow genisoimage to read the previous session
when creating a multisession image.
If genisoimage is creating a filesystem image with Rock
Ridge attributes and the directory nesting level of the source
directory tree is too much for ISO9660, genisoimage will
do deep directory relocation. This results in a directory called
RR_MOVED in the root directory of the CD. You cannot avoid
this directory.
Many boot code options for different platforms are mutualy
exclusive because the boot blocks cannot coexist, ie. different
platforms share the same data locations in the image. See
http://lists.debian.org/debian-cd/2006/12/msg00109.html for
details.
bugs
Any files that
have hard links to files not in the tree being copied to the
ISO9660 filesystem will have an incorrect file reference
count.
Does not check
for SUSP record(s) in ’.’ entry of the root
directory to verify the existence of Rock Ridge
enhancements. This problem is present when reading old
sessions while adding data in multisession mode.
Does not
properly read relocated directories in multisession mode
when adding data. Any relocated deep directory is lost if
the new session does not include the deep directory.
Does not re-use
RR_MOVED when doing multisession from
TRANS.TBL.
Does not create
whole_name entry for RR_MOVED in multisession
mode.
There may be
other bugs. Please, report them to the maintainers.
see also
genisoimagerc,
wodim , mkzftree , magic.
authors
genisoimage
is derived from mkisofs from the cdrtools
2.01.01a08 package from May 2006 (with few updates
extracted from cdrtools 2.01.01a24 from March 2007) from .IR
http://cdrecord.berlios.de/ , but is now part of the
cdrkit suite, maintained by Joerg Jaspert, Eduard
Bloch, Steve McIntyre, Peter Samuelson, Christian Fromme,
Ben Hutchings, and other contributors. The maintainers can
be contacted at
debburn-devel[:at:]lists.alioth.debian[:dot:]org, or see the
cdrkit project web site at
http://www.cdrkit.org/.
Eric Youngdale
wrote the first versions (1993–1998) of
mkisofs. Jörg Schilling wrote the SCSI transport
library and its interface, and has maintained mkisofs
since 1999. James Pearson wrote the HFS hybrid code, using
libhfs by Robert Leslie. Pearson, Schilling, Jungshik
Shin and Jaakko Heinonen contributed to the character set
conversion code. The cdrkit maintainers have
maintained genisoimage since 2006.
Copyright
1993-1998 by Yggdrasil Computing, Inc.
Copyright 1996-1997 by Robert Leslie
Copyright 1997-2001 by James Pearson
Copyright 1999-2006 by Jörg Schilling
Copyright 2007 by Jörg Schilling (originating few
updates)
Copyright 2002-2003 by Jungshik Shin
Copyright 2003 by Jaakko Heinonen
Copyright 2006 by the Cdrkit maintainers
If you want to
take part in the development of genisoimage, you may
join the cdrkit developer mailing list by following
the instructions on
http://alioth.debian.org/mail/?group_id=31006. The
email address of the list is
debburn-devel[:at:]lists.alioth.debian[:dot:]org. This is also
the address for user support questions. Note that
cdrkit and cdrtools are not affiliated.