In more than two years of owning a Macbook, I never faced a single issue upgrading the OS. Until today when, after installing the
OS X 10.11.1, the Macbook would just hang after rebooting.
More precisely, the progress bar on the boot screen would stop at roughly two thirds of the way. So today, finally, I had to figure
out what kind of diagnosis and recovery options OS X actually provides.
The two most important tools were:
- ⌘+V during reboot: Boot in verbose mode, showing the boot messages instead of the Apple logo and progress bar. I noticed
that the boot process hung after a message saying pci pause: SDXC.
- ⌘+R during reboot: Boots into recovery mode,
which offers tools for disk and networking diagnosis, as well as
the option to open a terminal as a superuser.
Things I tried:
I was dangerously close to reinstalling the OS now, with only two aces left up my sleeves:
Single-user mode
and kernel extensions.
I had seen references to startup issues related to kernel extensions in some articles, but knew very little about them.
The first thing I tried was to temporarily disable kernel extension signing (
nvram boot-args=kext-dev-mode=1), with no
discernible effect. Fortunately, at this point I came across
Justin Silver's blog article
"OS X El Capitan 10.11.1 Hanging on Boot"
in which he describes a startup issue which looks a
lot like mine. His excellent summary contains
instructions on disabling kernel extensions using recovery mode - which helped me solve my problem!
I booted into recovery mode, opened a terminal window, and then:
$ mount -rw /
$ cd /Volumes/Macintosh\ HD
$ cd Library/Extensions
$ ls
ACS6x.kext HighPointIOP.kext
ATTOCelerityFC8.kext HighPointRR.kext
ATTOExpressSASHBA2.kext PromiseSTEX.kext
ATTOExpressSASRAID2.kext SoftRAID.kext
AX88179_178A.kext hp_io_enabler_compound.kext
ArcMSR.kext hp_io_printerclassdriver_enabler.kext
CalDigitHDProDrv.kext
Following Justin's advice, I moved all kernel extensions out of
/Library/Extensions
to disable them temporarily, and
then rebooted. Lo and behold, the login screen appeared! After a few such rounds of moving kernel extensions back to
/Library/Extensions
and rebooting, the root cause of my startup issues turned out to be those HP printer extensions.
Phew.
The HP kernel extensions had been on my system for quite some time, of course, and had never caused any problems like this before.
So there are still open questions about what exactly had happened here. To be solved on a rainy day.
Other related links: