ISO image maker.
Construct a virtual ISO 9660 / Joliet / UDF / HFS hybrid image and either write it to a file (RTIsoMaker) or serve it as a virtual image (VISO).
A VISO file is a virtual ISO image, i.e. constructed in memory from a bunch of files on the host. A VISO is just the recipe describing how to go about this using a syntax vaguely similar to mkisofs and genisoimage.
One requirement is that the VISO file must start with one of the
--iprt-iso-maker-file-marker
options. Which of the options you use will
dictate the quoting and escaping rules used when reading the file. The option takes the
image UUID as an argument.
The VISO files are treated as UTF-8 and must not contain any byte order marker (BOM). There is currently no way to comment out lines in a VISO file.
All non-options that does not start with '@' are taken to indicate a file, directory, or similar that is should be added to the ISO image. Directories are added recursively and content is subject to filtering options.
Since there can be up to six different namespaces on an ISO, it is handy to be able to
control the names used in each and be able to exclude an object from one or more namespaces.
The --name-setup
option specifies the file specification format to use
forthwith.
The default setup is:
--name-setup iso+joliet+udf+hfs
Which means you specify one on-ISO name for all namespaces followed by '=' and the source file system name. Only specifying the source file system will add the file/dir/whatever to the root of the ISO image.
Lets look at the following two examples:
/docs/readme.txt=/home/user/Documents/product-x-readme.txt
/home/user/Documents/product-x-readme.txt
In the first case the file '/home/user/Documents/product-x-readme.txt'
is added to the ISO image as '/docs/readme.txt'
in all
enabled namespaces. In the primary ISO 9660 namespace, the filename will by default be
converted to upper case because it's required by the spec.
In the second case the file is added to the root under the name
'product-x-readme.txt'
in all namespaces. Though, in the
primary ISO 9660 namespace the name will be transformed to apply with the current ISO level,
probably uppercased, possibly truncated too.
Given --name-setup iso,joliet,udf
you can specify the name individually
for each of the three namespace, if you like. If you omit any, they will use last name given.
Any names left blank (==
) will be considered omitted.
A different name in each namespace:
/ISO.TXT=/Joliet.TxT=/UDF.txt=/tmp/iso/real.txt
Specific name in the ISO 9660 namespace, same in the rest:
/ISO.TXT=/OtherNamespaces.TxT=/tmp/iso/real.txt
Omit the file from the ISO 9660 namespace:
=/OtherNamespaces.TxT=/tmp/iso/real.txt
Omit the file from the joliet namespace:
/ISO.TXT==/UDF.TxT=/tmp/iso/real.txt
Use the same filename as the source everywhere:
/tmp/iso/real.txt
Using for instance --name-setup udf
you can add a files/dirs/whatever
to select namespace(s) without the more complicated empty name syntax above.
When adding directories, you can only control the naming and omitting of the directory itself, not any recursively added files and directories below it.
-
-o
output-file
,--output=
output-file
-
The output filename. This option is not supported in VISO mode.
-
--name-setup
spec
-
Configures active namespaces and how file specifications are to be interpreted. The specification is a comma separated list. Each element in the list is a sub-list separated by space,
'+'
or'|'
giving the namespaces that elements controls. Namespaces are divied into two major and minor ones, you cannot specifying a minor before the major it belongs to.Major namespaces and aliases in parentheses:
-
iso (primary, iso9660, iso-9660, primary-iso, iso-primary)
-
joliet
-
udf
-
hfs (hfs-plus)
Minor namespaces:
-
rock: rock ridge on previous major namespace (iso / joliet)
-
iso-rock: rock ridge extensions on primary ISO 9660 namespace
-
joliet-rock: rock ridge on joliet namespace (just for fun)
-
trans-tbl: translation table file on previous major namespace
-
iso-trans-tbl
-
joliet-trans-tbl
-
udf-trans-tbl
-
hfs-trans-tbl
-
-
--push-iso=
iso-file
,--push-iso-no-joliet=
iso-file
,--push-iso-no-rock-
iso-file
,--push-iso-no-rock-no-joliet=
iso-file
-
Open the specified ISO file and use it as source file system until the corresponding
--pop
options is encountered. The variations are for selecting which namespace on the ISO to (not) access. These options are handy for copying files/directories/stuff from an ISO without having to extract them first or using the:iprtvfs:
syntax. -
--pop
-
Pops a
--push-iso
of the source file system stack. -
--import-iso=
iso-file
-
Imports everything on the given ISO file, including boot configuration and system area (first 16 sectors) content. You can use
--name-setup
to omit namespaces.
-
--iso-level=
0|1|2|3
-
Sets the ISO level:
-
0: Disable primary ISO namespace.
-
1: ISO level 1: Filenames 8.3 format and limited to 4GB - 1.
-
2: ISO level 2: 31 char long names and limited to 4GB - 1.
-
3: ISO level 3: 31 char long names and support for >=4GB files. (default)
-
4: Fictive level used by other tools. Not yet implemented.
-
-
--rock-ridge
,--limited-rock-ridge
,--no-rock-ridge
-
Enables or disables rock ridge support for the primary ISO 9660 namespace. The
--limited-rock-ridge
option omits a couple of bits in the root directory that would make Linux pick rock ridge over joliet.Default:
--limited-rock-ridge
-
-J
,--joliet
,--no-joliet
-
Enables or disable the joliet namespace. This option must precede any file specifications.
Default:
--joliet
-
--joliet-ucs-level=
1|2|3
,--ucs-level=
1|2|3
-
Set the Joliet UCS support level. This is currently only flagged in the image but not enforced on the actual path names.
Default level: 3
-
--rational-attribs
-
Enables rational file attribute handling (default):
-
Owner ID is set to zero
-
Group ID is set to zero
-
Mode is set to 0444 for non-executable files.
-
Mode is set to 0555 for executable files.
-
Mode is set to 0555 for directories, preserving stick bits.
-
-
--strict-attribs
-
Counters
--rational-attribs
and causes attributes to be recorded exactly as they appear in the source. -
--file-mode=
mode
,--no-file-mode
-
Controls the forced file mode mask for rock ridge, UDF and HFS.
-
--dir-mode=
mode
,--no-dir-mode
-
Controls the forced directory mode mask for rock ridge, UDF and HFS.
-
--new-dir-mode=
mode
-
Controls the default mode mask (rock ridge, UDF, HFS) for directories that are created implicitly. The
--dir-mode
option overrides this. -
--chmod=
mode
:on-iso-file
-
Explictily sets the rock ridge, UDF and HFS file mode for a file/dir/whatever that has already been added to the ISO. The mode can be octal,
ra+x
,a+r
, ora+rx
. (Support for more complicated mode specifications may be implemented at a later point.)Note that only namespaces in the current --name-setup are affected.
-
--chown=
owner-id
:on-iso-file
-
Explictily sets the rock ridge, UDF and HFS file owner ID (numeric) for a file/dir/whatever that has already been added to the ISO.
Note that only namespaces in the current --name-setup are affected.
-
--chgrp=
group-id
:on-iso-file
-
Explictily sets the rock ridge, UDF and HFS file group ID (numeric) for a file/dir/whatever that has already been added to the ISO.
Note that only namespaces in the current --name-setup are affected.
-
--eltorito-new-entry
,--eltorito-alt-boot
-
Starts a new El Torito boot entry.
-
--eltorito-add-image=
filespec
-
File specification of a file that should be added to the image and used as the El Torito boot image of the current boot entry.
-
-b
on-iso-file
,--eltorito-boot=
on-iso-file
-
Specifies a file on the ISO as the El Torito boot image for the current boot entry.
-
--eltorito-floppy-12
,--eltorito-floppy-144
,--eltorito-floppy-288
,--no-emulation-boot
,--hard-disk-boot
-
Sets the boot image emulation type of the current El Torito boot entry.
-
--boot-load-seg=
seg
-
Specify the image load segment for the current El Torito boot entry.
Default: 0x7c0
-
--boot-load-size=
sectors
-
Specify the image load size in emulated sectors for the current El Torito boot entry.
Default: 4 (sectors of 512 bytes)
-
--no-boot
-
Indicates that the current El Torito boot entry isn't bootable. (The BIOS will allegedly configure the emulation, but not attempt booting.)
-
--boot-info-table
-
Write a isolinux/syslinux boot info table into the boot image for the current El Torito boot entry.
-
--eltorito-platform-id=
id
-
Set the El Torito platform ID of the current entry, a new entry of the verification entry depending on when it's used. The ID must be one of:
x86
,PPC
,Mac
,efi
-
-c
namespec
,--boot-catalog=
namespec
-
Enters the El Torito boot catalog into the namespaces as a file. The
namespec
uses the same format as a 'filespec', but omits the final source file system name component. -
-G
file
,--generic-boot=
file
-
Specifies a file that should be loaded at offset 0 in the ISO image. The file must not be larger than 32KB. When creating a hybrid image, parts of this may be regenerated by partition tables and such.
-
--abstract=
file-id
-
The name of the abstract file in the root dir.
-
-A
text|_file-id
,--application-id=
text|_file-id
-
Application ID string or root file name. The latter must be prefixed with an underscore.
-
--biblio=
file-id
-
The name of the bibliographic file in the root dir.
-
--copyright=
file-id
-
The name of the copyright file in the root dir.
-
-P
text|_file-id
,--publisher=
text|_file-id
-
Publisher ID string or root file name. The latter must be prefixed with an underscore.
-
-p
text|_file-id
,--preparer=
text|_file-id
-
Data preparer ID string or root file name. The latter must be prefixed with an underscore.
-
--sysid=
text
-
System ID string.
-
--volid=
text
,--volume-id=
text
-
Volume ID string (label). (It is possible to set different labels for primary ISO 9660, joliet, UDF and HFS by changing the active namespaces using the
--name-setup
option between--volume-id
occurences.) -
--volset=
text
-
Volume set ID string.
-
--iprt-iso-maker-file-marker=
UUID
,--iprt-iso-maker-file-marker-bourne=
UUID
,--iprt-iso-maker-file-marker-bourne-sh=
UUID
-
Used as first option in a VISO file to specify the file UUID and that it is formatted using bourne-shell argument quoting & escaping style.
-
--iprt-iso-maker-file-marker-ms=
UUID
,--iprt-iso-maker-file-marker-ms-sh=
UUID
-
Used as first option in a VISO file to specify the file UUID and that it is formatted using microsoft CRT argument quoting & escaping style.
-
--output-buffer-size=
bytes
-
Selects a specific output buffer size for testing virtual image reads.
-
--random-output-buffer-size
-
Enables randomized buffer size for each virtual image read, using the current output buffer size (
--output-buffer-size
) as maximum. -
--random-order-verification=
size
-
Enables verification pass of the image that compares blocks of the given size in random order from the virtual and output images.