(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, touch
ed /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?
Matthieu Riegler's answer to Where is the specific driver for my GPU located
LаngLаngС's answer to GPU problem - Boot Hangs on Grey Screen
A Solution for MacBook Pro Booting to a Black Screen
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/writemount -rw /
# create a directory for "disabled" extensionsmkdir /Volumes/Macintosh\ HD/Library/ExtensionsDisabled
# view files that exist in your Extensions folder but not the recovery partitionkexts=`comm -23 <(ls /Volumes/Macintosh\ HD/Library/Extensions|sort) <(ls /Library/Extensions|sort)` echo $kexts
# move "extra" kext files to the "disabled" directoryfor 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:
MacBook Pro: How to disable discrete GPU permanently from EFI?
Force 2011 MacBook Pro 8,2 with failed AMD GPU to ALWAYS use Intel integrated GPU (EFI variable fix)
How to permanently disable (defective) graphics card in MacBook Pro?
gfxCardStatus is a menu bar app for manually switching between the dGPU & iGPU (though reportedly it "will not prevent macOS from changing the GPU").
dosdude1's "Disable MacBook Pro Dedicated GPU" instructions and MacBook Pro dGPU Disabler app
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