When I start my MacBook, I have an empty folder with a question mark. If I start Internet Recovery, I get stuck at a white or gray screen. I created a boot USB stick with El Capitan and I received a white screen. I tried several times and I received a blue screen, a gray screen, but most of the time I had a white screen.
I ran diagnostic tests from Apple (press D when the MacBook starts) and no problems were found. I reset NVRAM, but doing so did not help. Safe Mode does not work. Target mode worked. Also, I tried a USB stick with Yosemite and it does not work either. The white screen appears instead of showing the menu with Disk Utility, install OS X, etc.
I tried three different HDDs. All of them working on another Mac, but not this one. Also, I thought that I may have broken RAM and replaced it with another one, but I have the same white/gray screen issue every time. Also, I tried to create a bootable HDD via createinstallmedia (like a USB stick) and MacBook load from HDD without USB stick but I had a white screen too.
I tried running verbose mode and It's working https://www.youtube.com/watch?v=mOqs0li48mc
I tried running single-user mode and it's also working
Verbose Mode and Single-User mode is working only if USB stick with ELCapitan connected to mac (Also HDD connected to MacBook). USB stick locked to write.
system_profiler SPHardwareDataType
:
some errors(NSLocalizedDescription = The bundle bSPDisplaysReporterb couldnbt be loaded because it is damaged or missing necessary resources.)
Hardware Overview:
Model Name: MacBook Pro
Model identifier: MacBookPro8,2
Processor Name: Intel Core i7
Processor Speed: 2GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 6MB
Memory: 8 GB
Boot ROM Version: 87.0.0
Serial Number (system): C2QGW0BQDRJC
Hardware UUID: 5589AB99-C00A-5637-BE0E-A2E8D95D7DDA
Solution:
My MacBook has broken discrete GPU so I edit efivars to switch GPU from dGPU to iGPU
1: Create ArchLinux bootable USB stick (via Rufus, UniversalUSBInstaller etc.)
2: Load from your USB (hold Option while MacBook startup)
3: Mount efivars folder to root directory:
cd /
umount /sys/firmware/efi/efivars/
mount -t efivarfs rw /sys/firmware/efi/efivars/
cd /sys/firmware/efi/efivars/
4: Delete previous gpu var if exists
rm gpu-power-prefs-[press TAB key]
5: Create new gpu-power-prefs var. This command changes the default GPU for use from discrete GPU to integrated GPU
printf "\x07\x00\x00\x00\x01\x00\x00\x00" > /sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9
6: Lock write for this file
chattr +i "/sys/firmware/efi/efivars/gpu-power-prefs-fa4ce28d-b62f-4c99-9cc3-6815686e30f9"
7: Unmount directory efivars and reboot
umount /sys/firmware/efi/efivars/
reboot
Now it should work. Thanks to @pion and AppleMacFinder
Improvement:
Also when your MacBook boot macOS It can stuck on 75% so you can do next:
1: Boot into Recovery by holding
CMD+r+s
2: Disable SIP
csrutil disable
3: Disable dGPU on boot
nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00
4: Enable verbose boot mode (optional, for debug if your system doesn't boot)
nvram boot-args="-v"
5: Reboot into single user-mode by holding
CMD+s
6: Mount root partition writeable
/sbin/mount -uw /
7: Make a kext-backup directory
mkdir -p /System/Library/Extensions-off
8: Only move ONE offending kext out of the way:
mv /System/Library/Extensions/AMDRadeonX3000.kext /System/Library/Extensions-off/
9: let the system update its kextcache:
touch /System/Library/Extensions/
10: wait for the kextcache process to finish then
reboot
Links:
Also maybe another solution: