# MKHYBRID

## NAME

           mkhybrid  - create an hybrid ISO9660/JOLIET/HFS filesystem
           with optional Rock Ridge attributes.

## SYNOPSIS

           mkhybrid [ -a ] [ -abstract FILE ] [ -biblio FILE ]  [  -b
           eltorito_boot_image  ]  [  -B sparc_boot_image_list ] [ -G
           generic_boot_image ] [ -gui ] [ -C #,# ] [ -hard-disk-boot
           ]  [  -no-emul-boot  ]  [  -no-boot ] [ -boot-load-seg ] [
           -boot-load-size ] [ -boot-info-table ] [ -c boot_catalog ]
           [  -copyright FILE ] [ -A application_id ] [ -f ] [ -d ] [
           -D ] [ -hide glob ] [ -hide-list  file  ]  [  -hide-joliet
           glob ] [ -hide-joliet-list file ] [ -hide-joliet-trans-tbl
           ] [ -hide-rr-moved ] [ -J ] [ -l ]  [  -L  ]  [  -log-file
           log_file  ]  [ -M path | device ] [ -nobak ] [ -no-bak ] [
           -no-split-symlink-components ] [  -no-split-symlink-fields
           ] [ -path-list file ] [ -p preparer ] [ -print-size ] [ -P
           publisher ] [ -quiet ] [ -r ] [ -R ] [ -sysid ID ] [ -T  |
           -table-name  TABLE_NAME ] [ -v ] [ -V volid ] [ -volset ID
           ] [ -volset-size # ] [ -volset-seqno # ] [ -x path ] [  -z
           ]  [  -m  glob ] [ -hfs | -apple ] [ -map mapping_file ] [
           -magic magic_file ] [ -probe ] [ -no-desktop ] [ -mac-name
           ]   [   -boot-hfs-file  driver_file  [  -part  ]  [  -auto
           AutoStart_file ] [ -cluster-size size ] [ -hide-hfs glob ]
           [  -hide-hfs-list file ] [ -hfs-volid hfs_volid ] [ -icon-
           position ] [ -prep-boot FILE ] [ -hfs-creator CREATOR ]  [
           -hfs-type  TYPE  ] [ --cap ] [ --netatalk ] [ --double ] [
           --ethershare ] [ --ushare ] [ --exchange ]  [  --sgi  ]  [
           --xinet  ]  [ --macbin ] [ --single ] [ --dave ] [ --sfm ]
           -o filename pathspec [pathspec]

## DESCRIPTION

           mkhybrid is effectively a pre-mastering program to  gener-
           ate  an  HFS/ISO9660/JOLIET hybrid filesystem. It is based
           on mkisofs(1) and will generate a pure ISO9660  filesystem
           unless the HFS hybrid command line options are given.

           mkhybrid  can  generate  a  true  (or  shared)  HFS hybrid
           filesystem. The same files are  seen  as  HFS  files  when
           accessed  from  a  Macintosh  and  as  ISO9660  files when
           accessed from other machines. HFS stands for  Hierarchical
           File  System  and is the native file system used on Macin-
           tosh computers.

           As an alternative, mkhybrid can generate the Apple  Enten-
           sions  to  ISO9660 for each file. These extensions provide
           each file with CREATOR, TYPE and certain Finder Flags when
           accessed  from a Macintosh. See the MACINTOSH FILE FORMATS
           section below.

           mkhybrid takes a snapshot of a given directory  tree,  and
           generates  a  binary  image  which  will  correspond to an
           ISO9660 or HFS filesystem when written to a block  device.

           mkhybrid  is  also  capable  of  generating the System Use
           Sharing Protocol  records  specified  by  the  Rock  Ridge
           Interchange  Protocol.   This  is used to further describe
           the files in the iso9660 filesystem to a  unix  host,  and
           provides  information  such  as longer filenames, uid/gid,
           posix permissions, and block and character devices.

           Each file written to the iso9660 filesystem  must  have  a
           filename  in the 8.3 format (8 characters, period, 3 char-
           acters, all upper case), even if Rock  Ridge  is  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.  mkhybrid 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.   mkhybrid
           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 exten-
           sion (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  FOO.000;1  and
           the file foo.bar would be written as FOO.BAR;1

           When  used with various HFS options, mkhybrid 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 MACINTOSH FILE
           FORMATS section below for more about formats mkhybrid sup-
           ports.

           Note that mkhybrid is not designed to communicate with the
           writer  directly.   Most  writers have proprietary command
           sets which vary from one manufacturer to another, and  you
           need  a  specialized  tool to actually burn the disk.  The
           cdwrite utility is one such tool that runs under Linux and
           performs  this  task.   The  latest  version of cdwrite is
           capable of communicating with Phillips/IMS/Kodak,  HP  and
           Yamaha drives.  Most writers come with some version of DOS
           software that allows a direct image  copy  of  an  iso9660
           image  to  the  writer.  The current version of cdwrite is
           available  from   ftp://sunsite.unc.edu/utils/disk-manage-
           ment/cdwrite-2.0.tar.gz  Note  that  cdwrite  has not been
           actively maintained since 1995.

           The cdrecord utility is another utility capable of burning
           an  actual disc.  The latest version of cdrecord is avail-
           able     from     ftp://ftp.fokus.gmd.de/pub/unix/cdrecord
           Cdrecord is under constant development.

           Also you should know that most cd writers are very partic-
           ular 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.

           pathspec  is  the  path of the directory tree to be copied
           into the iso9660 filesystem.  Multiple paths can be speci-
           fied,  and  mkhybrid  will merge the files found in all of
           the specified path components to form the cdrom image.

           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.  mkhybrid 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.  Any directories that are created  on  the  fly
           like  this  will  have  permissions  0555 and appear to be
           owned by the person running mkhybrid.  If you  wish  other
           permissions or owners of the intermediate directories, the
           easiest solution is to create real directories in the path
           such that mkhybrid doesn't have to invent them.

           mkhybrid will also run on Win9X/NT4 machines when compiled
           with  Cygnus'  cygwin   (available   from   http://source-
           ware.cygnus.com/cygwin/).  Therefore  most  references  in
           this man page to Unix can be replaced with Win32.

## OPTIONS

           -a     Include all files on the iso9660 filesystem.   Nor-
                  mally  files that contain the characters '~' or '#'
                  will not be included (these  are  typically  backup
                  files  for  editors under unix). This option is now
                  obsolete (see -no-bak option).

           -abstract FILE
                  Specifies the abstract file name.   This  parameter
                  can  also  be  set  in  the  file  .mkisofsrc  with
                  ABST=filename.  If specified in  both  places,  the
                  command line version is used.

           -A application_id
                  Specifies  a  text string that will be written into
                  the volume header.  This should describe the appli-
                  cation that will be on the disc.  There is space on
                  the disc for 128 characters of  information.   This
                  parameter  can  also  be set in the file .mkisofsrc
                  with APPI=id.  If specified  in  both  places,  the
                  command line version is used.

           -biblio FILE
                  Specifies the bibliographic file name.  This param-
                  eter can also be set in the  file  .mkisofsrc  with
                  BIBLO=filename.   If  specified in both places, the
                  command line version is used.

           -b 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
                  specified  to mkhybrid.  This option is required to
                  make a bootable CD.  The boot image must be exactly
                  the  size  of  either  a  1.2,  1.44, or a 2.88 meg
                  floppy, and mkhybrid will use this size when creat-
                  ing  the  output  iso9660 filesystem. It is assumed
                  that the first 512 byte sector should be read  from
                  the  boot image (it is essentially emulating a nor-
                  mal floppy drive).  This will work, for example, if
                  the boot image is a LILO based boot floppy.

           -B 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.   There  may  be empty fields in the comma
                  separated list.  This option is required to make  a
                  bootable  CD  for  Sun sparc systems.  If the -B or
                  -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  iso9660  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.

                  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.

           -G generic_boot_image
                  Specifies the path and filename of the generic boot
                  image to be used when making a generic bootable CD.
                  The  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 iso9660 primary
                  volume descriptor.  If this option is used together
                  with  the  -sparc-boot  option,  the Sun disk label
                  will overlay the first 512  bytes  of  the  generic
                  boot image.

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

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

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

           -boot-load-seg segment_address
                  Specifies the load  segment  address  of  the  boot
                  image for no-emulation "El Torito" CDs.

           -boot-load-size load_sectors
                  Specifies  the  number of "virtual" (512-byte) sec-
                  tors 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.

           -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  BOOT INFO TABLE section for
                  a description of this table.

           -C last_sess_start,next_sess_start
                  This option is needed  when  mkhybrid  is  used  to
                  create  the  image  of a second session or a higher
                  level session for a multi session disk.  The option
                  -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  call-
                  ing cdrecord -msinfo ...  the -C option may only be
                  uses in conjunction with the -M option.

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

           -copyright FILE
                  Specifies  the Copyright file name.  This parameter
                  can  also  be  set  in  the  file  .mkisofsrc  with
                  COPY=filename.   If  specified  in both places, the
                  command line version is used.

           -d     Omit trailing period from files that do not have  a
                  period.  This violates the ISO9660 standard, but it
                  happens to work on many systems.  Use with caution.

           -D     Do  not  use deep directory relocation, and instead
                  just pack them in the way we see them.   This  vio-
                  lates  the  ISO9660  standard, but it works on many
                  systems.  Use with caution.

           -f     Follow symbolic links when generating the  filesys-
                  tem.   When  this  option  is  not in use, symbolic
                  links will be entered using Rock Ridge if  enabled,
                  otherwise the file will be ignored.

           -gui   Switch  the  behaviour  for  a  GUI. This currently
                  makes the output more verbose but  may  have  other
                  effects in future.

           -hide glob
                  Hide  glob  from  being seen on the ISO9660 or Rock
                  Ridge directory.  glob is a  shell  wild-card-style
                  pattern that must match any part of the filename or
                  path.  Multiple globs may be hidden (up  to  1000).
                  If  glob  matches a directory, then the contents of
                  that directory will  be  hidden.   All  the  hidden
                  files  will still be written to the output CD image
                  file.  Should be used with the -hide-joliet option.

           -hide-list file
                  A  file  containing a list of globs to be hidden as
                  above.

           -hide-joliet glob
                  Hide glob from being seen on the Joliet  directory.
                  glob  is  a shell wild-card-style pattern that must
                  match any part of the filename or  path.   Multiple
                  globs  may be hidden (up to 1000).  If glob matches
                  a directory, then the contents  of  that  directory
                  will be hidden.  All the hidden files will still be
                  written to the output CD  image  file.   Should  be
                  used with the -hide option.

           -hide-joliet-list file
                  A  file  containing a list of globs to be hidden as
                  above.

           -hide-joliet-trans-tbl
                  Hide the 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  ISO9660
                  name  which  may  both be different from the Joliet
                  name.

           -hide-rr-moved
                  Rename the directory RR_MOVED to .rr_moved  in  the
                  Rock Ridge tree.  It seems to be impossible to com-
                  pletely hide the RR_MOVED directory from  the  Rock
                  Ridge  tree.   This  option  only makes the visible
                  tree better to understand for people who don't know
                  what this directory is for.  If you need to have no
                  RR_MOVED directory at all, you should  use  the  -D
                  option.  Note  that  in case that the -D option has
                  been specified, the  resulting  filesystem  is  not
                  ISO9660  level-1 compliant and will not be readable
                  on MS-DOS.

           -l     Allow full 32 character  filenames.   Normally  the
                  ISO9660  filename will be in an 8.3 format which is
                  compatible with MS-DOS,  even  though  the  ISO9660
                  standard  allows  filenames of up to 32 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.

           -J     Generate  Joliet  directory  records in addition to
                  regular iso9660 file names.  This is primarily use-
                  ful  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.

           -L     Allow filenames to begin with a period.  Usually, a
                  leading dot is replaced with an underscore in order
                  to maintain MS-DOS compatibility.

           -log-file log_file
                  Redirect all error, warning and informational  mes-
                  sages to log_file instead of the standard error.

           -m glob
                  Exclude  glob from being written to CDROM.  glob is
                  a shell wild-card-style  pattern  that  must  match
                  part  of  the filename (not the path as with option
                  -x).   Technically  glob  is  matched  against  the
                  d->d_name  part  of  the directory entry.  Multiple
                  globs may be excluded (up to 1000).  Example:

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

                  NOTE:  The -m and -x option description should both
                  be updated, they are wrong.  Both now work  identi-
                  cal  and  use filename globbing. A file is excluded
                  if either the last component matches or  the  whole
                  path matches.

           -exclude-list file
                  A  file containing a list of globs to be exclude as
                  above.

           -M path
                  or

           -M device
                  Specifies path to  existing  iso9660  image  to  be
                  merged.  The  alternate  form  takes  a SCSI device
                  specifier that uses the same  syntax  as  the  dev=
                  parameter of cdrecord.  The output of mkhybrid 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 -C option.

           -N     Omit version numbers from ISO9660 file names.  This
                  may violate the ISO9660 standard, but no one really
                  uses the version numbers anyway.  Use with caution.

           -nobak

           -no-bak
                  Do not include backup files files  on  the  iso9660
                  filesystem.   If  the  -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).

           -no-rr Do not use the Rock Ridge attributes from  previous
                  sessions.   This  may  help  to  avoid getting into
                  trouble when mkisofs finds illegal Rock Ridge  sig-
                  natures on an old session.

           -no-split-symlink-components
                  Don't split the SL components, but begin a new Con-
                  tinuation 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 =  compo-
                  nent_size  instead of link_size += component_size).

           -no-split-symlink-fields
                  Don't split the SL fields, but begin a new Continu-
                  ation 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).

           -o filename
                  is the name  of  the  file  to  which  the  iso9660
                  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.

           -path-list file
                  A file containing a list  of  filespec  directories
                  and  filenames  to be added to the ISO9660 filesys-
                  tem. This list of filespecs are processed after any
                  that appear on the command line. If the argument is
                  -, then the list is read from the standard input.

           -P publisher_id
                  Specifies a text string that will be  written  into
                  the  volume  header.  This should describe the pub-
                  lisher of the CDROM, usually with a mailing address
                  and  phone  number.  There is space on the disc for
                  128 characters of information.  This parameter  can
                  also  be set in the file .mkisofsrc with PUBL=.  If
                  specified in both places, the command line  version
                  is used.

           -p preparer_id
                  Specifies  a  text string that will be written into
                  the volume header.  This should describe  the  pre-
                  parer  of the CDROM, usually with a mailing address
                  and phone number.  There is space on the  disc  for
                  128  characters of information.  This parameter can
                  also be set in the file .mkisofsrc with PREP=.   If
                  specified  in both places, the command line version
                  is used.

           -print-size
                  Print estimated  filesystem  size  and  exit.  This
                  option  is  needed  for  Disk At Once mode and with
                  some  CD-R  drives  when   piping   directly   into
                  cdrecord.   In  this  case it is needed to know the
                  size of the filesystem before  the  actual  CD-cre-
                  ation  is  done.   The option -print-size allows to
                  get this size from a "dry-run"  before  the  CD  is
                  actually written.

           -quiet This makes mkhybrid even less verbose.  No progress
                  output will be provided.

           -R     Generate SUSP and RR records using the  Rock  Ridge
                  protocol  to  further  describe  the  files  on the
                  iso9660 filesystem.

           -r     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 executa-
                  bles 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 all files.

           -sysid ID
                  Specifies  the  system ID.  This parameter can also
                  be set in the file .mkisofsrc with  SYSI=system_id.
                  If  specified in both places, the command line ver-
                  sion is used.

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

           -table-name TABLE_NAME
                  Alternative  translation  table  file   name   (see
                  above). Implies the -T option.  If you are creating
                  a multi-session image you must use the same name as
                  in the previous session.

           -U     Allows "Untranslated" filenames, completely violat-
                  ing the iso9660 standards described  above.  Forces
                  on  the  -d,  -l,  -L and -N flags, and also 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.

           -V volid
                  Specifies the volume ID (volume name or  label)  to
                  be  written  into the master block.  This parameter
                  can  also  be  set  in  the  file  .mkisofsrc  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  manage-
                  ment  system  and  the name that is assigned to the
                  disc on a Windows or Mac platform.

           -volset ID
                  Specifies the volset ID.  This parameter  can  also
                  be  set in the file .mkisofsrc with VOLS=volset_id.
                  If specified in both places, the command line  ver-
                  sion is used.

           -volset-size #
                  Sets the volume set size to #.  The volume set size
                  is the number of CD's that are in a  CD  set.   The
                  -volset-size option may be used to create CD's that
                  are part of e.g. a  Operation  System  installation
                  set of CD's.  The option -volset-size must be spec-
                  ified before -volset-seqno on each command line.

           -volset-seqno #
                  Sets the volume set sequence number to #.  The vol-
                  ume  set sequence number is the index number of the
                  current CD in a CD set.   The  option  -volset-size
                  must be specified before -volset-seqno on each com-
                  mand line.

           -v     Verbose execution. If given twice  on  the  command
                  line, extra debug information will be printed.

           -x path
                  Exclude  path  from  being  written to CDROM.  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 (up to 1000).  Exam-
                  ple:

                  mkhybrid -o cd -x /local/dir1 -x /local/dir2 /local

                  NOTE:  The -m and -x option description should both
                  be updated, they are wrong.  Both now work  identi-
                  cal and use filename globbing. A file is exluded if
                  either the last component matches or the whole path
                  matches.

           -z     Generate  special  SUSP  records  for transparently
                  compressed files.  This is only of use and interest
                  for  hosts  that support transparent decompression.
                  This is an experimental feature, and no  hosts  yet
                  support this, but there are ALPHA patches for Linux
                  that can make use of this feature.

