Step by step instructions to remove integrated Intel HD graphics GPU kernel extension kexts with FileVault and SIP enabled

I’ve been working on a 2011 15″ MacBook Pro for a friend, and encountered a unique situation: the Intel integrated graphics are faulty, while the discrete AMD GPU still works fine. (in all my searching, everybody else has encountered the opposite problem, a failure of the discrete GPU, while the integrated Intel HD GPU still works fine)

Safe boot and the macOS install/recovery work fine, since the accelerated Intel drivers aren’t loaded. However, an attempt to perform a normal boot hangs, with a kernel debug message in the system log about a “possible hang in main graphics engine”.

As a workaround, I moved all of the AppleIntelHDxxxxxx.kext drivers out of /System/Library/Extensions and rebuilt the kernel cache, and I’m using GFXCardStatus to force the machine onto the discrete GPU upon login. The MBP is now running flawlessly, but I’m concerned about a future system update reinstalling the kexts that I removed.

Ideally, I’d like to prevent any system updates from installing the drivers that I removed, or alternatively, a way to automate or script the recovery process.

Meanwhile I’ll document the steps to repeat the process, in case a future update reinserts the drivers. The process was complicated by FileVault and SIP, making it necessary to boot from a USB installation disk or the recovery partition, mount the FileVault volume with Disk Utility, and then move the kexts out of /S/L/E.

  • note: “↵” symbol means press enter/return key, and all commands go on one line until the ↵ symbol is encountered, despite any line wrapping shown in this blog.
  • While powering on, press and hold Command-R.
  • At the language selection screen, click the arrow to continue.
  • From the menu bar, from the “Utilities” drop-down, select “Terminal”
  • diskutil coreStorage list ↵ (press enter/return)
  • From the output of the command, find the alphanumeric code representing the logical Volume UUID.
    Highlight, right-click, and copy it, then paste it in the following command (instead of the 111-222-333-44-555555)
  • diskutil coreStorage unlockVolume 11111111-2222-3333-4444-555555555555 -stdinpassphrase
  • Enter your password at the prompt, then press ↵.
    The output of this command should show “Logical Volume successfully mounted as…” followed by the mount point, which contains the name of the volume, such as “Macintosh HD”. Note the name of the volume, and if different from “Macintosh HD”, then substitute in the following command.
  • (On this step, remember to use the BASH tab completion feature to be sure you don’t make a type!)
    cd /Volumes/Macintosh\ HD/System/Library/Extensions
    ls -al AppleIntelHD*
    (should see list of many files)
  • mkdir backup-06Oct16 ↵
    mv AppleIntelHD* ./backup-06Oct16/ ↵
    (use backup-XXXXX from previous command)
    cd .. ↵
    ls -al AppleIntel* ↵

    The last command should output “no such file or directory”, confirming that the files have been moved into the backup-xxxxxx folder created earlier.
  • Apple menu, restart, while holding Command-S
  • enter password at prompt
  • Once text stops scrolling:
    fsck -fy ↵ and wait about 2 minutes for “xxx appears to be OK”.
    mount -uw / ↵
  • Press Control-D (not command-D). It should now boot successfully!

Published by

randy

Owner of this blog.