Designing the next generation isofs creator...

This plan has been postponed

xorriso command -as mkisofs took over the job of presenting a mkisofs-compatible CLI for libisofs. All uses case requirements listed below are sufficiently covered. The use case of incremental backup is better addressed by native xorriso commands like -update_r, though. HFS and UDF are not supported, because this is not in the reach of libisofs yet. Big files are supported without the need for UDF.

A list of options can be obtained by

xorriso -as mkisofs -help

So, what was GenIsoFs planned to be ?

It was intended as a CLI frontend/binding to libisofs a library for generating ISO9660 images.

Current State

Where are we?

Which functionality is supported by current code?

Which functionality is tested well?

Where do we go?

Command line compatiblity with mkisofs.

Use Cases

User runs <backup software> using genisofs.

Requierements:

  • Filesystem support (-J, -r/-R), big file support (embedded -udf) (Priority: high), HFS support (Priority: low)
  • Charset support (Priority :high)
  • -graft-points (Priority: high)
  • Input from one single directory (Priority: high)
  • Input from multiple directories, merged into top dir of the medium (Priority: medium)
  • User creates incremental backups on a CD/DVD medium (multisession; Priority: medium)
  • Users tries to master a bootable CD (El-Torito standard; Priority: high)

DISCUSSION

A list of all mkisofs options follows. Add notes below and sign with your name or login in parentheses. Please investigate the quality of the support of certain feature in libisofs and add a note about your impression. Add a priority flag.

General issues:

(blade) Add a --long-help options where all the options are currently listed as they are. --help would display a short help and refer to --long-help, --help-charset, --help-boot, --help-conversion, --help-options. Each of that --help-foo options would display a subset of those relevant for the context foo. (kix) I agree.

(blade) I would not invest much time in implementing every selectable kind of filename conversion for iso9660. Who cares about those names nowadays? A good automatic conversion which avoids filename clashes should be sufficient... Using ASCII//translit as default charset target? some glibc versions have problems with proper transliterations. Eg. all cyrillic chars are transliterated to ? depending on teh current locale. OTOH, who cares, then there will be a lot of files called like \_\_\_\_20.txt, \_\_\_\_21.txt, \_\_.txt, and you still will get the real cyrillic names in Joliet or Rockridge/UTF-8|KOI8. (kix) Yes, all types of conversions are not required for ISO9660. If anyone uses exotic characters, let them go for Joliet

Options:

(Note: this is from the Debian version with Jigdo/JTE, Iconv and Silo patches)

{ (blade) all Macintosh FS specific options...

  • --cap Look for AUFS CAP Macintosh files
  • --dave Look for DAVE Macintosh files
  • --double Look for AppleDouble? Macintosh files
  • --ethershare Look for Helios EtherShare? Macintosh files
  • --exchange Look for PC Exchange Macintosh files
  • --macbin Look for MacBinary? Macintosh files
  • --netatalk Look for NETATALK Macintosh files
  • --osx-double Look for MacOS X AppleDouble? Macintosh files
  • --osx-hfs Look for MacOS X HFS Macintosh files
  • --sfm Look for SFM Macintosh files
  • --sgi Look for SGI Macintosh files
  • --single Look for AppleSingle? Macintosh files
  • --ushare Look for IPT UShare Macintosh files
  • --xinet Look for XINET Macintosh files

}

{ (kix) Moving all high-priority options here. Basically this includes all options that need the El-Torito boot standard to be implemented:

  • -J, -joliet Generate Joliet directory information
  • -b FILE, -eltorito-boot FILE Set El Torito boot image name
  • -eltorito-alt-boot Start specifying alternative El Torito boot parameters
  • -c FILE, -eltorito-catalog FILE Set El Torito boot catalog name
  • -joliet-long Allow Joliet file names to be 103 Unicode characters
  • -l, -full-iso9660-filenames Allow full 31 character filenames for ISO9660 names

}