## HFS OPTIONS

           -hfs   Create an ISO9660/HFS hybrid CD. This option should
                  be used in conjunction with the -map, -magic and/or
                  the various double dash options given below.

           -apple Create an ISO9660 CD with Apple's extensions. Simi-
                  lar  to  the  -hfs  option,  except  that the Apple
                  Extensions to ISO9660 are added instead of creating
                  an HFS hybrid volume.

           -map mapping_file
                  Use  the  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
                  CREATOR/TYPE section below.

           -magic magic_file
                  The  CREATOR and TYPE information is set by using a
                  file's magic number (usually the first few bytes of
                  a  file).  The 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 -map option. See the CREATOR/TYPE section below
                  for more details.

           -hfs-creator CREATOR
                  Set  the  default  CREATOR  for  all files. Must be
                  exactly 4 characters. See the CREATOR/TYPE  section
                  below for more details.

           -hfs-type TYPE
                  Set the default TYPE for all files. Must be exactly
                  4 characters. See the  CREATOR/TYPE  section  below
                  for more details.

           -probe Search  the  contents  of  files  for all the known
                  Apple/Unix file formats.  See  the  MACINTOSH  FILE
                  FORMATS section below for more about these formats.
                  However, the only way to check  for  MacBinary  and
                  AppleSingle  files is to open and read them. There-
                  fore this option may increase processing  time.  It
                  is  better  to  use one or more double dash options
                  given below if the Apple/Unix formats  in  use  are
                  known.

           -no-desktop
                  Do  not create (empty) Desktop files. New HFS Desk-
                  top 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.

           -mac-name
                  Use  the HFS filename as the starting point for the
                  ISO9660, Joliet and Rock Ridge file names. See  the
                  MACINTOSH  FILE NAMES section below for more infor-
                  mation.

           -boot-hfs-file driver_file
                  Installs the  driver_file  that  may  make  the  CD
                  bootable  on  a  Macintosh. See the HFS BOOT DRIVER
                  section below. (Alpha).

           -part  Generate an HFS partition  table.  By  default,  no
                  partition table is generated, but some older Macin-
                  tosh CDROM drivers need an HFS partition  table  on
                  the CDROM to be able to recognize a hybrid CDROM.

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

           -cluster-size size
                  Set the size in bytes of the cluster or  allocation
                  units  of PC Exchange files. Implies the --exchange
                  option. See  the  MACINTOSH  FILE  FORMATS  section
                  below.

           -hide-hfs glob
                  Hide  glob  from the HFS volume. The file or direc-
                  tory will still exist in the ISO9660 and/or  Joliet
                  directory.  glob is a shell wild-card-style pattern
                  that must match any part of the  filename  Multiple
                  globs may be excluded (up to 1000).  Example:

                  mkhybrid -o rom -hfs -hide-hfs '*.o' -hide-hfs foo-
                  bar

                  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 glob
                  can also be a path  name  relative  to  the  source
                  directories given on the command line. Example:

                  mkhybrid -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  -hide  and/or
                  -hide-joliet options.

           -hide-hfs-list file
                  A  file  containing a list of globs to be hidden as
                  above.

           -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 volid used with the -V option

           -icon-position
                  Use the icon position information,  if  it  exists,
                  from  the  Apple/Unix  file.  Information to decode
                  this data from UShare or XINET (SGI) files is  cur-
                  rently  unavailable.  This option may become set by
                  default in the future.  (Alpha).

           -prep-boot FILE
                  PReP boot image file. Up  to  4  are  allowed.  See
                  README.prep_boot (Alpha)

           --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 double dash options are given.

           --netatalk
                  Look for NETATALK Macintosh files

           --double
                  Look for AppleDouble Macintosh files

           --ethershare
                  Look for Helios EtherShare Macintosh files

           --ushare
                  Look for IPT UShare Macintosh files

           --exchange
                  Look for PC Exchange Macintosh files

           --sgi  Look for SGI Macintosh files

           --xinet
                  Look for XINET Macintosh files

           --macbin
                  Look for MacBinary Macintosh files

           --single
                  Look for AppleSingle Macintosh files

           --dave Look for Thursby Software  Systems  DAVE  Macintosh
                  files

           --sfm  Look  for  Microsoft's Services for Macintosh files
                  (NT only) (Alpha)

