Documentation
From my personal library, The Internet

man page:

               [-K kernel_filename] [-l | -L] [-m mkext_filename] [-n | -N]
               [-r] [-s | -S] [-t] [-v [1-6]] [-z] [kext_or_directory] ...
     kextcache [-f] -u os_volume


DESCRIPTION

     The kextcache program creates or updates kext caches, which are used to
     speed up kext loading operations and to prepare kexts for inclusion in
     such media as device ROM.  It is invoked automatically as needed to
     rebuild the system caches, and can be used manually to build kext ar-
     chives to be stored in device ROM.

     NOTE: Kernel extension installers should not use this program to update
     caches.  Instead they should merely touch(1) the /System/Library/Exten-
     sions directory after they have finished, which will cause the system to
     update all necessary kernel extension caches.

     There are three kinds of kext cache.  The first is the mkext cache, which
     contains the info dictionaries and binary files for an arbitrary set of
     kexts.  Mkext caches are used during early system startup to load drivers
     essential to mounting the root filesystem and providing basic hardware
     services.  They're also used to package drivers in device ROM.  To create
     an mkext cache use the -m option.

     The second type of cache is the kext repository cache, which contains the
     info dictionaries for all the kexts in a single repository directory,
     including their plugins, in a file with a .kextcache extension.  A repos-
     itory cache speeds the startup of tools such as kextload(8) and kextd(8).
     A repository cache must exist alongside its repository directory for the
     kext tools to find and use it.  The kext tools normally build or update
     repository caches as needed.  To create or update a kext cache use the -k
     option.

     The third type of cache is the kernel cache, which contains the kernel
     code, linked kext code, and info dictionaries for an arbitrary set of
     kexts. Having the kernel code and kexts already linked speeds the startup
     of tools such as kextload(8) and kextd(8).  To create or update a kernel
     cache use the -c option.

     kextcache accepts these arguments and options:

     kext_or_directory
              A kext bundle or a repository directory containing kexts to add
              to the cache.  When using the -m option only, any number may be
              specified.  When using the -k option, only a single directory
              may be named.

     -a arch  Include in an mkext archive only kexts whose executable files
              contain code for the given arch, stripping the binaries before
              inclusion.  If multiple -a options are used, a multi-architec-
              ture file will be created containing an embedded mkext archive
              for each of the specified architectures.


     -h       Extended usage statement

     -k       Create or update the kext cache for any repository directories
              specified.

     -K kernel_filename
              The name of the kernel file to use as the base of a kernel cache
              file (default is /mach_kernel).

     -l       Specifies that for directory arguments, only extensions required
              for local disk boot be included in an mkext cache.  Kexts
              explicitly named on the command line are included uncondition-
              ally; to apply this restriction to all kexts, use the -L option.
              May be combined with the -n, -N, -s, or -S options to archive
              network-root and safe boot extensions as well.

     -L       Specifies that only extensions required for local disk boot be
              included in an mkext cache.  To apply this restriction only to
              repository directories, use the -l option.  May be combined with
              the -n, -N, -s, or -S options to archive network-root and safe
              boot extensions as well.

     -m mkext_filename
              The name of the mkext cache file to create.

     -n       Specifies that for directory arguments, only extensions required
              for network boot be included in an mkext cache.  Kexts explic-
              itly named on the command line are included unconditionally; to
              apply this restriction to all kexts, use the -N option.  May be
              combined with the -l, -L, -s, or -S options to archive local-
              root and safe boot extensions as well.

     -N       Specifies that only extensions required for network boot be
              included in an mkext cache.  To apply this restriction only to
              repository directories, use the -n option.  May be combined with
              the -l, -L, -s, or -S options to archive local-root and safe
              boot extensions as well.

     -r       Include all kexts that have been loaded by the machine running
              this command during this boot. This include kexts loaded and
              later unloaded.

     -s       Specifies that for directory arguments, only extensions required
              for safe boot be included in an mkext cache.  Kexts explicitly
              named on the command line are included unconditionally; to apply
              this restriction to all kexts, use the -S option.  May be com-
              bined with the -l, -L, -n, or -N options to archive local- and
              network-root extensions as well.

     -S       Specifies that only extensions required for safe boot be
              included in an mkext cache.  To apply this restriction only to
              Update boot caches and any helper partitions associated with
              os_volume.  The mkext is always updated.  By default, only
              caches which have changed since the last update are copied to
              the helper partitions.  See also -f.  OS volumes without
              /usr/standalone/bootcaches.plist are ignored (success is
              returned).

     -v [1-6]
              Verbose mode; print information about the kext scanning and
              loading process. Higher levels of verbosity include all lower
              levels.  With this program only verbose levels 1-3 are useful.
              The levels of verbose output are these:

              1    prints basic kext scanning and archiving information

              2    prints basic compression information

              3    prints detailed kext scanning information; also uncom-
                   presses mkext cache entries to make sure they do so without
                   error

              4    prints basic information on every kext encountered

              5    prints detailed information on every kext encountered

              6    prints detailed load information (not applicable)

              A kext can also specify verbose printing for just itself using
              the OSBundleDebugLevel top-level info dictionary property.  Its
              values are 1 and 2, for basic and detailed information, respec-
              tively.

     -z       Don't authenticate kexts.  This option is for convenience in
              building archive and cache files.  Mkext archives and kext
              repository caches must have proper ownership (root:wheel) and
              permissions (0644) in order to be used by the system.

     --       End of all options. Only kext or directory names follow.


DIAGNOSTICS

     kextcache exits with a zero status upon success.  Upon failure, it prints
     an error message and exits with a nonzero status.  When the -F option is
     used, however, kextcache exits with a nonzero status only if the fork(2)
     operation fails.


SEE ALSO

     kextd(8), kextload(8), kextstat(8), kextunload(8)


BUGS

     Upon encountering a kext with validation errors, kextcache typically
     prints an error message about that kext, even if it isn't involved in the
     cacheing request.

Man(1) output converted with man2html