I have an instance of OS X El Capitan running on VMWare Workstation 10. I need to make changes to
/System and therefor have to disable System Integrity Protection. How do I access recovery mode on this VM so I can disable SIP?
VMware has an answer to this question. See Using the Recovery Environment (Recovery HD) in an OS X Virtual Machine:
- Power on the virtual machine.
- Quickly, in the blank black window or at the VMware splash screen, click inside the virtual machine window so that the mouse pointer disappears. Now your keystrokes will go into the virtual machine.
- Quickly, before the Apple logo appears, press and hold the Command ⌘ key and the R key together.
- Once you see the Apple logo appear, release the keys.
If you completed steps 1 through 3 quickly enough, the virtual machine will boot into the Recovery Environment.
I know this is an older question but I came across it looking for a solution to this problem so I figured I would submit an answer that contains all of the info I came across in one place.
- Windows 10
- VMWare Workstation 12 (patched to run macOS)
- macOS High Sierra 10.13.4
I originally tried adding
macosguest.forceRecoveryModeInstall = "TRUE" to my
.vmx config. This allowed me to boot into recovery and could disable SIP but then I couldn't get the VM to boot normally, even after removing that line.
The solution to this problem I found was to just delete the
.nvram file. Unfortunately, that's where the flag to disable SIP is stored so when my VM came back up SIP was enabled again.
- Completely shutdown the macOS guest
- In your
.vmxconfig, add the line
bios.bootdelay = 2000to pause for 2 seconds on the gray VMWare POST screen before booting
- Press and hold ⊞ Win + R when the POST screen comes up and hold it until the Boot Manager appears
EFI Internal Shell (Unsupported option)
- At the
fs2:\com.apple.recovery.boot\boot.efiand press Enter to boot into recovery
- From the menu bar click
csrutil disablefrom the terminal, followed by
- Once your VM has rebooted normally you can verify that SIP was disabled by opening a terminal and running
To turn SIP back on, follow the same steps as above but run
csrutil enable at the recovery terminal instead.
Note: You'll probably want to remove the line that was added to the
.vmx config so you don't have to wait that extra couple of seconds each time you power on your VM.
This option is valid for vCenter, not sure about Workstation.
You might have a machine that boots very fast and are unable to hit keys in time.
Click on VM and select tab Summary and then under VM Hardware -> Edit Settings: VM Options: Boot Options: Boot Delay Enter 5000 as milliseconds ( 5 seconds ).
Restore settings when done to avoid unnecessary boot delay in future.
I take a hint from a comment in this blog post and realize that disabling SIP in guest VM is actually simple.
- In VMWare boot screen, click F12 to enter BIOS setup
- Select Boot Maintenance Manager > Boot From File
- Select the recovery HD and pick the right efi
- After booting into recovery mode, start Terminal
I was able to get this working on my Windows VMware install after many tries. (And yes I know I'm not supposed to do that, but I'm also not supposed to drive over 55 MPH either). In hindsight, my mistakes were either not using the correct key combo, or not holding it long enough.
I had to edit the VM config file (.vmx, in the virtual machine folder) to add the 5 second delay. Then the correct key combo on a Windows keyboard was Windows-R, and I had to press that once and hold it for the 10 seconds or so until the apple logo appeared. Then it went through what seemed to be the normal boot sequence, but at the end put me into recovery mode where I could bring up a terminal window, and type
Finally, exactly what I needed to get my screen resolution back!
VMware Workstation 12 on Windows 10.
The steps does work. It will boot into a window that let u reinstall the OS, disk utilities, and two other options (I can' remember).
Then above you will see "Window" click it and you will see a drop down that allow access to terminal.
Restart the VM.