diff options
Diffstat (limited to 'upstream/opensuse-tumbleweed/man8/mkisofs.8')
-rw-r--r-- | upstream/opensuse-tumbleweed/man8/mkisofs.8 | 3858 |
1 files changed, 3858 insertions, 0 deletions
diff --git a/upstream/opensuse-tumbleweed/man8/mkisofs.8 b/upstream/opensuse-tumbleweed/man8/mkisofs.8 new file mode 100644 index 00000000..de24666b --- /dev/null +++ b/upstream/opensuse-tumbleweed/man8/mkisofs.8 @@ -0,0 +1,3858 @@ +'\" t +.\" To print, first run through tbl +.\" -*- nroff -*- +.\" @(#)mkisofs.8 1.172 20/09/04 Copyright 1997-2020 J. Schilling +.\" +.\" This program is free software; you can redistribute it and/or modify +.\" it under the terms of the GNU General Public License version 2 +.\" as published by the Free Software Foundation. +.\" +.\" This program is distributed in the hope that it will be useful, +.\" but WITHOUT ANY WARRANTY; without even the implied warranty of +.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +.\" GNU General Public License for more details. +.\" +.\" You should have received a copy of the GNU General Public License along with +.\" this program; see the file COPYING. If not, write to the Free Software +.\" Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +.\" +.\" +.if t .ds a \v'-0.55m'\h'0.00n'\z.\h'0.40n'\z.\v'0.55m'\h'-0.40n'a +.if t .ds o \v'-0.55m'\h'0.00n'\z.\h'0.45n'\z.\v'0.55m'\h'-0.45n'o +.if t .ds u \v'-0.55m'\h'0.00n'\z.\h'0.40n'\z.\v'0.55m'\h'-0.40n'u +.if t .ds A \v'-0.77m'\h'0.25n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.70n'A +.if t .ds O \v'-0.77m'\h'0.25n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.70n'O +.if t .ds U \v'-0.77m'\h'0.30n'\z.\h'0.45n'\z.\v'0.77m'\h'-0.75n'U +.if t .ds s \\(*b +.if t .ds S SS +.if n .ds a ae +.if n .ds o oe +.if n .ds u ue +.if n .ds s sz +.TH MKISOFS 8 "2022/09/09" "Version 3.02" +.SH NAME +mkisofs \- create an hybrid ISO-9660/JOLIET/HFS/UDF filesystem-image with optional Rock Ridge attributes. +.SH SYNOPSIS +.B mkisofs +[ +.I options +] +[ +.B \-o +.I filename +] +.I pathspec [pathspec ...] +.br +.B mkisofs +[ +.I options +] +[ +.B \-o +.I filename +] +.B \-find +.I [find expression] +.br +.SH DESCRIPTION +.B mkisofs +is effectively a pre-mastering program to generate an ISO-9660/JOLIET/HFS/UDF hybrid +filesystem. +.PP +ISO-9660/JOLIET/UDF filesystems are limited to a maximum size of 8\ TB. +The maximum size of a single file is 8\ TB (single files in UDF are currently +limited to aprox. 200\ GB). +If you like to have files +larger than 2 \GB, you need to specify +.B \-iso\-level 3 +or above. +If a HFS hybrid is created, the maximum +file size for files in the HFS hybrid is 2\ GB in any case. +.SS "Hybrid filesystem support" +.PP +.B mkisofs +is capable of generating the +.B "System Use Sharing Protocol records (SUSP)" +specified +by the +.B "Rock Ridge Interchange Protocol." +This is used to further describe the +files in the ISO-9660 filesystem to a UNIX host, and provides information such +as longer filenames, uid/gid, posix permissions, symbolic links, hard links, +block and character devices. +.PP +If Joliet, HFS or UDF hybrid command line options are specified, +.B mkisofs +will create additional separate filesystem meta data for Joliet, HFS or UDF. +The file content in this case refers to the same data blocks on the media. +It +will generate a pure ISO-9660 filesystem unless the Joliet, HFS or UDF hybrid command +line options are given. +.PP +.B mkisofs +can generate a +.I true +(or +.IR shared ) +HFS hybrid filesystem. The same files are seen as HFS files when +accessed from a Macintosh and as ISO-9660 files when accessed from other +machines. HFS stands for +.I Hierarchical File System +and is the native file system used on Macintosh computers up to Mac\ OS\ 9. +.PP +As an alternative, +.B mkisofs +can generate the +.I "Apple Extensions to ISO-9660" +or +.I UDF +for each file. These extensions provide each file with CREATOR, TYPE and +certain Finder Flags when accessed from a Macintosh. See the +.B HFS MACINTOSH FILE FORMATS +section below. +.SS "Functional description" +.PP +.B mkisofs +takes a snapshot of a given directory tree, and generates a +binary image which will correspond to an ISO-9660 or Joliet/HFS/UDF filesystem when +written to a block device. +.PP +Each file written to the ISO-9660 filesystem must have a filename in the 8.3 +format (8 characters, period, 3 characters, all upper case), even if Rock Ridge +attributes are 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. +.B mkisofs +generally tries to form correct names by forcing the UNIX filename to upper +case and truncating as required, but often times this yields unsatisfactory +results when there are cases where the +truncated names are not all unique. +.B mkisofs +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 have a 3 digit +number as an extension (where the number is guaranteed to be unique). An +example of this would be the files foo.bar and +foo.bar.~1~ - the file foo.bar.~1~ would be written as FOO000.BAR;1 and the file +foo.bar would be written as FOO.BAR;1 +.PP +When used with various HFS or UDF options, +.B mkisofs +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 +.B HFS MACINTOSH FILE FORMATS +section below for more about formats +.B mkisofs +supports. +.PP +Note that +.B mkisofs +is not designed to communicate with writers for optical media directly. +Most writers +have proprietary command sets which vary from one manufacturer to +another, and you need a specialized tool like +.B cdrecord +to actually burn the disk. +.PP +The +.B cdrecord +utility is a utility capable of burning an actual disc. The latest version +of +.B cdrecord +is available from +.B https://codeberg.org/schilytools/schilytools/releases +\(. +.PP +Also you should know that most CD writers are very particular about timing. +Once you start to burn a disc, you cannot let their buffer empty before you +are done, or you will end up with a corrupt disc. Thus it is critical +that you be able to maintain an uninterrupted data stream to the writer +for the entire time that the disc is being written. +.SS "Dealing with path names" +.PP +.B pathspec +is the path of the directory tree to be copied into the ISO-9660 filesystem. +Multiple paths can be specified, and +.B +mkisofs +will merge the files found in all of the specified path components to form the cdrom +image. +.PP +If the option +.B \-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 the file old.lis in the cdrom image at /foo/bar/old.lis, while + + foo/bar/xxx=../old.lis + +will include the file old.lis in the cdrom image at /foo/bar/xxx. The +same sort of syntax can be used with directories as well. +.B mkisofs +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 mkisofs. If you wish other permissions or owners of +the intermediate directories, see +.BR \-uid , +.BR \-gid , +.BR \-dir\-mode , +.BR \-file\-mode " and" +.BR \-new\-dir\-mode . +.PP +.B mkisofs +will also run on Win9\fIx\fP/NT\fIx\fP machines when compiled with Cygnus' cygwin +(available from http://sourceware.cygnus.com/cygwin/). Therefore most +references in this man page to +.I Unix +also apply to +.I Win32 +or +.IR Win64 . + +.SH OPTIONS +.TP +.BI \-abstract " FILE" +Specifies the abstract file name in the primary volume descriptor. +There is space on the disc for 37 characters of information. +The related Joliet entry is limited to 18 characters. +This parameter can also be set in the file +.B \&.m\&kisofsrc +with ABST=filename. +If specified in both places, the command line version is used. +.sp +It is up to the user of +.B mkisofs +to include a file with the appropriate name in the created filesystem tree. +.TP +.BI \-A " application_id" +.TP +.BI \-appid " 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 on the disc for 128 characters of information. +The related Joliet entry is limited to 64 characters. +This parameter can +also be set in the file +.B \&.m\&kisofsrc +with APPI=id. +If specified in both places, the command line version is used. +.TP +.B \-allow\-leading\-dots +.TP +.B \-ldots +Allow ISO-9660 filenames to begin with a period. Usually, a leading dot is +replaced with an underscore in order to maintain MS-DOS compatibility. +.br +This violates the ISO-9660 standard, but it happens to work on many systems. +Use with caution. +.TP +.B \-allow\-lowercase +This options allows lower case characters to appear in ISO-9660 filenames. +.br +This violates the ISO-9660 standard, but it happens to work on some systems. +Use with caution. +.TP +.B \-no\-allow\-lowercase +This resets the effect of +.B \-allow\-lowercase +and even works when +.BR \-U , +.B \-untranslated\-filenames +or +.B \-iso\-level 4 +have been used to allow lowercase filenames. +.TP +.B \-allow\-multidot +This options allows more than one dot to appear in ISO-9660 filenames. +A leading dot is not affected by this option, it +may be allowed separately using the +.B \-allow\-leading\-dots +option. +.br +This violates the ISO-9660 standard, but it happens to work on many systems. +Use with caution. +.TP +.BI \-biblio " FILE" +Specifies the bibliographic file name in the primary volume descriptor. +There is space on the disc for 37 characters of information. +The related Joliet entry is limited to 18 characters. +This parameter can also be set in the file +.B \&.m\&kisofsrc +with BIBLO=filename. +If specified in both places, the command line version is used. +.sp +It is up to the user of +.B mkisofs +to include a file with the appropriate name in the created filesystem tree. +.TP +.B \-cache\-inodes +Cache inode and device numbers to find hard links to files. +If +.B mkisofs +finds a hard link (a file with multiple names), then the file will only +appear once on the CD. This helps to save space on the CD. +The option +.B \-cache\-inodes +is default on UNIX like operating systems. +Be careful when using this option on a filesystem without unique +inode numbers as it may result in files containing the wrong content on CD. +.sp +See the option +.B \-duplicates\-once +for a method that works on filesystems without unique inode numbers. +.sp +If inodes are not cached, +.B mkisofs +will revert to the old Rrip Version-1.10 (see +.BR \-rrip110 ) +and +.B mkisofs +will not be able to create +.B "correct inode numbers" +for zero sized files. +.TP +.B \-no\-cache\-inodes +Do not cache inode and device numbers. +This option is needed whenever a filesystem does not have unique +inode numbers. It is the default on old +.B Cygwin +versions. +As the Microsoft operating system that runs below +.B Cygwin +uses 64 bit inode numbers for NTFS, it does not have unique inode numbers +in the 32 bit range. +Old Cygwin versions create fake 32-bit inode numbers from a hash algorithm +and thus create non-unique numbers. +If +.B mkisofs +would cache inodes on old Cygwin versions, it would believe that some files are +identical although they are not. The result in this case are files +that contain the wrong content if a significant amount of different +files (> ~5000) is in inside the tree that is to be archived. +This does not happen when the +.B \-no\-cache\-inodes +is used, but the disadvantage is that +.B mkisofs +cannot detect hardlinks anymore and the resulting CD image may be larger +than expected. +.sp +If inodes are not cached, +.B mkisofs +will revert to the old Rrip Version-1.10 (see +.BR \-rrip110 ) +and +.B mkisofs +will not be able to create +.B "correct inode numbers" +for zero sized files. +.TP +.BI \-creation\-date " date-spec" +Set the +.B creation date +in the primary volume descriptor (PVD) to a value different from the current +time. +This allows e.g. to set up an intentional date in order to be able to create +reproducible ISO-9660 filesystem images. +.sp +See +.B \-modification\-date +for a description of the +.I date-spec +format and +.B \-reproducible\-date +for a simple way to create reproducible filesystem images. +.TP +.B \-duplicates\-once +Tells +.B mkisofs +to use a message digest checksum to identify identical files as +apparently hard linked files. +This allows +.B mkisofs +to archive inode numbers and hard links even when it is run on +non-POSIX platforms like +.BR DOS . +.TP +.BI \-effective\-date " date-spec" +Set the +.B effective date +in the primary volume descriptor (PVD) to a value different from the current +time. +This allows e.g. to set up an intentional date in order to be able to create +reproducible ISO-9660 filesystem images. +.sp +See +.B \-modification\-date +for a description of the +.I date-spec +format and +.B \-reproducible\-date +for a simple way to create reproducible filesystem images. +.TP +.BI \-b " eltorito_boot_image" +.TP +.BI \-eltorito\-boot " eltorito_boot_image" +Specifies the path and filename of the boot image to be used when making +an "El Torito" bootable CD. The pathname must be relative to the source +path and inside the source tree specified to +.B mkisofs. +This option is required to make an "El Torito" bootable CD. +The boot image must be exactly the size of either a 1200, 1440, or a 2880 +kB floppy, and +.B mkisofs +will use this size when creating the output ISO-9660 +filesystem. It is assumed that the first 512 byte sector should be read +from the boot image (it is essentially emulating a normal floppy drive). +This will work, for example, if the boot image is a boot floppy. +.sp +If the boot image is not an image of a floppy, you need to add one of the +options: +.BR \-hard\-disk\-boot " or " \-no\-emul\-boot . +If the system should not boot off the emulated disk, use +.BR \-no\-boot . +.sp +More than one boot entry may be specified, see +.B \-eltorito\-platform +and +.B \-eltorito\-alt\-boot +on how to specify more boot entries. +The first boot entry is the +.BR "default boot entry" . +Additional boot entries are members for a multi boot configuration. +.sp +If the +.B \-sort +option 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. +.TP +.B \-eltorito\-alt\-boot +Start with a new set of "El Torito" boot parameters. +This allows one to have more than one El Torito boot entry on a CD. +A maximum of 63 El Torito boot entries may be put on a single CD. +.sp +The +.B \-eltorito\-alt\-boot +option starts a new boot entry with the same +.I platform id +but no new boot section except when it appears +past the first boot entry which is the default boot entry. +.TP +.BI \-eltorito\-platform " id" +Set the "El Torito" platform id for a boot record or a section of boot records. +The. +.I id +parameter may be either: +.RS +.TP +.B x86 +This is the default +.I platform id +value and specifies entries for the PC platform. +If no +.B \-eltorito\-platform +option appears before the first +.B \-eltorito\-boot +option, the default boot entry becomes an entry for the x86 PC platform. +.TP +.B PPC +Boot entries for the Power PC platform. +.TP +.B Mac +Boot entries for the Apple Mac platform. +.TP +.B efi +Boot entries for EFI based PCs. +.TP +.B # +A numeric value specifying any platform id. +.LP +If the option +.B \-eltorito\-platform +appears before the first +.B \-eltorito\-boot +option, it sets the +.I platform id +for the default boot entry. +.LP +If the option +.B \-eltorito\-platform +appears after an +.B \-eltorito\-boot +option and sets the +.I platform id +to a value different from the previous value, +it starts a new set of boot entries. +.LP +The second boot entry and any new +.I platform id +creates a new section header and reduces the number of boot +entries per CD by one. + +.RE +.TP +.BI errctl= " name" +.TP +.BI errctl= " error control spec" +Add the content from file +.I name +to the error control definitions or add +.I error control spec +to the error control definitions. +More than one error control file and more than one +.I error control spec +as well as a mixture of both forms is possible. +.sp +The reason for using error control is to make +.B mkisofs +quiet about error conditions that are known to be irrelevant on the quality +of the created filesystem or to tell +.B mkisofs +to abort on certain error conditions instead of trying to continue +with the filesystem. +.sp +.ne 6 +A typical reason to use error control is to +suppress warnings about growing log files while doing a backup on a +live file system. +Another typical reason to use error control is to tell +.B mkisofs +to abort if e.g. a file could not be archived instead of continuing +to archive other files from a list. +.sp +The error control file contains a set of lines, each starting with a list +of error conditions to be ignored followed by white space followed by a +file name pattern (see +.BR match (1) +or +.BR patmatch (3) +for more information). +The +.I error control spec +uses the same syntax as a single line from the error control file. +If the file name pattern needs to start with white space, use a backslash +to escape the start of the file name. It is not possible to have new line +characters in the file name pattern. +Whenever an error situation is encountered, +.B mkisofs +checks the lines in the error control file starting from the top. +If the current error condition is listed on a line in the error control file, +then +.B mkisofs +checks whether the pattern on the rest of the line matches the current file name. +If this is the case, +.B mkisofs +uses the current error control specification to +control the current error condition. +.sp +The list of error conditions to be handled may use one or more (in this case +separated by a '|' character) identifiers from the list below: +.RS +.TP 12 +.B ABORT +If this meta condition is included in an error condition, +.B mkisofs +aborts (exits) as soon as possible after this error condition has been +seen instead of making +.B mkisofs +quiet about the condition. +This error condition flag may only be used together with at another +error condition or a list of error conditions +(separated by a '|' character). +.TP 12 +.B WARN +If this meta condition is included in an error condition, +.B mkisofs +prints the warning about the error condition but the error condition +does not affect the exit code of +.B mkisofs +and the error statistics (which is printed to the end) does not +include the related errors. +This error condition flag may only be used together with at another +error condition or a list of error conditions +(separated by a '|' character). +The +.B WARN +meta condition has a lower precedence than +.BR ABORT . +.TP 12 +.B ALL +This is a shortcut for all error conditions below. +.TP 12 +.B STAT +Suppress warnings that +.B mkisofs +could not +.BR stat (2) +a file. +.TP +.B GETACL +Suppress warnings about files on which +.B mkisofs +had problems to retrieve the ACL information. +.TP +.B OPEN +Suppress warnings about files that could not be opened. +.TP +.B READ +Suppress warnings read errors on files. +.TP +.B WRITE +Suppress warnings write errors on files. +.TP +.B READLINK +Suppress warnings +.BR readlink (2) +errors on symbolic links. +.TP +.B GROW +Suppress warnings about files that did grow while they have been +archived. +.TP +.B SHRINK +Suppress warnings about files that did shrink while they have been +archived. +.TP +.B MISSLINK +Suppress warnings about files for which +.B mkisofs +was unable to archive all hard links. +.TP +.B NAMETOOLONG +Suppress warnings about files that could not be archived because the name of +the file is too long for the archive format. +.TP +.B FILETOOBIG +Suppress warnings about files that could not be archived because the size of +the file is too big for the archive format. +.TP +.B SPECIALFILE +Suppress warnings about files that could not be archived because the file type +is not supported by the archive format. +.TP +.B GETXATTR +Suppress warnings about files on that +.B mkisofs +could not retrieve the extended file attribute information. +.TP +.B SETTIME +Suppress warnings about files on that +.B mkisofs +could not set the time information during extraction. +.TP +.B SETMODE +Suppress warnings about files on that +.B mkisofs +could not set the access modes during extraction. +.TP +.B SECURITY +Suppress warnings about files that +have been skipped on extraction because they have been considered to be a +security risk. +This currently applies to all files that have a '/../' sequence inside +when +.B \-.. +has not been specified. +.TP +.B LSECURITY +Suppress warnings about links that +have been skipped on extraction because they have been considered to be a +security risk. +This currently applies to all link names that start with '/' or +have a '/../' sequence inside when +.B \-secure\-links +has been specified. +In this case, +.B mkisofs +tries to match the link name against the pattern in the error control file. +.TP +.B SAMEFILE +Suppress warnings about links that +have been skipped on extraction because source and target of the link +are pointing to the same file. +If +.B mkisofs +would not skip these files, it would end up with removing the file completely. +In this case, +.B mkisofs +tries to match the link name against the pattern in the error control file. +.TP +.B BADACL +Suppress warnings access control list conversion problems. +.TP +.B SETACL +Suppress warnings about files on that +.B mkisofs +could not set the ACL information during extraction. +.TP +.B SETXATTR +Suppress warnings about files on that +.B mkisofs +could not set the extended file attribute information during extraction. +.RE +.sp +If a specific error condition is ignored, then the error condition is not +only handled in a silent way but also excluded from the error statistics +that are printed at the end of the +.B mkisofs +run. +.sp +Be very careful when using error control as you may ignore any error condition. +If you ignore the wrong error conditions, you may not be able to see real +problems anymore. +.sp +Note that currently only the tags +.BR OPEN , +.BR READ , +.BR GROW , +.BR SHRINK , +are checked from +.BR mkisofs . +.TP +.BI \-expiration\-date " date-spec" +Set the +.B expiration date +in the primary volume descriptor (PVD) to a value different from a zeroed out +time. +This allows e.g. to set up an intentional date in order to be able to create +reproducible ISO-9660 filesystem images. +.sp +See +.B \-modification\-date +for a description of the +.I date-spec +format and +.B \-reproducible\-date +for a simple way to create reproducible filesystem images. +.TP +.BI \-B " img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e" +.TP +.BI \-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 ISO-9660 image, the first image file is mapped +to partition 1. +There may be empty fields in the comma separated list. +The maximum number of possible partitions is 8 so it is impossible to specify +more than 7 partition images. +This option is required to make a bootable CD for Sun sparc systems. +If the +.B \-B +or +.B \-sparc\-boot +option has been specified, the first sector of the resulting image will +contain a Sun disk label. This disk label specifies slice 0 for the +ISO-9660 image and slice 1 .\|.\|. slice 7 for the boot images that +have been specified with this option. Byte offset 512 .\|.\|. 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 an ufs filesystem that is used primary +kernel boot stage. +.sp +The implemented boot method is the boot method 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. For this reason, it should be usable for any OS +that boots off a sparc system. +.sp +For more information also see the +.B NOTES +section below. +.sp +If the special filename +.B "..." +is used, the actual and all following boot partitions are mapped to the +previous partition. If +.B mkisofs +is called with +.BI "\-G " image " \-B " ... +all boot partitions are mapped to the partition that contains the ISO-9660 +filesystem image and the generic boot image that is located in the first +16 sectors of the disk is used for all architectures. +.TP +.BI \-G " generic_boot_image" +Specifies the path and filename of the generic boot image to be used when making +a generic bootable CD. +The +.B generic_boot_image +will be placed on the first 16 sectors of the CD. The first 16 sectors +are the sectors that are located before the ISO-9660 primary volume descriptor. +If this option is used together with the +.B \-sparc\-boot +option, the Sun disk label will overlay the first 512 bytes of the generic +boot image. +.TP +.BI \-hard\-disk\-boot +Specifies that the boot image used to create "El Torito" bootable CDs is +a hard disk image. The hard disk image must begin with a master boot +record that contains a single partition. +.TP +.BI \-ignore\-error +Ignore errors. +.B mkisofs +by default aborts on several errors, such as read errors. With this option in effect, +.B mkisofs +tries to continue. +Use with care. +.TP +.BI \-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. +.TP +.BI \-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. +.TP +.BI \-boot\-load\-seg " segment_address" +Specifies the load segment address of the boot image for no-emulation +"El Torito" CDs. +.TP +.BI \-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. +.TP +.BI \-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 +sure to make a copy if this file cannot be easily regenerated! See +the +.B "EL TORITO BOOT INFO TABLE" +section for a description of this table. +.TP +.BI \-C " last_sess_start,next_sess_start" +.TP +.BI \-cdrecord\-params " last_sess_start,next_sess_start" +This option is needed when +.B mkisofs +is used to create a CDextra or the image of a second session or a +higher level session for a multi session disk. +The option +.B \-C +takes a pair of two numbers separated by a comma. The first number is the +sector number of the first sector in the last session of the disk +that should be appended to. +The second number is the starting sector number of the new session. +The expected pair of numbers may be retrieved by calling +.B "cdrecord \-msinfo ..." +If the +.B \-C +option is used in conjunction with the +.B \-M +option, +.B mkisofs +will create a filesystem image that is intended to be a continuation +of the previous session. +If the +.B \-C +option is used without the +.B \-M +option, +.B mkisofs +will create a filesystem image that is intended to be used for a second +session on a CDextra. This is a multi session CD that holds audio data +in the first session and a ISO-9660 filesystem in the second session. +.TP +.BI \-c " boot_catalog" +.TP +.BI \-eltorito\-catalog " boot_catalog" +Specifies the path and filename of the boot catalog to be used when making +an "El Torito" bootable CD. The pathname must be relative to the source +path specified to +.B mkisofs. +This option is required to make a bootable CD. +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, as +it will be excluded. Usually a name like "boot.catalog" is +chosen. +.sp +If the +.B \-sort +option 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. +.TP +.B \-check\-oldnames +Check all filenames imported from old session for compliance with +actual +.B mkisofs +ISO-9660 file naming rules. +It his option is not present, only names with a length > 31 are checked +as these files are a hard violation of the ISO-9660 standard. +.TP +.BI \-check\-session " FILE" +Check all old sessions for compliance with +actual +.B mkisofs +ISO-9660 file naming rules. +This is a high level option that is a combination of the options: +.BI \-M " FILE " "\-C 0,0 \-check\-oldnames" +For the parameter +.I FILE +see description of +.B \-M +option. +.TP +.BI \-copyright " FILE" +Specifies the Copyright file name in the primary volume descriptor. +There is space on the disc for 37 characters of information. +The related Joliet entry is limited to 18 characters. +This parameter can also be set in the file +.B \&.m\&kisofsrc +with COPY=filename. +If specified in both places, the command line version is used. +.sp +It is up to the user of +.B mkisofs +to include a file with the appropriate name in the created filesystem tree. +.TP +.B \-d +.TP +.B \-omit\-period +Omit trailing period from files that do not have a period. +.br +This violates the ISO-9660 standard, but it happens to work on many systems. +Use with caution. +.TP +.B \-D +.TP +.B \-disable\-deep\-relocation +Do not use +.B Rock Ridge +deep directory relocation, and instead just pack directories in the +way they are in the master directory tree. +.sp +This option was needed with old +.B mkisofs +versions to avoid a visible directory +.BR rr_moved . +Since August 2006, +.B mkisofs +correctly hides the +.B rr_moved +directory from the +.B Rock Ridge +filesystem. +.sp +If ISO-9660/Amd 1:2013 has not been selected, +this violates the ISO-9660 standard, but it happens to work on many systems. +Use with caution. +.TP +.B \-data\-change\-warn +If the size of a file changes while the file is being archived, treat this +condition as a warning only that does not cause +.B mkisofs +to abort. +A warning message is still written if the condition is not otherwise +ignored by another rule from an +.B errctl= +option. +The +.B \-data\-change\-warn +option works as if the last error control option was +.sp + \fBerrctl=\fP\fI"WARN|GROW|SHRINK *"\fP +.sp +.TP +.B \-debug +Increment debug value by one. +.TP +.BI \-dir\-mode " mode" +Overrides the mode of directories used to create the image to +.IR mode . +See +.B \-new\-dir\-mode +on how to specify a different +.I mode +that is used for directories that do not exist +in the tree specified by the source-path. +Specifying the +.B \-dir\-mode +option automatically enables Rock Ridge extensions. +.br +.ne 4 +.TP +.B \-dvd\-audio +Generate DVD-Audio compliant UDF file system. This is done by sorting the +order of the content of the appropriate files. +.\" Audio is currently not sorted +.\" and by adding padding between the files if needed. +Sorting only works if the DVD-Audio filenames include upper case +characters only. +.sp +Note that in order to get a DVD-Audio compliant filesystem image, you need +to prepare a DVD-Audio compliant directory tree. This means you need to +have a directory AUDIO_TS (all caps) in the root directory of the resulting DVD +and you should have a directory VIDEO_TS. The directory AUDIO_TS needs to +include all needed files (file names must be all caps) for a compliant DVD-Audio +filesystem. +.TP +.B \-dvd\-hybrid +Equivalent to selecting both -dvd-audio and -dvd-video +.TP +.B \-dvd\-video +Generate DVD-Video compliant UDF file system. This is done by sorting the +order of the content of the appropriate files and by adding padding +between the files if needed. +Sorting only works if the DVD-Video filenames include upper case +characters only. +.sp +Note that in order to get a DVD-Video compliant filesystem image, you need +to prepare a DVD-Video compliant directory tree. This means you need to +have a directory VIDEO_TS (all caps) in the root directory of the resulting DVD +and you should have a directory AUDIO_TS. The directory VIDEO_TS needs to +include all needed files (file names must be all caps) for a compliant DVD-Video +filesystem. +.TP +.B \-f +.TP +.B \-follow\-links +Follow all symbolic links when generating the filesystem. When this option is not +in use, symbolic links will be entered using Rock Ridge if enabled, otherwise +the file will be ignored. +.sp +See also +.B \-posix\-L +option. +.TP +.BI \-file\-mode " mode" +Overrides the mode of regular files used to create the image to +.IR mode . +Specifying this option automatically enables Rock Ridge extensions. +.TP +.B \-find +This option acts a separator. +If it is used, all +.B mkisofs +options must be to the left of the +.B \-find +option. To the right of the +.B \-find +option, +.B mkisofs +accepts the +.B find +command line syntax only. +.sp +The +.B find +expression acts as a filter between the source of file names and the +consumer, which is archiving engine. +If the +.B find +expression evaluated as TRUE, then the related file is selected for +processing, otherwise it is omited. +.sp +In order to make the evaluation of the +.B find +expression more convenient, +.B mkisofs +implements additional +.B "find primaries" +that have side effects on the file meta data. +.B Mkisofs +implements the following additional +.B find +primaries: +.RS +.TP +.B \-help +Lists the available +.BR find (1) +syntax. +.br +.ne 5 +.TP +.BI \-chatime " timespec" +The primary always evaluates as true; +it modifies the +.B time of last access +of a file in +.BR "struct stat" . +See +.BR sfind (1) +for a description of +.IR timespec . +.br +.ne 5 +.TP +.BI \-chctime " timespec" +The primary always evaluates as true; +it modifies the +.B time of last status change +of a file in +.BR "struct stat" . +See +.BR sfind (1) +for a description of +.IR timespec . +.br +.ne 5 +.TP +.BI \-chmtime " timespec" +The primary always evaluates as true; +it modifies the +.B time of last modification +of a file in +.BR "struct stat" . +See +.BR sfind (1) +for a description of +.IR timespec . +.TP +.BI \-chgrp " gname" +The primary always evaluates as true; +it sets the group of the file to +.IR gname . +.TP +.BI \-chmod " mode" +The primary always evaluates as true; +it sets the permissions of the file to +.IR mode . +Octal and symbolic permissions are accepted for +.I mode +as with +.BR chmod (1). +.TP +.BI \-chown " uname" +The primary always evaluates as true; +it sets the owner of the file to +.IR uname . +.TP +.B \-false +The primary always evaluates as false; +it allows one to make the result of the full expression different from +the result of a part of the expression. +.TP +.B \-true +The primary always evaluates as true; +it allows one to make the result of the full expression different from +the result of a part of the expression. +.PP +The command line: +.PP +.B "mkisofs -o o.iso -find . ( -type d -ls -o false ) -o ! -type d" +.PP +lists all directories and puts all non-directories to the image +.BR o.iso . +.PP +The command line: +.PP +.B "mkisofs -o o.iso -find . ( -type d -chown root -o true )" +.PP +archives all directories so they appear to be owned by root in the archive, +all non-directories are archived as they are in the file system. +.PP +Note that the +.BR \-ls , +.B \-exec +and the +.B \-ok +primary cannot be used if +.B stdin +or +stdout +has not been redirected. +.RE +.TP +.BI \-gid " gid" +Overrides the gid read from the source files to the value of +.IR gid . +Specifying this option automatically enables Rock Ridge extensions. +.TP +.B \-gui +Switch the behaviour for a GUI. This currently makes the output more verbose +but may have other effects in future. +.TP +.B \-graft\-points +Allow one to use 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 '\e\e' and '=' characters must be escaped with '\e\e' +if +.I \-graft\-points +has been specified. +.TP +.BI \-hide " glob" +Hide +.I glob +from being seen on the ISO-9660 or Rock Ridge directory. +.I glob +is a shell wild-card-style pattern that must match any part of the filename +or path. +Multiple globs may be hidden. +If +.I glob +matches a directory, then 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. +Should be used with the +.B \-hide\-joliet +option. See README.hide for more details. +.TP +.BI \-hide\-list " file" +A file containing a list of +.I globs +to be hidden as above. +.TP +.BI \-hidden " glob" +Add the hidden (existence) ISO-9660 directory attribute for +.IR glob . +This attribute will prevent +.I glob +from being listed on DOS based systems if the /A flag is not used for the listing. +.I glob +is a shell wild-card-style pattern that must 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. +Multiple globs may be hidden. +.TP +.BI \-hidden\-list " file" +A file containing a list of +.I globs +to get the hidden attribute as above. +.TP +.BI \-hide\-joliet " glob" +Hide +.I glob +from being seen on the Joliet directory. +.I glob +is a shell wild-card-style pattern that must match any part of the filename +or path. +Multiple globs may be hidden. +If +.I glob +matches a directory, then 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. +Should be used with the +.B \-hide +option. See README.hide for more details. +.TP +.BI \-hide\-joliet\-list " file" +A file containing a list of +.I globs +to be hidden as above. +.TP +.B \-hide\-joliet\-trans\-tbl +Hide the +.B 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 ISO-9660 name which may both be different from the +Joliet name. +.TP +.B \-hide\-rr\-moved +Rename the directory +.B RR_MOVED +to +.B .rr_moved +in the Rock Ridge tree. +This option has been introduced when +.B mkisofs +was not able to hide the directory in the Rock Ridge tree. +This version of +.B mkisofs +always automatically hides the +.B RR_MOVED +directory in the Rock Ridge tree. +If you need to have no +.B RR_MOVED +directory at all (even in the ISO-9660 tree), you should use the +.B \-D +option. Note that in case that the +.B \-D +option has been specified, the resulting filesystem is not ISO-9660 +level-1 compliant and will not be readable on MS-DOS. +See also +.B NOTES +section for more information on the +.B RR_MOVED +directory. + +.TP +.BI \-hide\-udf " glob" +Hide +.I glob +from being seen on the UDF directory. +.I glob +is a shell wild-card-style pattern that must match any part of the filename +or path. +Multiple globs may be hidden. +If +.I glob +matches a directory, then 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. +Should be used with the +.B \-hide +option. See README.hide for more details. +.TP +.BI \-hide\-udf\-list " file" +A file containing a list of +.I globs +to be hidden as above. + +.PD 0 +.TP +.B \-hide\-ignorecase +.TP +.B \-exclude\-ignorecase +.PD +Ignore the case of the filenames with the +.B \-hide* +options +and with the +.B \-exclude\-list +option. + +.TP +.BI \-input\-charset " charset" +Set up the input charset that defines the characters used in local file names. +To get a list of valid charset names, call +.B "mkisofs \-input\-charset help." +To get a 1:1 mapping, you may use +.B default +as charset name. If the input charset has not been set up from the +locale in the environment, the default initial values are +.I cp437 +on DOS based systems and +.I iso8859-1 +on all other systems. +See +.B "CHARACTER SETS" +section below for more details. +.sp +If +.B \-input\-charset +has not been specified, it will be set up from the locale in the +environment. If you like to disable this automatic setup, use +the empty string as locale name. +.TP +.BI \-output\-charset " charset" +Set up the output charset that defines the characters that will be used in Rock Ridge +file names. Defaults to the input charset. See +.B "CHARACTER SETS" +section below for more details. +.TP +.BI \-iso\-level " level" +Set the ISO-9660 conformance level. Valid numbers are 1..3 and 4. +.sp +With level 1, files may only consist of one section and filenames are +restricted to 8.3 characters. +.sp +With level 2, files may only consist of one section. +.sp +With level 3, no restrictions (other than ISO-9660:1988) do apply. +Starting with this level, mkisofs also allows files to be larger than 4 GB +by implementing ISO-9660 multi-extent files. +.sp +With all ISO-9660 levels from 1..3, all filenames are restricted to upper +case letters, numbers and the underscore (_). The maximum filename +length is restricted to 31 characters, the directory nesting level +is restricted to 8 and the maximum path length is limited to 255 characters. +.sp +Level 4 officially does not exists but +.B mkisofs +maps it to ISO-9660/Amd 1:2013 (formerly ISO-9660:1999 / JIS X 0606:1998), +also known as ISO-9660 version 2. +.sp +With level 4, an enhanced volume descriptor with version number +and file structure version number set to 2 is emitted. +There may be more than 8 levels of directory nesting, +there is no need for a file to contain a dot and the dot has no +more special meaning, +file names do not have version numbers, +.\" (f XXX ??? The character used for filling byte positions which are +.\" specified to be characters is subject to agreement between the +.\" originator and the recipient of the volume), +the maximum length for files and directory is raised to 207. +If Rock Ridge is used, the maximum ISO-9660 name length is reduced to 197. +.sp +When creating Version 2 images, +.B mkisofs +emits an enhanced volume descriptor which looks similar to a primary volume +descriptor but is slightly different. Be careful not to use broken software +to make ISO-9660 images bootable by assuming a second PVD copy and patching +this putative PVD copy into an El Torito VD. +.TP +.B \-J +Generate Joliet directory records in addition to regular ISO-9660 file +names. This is primarily useful when the discs are to be used on Windows-NT +or Windows-95 machines. The Joliet filenames are specified in Unicode and +each path component can be up to 64 Unicode characters long. +Note that Joliet is no standard - CD's that use only Joliet extensions but no +standard Rock Ridge extensions may usually only be used on Microsoft Win32 +systems. Furthermore, the fact that the filenames are limited to 64 characters +and the fact that Joliet uses the UTF-16 coding for Unicode characters causes +interoperability problems. +.TP +.B \-joliet\-long +Allow Joliet filenames to be up to 103 Unicode characters. This breaks the +Joliet specification - but appears to work. Use with caution. The number +103 is derived from: the maximum Directory Record Length (254), minus the +length of Directory Record (33), minus CD-ROM XA System Use Extension +Information (14), divided by the UTF-16 character size (2). +.TP +.BI \-jcharset " charset" +Same as using +.B \-input\-charset +.I charset +and +.B \-J +options. See +.B "CHARACTER SETS" +section below for more details. +.TP +.B \-l +.TP +.B \-full\-iso9660\-filenames +Allow full 31 character filenames. Normally the ISO-9660 filename will be in an +8.3 format which is compatible with MS-DOS, even though the ISO-9660 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 this comes in handy on some other +systems (such as the Amiga). +Use with caution. +.TP +.B \-L +Outdated option reserved by POSIX.1-2001, use +.B \-allow\-leading\-dots +instead. +This option will get POSIX.1-2001 semantics with mkisofs-3.02. +.TP +.BI \-log\-file " log_file" +Redirect all error, warning and informational messages to +.I log_file +instead of the standard error. +.TP +.B \-long\-rr\-time +Use the long ISO-9660 time format for the file time stamps used in Rock Ridge. +This time format allows one to represent year 0 .. year 9999 with a granularity of 10ms. +.sp +The short ISO-9660 time format only allows one to represent year 1900 .. year 2155 +with a granularity of 1s. +.TP +.BI \-m " glob" +Exclude +.I glob +from being written to CDROM. +.I glob +is a shell wild-card-style pattern that must match part of the filename (not +the path as with option +.BR \-x ). +Technically +.I glob +is matched against the +.I d->d_name +part of the directory entry. +Multiple globs may be excluded. +Example: + +mkisofs \-o rom \-m '*.o' \-m core \-m foobar + +would exclude all files ending in ".o", called "core" or "foobar" to be +copied to CDROM. Note that if you had a directory called "foobar" it too (and +of course all its descendants) would be excluded. +.sp +NOTE: The +.B \-m +and +.B \-x +option description should both be updated, they are wrong. +Both now work identical and use filename globbing. A file is excluded if either +the last component matches or the whole path matches. +.TP +.BI \-exclude\-list " file" +A file containing a list of +.I globs +to be excluded as above. +.TP +.B \-max\-iso9660\-filenames +Allow 37 chars in ISO-9660 filenames. +This option forces the +.B \-N +option as the extra name space is taken from the space reserved for +ISO-9660 version numbers. +.br +This violates the ISO-9660 standard, but it happens to work on many systems. +Although a conforming application needs to provide a buffer space of at +least 37 characters, disks created with this option may cause a buffer +overflow in the reading operating system. Use with extreme care. +.TP +.BI \-M " path" +or +.TP +.BI \-M " device" +or +.TP +.BI \-dev " device" +Specifies path to existing ISO-9660 image to be merged. The alternate form +takes a SCSI device specifier that uses the same syntax as the +.B "dev=" +parameter of +.B cdrecord. +The output of +.B mkisofs +will be a new session which should get written to the end of the +image specified in \-M. Typically this requires multi-session capability +for the recorder and cdrom drive that you are attempting to write this +image to. +This option may only be used in conjunction with the +.B \-C +option. +.TP +.BI \-modification\-date " date-spec" +Set the +.B modification date +in the primary volume descriptor (PVD) to a value different from the current +time. +This allows e.g. to set up an intentional UUID for +.BR grub . +.sp +.ne 3 +The format of +.I date-spec +is: +.sp +.nf + \fIyyyy\fR[\fImm\fR[\fIdd\fR[\fIhh\fR[\fImm\fR[\fIss\fR]\|]\|]\|]\|][.\fIhh\fR][+-\fIghgm\fR] +.fi +.sp +The fields are +.BR year , +.BR month , +.BR "day of month" , +.BR hour , +.BR minute , +.BR second , +.BR "hundreds of a second" , +.BR "GMT offset in hours and minutes" . +The time is interpreted as local time. +.sp +Year and the GMT offset are four digit fields, all other fields take two digits. +The GMT offset may be between -12 and +13 hours in 15 minute steps. Locations +east to Greenwich have positive values. The value is the sum of the time zone offset +and the effects from daylight saving time. +Omited values are replaced by the minimal possible values. +If the GMT offset is omited, it is computed from the local time value that has been +supplied. +.sp +Between year and month as well as between month and day of month, a separator chosen +from '/' and '-' may appear. In this case, the year may be a two digit number with +values 69..99 representing 1969..1999 and values 00..68 representing 2000..2068. +Between date and time spec, an optional space is permitted. Between hours and minutes +as well as between minutes and seconds, an optional ':' separator is permitted. +This allows +.B mkisofs +to parse the popular POSIX date format created by: +.sp +.nf + \fBdate "+%Y-%m-%d %H:%M:%S %z"\fR +.fi +.sp +Note that the possible range for +.I date-spec +for 32 bit programs is limited to values up to 2038 Jan 19 04:14:07 GMT. +.sp +The PVD contains the following four date values: +.BR creation-date , +.BR expiration-date , +.B effective-date +and +.BR modification-date . +See the related option for a description. +.TP +.B \-N +.TP +.B \-omit\-version\-number +Omit version numbers from ISO-9660 file names. +.br +This violates the ISO-9660 standard, but no one really uses the +version numbers anyway. +Use with caution. +.TP +.BI \-new\-dir\-mode " mode" +Mode to use when creating new directories in the iso fs image. The default +mode in the absence of a +.B \-dir\-mode +option is 0555. +.TP +.B \-noatime +Do not include the file last access time but rather use the modification time. +This allows e.g. to create reproducible ISO-9660 filesystem images. +.sp +See also the options: +.BR \-creation\-date , +.BR \-expiration\-date , +.BR \-effective\-date , +.B \-modification\-date +and +.B \-reproducible\-date +for other options to create reproducible ISO-9660 filesystem images. +.sp +To create reproducible ISO-9660 filesystem images, the options: +.BR \-creation\-date , +.BR \-effective\-date , +.B \-modification\-date +and +.B \-noatime +need to be specified and the +.B \-o +option must not be used. +.TP +.B \-nobak +.TP +.B \-no\-bak +Do not include backup files files on the ISO-9660 filesystem. +If the +.B \-no\-bak +option is specified, files that contain the characters '~' or '#' +or end in '.bak' will not be included (these are typically backup files +for editors under UNIX). +.TP +.B \-no\-limit\-pathtables +A ISO-9660 filesystem contains path tables that contain a list of directories. +This list may contain many directories but only 65535 of them may be parent +directories. +When +.B \-no\-limit\-pathtables +is in use, further parent directories will be folded to the root directory +and the resulting filesystem will no longer be usable on +.BR DOS . +.TP +.B \-no\-long\-rr\-time +Use the short ISO-9660 time format for the file time stamps used in Rock Ridge. +This time format allows one to represent year 1990 .. year 2155 with a granularity of one second. +.TP +.B \-force\-rr +Do not use the automatic Rock Ridge attributes recognition for previous sessions. +This helps to show rotten ISO-9660 extension records as e.g. created by NERO burning ROM. +.TP +.B \-no\-rr +Do not use the Rock Ridge attributes from previous sessions. +This may help to avoid getting into trouble when +.B mkisofs +finds illegal Rock Ridge signatures on an old session. +.TP +.B \-no\-split\-symlink\-components +Don't split the SL 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 SL components (link_size = component_size +instead of link_size += component_size). +.sp +Note that this option has been introduced by Eric Youngdale in 1997. +It is questionable whether it makes sense at all. +When it has been introduced, +.B mkisofs +did have a serious bug that did create defective CE signatures if +a symlink contained `/../'. +This CE signature bug in +.B mkisofs +has been fixed in May 2003. +.TP +.B \-no\-split\-symlink\-fields +Don't split the SL 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 SL fields +(a `/' can be dropped). +.sp +Note that this option has been introduced by Eric Youngdale in 1997. +It is questionable whether it makes sense at all. +When it has been introduced, +.B mkisofs +did have a serious bug that did create defective CE signatures if +a symlink contained `/../'. +This CE signature bug in +.B mkisofs +has been fixed in May 2003. +.TP +.BI \-o " filename" +is the name of the file to which the ISO-9660 filesystem image should be +written. 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 special device for a regular +disk drive, in which case the disk partition can be mounted and examined to +ensure that the premastering was done correctly. +.TP +.B \-pad +Pad the end of the whole image by 150 sectors (300 kB). +If the option +.B \-B +is used, then there is a padding at the end of the ISO-9660 partition +and before the beginning of the boot partitions. +The size of this padding is chosen to make the first boot partition start +on a sector number that is a multiple of 16. +.sp +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 one or more files that are located at the end of a track. They are +usually present when the CD is written in Track at Once mode or when +the disk is written as mixed mode CD where an audio track follows the +data track. +.sp +To avoid problems with I/O error on the last file on the filesystem, +the +.B \-pad +option has been made the default. +.TP +.B \-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. +.TP +.BI \-path\-list " file" +A file containing a list of +.I pathspec +directories and filenames to be added to the ISO-9660 filesystem. This list +of pathspecs are processed after any that appear on the command line. If the +argument is +.IR \- , +then the list is read from the standard input. +.TP +.B \-P +Outdated option reserved by POSIX.1-2001, use +.B \-publisher +instead. +This option will get POSIX.1-2001 semantics with mkisofs-3.02. +.TP +.BI \-publisher " publisher_id" +Specifies a text string that will be written into the volume header. +This should describe the publisher of the CDROM, usually with a +mailing address and phone number. There is space on the disc for 128 +characters of information. +The related Joliet entry is limited to 64 characters. +This parameter can also be set in the file +.B \&.m\&kisofsrc +with PUBL=. +If specified in both places, the command line version is used. +.TP +.BI \-p " preparer_id" +.TP +.BI \-preparer " preparer_id" +Specifies a text string that will be written into the volume header. +This should describe the preparer of the CDROM, usually with a mailing +address and phone number. There is space on the disc for 128 +characters of information. +The related Joliet entry is limited to 64 characters. +This parameter can also be set in the file +.B \&.m\&kisofsrc +with PREP=. +If specified in both places, the command line version is used. +.TP +.B \-posix\-H +Follow all symbolic links encountered on command line when generating the filesystem. +.TP +.B \-posix\-L +Follow all symbolic links when generating the filesystem. +When this option is not in use, symbolic links will be entered using +Rock Ridge if enabled, otherwise the file will be ignored. +.TP +.B \-posix\-P +Do not follow symbolic links when generating the filesystem (this is the default). +If +.B \-posix\-P +is specified after +.B \-posix\-H +or +.BR \-posix\-L , +the effect of these options will be reset. +.TP +.B \-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 +.B cdrecord. +In this case it is needed to know the size of the filesystem before the +actual CD-creation is done. +The option \-print\-size allows one to get this size from a "dry-run" before +the CD is actually written. +Old versions of +.B mkisofs +did write this information (among other information) to +.IR stderr . +As this turns out to be hard to parse, the number without any other information +is now printed on +.B stdout +too. +If you like to write a simple shell script, redirect +.B stderr +and catch the number from +.BR stdout . +This may be done with: +.sp +.B "cdblocks=` mkisofs \-print\-size \-quiet .\|.\|. `" +.sp +.B "mkisofs .\|.\|. | cdrecord .\|.\|. tsize=${cdblocks}s -" +.TP +.B \-quiet +This makes +.B mkisofs +even less verbose. No progress output will be provided. +.TP +.B \-R +.TP +.B \-rock +Generate SUSP and RR records using the Rock Ridge protocol to further describe +the files on the ISO-9660 filesystem. +The Rock Ridge protocol is needed in order to add POSIX like file meta data +like permissions, extended time stamps, user/group is'd, link counts, inode numbers +and symbolic links. The Rock Ridge protocol allows one to archive hierarchy trees +with unlimited depth. +.sp +Warning: When you specify +.BR \-udf , +this causes +.B Rock\ Ridge +to be in +.BR \-r / \-rational\-rock +form as well. +.TP +.B \-r +.TP +.B \-rational\-rock +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 +CD-Rom 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 file system, and set-id bits are not desirable for uid 0 or +gid 0. +When used on Win32, the execute bit is set on +.I 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. +.TP +.B \-relaxed\-filenames +The option +.B \-relaxed\-filenames +allows ISO-9660 filenames to include digits, upper case characters +and all other 7 bit ASCII characters (resp. anything except lowercase +characters). +.br +This violates the ISO-9660 standard, but it happens to work on many systems. +Use with caution. +.TP +.BI \-reproducible\-date " date-spec" +Is a macro for setting +.BR \-creation\-date , +.BR \-effective\-date , +.B \-modification\-date +and +.B \-noatime +in order to create reproducible ISO 9660 filesystem images. +.TP +.BI \-root " dir" +Moves all files and directories into +.I dir +in the image. This is essentially the +same as using +.B -graft-points +and adding +.I dir +in front of every pathspec, but is easier to use. + +.I dir +may actually be several levels deep. It is +created with the same permissions as other graft points. +.TP +.B \-rrip110 +Create ISO-9660 file system images that follow the old Rrip Version-1.10 standard +from 1993. This option may be needed if you know of systems that do not implement +the Rrip protocol correctly and like the file system to be read by such a system. +Currently no such system is known. +.sp +If a file system has been created with +.BR \-rrip110 , +the Rock Ridge attributes do not include inode number information. +.TP +.B \-rrip112 +Create ISO-9660 file system images that follow the new Rrip Version-1.12 standard +from 1994, this is the default. +.TP +.BI \-old-root " dir" +This option is necessary when writing a multisession +image and the previous (or even older) session was written with +.BI -root " dir" . +Using a directory name not found in the previous session +causes +.B mkisofs +to abort with an error. + +Without this option, +.B mkisofs +would not be able to find unmodified files and would +be forced to write their data into the image once more. + +.B \-root +and +.B \-old-root +are meant to be used together to do incremental backups. +The initial session would e.g. use: +.BI "mkisofs \-root backup_1 " dirs\f0. +The next incremental backup with +.BI "mkisofs \-root backup_2 \-old-root backup_1 " dirs\f0. +would take another snapshot of these directories. The first +snapshot would be found in +.BR backup_1 , +the second one in +.BR 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. +.br +.ne 8 +.TP +.B \-short\-rr\-time +Use the short ISO-9660 time format for the file time stamps used in Rock Ridge. +This time format allows one to represent year 1990 .. year 2155 with a granularity of one second. +.TP +.BI \-s " sector type" +.TP +.BI \-sectype " sector type" +Set the +.I sector type +to be used for the output file with the ISO-9660 filesystem. +The +.I sector type +may be one of: +.RS +.TP +.B data +This is the default. It results in standard CD-ROM data sectors with +2048 bytes per sector. +.TP +.B xa1 +This sets the sector type to CD-ROM XA mode 1 with 2056 bytes per sector. +This sector type is the official sector type for multi-session CDs, it +should be used together with the +.B \-XA +option of mkisofs. +It is required to write Kodak Photo CDs and Kodak Picture CDs. +Use the +.B \-xa1 +option from +.B cdrecord +to tell +.B cdrecord +to write CD-ROM XA mode 1 sectors. +Do not use for DVD or BluRay media. +.br +.ne 6 +.TP +.B raw +This sets the sector type to raw audio sectors with 2352 bytes per sector. +This is reserved for future enhancements. +Do not use for DVD or BluRay media. +.RE +.TP +.BI \-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 +.B not +sort the order of the file names that appear +in the ISO-9660 directory. It sorts the order in which the file data is +written to the CD image - which may be useful in order to optimize the +data layout on a CD. See README.sort for more details. +.TP +.BI \-isort " sort file" +Similar to +.B \-sort +but the case if the filenames in the +.B sort file +is ignored. +.TP +.BI \-sparc\-boot " img_sun4,img_sun4c,img_sun4m,img_sun4d,img_sun4e" +See +.B \-B +option above. +.TP +.BI \-sparc\-label " label" +Set the Sun disk label name for the Sun disk label that is created with the +.B \-sparc-boot +option. +.TP +.B \-split\-output +Split the output image into several files of approximately 1 GB. +This helps to create DVD sized ISO-9660 images on operating systems without +large file support. +Cdrecord will concatenate more than one file into a single track if writing +to a DVD. +To make +.B \-split\-output +work, the +.BI \-o " filename" +option must be specified. The resulting output images will be named: +.IR filename_00 , filename_01, filename_02 ... +.TP +.BI \-stream\-media\-size " #" +Select streaming operation and set the media size to # sectors. +This allows you to pipe the output of the tar program into mkisofs +and to create a ISO-9660 filesystem without the need of an intermediate +tar archive file. +If this option has been specified, +.B mkisofs +reads from +.B stdin +and creates a file with the name +.BR STREAM.IMG . +The maximum size of the file (with padding) is 200 sectors less than the +specified media size. If +.B \-no\-pad +has been specified, the file size is 50 sectors less than the specified media size. +If the file is smaller, then mkisofs will write padding. This may take a while. +.sp +The option +.B \-stream\-media\-size +creates simple ISO-9660 filesystems only and may not used together with multi-session +or hybrid filesystem options. +.TP +.BI \-stream\-file\-name " name" +Set the file name used with +.BI \-stream\-media\-size " #" +to a value different from +.BR STREAM.IMG . +If this option is used, the filesystem is created as if +.BR \-iso\-level " 4" +has been specified. +.TP +.BI \-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. +.sp +Note that partition 1 is used for the ISO-9660 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. +.sp +If the +.B \-sunx86\-boot +option 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 ISO-9660 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. +.sp +A Solaris x86 boot CD uses a 1024 byte sized primary boot that uses the +.B "El-Torito no-emulation" +boot mode and a secondary generic boot that is in CD sectors 1\|.\|.15. +For this reason, both +.BI "-b " bootimage " -no\-emul\-boot" +and +.BI \-G " genboot" +must be specified. +.TP +.BI \-sunx86\-label " label" +Set the SVr4 disk label name for the SVr4 disk label that is created with the +.B \-sunx86-boot +option. +.TP +.BI \-sysid " ID" +Specifies the system ID. +There is space on the disc for 32 characters of information. +This parameter can also be set in the file +.B \&.m\&kisofsrc +with SYSI=system_id. +If specified in both places, the command line version is used. +.TP +.B \-T +.TP +.B \-translation\-table +Generate a file TRANS.TBL in each directory on the CDROM, which can be used +on non-Rock Ridge capable systems to help establish the correct file names. +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. +.TP +.BI \-table\-name " TABLE_NAME" +Alternative translation table file name (see above). Implies the +.B \-T +option. +If you are creating a multi-session image you must use the same name +as in the previous session. +.TP +.BI \-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. +.TP +.B \-UDF +Include a +.B UDF +hybrid in the generated filesystem image. +As +.B mkisofs +always creates a ISO-9660 filesystem, +it is not possible to create UDF only images. +Note that +.B UDF +wastes the space from sector ~20 to sector 256 at the beginning of the disk +in addition to the space needed for real +.B UDF +data structures. +.sp +Warning: When you specify +.B \-r +or +.B \-rational\-rock +this causes +.B UDF +to be in +.B \-udf +form as well. +.TP +.B \-udf +Rationalized UDF with user and group set to 0 and with simplified permissions. +See +.B \-r +option for more information. +.TP +.B \-udf\-symlinks +Support symlinks in +.B UDF +filesystems. This is the default. +.TP +.B \-no\-udf\-symlinks +Do not support symlinks in +.B UDF +filesystems. +.TP +.BI \-uid " uid" +Overrides the uid read from the source files to the value of +.IR uid . +Specifying this option automatically enables Rock Ridge extensions. +.TP +.B \-use\-fileversion +The option +.B \-use\-fileversion +allows mkisofs to use file version numbers from the filesystem. +If the option is not specified, +.B mkisofs +creates a version number of 1 for all files. +File versions are strings in the range +.I ";1" +to +.I ";32767" +This option is the default on VMS. +.TP +.B \-U +.TP +.B \-untranslated\-filenames +Allows "Untranslated" filenames, completely violating the ISO-9660 standards +described above. Forces on the \-d, \-l, \-N, \-allow\-leading\-dots, +\-relaxed\-filenames, +\-allow\-lowercase, \-allow\-multidot and \-no\-iso\-translate +flags. It allows more +than one '.' character in the filename, as well as mixed case filenames. +This is useful on HP-UX system, where the built-in CDFS filesystem does +not recognize ANY extensions. Use with extreme caution. +.TP +.B \-no\-iso\-translate +Do not translate the characters '#' and '~' which are invalid for ISO-9660 filenames. +These characters are though invalid often used by Microsoft systems. +.br +This violates the ISO-9660 standard, but it happens to work on many systems. +Use with caution. +.TP +.BI \-V " volid" +Specifies the volume ID (volume name or label) to be written into the +master block. +There is space on the disc for 32 characters of information. +This parameter can also be set in the file +.B \&.m\&kisofsrc +with VOLI=id. +If specified in both places, the command line version is used. Note that +if you assign a volume ID, this is the name that will be used as the mount +point used by the Solaris volume management system and the name that is +assigned to the disc on a Microsoft Win32 or Apple Mac platform. +.TP +.BI \-volset " ID" +Specifies the volset ID. +There is space on the disc for 128 characters of information. +The related Joliet entry is limited to 64 characters. +This parameter can also be set in the file +.B \&.m\&kisofsrc +with VOLS=volset_id. +If specified in both places, the command line version is used. +.TP +.BI \-volset\-size " #" +Sets the volume set size to #. +The volume set size is the number of CD's 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. +.sp +Volume Sets are not intended to be used to create a set numbered CD's +that are part of e.g. a Operation System installation set of CD's. +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. +.sp +.B Mkisofs +currently does not support a +.B \-volset\-size +that is larger than 1. +.sp +The option +.B \-volset\-size +must be specified before +.B \-volset\-seqno +on each command line. +.TP +.BI \-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 +.B \-volset\-size +must be specified before +.B \-volset\-seqno +on each command line. +.TP +.B \-v +.TP +.B \-verbose +Verbose execution. If given twice on the command line, extra debug information +will be printed. +.TP +.BI \-x " path" +Exclude +.I path +from being written to CDROM. +.I path +must be the complete pathname that results from concatenating the pathname +given as command line argument and the path relative to this directory. +Multiple paths may be excluded. +Example: + +mkisofs \-o cd \-x /local/dir1 \-x /local/dir2 /local +.sp +NOTE: The +.B \-m +and +.B \-x +option description should both be updated, they are wrong. +Both now work identical and use filename globbing. A file is excluded if either +the last component matches or the whole path matches. +.TP +.B \-XA +Generate XA iso-directory attributes with original owner and mode information. +This option is required to create conforming multi session CDs as used by the +Kodak Photo CD and the Kodak Picture CD. +A conforming XA CD uses CD-ROM XA mode 1 sectors, see the +.BI \-sectype " xa1" +option for more information. +.TP +.B \-xa +Generate XA iso-directory attributes with rationalized owner and mode information. +User ID and group ID are set to 0. +See +.B \-XA +for more information. +.TP +.B \-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 the +.B \-R +or +.B \-r +options to enable RockRidge, and generate compressed files using the +.B mkzftree +utility before running +.BR mkisofs . +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 +.B mkzftree +by hand to decompress the files. + +.SH "HFS OPTIONS" +.TP +.B \-hfs +Create an ISO-9660/HFS hybrid CD. This option should be used in conjunction +with the +.BR \-map , +.B \-magic +and/or the various +.I double dash +options given below. +.TP +.B \-no\-hfs +Do not create an ISO-9660/HFS hybrid CD even though other options may imply to do so. +.TP +.B \-apple +Create an ISO-9660 CD with Apple's extensions. Similar to the +.B \-hfs +option, except that the Apple Extensions to ISO-9660 are added instead of +creating an HFS hybrid volume. +Former +.B mkisofs +versions did include Rock Ridge attributes by default if +.B \-apple +was specified. This versions of +.B mkisofs +does not do this anymore. If you like to have Rock Ridge attributes, +you need to specify this separately. +.TP +.BI \-map " mapping_file" +Use the +.I 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 +.B "HFS CREATOR/TYPE" +section below. +.TP +.BI \-magic " magic_file" +The CREATOR and TYPE information is set by using a file's +.I magic number +(usually the first few bytes of a file). The +.I 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 the +.B \-map +option. See the +.B "HFS CREATOR/TYPE" +section below for more details. +.TP +.BI \-hfs\-creator " CREATOR" +Set the default CREATOR for all files. Must be exactly 4 characters. See the +.B "HFS CREATOR/TYPE" +section below for more details. +.TP +.BI \-hfs\-type " TYPE" +Set the default TYPE for all files. Must be exactly 4 characters. See the +.B "HFS CREATOR/TYPE" +section below for more details. +.TP +.B \-probe +Search the contents of files for all the known Apple/Unix file formats. +See the +.B HFS MACINTOSH FILE FORMATS +section below for more about these formats. +However, the only way to check for +.I MacBinary +and +.I AppleSingle +files is to open and read them. Therefore this option +.I may +increase processing time. It is better to use one or more +.I double dash +options given below if the Apple/Unix formats in use are known. +.TP +.B \-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. +.TP +.B \-mac\-name +Use the HFS filename as the starting point for the ISO-9660, Joliet and +Rock Ridge file names. See the +.B HFS MACINTOSH FILE NAMES +section below for more information. +.TP +.BI \-boot\-hfs\-file " driver_file" +Installs the +.I driver_file +that +.I may +make the CD bootable on a Macintosh. See the +.B HFS BOOT DRIVER +section below. (Alpha). +.TP +.B \-part +Generate an HFS partition table. By default, no partition table is generated, +but some older Macintosh CDROM drivers need an HFS partition table on the +CDROM to be able to recognize a hybrid CDROM. +.TP +.BI \-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). +.TP +.BI \-cluster\-size " size" +Set the size in bytes of the cluster or allocation units of PC Exchange +files. Implies the +.B \-\-exchange +option. See the +.B HFS MACINTOSH FILE FORMATS +section below. +.TP +.BI \-hide\-hfs " glob" +Hide +.I glob +from the HFS volume. The file or directory will still exist in the +ISO-9660 and/or Joliet directory. +.I glob +is a shell wild-card-style pattern that must match any part of the filename +Multiple globs may be excluded. +Example: + +mkisofs \-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 +.I glob +can also be a path name relative to the source directories given on the +command line. Example: + +mkisofs \-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 the +.B \-hide +and/or +.B \-hide\-joliet +options. +In order to match a directory name, make sure the pathname does not include +a trailing '/' character. See README.hide for more details. +.TP +.BI \-hide\-hfs\-list " file" +A file containing a list of +.I globs +to be hidden as above. +.TP +.BI \-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 +.I volid +used with the +.B \-V +option +.TP +.B \-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. +This option may become set by default in the future. +(Alpha). +.TP +.BI \-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) +.TP +.BI \-prep\-boot " FILE" +PReP boot image file. Up to 4 are allowed. See README.prep_boot (Alpha) +.TP +.B \-chrp\-boot +Create a CHRP boot in boot partition 1. +See +.B \-prep\-boot +for further information. +.TP +.BI \-input\-hfs\-charset " charset" +Input charset that defines the characters used in HFS file names when +used with the +.I \-mac\-name +option. +The default charset is +.I macintosh +(Mac Roman) +See +.B "CHARACTER SETS" +and +.B "HFS MACINTOSH FILE NAMES" +sections below for more details. +.TP +.BI \-output\-hfs\-charset " charset" +Output charset that defines the characters that will be used in the HFS +file names. Defaults to the input charset. See +.B "CHARACTER SETS" +section below for more details. +.TP +.B \-hfs\-unlock +By default, +.B mkisofs +will create an HFS volume that is +.IR locked . +This option leaves the volume unlocked so that other applications (e.g. +hfsutils) can modify the volume. See the +.B "HFS PROBLEMS/LIMITATIONS" +section below for warnings about using this option. +.TP +.BI \-hfs\-bless " folder_name" +"Bless" the given directory (folder). This is usually the +.B System Folder +and is used in creating HFS bootable CDs. The name of the directory must +be the whole path name as +.B mkisofs +sees it. e.g. if the given pathspec is ./cddata and the required folder is +called System Folder, then the whole path name is "./cddata/System Folder" +(remember to use quotes if the name contains spaces). +.TP +.BI \-hfs\-parms " PARAMETERS" +Override certain parameters used to create the HFS file system. Unlikely to +be used in normal circumstances. See the libhfs_iso/hybrid.h source file for +details. +.TP +.B \-\-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 +.I double dash +options are given. +.TP +.B \-\-netatalk +Look for NETATALK Macintosh files +.TP +.B \-\-double +Look for AppleDouble Macintosh files +.TP +.B \-\-ethershare +Look for Helios EtherShare Macintosh files +.TP +.B \-\-ushare +Look for IPT UShare Macintosh files +.TP +.B \-\-exchange +Look for PC Exchange Macintosh files +.TP +.B \-\-sgi +Look for SGI Macintosh files +.TP +.B \-\-xinet +Look for XINET Macintosh files +.TP +.B \-\-macbin +Look for MacBinary Macintosh files +.TP +.B \-\-single +Look for AppleSingle Macintosh files +.TP +.B \-\-dave +Look for Thursby Software Systems DAVE Macintosh files +.TP +.B \-\-sfm +Look for Microsoft's Services for Macintosh files (NT only) (Alpha) +.TP +.B \-\-osx\-double +Look for MacOS X AppleDouble Macintosh files +.TP +.B \-\-osx\-hfs +Look for MacOS X HFS Macintosh files + +.SH "CHARACTER SETS" +.B mkisofs +processes file names 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 +.B ISO-10646 +define character codings that need at least 21 bits to represent all +known languages. They may be represented with +.BR UTF-32 ", " UTF-16 " or " UTF-8 +coding. +.B UTF-32 +uses a plain 32-bit coding but seems to be uncommon. +.B UCS-2 +is used by Microsoft with Win32. +This coding is similar to +.B UTF-16 +with the disadvantage that it only supports +a 16 bit subset (except when surrogates are used) of all codes +and that 16-bit characters are not compliant with +the POSIX filesystem interface. +.PP +Modern UNIX operating systems may use +.B UTF-8 +coding for filenames. This coding allows one to use the complete Unicode code set. +Each 32-bit character is represented by one or more 8-bit characters. +If a character is coded in +.B ISO-8859-1 +(used in Central Europe and North America) it maps 1:1 to a +.BR UTF-32 " or " UTF-16 \c + coded Unicode character. +If a character is coded in +.B "7-Bit ASCII" +(used in USA and other countries with limited character set) +it maps 1:1 to a +.BR UTF-32 ", " UTF-16 " or " UTF-8 +coded Unicode character. +Character codes that cannot be represented as a single byte in UTF-8 +(typically if the value is > 0x7F) use escape sequences that map to more than +one 8-bit character. +.PP +If all operating systems would use +.B UTF-8 +coding, +.B mkisofs +would not need to recode characters in file names. +Unfortunately, Apple uses completely nonstandard codings and Microsoft +uses a Unicode coding that is not compatible with the POSIX filename +interface. +.PP +For all non +.B UTF-8 +coded operating systems, the actual character +that each byte represents, depends on the +.I character set +or +.I codepage +(which is the name used by Microsoft) +used by the local operating system in use - the characters in a character +set will reflect the region or natural language used by the user. +.PP +Usually character codes 0x00-0x1f are control characters, codes 0x20-0x7f +are the 7 bit ASCII characters and (on PC's and Mac's) 0x80-0xff are used +for other characters. +Unfortunately even this does not follow ISO standards that reserve the +range 0x80-0x9f for control characters and only allow 0xa0-0xff for other +characters. +.PP +As there is 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 file name +generated, say in central Europe, may not display the same character +when viewed on a machine in, say eastern Europe. +.PP +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 and code 0xe9 on a UNIX system. +Note while the codings used on a PC or Mac are nonstandard, +Unicode codes this character as 0x00000000e9 which is basically the +same value as the value used by most UNIX systems. +.PP +As long as not all operating systems and applications will use the Unicode +character set as the basis for file names in a unique way, it may be +necessary to specify which character set your file names use in and which +character set the file names should appear on the CD. +.PP +There are four options to specify the character sets you want to use: +.TP +.B \-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 staring point. The default input character sets are +.I cp437 +on DOS based systems and +.I iso8859-1 +on all other systems. + +If the +.I \-J +option is given, then the Unicode equivalents of the input character set +will be used in the Joliet directory. Using the +.I \-jcharset +option is the same as using the +.I \-input\-charset +and +.I \-J +options. +.TP +.B \-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. Only likely to be useful +if used on a non-Unix platform. e.g. using +.B mkisofs +on a Microsoft Win32 machine to create Rock Ridge CDs. If you are using +.B mkisofs +on a Unix machine, it is likely that the output character set +will be the same as the input character set. +.TP +.B \-input\-hfs\-charset +Defines the HFS character set used for HFS file names decoded from +any of the various Apple/Unix file formats. Only useful when used with +.I \-mac\-name +option. See the +.B HFS MACINTOSH FILE NAMES +for more information. Defaults to +.I macintosh +(Mac Roman). +.TP +.B \-output\-hfs\-charset +Defines the HFS character set used to create HFS file names from the input +character set in use. In most cases this will be from the character set +given with the +.I \-input\-charset +option. Defaults to the input HFS character set. +.PP +The +.B default +character set is built into +.BR mkisofs . +A number of further character sets are read in from the filesystem by +.I mkisofs +from a directory relatively to the install path. +To get a listing, use +.B "mkisofs \-input\-charset help." +.PP +Additional character sets from +.BR iconv (1) +may be used on systems, that support +.BR iconv (1). +In this case, call +.B "iconv \-l" +to get a list of valid character sets from this coding method. +To force an +.BR iconv (1) +based coding, use +.BI iconv: name +instead of +.I name +for the character set. +.PP +If using non +.BR iconv (1) +based character sets, +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. A given +character set will be read from a file whenever the supplied name contains +a '/'. +.PP +The format of the character set files is the same as the mapping files +available from http://www.unicode.org/Public/MAPPINGS The format of these +files is: + + Column #1 is the input byte code (in hex as 0xXX) +.br + Column #2 is the Unicode (in hex as 0xXXXX) +.br + 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. +.PP +Note that there is no support for 16 bit UNICODE (UTF-16) or 32 bit UNICODE +(UTF-32) coding because this coding is not POSIX compliant. There should +be support for UTF-8 UNICODE coding which is compatible to POSIX filenames +and supported by modern UNIX implementations such as Solaris. +.PP +A 1:1 character set mapping can be defined by using the keyword +.I default +as the argument to any of the character set options. This is the behaviour +of older (v1.12) versions of +.BR mkisofs . +.PP +The ISO-9660 file names generated from the input filenames are not converted +from the input character set. The ISO-9660 character set is a very limited +subset of the ASCII characters, so any conversion would be pointless. +.PP +Any character that +.B mkisofs +can not convert will be replaced with a '_' character. +.PP +.SH "HFS CREATOR/TYPE" +A Macintosh file has two properties associated with it which define +which application created the file, the +.I CREATOR +and what data the file contains, the +.IR 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. +.LP +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 +.I mapping +file (the +.B \-map +option) and/or using the +.I magic number +(usually a +.I signature +in the first few bytes) +of a file (the +.B \-magic +option). If both these options are given, then their order on the command +line is important. If the +.B \-map +option is given first, then a filename extension match is attempted +before a magic number match. However, if the +.B \-magic +option is given first, then a magic number match is attempted before a +filename extension match. +.PP +If a mapping or magic file is not used, or no match is found then the default +CREATOR and TYPE for all regular files can be set by using entries in the +.B \&.m\&kisofsrc +file or using the +.B \-hfs\-creator +and/or +.B \-hfs\-type +options, otherwise the default CREATOR and TYPE are 'unix' and 'TEXT'. +.PP +The format of the +.I mapping +file is the same +.I afpfile +format as used by +.IR aufs . +This file has five columns for the +.IR extension , +.I file +.IR translation , +.IR CREATOR , +.I TYPE +and +.IR Comment . +Lines starting with the '#' character are +comment lines and are ignored. An example file would be like: +.LP +.TS +tab (/); +l s s s s +l s s s s +l l l l l . +# Example filename mapping file +# +# EXTN/XLate/CREATOR/TYPE/Comment +\&.tif/Raw/'8BIM'/'TIFF'/"Photoshop TIFF image" +\&.hqx/Ascii/'BnHq'/'TEXT'/"BinHex file" +\&.doc/Raw/'MSWD'/'WDBN'/"Word file" +\&.mov/Raw/'TVOD'/'MooV'/"QuickTime Movie" +*/Ascii/'ttxt'/'TEXT'/"Text file" +.TE +.LP +Where: +.IP +The first column +.I 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. +.IP +The +.I Xlate +column defines the type of text translation between the Unix and +Macintosh file it is ignored by +.BR mkisofs , +but is kept to be compatible with +.BR aufs (1). +Although +.B mkisofs +does not alter the contents of a file, if a binary file has its TYPE +set as 'TEXT', it +.I may +be read incorrectly on a Macintosh. Therefore a better choice for the +default TYPE may be '????' +.IP +The +.I CREATOR +and +.I TYPE +keywords must be 4 characters long and enclosed in single quotes. +.IP +The comment field is enclosed in double quotes - it is ignored by +.BR mkisofs , +but is kept to be compatible with +.BR aufs . +.PP +The format of the +.I magic +file is almost identical to the +.BR magic (5) +file used by the Linux +.BR file (1) +command - the routines for reading and decoding the +.I magic +file are based on the Linux +.BR file (1) +command. +.PP +This file has four tab separated columns for the +.I byte +.IR offset , +.IR type , +.I test +and +.IR message . +Lines starting with the '#' character are +comment lines and are ignored. An example file would be like: +.LP +.TS +tab (/); +l s s s +l s s s +l l l l . +# Example magic file +# +# off/type/test/message +0/string/GIF8/8BIM GIFf GIF image +0/beshort/0xffd8/8BIM JPEG image data +0/string/SIT!/SIT! SIT! StuffIt Archive +0/string/\e037\e235/LZIV ZIVU standard unix compress +0/string/\e037\e213/GNUz ZIVU gzip compressed data +0/string/%!/ASPS TEXT Postscript +0/string/\e004%!/ASPS TEXT PC Postscript with a ^D to start +4/string/moov/txtt MooV QuickTime movie file (moov) +4/string/mdat/txtt MooV QuickTime movie file (mdat) +.TE +.PP +The format of the file is described in the +.BR magic (5) +man page. The only difference here is that for each entry in the magic file, the +.I message +for the initial offset +.B must +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. +.PP +Using the +.B \-magic +option may significantly increase processing time as each file has to opened +and read to find its magic number. +.PP +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 +.I \&.m\&kisofsrc +file or by using the +.B \-hfs\-creator +and/or +.B \-hfs\-type +options. +.PP +If the a file is in one of the known Apple/Unix formats (and the format +has been selected), then the CREATOR and TYPE are taken from the values +stored in the Apple/Unix file. +.PP +Other files can have their CREATOR and TYPE set from their file name +extension (the +.B \-map +option), or their magic number (the +.B \-magic +option). If the default match is used in the +.I mapping +file, then these values override the default CREATOR and TYPE. +.PP +A full CREATOR/TYPE database can be found at +http://www.angelfire.com/il/szekely/index.html + +.SH "HFS MACINTOSH FILE FORMATS" +Macintosh files have two parts called the +.I Data +and +.I 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. +.PP +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. +.PP +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 +.I finder +.IR info ). +Unfortunately, it seems that every software package that stores Macintosh +files on Unix has chosen a completely different storage method. +.PP +The Apple/Unix formats that +.I mkisofs +(partially) supports are: +.TP +.B "CAP AUFS format" +Data fork stored in a file. Resource fork in subdirectory .resource +with same filename as data fork. Finder info +in .finderinfo subdirectory with same filename. +.TP +.B "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/finderinfo stored in subdirectory .AppleDouble with same +name as data fork. +.TP +.B AppleSingle +Data structures similar to above, except both forks and finder +info are stored in one file. +.TP +.B "Helios EtherShare" +Data fork stored in a file. Resource fork and finder info together in +subdirectory .rsrc with same filename as data fork. +.TP +.B "IPT UShare" +Very similar to the EtherShare format, but the finder info +is stored slightly differently. +.TP +.B MacBinary +Both forks and finder info stored in one file. +.TP +.B "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. +.IP +Note: +.I mkisofs +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 the +.B \-cluster\-size +option. +The cluster or allocation size can be found by using the DOS utility +.BR CHKDSK . +.IP +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 +.B msdos +(not +.BR vfat ) +when using Linux. +.TP +.B "SGI/XINET" +Used by SGI machines when they mount HFS disks. Data fork stored +in a file. Resource fork in subdirectory .HSResource with same +name. Finder info as one record in file .HSancillary. Separate .HSancillary +for each data fork directory. +.TP +.B "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. +.TP +.B "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 +.I stream +called "filename:AFP_Resource". The finder info is stored as a NTFS +.I stream +called "filename:Afp_AfpInfo". These streams are normally invisible to the +user. +.IP +Warning: mkisofs only partially supports the SFM format. If an HFS file +or folder stored on the NT server contains an +.I illegal +NT character in its name, then NT converts these characters to +.I Private Use Unicode +characters. The characters are: " * / < > ? \ | also a space or +.\" " <-- hack for emacs. please keep. +period if it is the last character of the file name, character codes 0x01 +to 0x1f (control characters) and Apple' apple logo. +.IP +Unfortunately, these private Unicode characters are not +readable by the mkisofs NT executable. Therefore any file or directory +name containing these characters will be ignored - including the contents of +any such directory. +.TP +.B "MacOS X AppleDouble" +When HFS/HFS+ files are copied or saved by MacOS X on to a non-HFS file +system (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. +.TP +.B "MacOS X HFS (Alpha)" +Not really an Apple/Unix encoding, but actual HFS/HFS+ files on a MacOS X +system. Data fork stored in a file. Resource fork stored in a pseudo file +with the same name with the suffix '/rsrc'. The finderinfo is only +available via a MacOS X library call. +.IP +Notes: (also see README.macosx) +.IP +Only works when used on MacOS X. +.IP +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. +.LP +.I mkisofs +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 +.B "HFS MACINTOSH FILE NAMES" +section below. +.PP +When using the +.B \-apple +option, the TYPE and CREATOR are stored in the optional System Use or SUSP field +in the ISO-9660 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). +.PP +The Apple extensions require the resource fork to be stored as an ISO-9660 +.I associated +file. This is just like any normal file stored in the ISO-9660 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 +.PP +When using the +.B \-hfs +option, the TYPE and CREATOR plus other finder info, are stored in a separate +HFS directory, not visible on the ISO-9660 volume. The HFS directory references +the same data and resource fork files described above. +.PP +In most cases, it is better to use the +.B \-hfs +option instead of the +.B \-apple +option, as the latter imposes the limited ISO-9660 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 - important when the total size of the source files is +approaching 650MB. + +.SH "HFS MACINTOSH FILE NAMES" +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. +.PP +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 ":". +.PP +If mkisofs can't find an HFS filename, then it uses the Unix name, with +any %xx or :xx characters (xx == two hex digits) converted to a single +character code. If "xx" are not hex digits ([0-9a-fA-F]), then they are +left alone - although any remaining ":" is converted to "%" as colon +is the HFS directory separator. Care must be taken, as an ordinary Unix +file with %xx or :xx will also be converted. e.g. +.PP +.TS +l l +l s +l l +l s +l l . +This:2fFile converted to This/File + +This:File converted to This%File + +This:t7File converted to This%t7File +.TE +.PP +Although HFS filenames appear to support upper and lower case 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, +then +.I mkisofs +will attempt, where possible, to make a unique name by adding '_' characters +to one of the filenames. +.PP +If an HFS filename exists for a file, then mkisofs can use this name as +the starting point for the ISO-9660, Joliet and Rock Ridge filenames using +the +.B \-mac\-name +option. Normal Unix files without an HFS name will still use their Unix name. +e.g. +.PP +If a +.I MacBinary +(or +.I PC +.IR Exchange ) +file is stored as +.I someimage.gif.bin +on the Unix filesystem, but contains a HFS file called +.IR someimage.gif , +then this is the name that would appear on the HFS part of the CD. However, as +mkisofs uses the Unix name as the starting point for the other names, then +the ISO-9660 name generated will probably be +.I SOMEIMAG.BIN +and the Joliet/Rock Ridge would be +.IR someimage.gif.bin . +Although the actual data (in this case) is a GIF image. This option will use +the HFS filename as the starting point and the ISO-9660 name will probably be +.I SOMEIMAG.GIF +and the Joliet/Rock Ridge would be +.IR someimage.gif . +.PP +Using the +.B \-mac\-name +option will not currently work with the +.B \-T +option - the Unix +name will be used in the TRANS.TBL file, not the Macintosh name. +.PP +The character set used to convert any HFS file name to a Joliet/Rock Ridge +file name defaults to +.I macintosh +(Mac Roman). +The character set used can be specified using the +.I \-input\-hfs\-charset +option. Other built in HFS character sets are: +MAC-CYRILLIC (MacCyrillic), MAC-CENTRALEUROPE (MacLatin2), MAC-IS (MacIcelandic). +.PP +Note: the character codes used by HFS file names 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 file names will be converted. +.PP +The existing mkisofs code will filter out any illegal characters for the +ISO-9660 and Joliet filenames, but as mkisofs expects to be dealing +directly with Unix names, it leaves the Rock Ridge names as is. +But as '/' is a legal HFS filename character, the +.B \-mac\-name +option converts '/' to a '_' in Rock Ridge filenames. +.PP +If the Apple extensions are used, then only the ISO-9660 filenames will +appear on the Macintosh. However, as the Macintosh ISO-9660 drivers can use +.I Level 2 +filenames, then you can use options like +.B \-allow\-multidot +without problems on +a Macintosh - still take care over the names, for example +.I this.file.name +will be converted to +.I THIS.FILE +i.e. only have one '.', also filename +.I abcdefgh +will be seen as +.I ABCDEFGH +but +.I abcdefghi +will be seen as +.I ABCDEFGHI. +i.e. with a '.' at the end - don't know if this is a Macintosh +problem or m\&kisofs/mkhybrid problem. All filenames will be in upper case +when viewed on a Macintosh. Of course, DOS/Win3.X machines will not be able +to see Level 2 filenames... + +.SH "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\er' ('\er' is +the 'carriage return' character) in the root folder. +.P +A custom folder icon is very similar - an invisible file called 'Icon\er' +exits in the folder itself. +.P +Probably the easiest way to create a custom icon that mkisofs can use, is to +format a blank HFS floppy disk on a Mac, paste an icon to its "Get Info" +box. If using Linux with the HFS module installed, mount the floppy using +something like: + + mount \-t hfs /dev/fd0 /mnt/floppy + +The floppy will be mounted as a CAP file system by default. Then run mkisofs +using something like: + + mkisofs \-\-cap \-o output source_dir /mnt/floppy + +If you are not using Linux, then you can use the hfsutils to copy the icon +file from the floppy. However, care has to be taken, as the icon file +contains a control character. e.g. + + hmount /dev/fd0 +.br + hdir \-a +.br + hcopy \-m Icon^V^M icon_dir/icon + +Where '^V^M' is control\-V followed by control\-M. Then run +.B mkisofs +by using something like: + + mkisofs \-\-macbin \-o output source_dir icon_dir +.PP +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\er' +file to the relevant directory in the mkisofs source tree. +.PP +You may want to hide the icon files from the ISO-9660 and Joliet trees. +.PP +To give a custom icon to a Joliet CD, follow the instructions found at: +http://www.fadden.com/cdrfaq/faq03.html#[3-21] + +.SH "HFS BOOT DRIVER" +It +.I may +be possible to make the hybrid CD bootable on a Macintosh. +.PP +A bootable HFS CD requires an Apple CD-ROM (or compatible) driver, a bootable +HFS partition and the necessary System, Finder, etc. files. +.PP +A driver can be obtained from any other Macintosh bootable CD-ROM using the +.I apple_driver +utility. This file can then be used with the +.B \-boot\-hfs\-file +option. +.PP +The HFS partition (i.e. the hybrid disk in our case) must contain a +suitable System Folder, again from another CD-ROM or disk. +.PP +For a partition to be bootable, it must have its +.I 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 OK. +.PP +Therefore, the utility +.I 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 +.BR mkisofs . +.TP +.B "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. +.SH "EL TORITO BOOT INFORMATION TABLE" +When the +.B \-boot\-info\-table +option is given, +.B mkisofs +will modify the boot file specified by the +.B \-b +option 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. +.PP +The format of this table is as follows; all integers are in +section 7.3.1 ("little endian") format. +.sp +.RS +.2i +.ta 1.0i 2.5i 3.5i +.nf +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 +.fi +.RE +.sp +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). +.SH CONFIGURATION +.B mkisofs +looks for the +.B \&.m\&kisofsrc +file, +first in the current working directory, +then in the user's home directory, +and then in the directory in which the +.B mkisofs +binary is stored. This file is assumed to contain a series of lines +of the form +.BI TAG= value +, and in this way you can specify certain options. +The case of the tag is not significant. +Some fields in the volume header +are not settable on the command line, but can be altered through this +facility. +Comments may be placed in this file, +using lines which start with a hash (#) character. +.TP +.B APPI +The application identifier +should describe the application that will be on the disc. +There is space on the disc for 128 characters of information. +The related Joliet entry is limited to 64 characters. +May be overridden using the +.B \-A +command line option. +.TP +.B COPY +The copyright information, +often the name of a file on the disc containing the copyright notice. +There is space in the disc for 37 characters of information. +The related Joliet entry is limited to 18 characters. +May be overridden using the +.B \-copyright +command line option. +.TP +.B ABST +The abstract information, +often the name of a file on the disc containing an abstract. +There is space in the disc for 37 characters of information. +The related Joliet entry is limited to 18 characters. +May be overridden using the +.B \-abstract +command line option. +.TP +.B BIBL +The bibliographic information, +often the name of a file on the disc containing a bibliography. +There is space in the disc for 37 characters of information. +The related Joliet entry is limited to 18 characters. +May be overridden using the +.B \-bilio +command line option. +.TP +.B PREP +This should describe the preparer of the CDROM, +usually with a mailing address and phone number. +There is space on the disc for 128 characters of information. +The related Joliet entry is limited to 64 characters. +May be overridden using the +.B \-p +command line option. +.TP +.B PUBL +This should describe the publisher of the CDROM, +usually with a mailing address and phone number. +There is space on the disc for 128 characters of information. +The related Joliet entry is limited to 64 characters. +May be overridden using the +.B \-publisher +command line option. +.TP +.B SYSI +The System Identifier. +There is space on the disc for 32 characters of information. +May be overridden using the +.B \-sysid +command line option. +.TP +.B VOLI +The Volume Identifier. +There is space on the disc for 32 characters of information. +May be overridden using the +.B \-V +command line option. +.TP +.B VOLS +The Volume Set Name. +There is space on the disc for 128 characters of information. +The related Joliet entry is limited to 64 characters. +May be overridden using the +.B \-volset +command line option. +.TP +.B HFS_TYPE +The default TYPE for Macintosh files. Must be exactly 4 characters. +May be overridden using the +.B \-hfs\-type +command line option. +.TP +.B HFS_CREATOR +The default CREATOR for Macintosh files. Must be exactly 4 characters. +May be overridden using the +.B \-hfs\-creator +command line option. +.PP +.B mkisofs +can also be configured at compile time with defaults for many of these fields. +See the file defaults.h. + +.SH EXAMPLES +.PP +To create a vanilla ISO-9660 filesystem image in the file +.IR cd.iso , +where the directory +.I cd_dir +will become the root directory of the CD ISO image, call: +.PP +% mkisofs \-o cd.iso cd_dir +.PP +To create a CD with Rock Ridge extensions of +the source directory +.IR cd_dir : +.PP +% mkisofs \-o cd.iso \-R cd_dir +.PP +To create a CD with Rock Ridge extensions of +the source directory +.I cd_dir +where all files have at least read permission and all files +are owned by +.IR root , +call: +.PP +% mkisofs \-o cd.iso \-r cd_dir +.PP +To write a tar archive directly to a CD that will later contain a simple +ISO-9660 filesystem with the tar archive call: +.PP +% star \-c . | mkisofs \-stream\-media\-size 333000 | \e +.br + cdrecord dev=b,t,l \-dao tsize=333000s \- +.PP +To create a HFS hybrid CD with the Joliet and Rock Ridge extensions of +the source directory +.IR cd_dir : +.PP +% mkisofs \-o cd.iso \-R \-J \-hfs cd_dir +.PP +To create a HFS hybrid CD from the source directory +.I cd_dir +that contains +Netatalk Apple/Unix files: +.PP +% mkisofs \-o cd.iso \-\-netatalk cd_dir +.PP +To create a HFS hybrid CD from the source directory +.IR cd_dir , +giving all files +CREATOR and TYPES based on just their filename extensions listed in the file +"mapping".: +.PP +% mkisofs \-o cd.iso \-map mapping cd_dir +.PP +To create a CD with the 'Apple Extensions to ISO-9660', from the source +directories +.I cd_dir +and +.IR 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": +.PP +% mkisofs \-o cd.iso \-apple \-magic magic \-probe \e +.br + cd_dir another_dir +.PP +The following example puts different files on the CD that all have +the name README, but have different contents when seen as a +ISO-9660/RockRidge, Joliet or HFS CD. +.PP +Current directory contains: +.PP +% ls \-F +.br +README.hfs README.joliet README.unix cd_dir/ +.PP +The following command puts the contents of the directory +.I cd_dir +on the +CD along with the three README files - but only one will be seen from +each of the three filesystems: +.PP +% mkisofs \-o cd.iso \-hfs \-J \-r \-graft\-points \e +.br + \-hide README.hfs \-hide README.joliet \e +.br + \-hide\-joliet README.hfs \-hide\-joliet README.unix \e +.br + \-hide\-hfs README.joliet \-hide\-hfs README.unix \e +.br + README=README.hfs README=README.joliet \e +.br + README=README.unix cd_dir +.PP +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 +ISO-9660/RockRidge CD. +.PP +There are probably all sorts of strange results possible with +combinations of the hide options ... +.PP +To create a DVD-Audio of the DVD-Audio compliant source directory +.IR DVD : +.PP +% mkisofs \-o dvda.iso \-dvd\-audio DVD + +.SH NOTES +.PP +.B Mkisofs +may safely be installed suid root. This may be needed to allow +.B mkisofs +to read the previous session when creating a multi session image. +.PP +.B m\&kisofs +is not based on the standard mk*fs tools for unix, because we must generate +a complete copy of an existing filesystem on a disk in the ISO-9660 +filesystem. The name m\&kisofs is probably a bit of a misnomer, since it +not only creates the filesystem, but it also populates it as well. +However, the appropriate tool name for a UNIX tool that creates populated +filesystems - +.B mkproto +- is not well known. +.PP +If +.B mkisofs +is creating a filesystem image with Rock Ridge attributes and the +directory nesting level of the source directory tree is too much +for ISO-9660, +.B mkisofs +will do deep directory relocation. +This results in a directory called +.B RR_MOVED +in the root directory of the CD. You cannot avoid this directory in the +directory tree that is visible with ISO-9660 but it it automatically hidden +in the +.B Rock Ridge +tree. +.PP +The sparc boot support that is implemented with the +.B \-sparc\-boot +options completely follows the official Sparc CD boot requirements from +the Boot prom in Sun Sparc systems. Some Linux distributions for Sparc +systems use a boot loader called +.B SILO +that unfortunately is not Sparc CD boot compliant. +It is annoyingly to see that the Authors of SILO don't fix SILO but instead +provide a completely unneeded "patch" to mkisofs that incorporates far +more source than the fix for SILO would need. +.SH BUGS +.TP +\(bu +Does not properly read relocated directories in multi-session +mode when adding data. +.sp +Any relocated deep directory is lost if the new session does not +include the deep directory. +.sp +Repeat by: create first session with deep directory relocation +then add new session with a single dir that differs from the +old deep path. +.TP +\(bu +Does not re-use RR_MOVED when doing multi-session from TRANS.TBL +.PP + +Mail bugs and suggestions to +.B schilytools@mlists.in-berlin.de +or open a ticket at +.BR https://codeberg.org/schilytools/schilytools/issues . +.PP +The mailing list archive may be found at +.PP +.nf +.BR https://mlists.in-berlin.de/mailman/listinfo/schilytools-mlists.in-berlin.de . +.fi + +.SH "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 mkisofs will work as expected +(although I haven't had a major problem yet). Most of the HFS features work +fine, however, some are not fully tested. These are marked as +.I Alpha +above. +.PP +Although HFS filenames appear to support upper and lower case 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, then +.I mkisofs +will attempt, where possible, to make a unique name by adding '_' characters +to one of the filenames. +.PP +HFS file/directory names that share the first 31 characters have +_N' (N == decimal number) substituted for the last few characters +to generate unique names. +.PP +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, then you can not use +the command line: +.IP +mkisofs \-o output.raw \-hfs \-graft\-points newname=oldname cd_dir +.LP +mkisofs 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. +.PP +When creating an HFS volume with the multisession options, +.B \-M +and +.BR \-C , +only files in the last session will be in the HFS volume. i.e. mkisofs can +not +.I add +existing files from previous sessions to the HFS volume. +.PP +However, if each session is created with the +.B \-part +option, then each session will appear as +separate volumes when mounted on a Mac. In this case, it is worth using the +.B \-V +or +.B \-hfs\-volid +option to give each session a unique volume name, +otherwise each "volume" will appear on the Desktop with the same name. +.PP +Symbolic links (as with all other non-regular files) are not added to +the HFS directory. +.PP +Hybrid volumes may be larger than pure ISO-9660 volumes +containing the same data. In some cases (e.g. DVD sized volumes) the hybrid +volume may be significantly larger. 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. +.PP +The maximum number of files in an HFS volume is about 65500 - although +the real limit will be somewhat less than this. +.PP +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 +.B locked. +The option +.B \-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. +.PP +Using the +.B \-mac\-name +option will not currently work with the +.B \-T +option - the Unix +name will be used in the TRANS.TBL file, not the Macintosh name. +.PP +Although +.B mkisofs +does not alter the contents of a file, if a binary file has its TYPE +set as 'TEXT', it +.I may +be read incorrectly on a Macintosh. Therefore a better choice for the +default TYPE may be '????' +.PP +The +.B \-mac\-boot\-file +option may not work at all... +.PP +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 +.B msdos +(not +.BR vfat ) +when using Linux. +.PP +The SFM format is only partially supported - see +.B HFS MACINTOSH FILE FORMATS +section above. +.PP +It is not possible to use the the +.B \-sparc\-boot +or +.B \-generic\-boot +options with the +.B \-boot\-hfs\-file +the +.B \-prep\-boot +or +.B \-chrp\-boot +options. +.PP +.B mkisofs +should be able to create HFS hybrid images over 4Gb, although this has not +been fully tested. + +.SH "SEE ALSO" +.BR cdrecord (1), +.BR mkzftree (1), +.BR sfind (1), +.BR magic (5), +.BR apple_driver (8). + +.SH "FUTURE IMPROVEMENTS" +Some sort of gui interface. + +======= +.SH AUTHORS +.LP +Eric Youngdale <ericy@gnu.ai.mit.edu> or <eric@andante.org> wrote the +first versions (1993 .\|.\|. 1998) of the m\&kisofs utility. +The copyright for old versions of the m\&kisofs utility is held by +Yggdrasil Computing, Incorporated. +.LP +J\*org Schilling wrote the SCSI transport library and its adaptation layer to +.B mkisofs +and newer parts (starting from 1997) of the utility. +.LP +J\*org Schilling was the primary author and maintainer since 1999, this makes +.B mkisofs +Copyright (C) 1997-2018 J\*org Schilling. +.PP +HFS hybrid code Copyright (C) James Pearson <j.pearson@ge.ucl.ac.uk> +1997 .\|.\|. 2001. +.sp +libhfs code Copyright (C) 1996, 1997 Robert Leslie. +.sp +libfile code Copyright (C) Ian F. Darwin 1986, 1987, 1989, 1990, 1991, +1992, 1994, 1995. + +.SH "SOURCE DOWNLOAD" +The source code for +.B mkisofs +is included in the +.B schilytools +project and may be retrieved from the +.B schilytools +project at Codeberg at +.LP +.BR https://codeberg.org/schilytools/schilytools/ . +.LP +The download directory is +.LP +.BR https://codeberg.org/schilytools/schilytools/releases . + +.SH "INTERFACE STABILITY" +The interfaces provided by +.B mkisofs +are designed for long term stability. +As +.B mkisofs +depends on interfaces provided by the underlying operating system, +the stability of the interfaces offered by +.B mkisofs +depends on the interface stability of the OS interfaces. +Modified interfaces in the OS may enforce modified interfaces +in +.BR mkisofs . |