(TL;DR: Moved AppleIntelHD4000Graphics.kext out of /System/Library/Extensions/)
After a bit of a tumble, a MacBook Pro (13-inch, Mid 2012) started up to a folder with a flashing question mark. Replaced the internal drive with a new SSD and installed Catalina normally.
On first boot, rather than Setup Assistant, a black screen with a black cursor appeared (though Voice Over instructions could still be heard). Reset SMC and NVRAM to no avail. Repeated clean install with Mojave then Catalina again - same result.
Tried booting into safe mode, which worked (though of course not all features were available). Tried forcing safe mode on every boot (via
nvram boot-args="-x" in macOS Recovery), but performance was poor and lack of sound was a show-stopper.
Assuming a problem with the integrated Intel HD Graphics 4000 GPU (unlike the 15" 2012 MacBook Pro, the 13" does not have a discrete GPU), looked for the corresponding kernel extension in /System/Library/Extensions/.
AppleIntelHD4000Graphics.kext sounded promising; booted back into macOS Recovery, disabled SIP, moved the kext into another directory,
touched /System/Library/Extensions/ for good measure*, enabled SIP, and rebooted - success! - everything but sleep functioned well.
* According to the kextcache manpage, this is the same as
kextcache -i os_volume, which will "rebuild out-of-date caches and update any helper partitions associated with os_volume."
Theodore Sternberg's answer to iMac only works in safe mode and cursor showing weird black lines (pic attached)
historystamp's answer to How to determine if the graphics card is at fault on an iMac?
OS X El Capitan / Sierra / High Sierra Hanging on Boot [FIXED] includes this handy script for finding installed kernel extensions that are not present in the recovery partition:
# 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
The discrete GPUs in the 15" & 17" 2011 & 2012 MacBook Pro laptops seem to fail with remarkable regularity, spawning many posts on how to force use of the integrated GPU:
dosdude1's DeMux: "Firmware to disable the defective dedicated AMD GPU on 2011 MacBook Pro models. A permanent solution for radeongate."
/mac | Aug 23, 2021
Subscribe or visit the archives.