## CREATOR/TYPE

           A Macintosh file has two  properties  associated  with  it
           which  define which application created the file, the CRE-
           ATOR and what data the file contains, the TYPE.  Both  are
           (exactly)  4  letter strings. Usually this allows a Macin-
           tosh 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.

           The CREATOR and TYPE information is stored in all the var-
           ious Apple/Unix encoded files.  For other files it is pos-
           sible  to  base  the  CREATOR  and  TYPE on the filename's
           extension using a mapping file (the  -map  option)  and/or
           using  the  magic number (usually a signature in the first
           few bytes) of a file (the -magic option).  If  both  these
           options are given, then their order on the command line is
           important. If the -map option is given first, then a file-
           name  extension  match  is attempted before a magic number
           match. However, if the -magic option is given first,  then
           a magic number match is attempted before a filename exten-
           sion match.

           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  .mkisofsrc  file
           or using the -hfs-creator and/or -hfs-type options, other-
           wise the default CREATOR and TYPE are 'unix' and 'TEXT'.

           The format of the mapping file is the same afpfile  format
           as  used  by  aufs.   This  file  has five columns for the
           extension, file translation, CREATOR,  TYPE  and  Comment.
           Lines  starting  with  the '#' character are comment lines
           and are ignored. An example file would be like:

           # 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"

           Where:

                  The first column 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.

                  The  Xlate column defines the type of text transla-
                  tion between the Unix  and  Macintosh  file  it  is
                  ignored  by  mkhybrid, but is kept to be compatible
                  with aufs(1).  Although mkhybrid does not alter the
                  contents  of a file, if a binary file has it's TYPE
                  set as 'TEXT', it may be read incorrectly on a Mac-
                  intosh.  Therefore  a better choice for the default
                  TYPE may be '????'

                  The CREATOR and TYPE keywords must be 4  characters
                  long and enclosed in single quotes.

                  The comment field is enclosed in double quotes - it
                  is ignored by mkhybrid, but is kept to be  compati-
                  ble with aufs.

           The  format  of  the magic file is almost identical to the
           magic(4) file used by the Linux file(1) command - the rou-
           tines for reading and decoding the magic file are based on
           the Linux file(1) command.

           This file has four tab separated columns for the byte off-
           set,  type, test and message.  Lines starting with the '#'
           character are comment lines and are  ignored.  An  example
           file would be like:

           # 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    \037\235   LZIV ZIVU  standard unix compress
           0       string    \037\213   GNUz ZIVU  gzip compressed data
           0       string    %!         ASPS TEXT  Postscript
           0       string    \004%!     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)

           The  format  of  the file is described in the magic(4) man
           page. The only difference here is that for each  entry  in
           the magic file, the message for the initial offset 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 ini-
           tial offset lines are used.

           Using the -magic option may  significantly  increase  pro-
           cessing  time  as each file has to opened and read to find
           it's magic number.

           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 .mkisofsrc file or by using the -hfs-
           creator and/or -hfs-type options.

           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.

           Other files can have their CREATOR and TYPE set from their
           file name extension (the -map option), or their magic num-
           ber (the -magic option). If the default match is  used  in
           the  mapping  file, then these values override the default
           CREATOR and TYPE.

           A   full   CREATOR/TYPE   database   can   be   found   at
           http://www.angelfire.com/il/szekely/index.html

