I updated a friend's Mac A1342 from Lion v10.6.8 to El Capitan then to Sierra v10.12.3. You can't update 10.6.8 to Sierra direct as minimum requirement is version 10.7.

Mac was a bit slow after the update as photoanalysisd and other daemons are running in the background. I also decided to upgrade the RAM from 2 x 1GB to 2 x 2GB, so I shut it down, when I switched it back on that is the time the progress/loading bar is stuck to 100%.

I tried the following but none fixed it:

  • Boot to Safe Mode/Boot (press left Shift after pressing power until the Apple logo appears), but it's stuck to 100% still.
  • PRAM reset (press Command (?) + Option + P + R after pressing power, hold until the computer restarts and you hear a sound for a second time)
  • SMC reset
  • Recovery mode (press Command + R until the Apple logo appeas) then Disk Utility and run First Aid - no issues found
  • Single User Mode (press Command + S) then issued the fsck -y - no issues found but still stuck to 100%

I thought it was the memory upgrade/replacement that triggered it, but it's not. Even though, I tried a different hard drive and went to Recovery mode (Command + R after pressing power) and restore from a Time Machine backup (back to Lion though). Then I was able to boot properly back to the desktop, I then updated to El Capitan again, then to Sierra. I had few shutdown and there was no problem. I did another shutdown and it's back to progress bar stuck to 100%. But I also forgot that I also updated the HP and Epson printer drivers which caused the 100% stuck loading bar issue.

I plugged in the original hard drive back and started on Verbose Mode (Command + V), where it stopped on "SmartBattery: finished polling type 1" then "SmartBattery: finished polling type 4".

Then when I viewed the system.log (tail -f system.log), I saw an error:

com.apple.xpc.launchd[1] (com.apple.kextd): Service only ran for 2 seconds. Pushing respawn out by 8 seconds.
com.apple.xpc.launchd[1] (com.apple.kextd[284]): Service exited with abnormal code: 71

What fixed the issue is by following https://www.justinsilver.com/technology/os-x-el-capitan-10-11-1-hanging-on-boot-fixed/ which you have to type the following command once in Recovery mode.

# mount the drive as read/write
mount -rw /
 
# create a directory for "disabled" extensions
mkdir /Volumes/Macintosh\ HD/Library/ExtensionsDisabled
 
# view files that exist in your Extensions folder but not the recovery partition
kexts=`comm -23 <(ls /Volumes/Macintosh\ HD/Library/Extensions|sort) <(ls /Library/Extensions|sort)`
echo $kexts
 
# move "extra" kext files to the "disabled" directory
for kext in $kexts; do
    mv /Volumes/Macintosh\ HD/Library/Extensions/$kext /Volumes/Macintosh\ HD/Library/ExtensionsDisabled/$kext;
done
 
exit