module KextCache

/usr/sbin/kextcache

developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/kextcache.8.html

Constants

DEFAULT_OPTIONS

The default options for kextcache.

EXTENSIONS

The relative path to Extensions.

EXTRA_EXTENSIONS

The relative path to Extra Extensions.

Available on OS X Mavericks and later.

KERNELCACHE

The relative path to kernelcache.

Available on OS X Lion and later.

MKEXT

The relative path to Extensions.mkext.

Available on OS X Snow Leopard.

MKEXT_PPC

The relative path to Extensions.mkext on PowerPC Macs.

Available on OS X Leopard and eailer.

Public Class Methods

update_volume(volume_root) click to toggle source

Update the kernelcache on a volume.

volume_root - The String path to the volume root.

# File lib/iesd/utility/kextcache.rb, line 37
def self.update_volume volume_root
  oh1 "Updating Kextcache"
  if File.exist? (mach_kernel = File.join(volume_root, "mach_kernel"))
    extensions_path = [File.join(volume_root, EXTENSIONS)]
    extensions_path.push(File.join(volume_root, EXTRA_EXTENSIONS)) if File.exist? File.join(volume_root, EXTRA_EXTENSIONS)
    case
    when (File.exist? (url = File.join(volume_root, KERNELCACHE)))
      system("/usr/bin/env", "kextcache", *DEFAULT_OPTIONS, "-prelinked-kernel", url, "-kernel", mach_kernel, "-volume-root", volume_root, "--", *extensions_path)
    when (File.exist? (url = File.join(volume_root, MKEXT)))
      system("/usr/bin/env", "kextcache", *DEFAULT_OPTIONS, *%w[ -a i386 -a x86_64 ], "-mkext", url, "-kernel", mach_kernel, "-volume-root", volume_root, "--", *extensions_path)
      if File.exist? (mkext_ppc = File.join(volume_root, MKEXT_PPC))
        system("/usr/bin/env", "ditto", url, mkext_ppc)
      end
    when (File.exist? (url = File.join(volume_root, MKEXT_PPC)))
      system("/usr/bin/env", "kextcache", *DEFAULT_OPTIONS, *%w[ -a ppc -a i386 ], "-mkext", url, "-kernel", mach_kernel, "-volume-root", volume_root, "--", *extensions_path)
    else
      puts "kextcache aborted: unknown kernel cache type"
      return
    end
    puts "Updated: #{url}"
  else
    opoo "kextcache aborted: mach_kernel not found"
  end
end