## MACINTOSH FILE FORMATS

           Macintosh  files  have  two  parts  called  the  Data  and
           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 impor-
           tant are the TYPE and CREATOR. Again Unix has  no  concept
           of these types of attributes.
           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.

           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  finder
           info).   Unfortunately, it seems that every software pack-
           age that stores Macintosh files on Unix has chosen a  com-
           pletely different storage method.

           The  Apple/Unix formats that mkhybrid (partially) supports
           are:

           CAP AUFS format
                  Data fork stored in a file. Resource fork in subdi-
                  rectory  .resource with same filename as data fork.
                  Finder info in .finderinfo subdirectory  with  same
                  filename.

           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.

           AppleSingle
                  Data structures similar to above, except both forks
                  and finder info are stored in one file.

           Helios EtherShare
                  Data  fork  stored  in  a  file.  Resource fork and
                  finder info together  in  subdirectory  .rsrc  with
                  same filename as data fork.

           IPT UShare
                  Very  similar  to  the  EtherShare  format, but the
                  finder info is stored slightly differently.

           MacBinary
                  Both forks and finder info stored in one file.

           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.

                  Note: mkhybrid 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 -cluster-size option.  The cluster  or  alloca-
                  tion  size  can  be  found by using the DOS utility
                  CHKDSK.

                  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  msdos
                  (not vfat) when using Linux.

           SGI/XINET
                  Used  by  SGI  machines  when they mount HFS disks.
                  Data fork stored in a file. Resource fork in subdi-
                  rectory  .HSResource with same name. Finder info as
                  one record in file .HSancillary. Separate .HSancil-
                  lary for each data fork directory.

           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.

           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 stream called "file-
                  name:AFP_Resource".  The finder info is stored as a
                  NTFS stream  called  "filename:Afp_AfpInfo".  These
                  streams are normally invisible to the user.

                  Warning:  mkhybrid  only partially supports the SFM
                  format. If an HFS file or folder stored on  the  NT
                  server  contains  an  illegal  NT  character in its
                  name, then NT converts these characters to  Private
                  Use Unicode characters. The characters are: " * / <
                  > ?  | also a space or period if  it  is  the  last
                  character of the file name, character codes 0x01 to
                  0x1f (control characters) and Apple' apple logo.

                  Unfortunately, these private Unicode characters are
                  not  readable by the mkhybrid NT executable. There-
                  fore any file or directory  name  containing  these
                  characters will be ignored - including the contents
                  of any such directory.

           mkhybrid 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  MACINTOSH  FILE  NAMES  section
           below.

           When  using  the  -apple  option, the TYPE and CREATOR are
           stored in the optional System Use or  SUSP  field  in  the
           ISO9660  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 exist-
           ing Rock Ridge attributes (i.e. to get  the  Apple  exten-
           sions you get the Rock Ridge extensions as well).

           The  Apple  extensions  require  the  resource  fork to be
           stored as an ISO9660 associated file. This  is  just  like
           any  normal  file  stored in the ISO9660 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

           When  using  the  -hfs  option,  the TYPE and CREATOR plus
           other finder info, are stored in a separate HFS directory,
           not  visible on the ISO9660 volume. The HFS directory ref-
           erences the same data and resource  fork  files  described
           above.

           In most cases, it is better to use the -hfs option instead
           of the -apple option, as the latter  imposes  the  limited
           ISO9660  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.

