Mac OS X Boot Process

What is Mac OS X Boot Process:

Boot ROM Firmware. Part of Hardware system
BootROM firmware is activated
POST Power-On Self Test
initializes some hardware interfaces and verifies that sufficient memory is available and in a good state.
EFI Extensible Firmware Interface
EFI does basic hardware initialization and selects which operating system to use.
BOOTX boot.efi boot loader
load the kernel environment
Rooting/Kernel The init routine of the kernel is executed
boot loader starts the kernel’s initialization procedure
Various Mach/BSD data structures are initialized by the kernel.
The I/O Kit is initialized.
The kernel starts /sbin/mach_init
Run Level mach_init starts /sbin/init
init determines the runlevel, and runs /etc/rc.boot, which sets up the machine enough to run single-user.
rc.boot figures out the type of boot (Multi-User, Safe, CD-ROM, Network etc.)




  • Power is turned on.
  • Open Firmware code is executed.
  • Hardware information is collected and hardware is initialized.
  • Something (usually the OS, but also things like the Apple Hardware Test, etc.) is selected to boot. The user may be prompted to select what to boot.
  • Control passes to /System/Library/CoreServices/BootX, the boot loader. BootX loads the kernel and also draws the OS badges, if any.
  • BootX tries to load a previously cached list of device drivers (created/updated by /usr/sbin/kextcache). Such a cache is of the type mkext and contains the info dictionaries and binary files for multiple kernel extensions. Note that if the mkext cache is corrupt or missing, BootX would look in /System/Library/Extensions for extensions that are needed in the current scenario (as determined by the value of the OSBundleRequired property in the Info.plist file of the extension’s bundle.
  • The init routine of the kernel is executed. The root device of the booting system is determined. At this point, Open Firmware is not accessible any more.
  • Various Mach/BSD data structures are initialized by the kernel.
  • The I/O Kit is initialized.
  • The kernel starts /sbin/mach_init, the Mach service naming (bootstrap) daemon. mach_init maintains mappings between service names and the Mach ports that provide access to those services.
  • From here on, the startup becomes user-level:

  • mach_init starts /sbin/init, the traditional BSD init process. init determines the runlevel, and runs /etc/rc.boot, which sets up the machine enough to run single-user.
  • rc.boot figures out the type of boot (Multi-User, Safe, CD-ROM, Network etc.). In case of a network boot (the sysctl variable kern.netboot will be set to 1 in which case), it runs /etc/rc.netboot with a start argument.

Source: http://osxbook.com/book/bonus/ancient/whatismacosx/arch_startup.html

Monitor Macbook

How to Monitor Macbook with one single command?

$sudo sysdiagnose -f ~/Desktop/




The result is a compressed file named sysdiagnose_YYYY.MM.DD_HH-MM-SS-TTTT.tar.gz and it contains the following:
Accessibility
BluetoothTraceFile.pklg
DiagnosticMessages
Etienne’s SystemConfiguration
airport_info.txt
apsd-status.txt
bc_stats.txt
bootstamps.txt
brctl.tar.gz
breadcrumbs.txt
crashes_and_spins
darwinup.txt
dig-results.txt
disks.txt
diskutil.txt
error_log.txt
filecoordination_dump.txt
footprint-all.txt
fs_usage.txt
fsck_hfs_user.log
fsck_hfs_var.log
gpt.txt
ifconfig.txt
ioreg
ipconfig.txt
kextstat.txt
launchctl-list.txt
locale.txt
logs
lsappinfo.txt
lsmp.txt
lsof.txt
lsregister.txt
microstackshots
microstackshots_lastday.txt
microstackshots_lasthour.txt
microstackshots_lastminute.txt
mount.txt
netstat
nfsstat.txt
odutil.txt
pluginkit.txt
pmset_everything.txt
powermetrics.txt
ps.txt
ps_thread.txt
reachability-info.txt
resolv.conf
scutil.txt
smcDiagnose.txt
spindump.txt
stackshot-last-sym.log
sysctl.txt
sysdiagnose.log
system_profiler.spx
talagent.txt
taskinfo.txt
thermal.txt
top.txt
var_run_resolv.conf
vm_stat.txt
zprint.txt