Windows 10 on Old Macs

Windows 10 on old mac
This is Windows 10 on MacbookPro 5,5

We all know that Apple encourage people to upgrade all the time and to buy new product, just like the Windows 10 on Bootcamp, any Macbook Pro, Air, Mini server before 2012 is not supported and Mac Pro before 2013 is not supported as well.

However, there are situations that we need Windows 10 on our old Mac and no need to waste the hard earned money.

Before we start, there are some tech problems need to know:
1. Better install Windows 10 on EFI if you'd like multiple OS X, the hybird MBR is limited to 4 partitons(Apple has changed the Sierra and later to macOS, but we still call it OS X)
2. We need to change the Display and Bridge Control register in EFI shell before loading Windows to be able to use video card due to Apple's old implementation, so the No.3
3. We want to install rEFInd to load Intel's open EFI shell - Shell_Full.efi

Here is a summary of how to install Windows 10 on your old Mac:

1. Install rEFInd

curl http://sourceforge.net/projects/refind/files/0.11.2/refind-bin-0.11.2.zip/download -o refine-bin.zip
unzip refine-bin.zip && cd refind-xxx-folder-name
sudo ./refind-install

2. Prepare partiton - You might shrink your OS X HDD and create a new partition for Windows 10

Sierra, Marverick and Windows 10
Sierra, Maverick and Windows 10 partition layout

3. Boot from Windows 10 disc/USB and install Windows 10 as normal

4. Drivers for Windows 10 - the summary applies to MacbookPro 5,5

4. 1. Audio:
Install CirrusAudio64.exe from bootcamp 4 driver:\WindowsSupport\Drivers\Cirrus

4. 2. Bluetooth:
Install AppleBluetoothBroadcomInstaller64.exe and other bluetooth related drivers from bootcamp 4
And go to Device Managers -> Bluetooth -> Update Driver ->

4. 3. Trackpad:
Install all Trackpad related drivers from bootcamp 4

Copy BootCamp64.msi from bootcamp 5 package and run BootCamp64.msi from cmd as administrator
Then go to control panel and enable Trackpad as usual

4. 4. MacBook5,5 Nvidia 9400m video card Windows 10 loop repair / restart - This is most tricky part of the summary

As we mentioned before, to make the video card driver work, we need Intel's Open Source EFI shell and change the register before loading Windows 10. Otherwise, Windows 10 will keep rebooting and repairing

The Shell_Full.efi is stored on svn.code.net, if you go to Intel website and follow the link, you will know this is genuine and legitimate shell program.

https://software.intel.com/en-us/articles/uefi-shell
http://www.tianocore.org/
https://github.com/tianocore/edk2/tree/master/EdkShellBinPkg/FullShell/X64
https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi

So, let's get the shell. We'll download the shell to EFI partition and in the tools folder:

sudo mkdir /Volumes/efi
sudo diskutil mount -mountPoint /Volumes/efi disk0s1
cd /Volumes/efi/EFI/tools
curl
https://svn.code.sf.net/p/edk2/code/trunk/edk2/EdkShellBinPkg/FullShell/X64/Shell_Full.efi -o Shell_Full.efi

Here is the configuration file for rEFInd, in the config file, we load our own command through Intel's efi shell

cat /Volumes/efi/EFI/refind/refind.conf | grep -v "^\#" | grep -A4 Windows
menuentry "Windows via shell script" {
icon \EFI\refind\icons\os_win.png
loader \EFI\tools\Shell_full.efi
options "fs0:\EFI\tools\launch_windows.nsh"
}

This is the command that change the register:

cat /Volumes/efi/EFI/tools/launch_windows.nsh
mm 0010003E 1 ;PCI :8
mm 02000004 1 ;PCI :7
fs0:\EFI\Microsoft\Boot\bootmgfw.efi


OR if you'd like to test the command in shell before writing to config file, try this:

mm 0010003E -PCI 8
mm 02000004 -PCI 7
fs0:\EFI\Microsoft\Boot\bootmgfw.efi


02 00 00 is Display VGA
00 10 00 is Bridge Control

To find out the register value through efi shell

Shell> pci -b
Shell> pic -i 00 10 00 -b
Shell> mm 0001003E -PCI 8
Shell> pci -i 02 00 00 -b
Shell> mm 02000004 -PCI 7

If everything is done properly, your Windows 10 should boot without problem after installing video driver.