9.35. VISO file format / RTIsoMaker

Oracle VM VirtualBox

9.35. VISO file format / RTIsoMaker

ISO image maker.

Synopsis

RTIsoMaker [options] [@commands.rsp] <filespec...>

Description

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).

VISO file format

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.

File specifications and --name-setup

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.

Options

General

-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.

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

File Attributes

--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, or a+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.

Booting

--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.

String properties (applied to active namespaces only)

--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.

Compatibility:

--graft-points

Alias for --name-setup iso+joliet+udf+hfs.

-l , --long-names

Allow 31 charater filenames. Just ensure ISO level >= 2 here.

-R , --rock

Same as --rock-ridge and --strict-attribs.

-r , --rational-rock

Same as --rock-ridge and --rational-attribs.

VISO Specific:

--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.

Testing (not applicable to VISO):

--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.