## 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.  How-
           ever, not all the Apple/Unix encodings store the HFS file-
           name with the finderinfo. In these cases, the  Unix  file-
           name  is  used  - with escaped special characters. Special
           characters include '/' and characters with codes over 127.

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

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

           This:2fFile   converted to This/File

           This:File     converted to This%File

           This:t7File   converted to This%t7File

           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 mkhybrid will
           attempt, where possible, to make a unique name  by  adding
           '_' characters to one of the filenames.

           If  an  HFS  filename exists for a file, then mkhybrid can
           use this name as  the  starting  point  for  the  ISO9660,
           Joliet  and  Rock  Ridge  filenames  using  the  -mac-name
           option. Normal Unix files without an HFS name  will  still
           use their Unix name.  e.g.

           If  a MacBinary (or PC Exchange) file is stored as someim-
           age.gif.bin on the Unix filesystem,  but  contains  a  HFS
           file  called  someimage.gif,  then  this  is the name that
           would appear on the HFS part of the CD. However, as  mkhy-
           brid  uses  the  Unix  name  as the starting point for the
           other names, then the ISO9660 name generated will probably
           be SOMEIMAG.BIN and the Joliet/Rock Ridge would be someim-
           age.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  ISO9660  name  will  probably  be
           SOMEIMAG.GIF  and  the  Joliet/Rock Ridge would be someim-
           age.gif.

           Using the -mac-name option will not  currently  work  with
           the  -T  option  -  the  Unix  name  will  be  used in the
           TRANS.TBL file, not the Macintosh name.

           The existing mkisofs code  will  filter  out  any  illegal
           characters  for  the  ISO9660 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 -mac-name option  coverts  '/'
           to a '_' in a Rock Ridge filenames.

           If  the  Apple  extensions are used, then only the ISO9660
           filenames will appear on the Macintosh.  However,  as  the
           Macintosh  ISO9660 drivers can use Level 2 filenames, then
           you can use the -l option without problems on a  Macintosh
           -   still   take   care   over   the  names,  for  example
           this.file.name will be converted to  THIS.FILE  i.e.  only
           have  one  '.',  also  filename  abcdefgh  will be seen as
           ABCDEFGH but abcdefghi will be seen  as  ABCDEFGHI.   i.e.
           with  a '.' at the end - don't know if this is a Macintosh
           problem or mkisofs/mkhybrid problem. All filenames will be
           in  uppercase  when  viewed  on  a  Macintosh.  Of course,
           DOS/Win3.X machines will not be able to see Level 2  file-
           names...

