0

Some background: My 2011 17" MacBook Pro (running High Sierra) has finally succumbed to the Radeon issue and won't boot up. I know this because it would flicker green where there was pixel shading so I was using the gfxCardStatus utility to only use the Integrated GPU.

Well this week it crashed and when I booted up, it would show green vertical bars over the grey background. It booted up once, I saw the desktop and then rebooted. since then I've been looking at all of the articles online and was going to proceed with disabling the AMD GPU using the terminal in Single User Mode.

This answer was particularly useful and I managed to get as far as disabling the GPU on by setting the NVRAM variable: nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00

The only problem was mounting the drive as writable, seems that my APFS formatted drive is in read-only mode and I'm unsure how to proceed from here. I've removed the drive and mounted it in Windows using Paragon APFS but it's only in read-only mode. So I'm unable to move the required AMDRadeonX3000.kextand am now stuck.

When I boot up now, I see the normal bootscreen, see the Apple logo and the progress bar goes to about 50-60% and then nothing else happens.

The real question(s): Does anyone know how to either disable the Active Snapshots? Is this the right path to follow? Am I going to break things further?

Would I be complicating things if I installed this drive in my 2012 MBP i7? I have a feeling it's not going to boot like a Windows machine would and I don't want to do any damage.

I'm not opposed to reflowing etc it's just that in South Africa, the guys who will do it seem sketchy.

2
  • If you boot to Command - R - S - do you get a recovery single user mode / terminal that can run fsck or Disk Utility to repair the drive and volumes? There's a lot going on here with older hardware, mods, etc... it might be time to erase and install and simplify the mods / or just re-perform them over a clean OS (Basically snapshots are the canary in the coal mine - if your system is too fragile for that lightweight "undo" - it's fragile for other reasons)
    – bmike
    Commented Sep 28, 2019 at 17:22
  • @bmike I wasn't sure a Mac OS installer would work with the faulty GPU, guess there's no harm in trying, I'll just slap in another drive so I don't overwrite the current one for no reason. In your experience, can you put the drive (from the 17") into another MacBook (say a 15") and boot?
    – Daniel
    Commented Sep 30, 2019 at 7:11

2 Answers 2

1

MacOS protects system level files as well as kext files. Maybe the following will help you. Please backup everything up and research it a little further before attempting making any of these changes.

To disable System Integrity Protection: Boot into recovery mode and enter the following terminal command

csrutil disable

Reboot

Changing Kext Files To allow yourself the ability to change kext files you should try this:

sudo nvram boot-args="kext-dev-mode=1"

If you replace or edit any kext files, it’s very important you maintain the correct owner and user/group permissions. You may also need to rebuild your kextcache after changing any of the files within your extensions folder.

To always boot and shutdown in verbose mode This will help identify hang ups.

sudo nvram boot-args="-v"

To return your system back to normal

sudo nvram boot-args=
1
  • Thanks for the answer however kext-dev-mode=1 is obsolete on High Sierra and has no effect according to Apple (and my own test). So I'm unable to make any meaningful change with the drive still in read-only mode. Do you have any suggestions on how to get around that? Right now it seems I have very limited options
    – Daniel
    Commented Sep 30, 2019 at 8:47
0

The solution was a combination of a few different suggestions. It involves disabling the AMD discrete GPU, disabling SIP, creating a rescue disk and using a grub bootloader to boot into your Macbook!

I've tried to outline the steps I followed as accurately as possible to help someone else:

Disable the GPU on start up

  1. Boot into Single-User Mode (CMD + S)
  2. Executing the nvram command (in the terminal) to disable the GPU on boot nvram fa4ce28d-b62f-4c99-9cc3-6815686e30f9:gpu-power-prefs=%01%00%00%00

With High Sierra & APFS you won't be able to write to the file system at this stage. (This is where I was stuck when I posted this question) If you've entered the command above correctly, you can boot into Recovery and disable SIP

Disable SIP

  1. Reboot the Macbook (enter reboot in terminal and hit Return)
  2. Boot into Recovery Mode (CMD + R) - this is now possible since the discrete GPU is disabled
  3. If you can see the GUI and can work within in (and previously weren't able to) you can confirm you've disabled the GPU! Select your language and continue
  4. Open the Terminal (Utilities-> Terminal)
  5. Enter the command csrutil disable (the risks involved in doing this is outside of the scope of this answer)
  6. You should see a prompt confirming the disabling and an instruction to restart.

Create a Rescue Disk

This part is where I have to thank blackgate from github, his tutorial (found here) made it possible to boot into MacOS

  1. Format your USB drive as FAT32 name the volume "RESCUE"
  2. Download an Ubuntu ISO
  3. Copy the EFI and boot folders from the ISO to your thumb drive
  4. Edit the RESCUE/boot/grub.cfg file in a text editor to contain only the text below:

(Edit the file on the flash drive)

set timeout=10
menuentry "macOS" {
    outb 0x728 1
    outb 0x710 2
    outb 0x740 2
    outb 0x750 0
    exit
}

Boot with Flash and into MacOS

  1. Insert the flash disk in the Macbook and reboot holding the Option key
  2. Select the EFI drive on the right (not the MacOS drive)
  3. You should see a grub bootloader (black screen with white text) it will automatically boot into MacOS after 10 seconds (see the first line set timeout=10 in the grub.cfg)
  4. After a while you should see the Mac bootscreen and finally the login screen
  5. Login as normal
  6. Now open Terminal from within MacOS and make the GRUB change permanent (or skip this if you just wanted to boot into the machine)

Making the grub bootloader permanent

Assuming you named the disk "RESCUE" as instructed, execute the following series of commands (you will need to authenticate when using sudo):

cd /Volumes
sudo mkdir efi
sudo mount -t msdos /dev/disk0s1 /Volumes/efi
sudo mkdir /Volumes/efi/boot
sudo mkdir /Volumes/efi/EFI/grub
sudo cp -R /Volumes/RESCUE/boot/ /Volumes/efi/boot
sudo cp -R /Volumes/RESCUE/EFI/boot/ /Volumes/efi/EFI/grub
sudo bless --folder=/Volumes/efi --file=/Volumes/efi/EFI/grub/grubx64.efi --setBoot
sudo bless --mount=/Volumes/efi --file=/Volumes/efi/EFI/grub/grubx64.efi --setBoot

My experience was that the final bless command however it's been able to boot into MacOS repeatedly since following the steps in the Gist article.

There's a lot more that's involved but the primary issue that I faced, which was an inability to write to the OS file-system and move kexts was overcome by following these steps.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .