$Date: 2023-01-17 15:15:46 +0100 (Tue, 17 Jan 2023) $ VISO file format / RTIsoMaker viso 8 viso ISO image maker IPRT 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 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 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 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 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 The output filename. This option is not supported in VISO mode. 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 This is for use following one or more operations and will pick a configuration matching the imported content as best we can. If the imported ISOs only had a iso9660 namespace, the joliet, udf and hfs namespaces will be removed. This is useful when adding additional files to the ISO and will prevent guest from picking a namespace without the imported ISO content when mounting it. Open the specified ISO file and use it as source file system until the corresponding 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. Pops a of the source file system stack. Imports everything on the given ISO file, including boot configuration and system area (first 16 sectors) content. You can use to omit namespaces. Namespaces 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. Enables or disables rock ridge support for the primary ISO 9660 namespace. The option omits a couple of bits in the root directory that would make Linux pick rock ridge over joliet. Default: Enables or disable the joliet namespace. This option must precede any file specifications. Default: 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 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. Counters and causes attributes to be recorded exactly as they appear in the source. Controls the forced file mode mask for rock ridge, UDF and HFS. Controls the forced directory mode mask for rock ridge, UDF and HFS. Controls the default mode mask (rock ridge, UDF, HFS) for directories that are created implicitly. The option overrides this. 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. 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 Starts a new El Torito boot entry. 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. Specifies a file on the ISO as the El Torito boot image for the current boot entry. Sets the boot image emulation type of the current El Torito boot entry. Specify the image load segment for the current El Torito boot entry. Default: 0x7c0 Specify the image load size in emulated sectors for the current El Torito boot entry. Default: 4 (sectors of 512 bytes) Indicates that the current El Torito boot entry isn't bootable. (The BIOS will allegedly configure the emulation, but not attempt booting.) Write a isolinux/syslinux boot info table into the boot image for the current El Torito boot entry. 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 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. 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) The name of the abstract file in the root dir. Application ID string or root file name. The latter must be prefixed with an underscore. The name of the bibliographic file in the root dir. The name of the copyright file in the root dir. Publisher ID string or root file name. The latter must be prefixed with an underscore. Data preparer ID string or root file name. The latter must be prefixed with an underscore. System ID string. 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 option between occurences.) Volume set ID string. Compatibility: Alias for --name-setup iso+joliet+udf+hfs. Allow 31 charater filenames. Just ensure ISO level >= 2 here. Same as and . Same as and . VISO Specific: 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. 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): Selects a specific output buffer size for testing virtual image reads. Enables randomized buffer size for each virtual image read, using the current output buffer size () as maximum. Enables verification pass of the image that compares blocks of the given size in random order from the virtual and output images.