Saturday, September 3, 2011

VirtualBox Mac OS X 10.7.1 EFI

Like booting Mac OS X 10.6.8 Snow Leopard using VirtualBox, I found a way to boot Mac OS X 10.7.1 Lion using "Enable EFI (for special OSes only)". Websites discussing such things suggest using the Mac App Store to buy Mac OS X 10.7 Lion.

Get the Mac OS X Install ESD.dmg disk image from Mac OS X 10.7 Lion the Mac App Store. Then, the general steps are to create disk images for the LionInstaller and one as a Lion Starter. Restore the BaseImage.dmg image to the LionInstaller, copy Mac OS X Install ESD files over, altering some files, download some preparation files. Sutdown and uncheck Enable EFI. Start using a Mac EFI emulating booter (like Empire EFI, iBoot, nawCom, or HackBook). Create your Lion Starter image using MultiBeast and copy over utilities. Shutdown, remove the Snow Leopard disk image, add a Lion disk image, Enable EFI, and boot to the LionInstaller. Install Lion to the Lion disk image and shutdown when the installation is complete. Uncheck Enable EFI and boot into the Lion Starter to boot into Lion. Erase PlatformSupport.plist, install PlatformUUID.kext using a kext installer, Shutdown, "Enable EFI", and boot into Lion (you can remove the LionInstaller and Starter disks). Download and install the 10.7.1 update from www.apple.com. Install the rest of the updates. The instructions require an existing VirtualBox Snow Leopard VirtualBox VM (Virtual Machine) and a processor supporting VT-x (Intel) or AMD-V (AMD). Here are instructions:

