I’ve just successfully installed Windows 7 (64-bit) on my iMac via Boot Camp, and wanted to post a few notes in the hope they’ll help anyone else who struggles with the process. This post describes how to resolve both an issue with Boot Camp Assistant (the “files cannot be moved” error), and also a problem where the Boot Camp drivers installer on Windows can refuse to install 64-bit drivers due to an “unrecognized system”.
My machine here is an early 2009 24” iMac 3.06GHz Core 2 Duo (model “iMac9,1”), with 4Gb of DDR3 RAM, a 1Tb internal drive and an Nvidia GeForce GT 130 (512Mb) graphics card. The version of Windows 7 I wanted to install is the 64-bit version of Windows 7 Ultimate, and I’m currently running Snow Leopard 10.6.2. Necessary tools include a Snow Leopard installation DVD, and of course the Windows 7 installation DVD.
Mac OS X includes a utility called Boot Camp which allows you to dual-boot your machine between OS X and Windows. Boot Camp is essentially two things: Boot Camp Assistant (in your Applications -> Utilities folder in OS X) which allows you to partition your drive (in-place, non-destructively) to create a suitable partition for Windows, and the Boot Camp drivers (which are present on your OS X installation DVD).
The first step, then, is to launch Boot Camp Assistant in OS X and choose what size of Windows partition you want. Since I was installing the 64-bit version of Windows 7 (recommended minimum drive size of 20Gb, and ideally 32Gb), and I also wanted to install some large games under Windows, I chose a partition size of 50Gb. You probably won’t be able to select precisely 50Gb (it’s a slider control), so I chose slightly over that. I clicked partition, and after a few minutes, it failed.
I got the dreaded “some files cannot be moved” error, which is notorious (try googling for it) when trying to use Boot Camp Assistant. I then spent the better part of an entire day researching and trying solutions. I’m distilling those findings into the following list of things you can try if you encounter that error.
Try these steps one at a time and in the following order. After you have tried each solution, give Boot Camp Assistant another try. Hopefully you won’t have to try very many before it works. Naturally, since we’re modifying your disk, you should make sure you have a full backup first. It’s well worth delaying by a day or two, even if you need to buy a new Time Machine drive and then let a full backup run overnight, just so you have a disaster-recovery strategy.
- Boot your Mac into Safe Mode. You can do this by holding down the Shift key as soon as you've heard the startup chime/bong, and keep it held until you see the login window. Once you're booted into Safe Mode, try using Boot Camp Assistant. Please note that Safe Mode is a graphical Mac OS X environment; it's not to be confused with Single User Mode, which is a command-line environment you can instead boot into by holding Command-S during boot. Safe Mode prevents third-party kernel extensions (amongst other things) from loading, some of which can interfere with Boot Camp Assistant's partitioning process. I've been told that Little Snitch (which I use) may be one such example.
- Boot from your OS X DVD and run Disk Utility (it's in the Utilities menu on the menubar once you've chosen a language in the installer screen). Select your primary hard drive, and click Repair Disk. As long as it manages to repair any errors it finds, you can then reboot from your hard drive and try Boot Camp Assistant again. If the repair fails, however, you need to skip down to the final step below.
- (This is the solution that worked for me, even after trying most of the solutions above and below!) Boot from your OS X DVD and run Disk Utility. With your primary hard drive selected, go into the Partition tab. Now, reduce the size of your main partition by the same amount you want to later devote to Windows; i.e. if you want a 50Gb Windows partition then reduce your primary partition by that amount. Then, once Disk Utility has done that, increase the partition back to its original size. I know that sounds odd, but trust me. Disk Utility will perform these actions non-destructively (as long as you have sufficient contiguous free space). You may have to do the reduction and/or increase in several smaller stages. I managed to do the whole 50Gb in one stage, but I've read that sometimes it's necessary to do it in multiple steps. Then reboot, and try Boot Camp Assistant again.
- You might not have sufficient contiguous (adjacent, all-in-one-chunk) free space on your drive to make the partition, even if you do have enough free space in total. Thus, what we need to do is move all the stuff on your drive to the start of the drive in one big continuous chunk; this is of course called defragmenting. OS X does not include a defragmenting utility (as a Unix-based OS it does perform on-the-fly defragmentation, but not for all sizes/types of files). The utility of choice for performing this defragment seems to be iDefrag. I had many recommendations of it for solving this specific Boot Camp issue, and I did indeed buy a copy and run it before I solved my issue with the previous strategy (so perhaps my solution was actually the combination of iDefrag and the previous point). You should use the "Compact" defragmentation algorithm in iDefrag, which will necessitate running iDefrag from a bootable volume - iDefrag includes a utility to create such a volume, and you'll of course need a blank (single-layer) recordable DVD and an optical drive capable of burning it. The defragmentation may take several hours; on my drive which had 14% file fragmentation in about 300Gb used on a 1Tb drive, it took around 2 hours. Afterwards, reboot and try Boot Camp Assistant again.
- If you've got this far then you've just tried defragmenting, without success. You should now go back and try strategy 3 above (the Disk Utility partition shrink-then-expand one) again. As I said, this might have been the combination of tactics which actually fixed the problem for me. It'll only take you another 10 minutes, and if it works then it's a lot better than the last resort below.
- If all else fails, you can do as Boot Camp Assistant suggests and boot from your OS X DVD, reformat your primary drive (as a single HFS+/Extended Journaled volume), and restore your entire drive from your backup - having a full Time Machine backup makes this a painless though understandably time-consuming process. You must have a full backup of your data first, since the reformatting process will of course destroy all data on your drive. This strategy, whilst a complete pain, will resolve the issue. In the unlikely event that you still have problems, it may be time to obtain a replacement internal hard drive.
Eventually, using one or more of the strategies above, you’ll find that Boot Camp Assistant will successfully partition your drive. At this point, you can insert your Windows 7 installation DVD and click the Start Installation button (in Boot Camp Assistant). Your Mac will reboot and the Windows installer will begin; be sure to specify that it’s not an Upgrade installation, which was the default when I installed mine. Your partition has no current version of Windows on it, so you’re not upgrading.
It’s all relatively straightforward at that point, with the sole note that you must select the “BOOTCAMP” partition as the place to install Windows. You must not use the Windows installer to otherwise modify any partitions. Simply select the BOOTCAMP partition, click “Drive Options”, then click “Format” - the partition will be formatted as NTFS, which Windows 7 requires. It will happen rapidly, with no confirmation, but everything is OK. Click Next and continue with the installation.
My installation took around half an hour, during which the machine rebooted several times. Once you finally reach the Windows desktop, you’ll be on your wi-fi network (you’ll have selected it previously, entering a password if required), and your wired (or USB RF wireless, if you have such a mouse) keyboard and mouse will be working. If you have a Bluetooth Apple keyboard, you’ll want to have a USB wired keyboard lying around just until we get everything set up. You will probably currently have only your primary screen working (if you have more than one), and it’ll be at a low resolution (so everything will be huge and blocky/blurry). That’s fine, and we’ll fix it in a moment.
Windows will soon ask if it can download its various updates; you should allow it to do so (if Windows doesn’t ask to do so after a couple of minutes, you can just launch Windows Update from the Start menu). You can do this even if you haven’t yet activated your copy of Windows, since you have a 30-day grace period before that’s necessary. In the meantime, get all of the required updates. I also explicitly enabled 4 other “recommended” ones, including a Broadcom wireless driver, Nvidia drivers, a Win 7 64bit update, and something else. Basically, all the recommend/optional updates except the foreign language packs (you’re of course free to also install whatever language packs you’ll find useful at this point). They all downloaded and installed, and I restarted Windows. After the restart, your screen resolution should be back to your monitor’s native resolution.
Now, we must obtain suitable Boot Camp drivers (drivers for your Mac’s unique hardware, including your iSight, trackpad, backlit keyboard, and a host of other things). Such drivers are present on the Snow Leopard installation DVD, but there’s a snag: at time of writing (10th January 2010), the Boot Camp drivers installer on the Snow Leopard 10.6.0 DVD did not allow me to install the 64-bit drivers. It complained that my system was unrecognised (I’m not sure if it meant the Windows 7 64-bit OS or my particular iMac). If you’re reading this at a later time, Boot Camp may have been updated to resolve this issue. Likewise, if you’re installing the 32-bit version of Windows 7 rather than the 64-bit version, you won’t have the issue. In the meantime, we can still solve the problem.
(Note: on January 19th 2010, Apple released Boot Camp 3.1 with official support for Windows 7, resolving this issue. I’m leaving the information here intact though, in case it comes in handy for someone regardless. If you need to download Boot Camp 3.1, you can get the x86 32-bit version here, or the ‘x64’ 64-bit version here. Those are .exe files which you’ll want to run from within Windows.)
What we’ll do is launch the BootCamp64 drivers installer directly, instead of allowing Apple’s gateway installer (setup.exe) to block us. To do this, you have to start a Command Prompt in Windows using elevated/administrator privileges. You can do so easily by using the Start menu to get to the Command Prompt icon (it’s in Accessories or some such group), then right-clicking it and choosing to launch it as an administrator (or with admin privileges, or whatever the wording is - there’s an option for it there in the right-click menu near the top, likely with a shield icon beside it).
From that command prompt, execute the BootCamp64 installer directly. Working from memory, it’ll be here or similar:
(Assuming your optical drive containing the Snow Leopard DVD is drive D, of course.) You can literally type that entire path into the command prompt (without any explicit command before it), and hit return to execute it. Be sure to use backslashes instead of forward-slashes, since this is Windows. If you’re using a Mac keyboard, you may find that the backslash character is typed by hitting an unusual key; in my case it was the plus-minus/section key near the top-left of my Apple Wireless keyboard.
The installer will run and allow you to install Apple Software Update. Apple Software Update will then download and install appropriate 64-bit drivers from the internet. It took a good 5 minutes or more on my machine, and when it’s done it asks you to reboot. It all worked just fine.
You’ll then have a Boot Camp icon in your taskbar (or rather in the overflow menu of the taskbar) - it looks like a black diamond. It gives access to a few Mac-hardware-specific settings, including Startup Disk, a Brightness slider (on my iMac, anyway), whether the Function keys behave as regular function keys without pressing the Fn key (on my wireless keyboard), etc.
The only further thing I had to do was use the Bluetooth control panel (in Windows) to make sure it recognised my Apple Wireless keyboard, which it did after a couple of pairing attempts. Upon reboot, it finds the keyboard and pairs with it seamlessly, as on OS X. When rebooting into OS X, OS X still also finds and pairs with the keyboard too.
That should be it. You’ll want to activate your copy of Windows at some point in the first month, if appropriate, and naturally you may wish to invest in anti-virus software. You might also want to check your Windows Experience Index score; you can do so by choosing Computer from the Start menu, then clicking System Properties in the toolbar. On my system as specified previously, my score is 5.9 (the same sub-score for disk access, graphics and “gaming graphics”, with 6.6 for both RAM and CPU). Aero’s visual effects are all enabled by default, and performance is excellent.
You can boot back and forth between Windows and Mac OS X by either explicitly choosing which OS to restart into (via the Boot Camp control panel in Windows, or the Startup Disk pane in System Preferences in OS X), or you can choose at boot time by holding down the option/alt key during boot.
If you find that you want to use your Windows 7 Boot Camp installation whilst staying in Mac OS X (without having to boot your whole machine into Windows), remember that you can do so via VMware Fusion (it won’t damage your ability to later fully boot into Windows). If you later want to make your Windows 7 installation become entirely virtual (running it only virtualised in OS X, and no longer being able to fully boot into it), getting rid of the need to have an actual partition for it, Fusion can do that for you too.
An entire day or more of my life has disappeared, but hopefully your experience will be considerably less taxing. And to think I did this just so I could use my beta key for Star Trek Online.