Installing Windows 7 on MacBook Pro without SuperDrive
Right after I swapped my SuperDrive to second internal HDD I was graving to move my 20 GB Boot Camp partition to the other drive and make it bigger, so that I don’t have to carry another USB disk for my games.
UPDATE: From the comments it seems that on Mountain Lion 10.8.2 you do NEED rEFIt for the Windows partition to be visible in Boot Menu.
UPDATE 2: I have confirmed lately that the official Boot Camp Assistant method does work on MacBook Pro Retina (Mid 2012) with OS X 10.8.2 (12C3012) on it. So if your Mac came without SuperDrive from the Factory, try the official method first.
UPDATE 3: @Jorge_Rui posted excellent step-by-step instructions down in the comments on how he got it working. Take a look.
What didn’t work
You can skip to Success Story if you are not curious. Also, YMMV, so if my method does not work, you can try one of these and see if you have success with them.
First I tried to fake Boot Camp Assistant to create bootable USB stick, but that did not boot for some reason. Also, booting from USB-DVD did not work. Then I used Virtual Box to fully install Windows on physical partition and that did not show up in the boot menu either. With all of these options I also combined rEFIt to no avail.
EFI, rEFIt and File Vault 2
Intel Macs have been using EFI instead of BIOS for booting up the system since the beginning. If Boot Camp dual-booting is not enough for you, there is the rEFIt alternative boot manager that gives you more power over boot options. But it turns out that although rEFIt installs without any complaints, it fails to load from File Vault 2 encrypted partition, which is understandable as I haven’t yet provided my passkey.
So, running out of options, I decided to decrypt my partition, which I’d have had to do anyway sometime to be able to resize the encrypted partition over the previous Boot Camp partition (Disk Utility is not able to resize encrypted partitions). I still had rEFIt installed and I retried some of previous failed attempts, including booting from USB, but still no effect. Finally I noticed that I had actually two boot loaders – Mac’s own Option-key triggered menu and then the rEFIt that was installed on the primary Mac OS X partition. While most of the time Mac menu didn’t show me anything besides primary partition and Recovery HD, rEFIt showed me Windows partition (sometimes two of them pointing to the same partition), but was not able to boot from them (giving different errors from EFI failures to Windows complaining that winload.exe is missing or corrupt). In the end I removed rEFIt altogether.
The Success Story
OK, enough of the failures. What ended up working was a variant of the Virtual Machine method, that used Virtual Box to make the partition bootable and then copy over the installation files to that partition. Unfortunately I can not find the original post that lead me to the idea, but it was probably somewhere in this thread.
Note: At this point I had tried multitude of setups already and I can’t be sure that all of the steps below are necessary nor that all of the required steps are listed. If you find some errors, please comment on them.
Create a partition in some way. You can use Boot Camp Assistant to shrink existing HFS+ partition and create a FAT32 partition or you can do it yourself via Disk Utility or
diskutil command line tool. I had my partition left over from one of the tries with Boot Camp Assistant and USB DVD-drive. Using Boot Camp for this step has the side effect that it gives you the option to download latest Boot Camp drivers for windows (just have a USB stick ready to store them).
Set up Virtual Box guest
Now eject your Boot Camp partition so that it can be remounted elewhere. (Thanks, Bill, for pointing out that I had omitted this step). I used Oracle’s excellent (and free) Virtual Box virtualization tool. To get Virtual Box to use your physical Boot Camp partition, you have to make a raw disk image that is bound to your physical disk. In my case it was the
disk1 and I partition number 3 (
disk1s3 as seen from Disk Utility’s Info). To create the image, change directory to some good enough place to hold the file and enter (NB! adapt to your needs):
sudo VBoxManage internalcommands createrawvmdk -rawdisk /dev/disk1 -filename bootcamp.vmdk -partitions 3
Next, give yourself access to the physical disk and the just created image files:
sudo chmod 777 /dev/disk1s3
sudo chown $USER bootcamp*.vmdk
Last thing is to actually set up Virtual Box Guest OS. There is nothing special there, except that you specify your * bootcamp.vmdk* as the startup disk, instead of creating new one.
Install Windows to the Virtual Box guest as usual. I shut down the Virtual Box client at the “Setting up Windows for first use” step, but according to some posts (links to which I again have misplaced), you could stop even at the first reboot, though it didn’t seem to work in my case.
Now you should have a partition that is visible to the Mac Boot menu, but not a working Windows installation.
Next step is to restart the install, only this time on the real hardware. To accomplish this, mount the Boot Camp partition, delete everything and copy over all files from the installer ISO (Alo commented below that on his newer Mac Mini he did not need this step, but instead installed rEFIt to boot the new partition). NB! You probably need to have some kind of NTFS driver, either NTFS-3G (see my blog on how to get NTFS-3g working in Lion) or some commercial driver like the Paragon NTFS for Mac OS X I have installed.
After you copy over the files, reboot your Mac and hold down Option-key to access the Windows partition. Now install windows as you would if you had with optical disk attached.
Now that I have finally managed to jump through all those hoops to get Windows installed, I can only wish that Virtualization advances enough that I could play those old Call of Duty games without even rebooting into Windows. Until then, I hope to preserve my newly installed Windows. 😉