## 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\r' ('\r' is the 'carriage return'  character)
           in the root folder.

           A  custom  folder icon is very similar - an invisible file
           called 'Icon\r' exits in the folder itself.

           Probably the easiest way to  create  a  custom  icon  that
           mkhybrid  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 mkhybrid using something like:

                      mkhybrid --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  charac-
           ter. e.g.

                      hmount /dev/fd0
                      hdir -a
                      hcopy -m Icon^V^M icon_dir/icon

           Where  '^V^M' is control-V followed by control-M. Then run
           mkhybird by using something like:

                      mkhybrid --macbin -o output source_dir icon_dir

           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\r' file to the relevant
           directory in the mkhybrid source tree.

           You may want to hide the icon files from the  ISO9660  and
           Joliet trees.

           To  give a custom icon to a Joliet CD, follow the instruc-
           tions      found      at:       http://www.fadden.com/cdr-
           faq/faq03.html#[3-21]

## BOOT INFORMATION TABLE

           When  the  -boot-info-table  option is given, mkisofs will
           modify the boot file specified by the -b option by insert-
           ing  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.

           The  format  of this table is as follows; all integers are
           in section 7.3.1 ("little endian") format.

             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

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

## HFS BOOT DRIVER

           It  may  be  possible  to make the hybrid CD bootable on a
           Macintosh.

           A bootable HFS CD requires an Apple CD-ROM (or compatible)
           driver, a bootable HFS partition and the necessary System,
           Finder, etc. files.

           A driver can be obtained from any other Macintosh bootable
           CD-ROM  using the apple_driver utility. This file can then
           be used with the -boot-hfs-file option.

           The HFS partition (i.e. the hybrid disk in our case)  must
           contain  a  suitable System Folder, again from another CD-
           ROM or disk.

           For a partition to be bootable, it  must  have  it's  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.

           Therefore, the utility 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
           mkhybrid.
           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  Agree-
                  ments.

