MBP boots only through single user mode
After using my MBP and shutting it down as usual, it fails to boot.
If no keys are pressed during booting ( normal boot ), a progress bar will appear on the bottom side of the screen, moves slowly, and shut downs after 4-5 seconds.
Booting with verbose mode enabled ( holding Cmd+V while booting ) gives the following logs before it dies :
hfs: mounted SSD on device root_device
com.apple.launchd 1 com.apple.launchd
com.apple.launchd 1 com.apple.launchd
***
com.apple.launchd
** /dev/rdisk0s2 (NO WRITE)
** Root file system
Executing fsck_hfs (version hfs-226.1.1).
** /dev/rdisk0s2
** Root file system
Executing fsck_hfs (version hfs-226.1.1).
** Checking Journaled HFS Plus volume.
The volume name is SSD
** Checking extents overflow file.
** Checking catalog file.
AppleUSBMultitouchDriver::checkStatus - received Status Packet, Payload 2: device was reinitialized
Invalid index key
(4, 20220)
Invalid node structure
(4, 38065)
** The volume SSD could not be verified completely.
Kext loading is now disabled.
Kext unloading is now disabled.
Kext autounloading is now disabled.
com.apple.launchd 1 com.apple.launchd
n 7 22:08:18 2014
com.apple.launchd 1 com.apple.launchd.System
continuing
hfs: unmount initiated on SSD on device unknown device
done
CPU halted.
syncing disks... Killing all processes AirPort: Link Down on . Reason 8 ( Disassociated because station le --- ...something
<mbp dies at this point, screen off>
I tried booting to Recovery mode and run disk utility. Verifying the system drive gives no errors. Pressing the Repair button gives an error message ( of which I forgot ). Pressing Verify button after this gives another error message.
Booting into single user mode ( holding Cmd+S while booting ) works, I tried running fsck, and it fails; ends with CPU halt message and it shuts down. However if I mounted / with read and write access, then exit the terminal and proceed to boot, it boots successfully.
Running Verify Disk Permission using Disk Utility on the system partition (SSD) gives the following logs :
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/vi.lproj
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/vi.lproj/InfoPlist.strings
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/zh_CN.lproj
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/zh_CN.lproj/InfoPlist.strings
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/zh_TW.lproj
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/zh_TW.lproj/InfoPlist.strings
Open error 5: “Input/output error” on usr/standalone/i386/Firmware.scap
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/English.lproj/InfoPlist.strings
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/unimap.txt
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/uniyue.txt
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/zhmpcb.btb
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/zhmpcp.btb
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/zhyjcb.btb
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/Resources/zhyjcp.btb
Open error 5: “Input/output error” on System/Library/ScreenReader/BrailleTables/Duxbury.brailletable/Contents/_CodeSignature/CodeResources
Open error 5: “Input/output error” on usr/standalone/i386/boot.efi
Open error 5: “Input/output error” on usr/standalone/i386/tmbootpicker.efi
Permissions verification complete
Currently, I have to boot to Single user mode and mount / with read and write access manually to boot to OSX successfully. I have no idea what caused this and the solution to this problem. Please help me on solving this issue.
Solution 1:
Issue solved; no physical errors. These are what I did:
First I analyzed where the error occurred :
...
** Checking catalog file.
Invalid index key
(4, 20220)
Invalid node structure
(4, 38065)
The volume SSD could not be verified completely.
...
fsck
stops while scanning catalog files. Let's try reading fsck_hfs
user manual by executing man fsck_hfs
for clues.
...
-R flags Rebuilds the requested btree. The following flags are supported:
a Attribute btree
c Catalog btree
e Extents overflow btree
...
Let's try rebuilding catalog btree then. fsck_hfs -Rc /dev/rdisk0s2
Results: fsck
does not stop at catalog file check anymore, and the Invalid index key
error disappeared, revealing more errors ( clues! ).
** Checking extents overflow file.
Incorrect block count for file Cache.db-wal
(It should be 114 instead of 119)
** Checking catalog file.
Missing thread record (id = 30291961)
Incorrect number of thread records
Incorrect number of thread records
** Checking multi-linked files
** Checking catalog hierarchy.
Invalid directory item count
(It should be 221 instead of 244)
Invalid volume file count
(It should be 1318081 instead of 1318117)
** Checking extended attributes file.
Invalid node structure
The volume SSD could not be verified completely.
fsck
now stops when checking extended attributes file. Let's try rebuilding the attributes btree with fsck -Ra /dev/rdisk0s2
.
Result(s): All errors, except Invalid node structure
disappeared after the first repair attempt. It shows several invalid nodes, then attempts the second repair, and rechecks. It still shows some invalid nodes, but even less then before.
However the fsck
stops with a message saying that it stops making repair attempts after 3 check failures. I ran fsck -Ra /dev/rdisk0s2
again. It attempts to repair again, then rechecks. No invalid node structure error shows up!
It now makes Invalid volume free blocks count
, Invalid volume file count
, and Invalid volume directory count
errors, but it doesn't stop yet!
After yet another attempt of repair, fsck
finished without any errors.
Shut down. Boot normally without entering single user mode. And it works!
Problem solved by running fsck
several times, rebuilding catalog btree, and attribute btree several times.