{ (kix) Options that violate ISO9660 (Do we really need to implement these?)

  • -N, -omit-version-number Omit version number from ISO9660 filename
  • -D, -disable-deep-relocation Disable deep directory relocation
  • -allow-leading-dots Allow ISO9660 filenames to start with '.'
  • -allow-lowercase Allow lower case characters in addition to the current character set
  • -allow-multidot Allow more than one dot in filenames (e.g. .tar.gz)
  • -U, -untranslated-filenames Allow Untranslated filenames (for HPUX & AIX). Forces -l, -d, -N, -allow-leading-dots, -relaxed-filenames, -allow-lowercase, -allow-multidot
  • -ldots Allow ISO9660 filenames to start with '.'
  • -max-iso9660-filenames Allow 37 character filenames for ISO9660 names
  • -d, -omit-period Omit trailing periods from filenames (violates ISO9660)
  • -no-iso-translate Do not translate illegal ISO characters '~', '-' and '#'
  • -relaxed-filenames Allow 7 bit ASCII except lower case characters

}

  • -A ID, -appid ID Set Application ID
  • -B FILES, -sparc-boot FILES Set sparc boot image names
  • -C PARAMS, -cdrecord-params PARAMS Magic paramters from cdrecord
  • -G FILE, -generic-boot FILE Set generic boot image name
  • -H MAPPING_FILE, -map MAPPING_FILE OLD Pre-POSIX.1-2001 option - don't use -H
  • -L, -allow-leading-dots OLD Pre-POSIX.1-2001 option - don't use -L
  • -M FILE, -prev-session FILE Set path to previous session to merge
  • -P PUB, -publisher PUB OLD Pre-POSIX.1-2001 option - don't use -P
  • -R, -rock Generate Rock Ridge directory information
  • -T, -translation-table Generate translation tables for systems that don't understand long filenames
  • -V ID, -volid ID Set Volume ID
  • -XA Generate XA directory attruibutes
  • -abstract FILE Set Abstract filename
  • -alpha-boot FILE Set alpha boot image name (relative to image root)
  • -auto FILE Set HFS AutoStart? file name
  • -biblio FILE Set Bibliographic filename
  • -boot-hfs-file FILE Set HFS boot image name
  • -boot-info-table Patch boot image with info table
  • -boot-load-seg # Set load segment for boot image
  • -boot-load-size # Set numbers of load sectors
  • -cache-inodes Cache inodes (needed to detect hard links)
  • -check-oldnames Check all imported ISO9660 names from old session
  • -check-session FILE Check all ISO9660 names from previous session
  • -chrp-boot Add CHRP boot header
  • -cluster-size SIZE Cluster size for PC Exchange Macintosh files
  • -copyright FILE Set Copyright filename
  • -debug Set debug flag
  • -dev SCSIdev Set path to previous session to merge
  • -dir-mode mode Make the mode of all directories this mode.
  • -dvd-video Generate DVD-Video compliant UDF file system
  • -exclude-list FILE File with list of file names to exclude
  • -f, -follow-links Follow symbolic links
  • -file-mode mode Make the mode of all plain files this mode.
  • -force-rr Inhibit automatic Rock Ridge detection for previous session
  • -g, -apple Add Apple ISO9660 extensions
  • -gid gid Make the group owner of all files this gid.
  • -graft-points Allow to use graft points for filenames
  • -gui Switch behaviour for GUI
  • -h, -hfs Create ISO9660/HFS hybrid
  • -hard-disk-boot Boot image is a hard disk image
  • -help Print option help
  • -hfs-bless FOLDER_NAME Name of Folder to be blessed
  • -hfs-creator CREATOR Set HFS default CREATOR
  • -hfs-parms PARAMETERS Comma separated list of HFS parameters
  • -hfs-type TYPE Set HFS default TYPE
  • -hfs-unlock Leave HFS Volume unlocked
  • -hfs-volid HFS_VOLID Volume name for the HFS partition
  • -hidden GLOBFILE Set hidden attribute on ISO9660 file
  • -hidden-list FILE File with list of ISO9660 files with hidden attribute
  • -hide GLOBFILE Hide ISO9660/RR file
  • -hide-hfs GLOBFILE Hide HFS file
  • -hide-hfs-list FILE List of HFS files to hide
  • -hide-joliet GLOBFILE Hide Joliet file
  • -hide-joliet-list FILE File with list of Joliet files to hide
  • -hide-joliet-trans-tbl Hide TRANS.TBL from Joliet tree
  • -hide-list FILE File with list of ISO9660/RR files to hide
  • -hide-rr-moved Rename RR_MOVED to .rr_moved in Rock Ridge tree
  • -hppa-bootloader FILE Set hppa boot loader file name (relative to image root)
  • -hppa-cmdline CMDLINE Set hppa boot command line (relative to image root)
  • -hppa-kernel-32 FILE Set hppa 32-bit image name (relative to image root)
  • -hppa-kernel-64 FILE Set hppa 64-bit image name (relative to image root)
  • -hppa-ramdisk FILE Set hppa ramdisk file name (relative to image root)
  • -i ADD_FILES No longer supported
  • -icon-position Keep HFS icon position
  • -input-charset CHARSET Local input charset for file name conversion
  • -input-hfs-charset CHARSET Local input charset for HFS file name conversion
  • -iso-level LEVEL Set ISO9660 conformance level (1..3) or 4 for ISO9660 version 2
  • -jcharset CHARSET Local charset for Joliet directory information
  • -jigdo-exclude PATTERN Pattern(s) to exclude from the jigdo file
  • -jigdo-force-md5 PATTERN Pattern(s) where files MUST match an externally-supplied MD5sum
  • -jigdo-jigdo FILE Produce a jigdo .jigdo file as well as the .iso
  • -jigdo-map PATTERN1=PATTERN2 Pattern(s) to map paths (e.g. Debian=/mirror/debian)
  • -jigdo-min-file-size SIZE Minimum size for a file to be listed in the jigdo file
  • -jigdo-template FILE Produce a jigdo .template file as well as the .iso
  • -log-file LOG_FILE Re-direct messages to LOG_FILE
  • -m GLOBFILE, -exclude GLOBFILE Exclude file name
  • -mac-name Use Macintosh name for ISO9660/Joliet/RockRidge file name
  • -magic FILE Magic file for HFS TYPE/CREATOR
  • -map MAPPING_FILE Map file extensions to HFS TYPE/CREATOR
  • -md5-list FILE File containing MD5 sums of the files that should be checked
  • -mips-boot FILE Set mips boot image name (relative to image root)
  • -mipsel-boot FILE Set mipsel boot image name (relative to image root)
  • -new-dir-mode mode Mode used when creating new directories.
  • -no-bak Do not include backup files
  • -no-boot Boot image is not bootable
  • -no-cache-inodes Do not cache inodes (if filesystem has no unique unides)
  • -no-desktop Do not create the HFS (empty) Desktop files
  • -no-emul-boot Boot image is 'no emulation' image
  • -no-mac-files Do not look for Unix/Mac? files (depreciated)
  • -no-pad Do not pad output to a multiple of 32k
  • -no-rr Inhibit reading of Rock Ridge attributes from previous session
  • -no-split-symlink-components Inhibit splitting symlink components
  • -no-split-symlink-fields Inhibit splitting symlink fields
  • -nobak Do not include backup files
  • -o FILE, -output FILE Set output file name
  • -old-root DIR Set root directory in previous session that is searched for files
  • -output-charset CHARSET Output charset for file name conversion
  • -output-hfs-charset CHARSET Output charset for HFS file name conversion
  • -p PREP, -preparer PREP Set Volume preparer
  • -pad Pad output to a multiple of 32k (default)
  • -part Generate HFS partition table
  • -path-list FILE File with list of pathnames to process
  • -prep-boot FILE PReP boot image file -- up to 4 are allowed
  • -print-size Print estimated filesystem size and exit
  • -probe Probe all files for Apple/Unix? file types
  • -publisher PUB Set Volume publisher
  • -quiet Run quietly
  • -r, -rational-rock Generate rationalized Rock Ridge directory information
  • -root DIR Set root directory for all new files and directories
  • -root-info FILE finderinfo for root folder
  • -s TYPE, -sectype TYPE Set output sector type to e.g. data/xa1/raw
  • -sort FILE Sort file content locations according to rules in FILE
  • -sparc-label label text Set sparc boot disk label
  • -split-output Split output into files of approx. 1GB size
  • -stream-file-name FILE_NAME Set the stream file ISO9660 name (incl. version)
  • -stream-media-size # Set the size of your CD media in sectors
  • -sunx86-boot FILES Set sunx86 boot image names
  • -sunx86-label label text Set sunx86 boot disk label
  • -sysid ID Set System ID
  • -table-name TABLE_NAME Translation table file name
  • -ucs-level LEVEL Set Joliet UCS level (1..3)
  • -udf Generate UDF file system
  • -uid uid Make the owner of all files this uid.
  • -use-fileversion LEVEL Use file version # from filesystem
  • -v, -verbose Verbose
  • -version Print the current version
  • -volset ID Set Volume set ID
  • -volset-seqno # Set Volume set sequence number
  • -volset-size # Set Volume set size
  • -x FILE, -old-exclude FILE Exclude file name(depreciated)
  • -xa Generate rationalized XA directory attruibutes
  • -z, -transparent-compression Enable transparent compression of files