## CONFIGURATION

           mkhybrid  looks for the .mkisofsrc file, first in the cur-
           rent working directory, then in the user's home directory,
           and  then in the directory in which the mkhybrid binary is
           stored.  This file is assumed to contain a series of lines
           of  the  form "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.

           APPI   The  application  identifier  should  describe  the
                  application  that  will  be  on the disc.  There is
                  space on the disc for 128  characters  of  informa-
                  tion.   May be overridden using the -A command line
                  option.

           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  informa-
                  tion.   May be overridden using the -copyright com-
                  mand line option.

           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.   May
                  be  overridden  using  the  -abstract  command line
                  option.

           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  informa-
                  tion.   May  be overridden using the -bilio command
                  line option.

           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.   May  be overridden using the -p com-
                  mand line option.

           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.    May  be  overridden  using  the  -P
                  command line option.

           SYSI   The System Identifier.  There is space on the  disc
                  for  32 characters of information.  May be overrid-
                  den using the -sysid command line option.

           VOLI   The Volume Identifier.  There is space on the  disc
                  for  32 characters of information.  May be overrid-
                  den using the -V command line option.

           VOLS   The Volume Set Name.  There is space  on  the  disc
                  for 278 characters of information.  May be overrid-
                  den using the -volset command line option.

           HFS_TYPE
                  The default  TYPE  for  Macintosh  files.  Must  be
                  exactly 4 characters.

           HFS_CREATOR
                  The  default  CREATOR  for Macintosh files. Must be
                  exactly 4 characters.

           mkhybrid can also  be  configured  at  compile  time  with
           defaults   for   many  of  these  fields.   See  the  file
           defaults.h.

## EXAMPLES

           To create a HFS hybrid CD with the Joliet and  Rock  Ridge
           extensions of the source directory cd_dir:

           % mkhybrid -o cd.iso -r -J -hfs cd_dir

           To create a HFS hybrid CD from the source directory cd_dir
           that contains Netatalk Apple/Unix files:

           % mkhybrid -o cd.iso --netatalk cd_dir

           To create a  HFS  hybrid  CD  from  the  source  directory
           cd_dir,  giving  all files CREATOR and TYPES based on just
           their filename extensions listed in the file "mapping".:

           % mkhybrid -o cd.iso -map mapping cd_dir

           To create a CD with the  'Apple  Extensions  to  ISO9660',
           from  the source directories cd_dir and 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":

           % mkhybird -o cd.iso -apple -magic magic -probe \
                   cd_dir another_dir

           The following example puts different files on the CD  that
           all have the name README, but have different contents when
           seen as a ISO9660/RockRidge, Joliet or HFS CD.

           Current directory contains:

           % ls -F
           README.hfs     README.joliet  README.unix    cd_dir/

           The following command puts the contents of  the  directory
           "cd_dir" on the CD along with the three README files - but
           only one will be seen from each of the three filesystems:

           % mkhybrid -o cd.iso -hfs -J -r \
                   -hide README.hfs -hide README.joliet \
                   -hide-joliet README.hfs -hide-joliet README.unix \
                   -hide-hfs README.joliet -hide-hfs README.unix \
                   README=README.hfs README=README.joliet \
                   README=README.unix cd_dir

           i.e. the file README.hfs will be seen as README on the HFS
           CD and the other two README files will  be  hidden.  Simi-
           larly for the Joliet and ISO9660/RockRidge CD.

           There  are  probably all sorts of strange results possible
           with combinations of the hide options ...