1) Boot into Snow Leopard and purchase Mac OS X 10.7 Lion from the Mac App Store. Shut down the Snow Leopard VM.
2) Click the Snow Leopard VM and click Settings, click Storage, click Add Hard Disk, click Create new disk, select VDI (VirtualBox Disk Image) and click Next, click dynamically allocated and click Next, type LionInstaller for Location and leave 5 GB for size and click Next, and click Create.
3) Click Add Hard Disk, click Create new disk, select VDI (VirtualBox Disk Image) and click Next, click dynamically allocated and click Next, type Starter for Location and type 100 MB for size and click Next, and click Create.
4) Start Snow Leopard. You are prompted that the disk is not readable (twice), click Initialize (twice).
5) In Disk Utility, select the Select 5.0 GB VBOX HARDDISK Media, Click Partition, Select 1 Partition under Volume Scheme, Name: LionInstaller, click Apply, and click Partition.
6) In Disk Utility, select the Select 100 MB VBOX HARDDISK Media, Click Partition, Select 1 Partition under Volume Scheme, Name: Starter, click Apply, and click Partition.
7) Open the Mac OS X Install ESD.dmg
8) From the dock (or from Finder), click Applications -> Utilities -> Terminal
9) In Terminal, type cd "/Volumes/Mac OS X Install ESD", press enter, type open BaseSystem.dmg, and press enter.
10) In Disk Utility, click the LionInstaller partition and click Restore, drag Mac OS X Base System to the Source field, drag LionInstaller to the Destination field, click Restore, and click Erase, and Enter password and click OK. Close Disk Utility
11) Rename new Mac OS X Base System volume as LionInstaller and switch back to Terminal
12) Into Terminal, type cp kernelcache /Volumes/LionInstaller/kernelcache and press enter, type cp mach_kernel /Volumes/LionInstaller/ and press enter, and type sudo vi /Volumes/LionInstaller/Library/Preferences/SystemConfiguration/com.apple.Boot.plist and press enter and type your password and press enter.
13) In vi (a Terminal text-based text editor), press the down arrow then the right arrow until you reach the end of the line . Press a (to append or add text).
14) Press enter, press tab, type Kernel Cache and press enter, type \kernelcache and press enter. Press ESC, type :wq, and press enter (to exit vi)
15) In Terminal, type sudo rm /Volumes/LionInstaller/System/Installation/Packages and press enter. If required, type your password and press enter. Type sudo cp -R Packages /Volumes/LionInstaller/System/Installation/Packages and press enter. If required, type your password and press enter.Type cd /Volumes/LionInstaller/System/Library/CoreServices and press enter. Type sudo touch ServerVersion.plist and press enter. Type cd ~ and press enter. Type cp /Volumes/LionInstaller/System/Installation/Packages/OSInstall.mpkg . and press enter. Type pkgutil --expand OSInstall.mpkg OSInstall and press enter. Type vi OSInstall/Distribution and press enter. In vi (Terminal text-based text editor), press down arrow to the line function isVirtualMachine(){.
16) Use down arrow and type dd and delete lines between function isVirtualMachine(){ and return false;. Type dd and delete lines between return false; and the enclosing }. (so you should see three lines, isVirtualMachine(){ then return false; then })
17) Use down arrow and type dd and delete lines between function isSupportedPlatform(){ and return true;. Type dd and delete lines between return true; and the enclosing }. (so you should see three lines, isSupportedPlatform(){ then return true; then })
18) Press ESC, type :wq, and press enter.
19) Download KextBeast and MultiBeast from tonymacx86.com (to Snow Leopard and Empire EFI (or download iBoot, nawCom, or HackBoot on your host system) from prasys.info (find PlatformUUID.kext and download it to Snow Leopard if you did not use Empire EFI).
20) Shutdown. In VirtualBox, click Devices -> Choose a virtual CD/DVD file..., pick Empire EFI (or iBoot, nawCom, or HackBoot), and click Open. Click the Virtual Machine and click Settings. Click System and uncheck Enable EFI. Click OK. Start Snow Leopard and boot to the Snow Leopard disk.
21) Run MultiBeast.Click Continue, Continue, Continue, Agree, select EasyBeast Install and click Continue, click Change Install Location..., click Starter, and click Starter, select EasyBeast Install and click Continue, click Install, type password, and click Close.
22) Copy PlatformUUID.kext from Empire EFI from the within Preboot.dmg \Extra\Extensions
folder to Starter. Copy KextBeast to Starter. Shut down Snow Leopard.
23) In VirtualBox, select the VM and click Settings. Click System and check Enable EFI (for special OSes only) Remove the disks, click Add Hard Disk on the SATA Controller, click Create new disk..., click VDI (VirtualBox Disk Image) and click Next, click Dyamically allocated and click Next, OSX86-64Lion click Next and click Create. Add LionInstaller disk to IDE Controller (click Add Hard Disk, click Use existing disk, select LionInstaller and click Open). Click System, Change memory to 2048 MB. Click OK. Click Start.
24) It will boot to the LionInstaller and start the Lion installation process. Click Next. Click Utilities -> Disk Utility, select 21.47 GB VBOX HARDDISK Media, select Partition, select 1 Partition under Partition Layout and Name Macintosh HD and click Apply, click Partition, click Close. Click Continute, click Agree, select Macintosh HD and click Install. After the install, Shutdown.
25) Click the VM and click Settings. Click Storage, remove LionInstaller.vdi and replace it with Starter.vdi. Click System and uncheck Enable EFI (special OSes only). Click OK. Start the VM. It will boot to the Starter then to Lion, which will start the first boot Lion process.
26) Click Continue, click Continue, click Continue, click Continue, click Continue, click Continue, create your computer account and click Continue, select time zone and click Continue, click Start Using Lion.
27) Delete /System/Library/CoreServices/PlatformSupport.plist. Copy PlatformUUID.kext to the Desktop and run KextBeast. Shutdown.
28) Click the VM and click Settings. Click System and uncheck Enable EFI (special OSes only), click Storage and remove Starter. Click OK. Start VM
29) Download and install the 10.7.1 update from www.apple.com. The install will require a restart. Download and install the other updates from www.apple.com.

1 comment:

  1. I don't think you verified this very well, as follows:

    1) You didn't describe what the result of the first vi edit in step 14 was to add a value pair just like the one that was already there with the key = Kernel Cache and the value = /kernelcache.

    2) It was all very well to edit the Distribution code in steps 15 through 18 but you forgot to add the steps to pkgutil --flatten the resulting folder and copy it back to replace the original contents.

    3) After all that, I got the dreaded "Unknown4 of GetVar called" error while booting the LionInstall virtual disk just after it started, perhaps because my machine is a 64 bit AMD machine.

    4) Further, even had that worked, the Starter virtual disk does not appear to be bootable, perhaps due to some errors in the boot code as issued by MultiBeast (the new one for OS X Lion).

    So, no, even with my fixes I didn't get this working.

    ReplyDelete