Symptoms:
Your Mac is stuck at boot time. You’ve got a spinning wheel and it just sits there.
Maybe you remember messing about with permissions recently? Perhaps ACLs?
You can screw it up all sorts of ways – maybe you were messing about with chown or chmod, or maybe you did the big dumb and propagated across your boot volume using the OSX Server tools.
Here is the answer: first, find a terminal window or COMMAND-S boot into Single User Mode & mount. Then get into root by typing “su”. If you don’t know the password, then type “sudo passwd” enter your password, and then it will prompt you to set the root password. THEN:
“chmod -R -N /Volumes”
Removes all ACLs from everything.
now it works!!!
Heres the orginial post:
Fire up in Verbose Mode (APPLE KEY + V) and you will see
BootCacheControl: Unable to open /var/db/BootCache.playlist
and
launch_msg(): Socket is not connected
Looking inside the folfer at /var/db reveals there is indeed no BootCache Playlist. What is a BootCache Playlist anyways?
Mac OS X uses a boot-time optimization (effectively a smart read-ahead) that monitors the pattern of incoming read requests to a block device (the boot disk), and sorts the pattern into a “playlist”, which is used to cluster reads into a private cache. This “boot cache” is then used for satisfying incoming read requests, if possible. The scheme also measures the cache hit rate, and stores the request pattern into a “history list” for being adaptive in future. If the hit rate is too low, the caching is disabled.
The loadable (sorted) read pattern is stored in/var/db/BootCache.playlist
. Once this pattern is loaded, the cache comes into effect. The entire process is invisible from users.
This feature is only supported on the root device. Further, it requires at least128 MB of physical RAM before it is enabled (automatically).
/System/Library/Extensions/BootCache.kext
is the location of the kernel extension implementing the cache whileContents/Resources/BootCacheControl
within that directory is the user-level control utility (it lets you load the playlist, among other things)
BootCache is started (via BootCacheControl
, the control utility) in/etc/rc
, and a prefetch tag is inserted (unless the system is booting in safe mode).
/etc/rc
looks for BootCacheControl
in the Resources
directory of theBootCache.kext
bundle, as well as in /usr/sbin
, and finds it in the former (but it doesn’t exist in the latter)
1) I tried to repair the filesystem with fsck. Nothing is wrong though
2) I got advice to run:
/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchS ervices.framework/Versions/A/Support/lsregister -kill -r -domain local -domain system -domain user
to reset the Launch Services database, but that doesn’t seem to do anything (and I’m not sure what that does in first place).
3) Logged in by holding Option and selecting Recovery drive. Disk Utility -> verify/repair permissions. verify/repair file system. To no avail.
4) Tried a few things using hte BootCacheControl command, like tag, mount, and
bootcachecontrol -f /var/db/bootcache.playlist generate /dev/rdisk0s2
Nothing. tried to start with -f /var/.. and it gave the same startup error, file now found, so I tried to “touch /var/db/bootcache.playlist” and got an improper header error when attempting to