## AUTHOR

           mkisofs 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  iso9660 filesystem.  The name
           mkisofs is probably a bit of a misnomer, since it not only
           creates the filesystem, but it also populates it as  well.

           Eric       Youngdale       <ericy@gnu.ai.mit.edu>       or
           <eric@andante.org> wrote both the Linux isofs9660 filesys-
           tem  and  the  mkisofs  utility.   The  copyright  for the
           mkisofs utility is held by Yggdrasil  Computing,  Incorpo-
           rated.

           mkhybrid is based on mkisofs and works in exactly the same
           way as mkisofs without the HFS options. The change in name
           is  to signify that it does something extra. If you do not
           need the HFS options, then  you  should  really  be  using
           mkisofs.

           HFS  hybrid  code  Copyright (C) James Pearson 1997, 1998,
           1999, 2000
           libhfs code Copyright (C) 1996, 1997 Robert Leslie
           libfile code Copyright (C) Ian F. Darwin 1986, 1987, 1989,
           1990, 1991, 1992, 1994, 1995.

## NOTES

           Mkhybrid  may  safely  be installed suid root. This may be
           needed to allow mkhybrid to read the previous session when
           creating a multi session image.

## BUGS

           o      Any  files that have hard links to files not in the
                  tree being copied to the  iso9660  filesystem  will
                  have an incorrect file reference count.

           o      Does  not  check for SUSP record(s) in "." entry of
                  the root directory to verify the existence of  Rock
                  Ridge enhancements.

                  This  problem  is present when reading old sessions
                  while adding data in multi-session mode.

           o      Does not properly  read  relocated  directories  in
                  multi-session mode when adding data.

                  Any  relocated  deep  directory  is lost if the new
                  session does not include the deep directory.

                  Repeat by: create first session with deep directory
                  relocation  then  add new session with a single dir
                  that differs from the old deep path.

           o      Does not re-use RR_MOVED when  doing  multi-session
                  from TRANS.TBL

           o      Does  not  create  whole_name entry for RR_MOVED in
                  multi-session mode.

           There may be some other ones.  Please, report them to  the
           author.

## 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 mkhybrid 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 Alpha above.

           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 mkhybrid will
           attempt, where possible, to make a unique name  by  adding
           '_' characters to one of the filenames.

           HFS  file/directory  names that share the first 31 charac-
           ters have _N' (N == decimal number)  substituted  for  the
           last few characters to generate unique names.

           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:

                  mkhybrid -o output.raw -hfs newname=oldname cd_dir

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

           When creating an HFS volume with the multisession options,
           -M  and  -C, only files in the last session will be in the
           HFS volume. i.e. mkhybrid can not add existing files  from
           previous sessions to the HFS volume.

           Symbolic  links  (as with all other non-regular files) are
           not added to the HFS directory.

           Hybrid volumes may be larger  than  pure  ISO9660  volumes
           containing the same data.

           The  resulting  hybrid  volume  can  be accessed on a Unix
           machine  by  using  the  hfsutils  routines.  However,  no
           changes  should  be  made to the contents of the volume as
           it's not a "real" HFS volume.

           Using the -mac-name option will not  currently  work  with
           the  -T  option  -  the  Unix  name  will  be  used in the
           TRANS.TBL file, not the Macintosh name.

           Although mkhybrid does not alter the contents of  a  file,
           if  a  binary  file has it's TYPE set as 'TEXT', it may be
           read incorrectly on a Macintosh. Therefore a better choice
           for the default TYPE may be '????'

           The -mac-boot-file option may not work at all...

           May not work with PC Exchange v2.2 or higher files (avail-
           able with MacOS 8.1).  DOS media  containing  PC  Exchange
           files  should  be  mounted  as  type msdos (not vfat) when
           using Linux.

           The SFM format is only partially supported - see MACINTOSH
           FILE FORMATS section above.

           It is not possible to use the the -sparc-boot or -generic-
           boot  options  with  the  -boot-hfs-file   or   -prep-boot
           options.

## SEE ALSO

           mkisofs(8), magic(5), apple_driver(8)

## FUTURE IMPROVEMENTS

           Some sort of gui interface.

## AVAILABILITY

           mkisofs  is available as part of the cdrecord package from
           ftp://ftp.fokus.gmd.de/pub/unix/cdrecord/

           mkhybrid           is            available            from
           ftp://ftp.ge.ucl.ac.uk/pub/mkhfs    and    hfsutils   from
           ftp://ftp.mars.org/pub/hfs

## MAILING LISTS

           If you want to actively take part on  the  development  of
           mkisofs  and/or mkhybrid, you may join the cdwriting mail-
           ing list by sending mail to:

                     other-cdwrite-request@lists.debian.org

           and include the word subscribe  in  the  body.   The  mail
           address of the list is:

                     cdwrite@lists.debian.org

## MKHYBRID MAINTAINER

           James Pearson

           j.pearson@ge.ucl.ac.uk

## MKISOFS MAINTAINER

           Joerg Schilling
           Seestr. 110
           D-13353 Berlin
           Germany

           Mail bugs and suggestions to:

           schilling@fokus.gmd.de     or     js@cs.tu-berlin.de    or
           joerg@schily.isdn.cs.tu-berlin.de