MKHYBRID



NAME

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


SYNOPSIS

       mkhybrid [ -a ] [ -abstract FILE ] [ -biblio FILE ]  [  -b
       boot_image  ] [ -c boot_catalog ] [ -copyright FILE ] [ -A
       application_id ] [ -f ] [ -d ] [ -D ] [  -hide  glob  ]  [
       -hide-list  file  ]  [ -hide-joliet glob ] [ -hide-joliet-
       list file ] [ -J ] [ -l ] [ -L ] [ -log-file log_file ]  [
       -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 ] [  -prep-
       boot  FILE  ]  [  --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 in recent times.

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

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

       -C last_sess_start,next_sess_start
              This option is needed when mkisofs is used to  cre-
              ate 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   calling
              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  created  by
              mkhybrid  in  the source filesystem, so be sure the
              specified filename does not conflict with an exist-
              ing  file,  as it will be quietly overwritten! Usu-
              ally 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.

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

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

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

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

       -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

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

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

       As  Macintosh  filenames do use the '~' and '#' characters
       (especially when using PC Exchange Macintosh files),  then
       the -a option should be given.



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 com-
              mand 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
              overridden 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.

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

       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.


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, and is currently maintaining
       them.  The copyright for the mkisofs utility  is  held  by
       Yggdrasil Computing, Incorporated.

       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
       libhfs code Copyright (C) 1996, 1997 Robert Leslie
       libfile code Copyright (C) Ian F. Darwin 1986, 1987, 1989,
       1990, 1991, 1992, 1994, 1995.




BUGS

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

       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.

       Output  volume size must be at least 800Kb (libhfs limit -
       shouldn't really be a problem).

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

       The  -a  option  should  be used at all times. It may well
       become the default in future releases.

       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.



SEE ALSO

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


FUTURE IMPROVEMENTS

       Some sort of gui interface.


AVAILABILITY

       mkisofs   is   available   for    anonymous    ftp    from
       ftp://tsx-11.mit.edu/pub/linux/packages/mkisofs  and  many
       other mirror sites.

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