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:
Things I tried:
IO80211AWDLPeerManager::setAwdlOperatingMode Setting the AWDL operation mode from SUSPENDED to AUTO
and IO80211AWDLPeerManager::setAwdlAutoMode Resuming AWDL
. (See also http://superuser.com/questions/917220/macbook-can-not-boot-os-x-yosemite-as-it-hangs
for a description of similar symptoms.)
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: