Rotten Apples: how BootCamp can deprive of dignity

I have a somewhat old (for the Apple standards) MacBook6,1 from late 2009. It surprisingly supports the newest macOS Sierra, as well as DDR3 (thanks to the otherwise terrible NVidia north bridge), while being a Core 2 Duo machine. It also supports BootCamp, initially designed for Vista. I obviously love Vista, as it’s the wrongest version of Windows since Millennium, surpassing even the ridiculously unfinished Windows 8.x. Since Vista does not work anymore with the software I need, like Chrome and Visual Studio or “need”, like HexChat, I’d have to settle for something newer. Windows 8.x is the next wrong thing, but it creates a set of really sad, stupid and downright outrageous problems. Each of them has a solution that solves one issue, while creating an array of others, all equally unforgivable. Here’s a story of a MacBook and Windows 8.1.

The laptop is indeed old, and the last version of BootCamp it supports is 4, designed for Windows Vista and compatible with Windows 7. But Windows 7 does not support BitLocker, and I need to keep both my SSDs encrypted. So the lowest version of Windows I can pick is Windows 8.1 Pro. I wanted to perform the installation as quickly as possible, so first I decided to download all the updates using AutoPatcher and slipstream them with NTLite, with the drivers supplied by the BootCamp installer. I also removed all the Metro apps, because everyone knows thay’re useless. NTLite was working during the night, fighting with 200 updates and 40 drivers and the next day I had a working installation source for Windows 8.1 Pro.

Before ramming the pendrive into my MacBook, I decided to check the installation on a VM first. The result was not satisfactory. The account creation process was indeed faster without Metro crapware, but there were other problems. First of all, there were updates not downloaded by AutoPatcher. Some of them were about .NET, so they could be explicitly requested, but few others were only accessible via the Windows Update Catalog. I downloaded them manually and added them to my slipstream stash. Finally, there were two updates that turned out not to integrate successfully. One of them was the giant “Windows 8.1 Update” update that was around 800MB heavy. It turned out that the failure of slipstreaming this one was a good thing. Why? Well, because the Metro apps stopped working.

Now, you shouldn’t remove all the Metro apps, because some of them are vital components of the OS, like the Immersive Control Panel, or some networking gizmos, like Teredo. That’s why only the per-user crap without the shared libraries ought to go. I kept all the system stuff and two Metro apps: Store and Immersive Control Panel. Unfortunately, DISMing out the apps from the updated image breaks the entire TwinUI stack.

First I thought “who cares?” but quickly afterwards it turned out that the Immersive Contol Panel actually serves some purpose. I can live without the Store, whatever, but the following things are impossible without the PC Settings app:

  • ability to create and validate the Microsoft Account
  • ability to start OneDrive (?!?)
  • sending or receiving files, or even pairing the device, with goddamn Bluetooth!

Those were the things I need. Magically, the TwinUI subsystem was fixed by re-applying the Big Patch using ordinary Windows Update. An ugly workaround, but that was enough to have a working ISO for MacBook. I slipstreamed the remaining updates with NTLite during another night and got an installation pendrive. Naturally, giving up on removing the Metro apps was not an option. It required an annoying trial-and error, but finally I got to the stage where all the “provisioned” AppX packages were gone. What are the apps that you need to keep? Well, I am now richer with this extremely worthless knowledge thanks to the expansion of Windows 10, but the apps you need to keep in order not the break the TwinUI stack and, in consequence, the entire image are: Immersive Control Panel, Store, PlayReady, everything related to the Camera support (even the MoCamera app – you can’t remove other Camera components because they’re updated by Windows Update, not Windows Store and removing only the MoCamera applet doesn’t really remove it, only breaks it, providing a dead tile), some Teredo crap and FileManager, which turns out to be OneDrive and Photos viewer. Everything else can be thrown away. The new user accounts will be created much faster and the system performance won’t be periodically crippled by the Store updates.

Now the image was 900MB thinner (900MB of worthless apps! how!?) and workedcorrectly in the VM, so time for actual hardware has finally come. I booted the MacBook with the Alt pressed to get the boot device picker and surprisingly, I got Windows Setup and… EFI Boot! I was really happy about that. I immediately selected the modern EFI boot, the installation went reasonably fast, rebooted and… nothing. picking the Windows local EFI Boot did nothing, not even a bluescreen. Once again: why?

The answer is sad. The Windows 8.1 Setup did found a macOS EFI System Reserved partion, placed itself in it correctly but was apparently too surprised that it’s being installed on a different drive that the one with an EFI definition partition. Apparently, this simple scenario is something not supported by the Windows 8.1 Setup. The only thing I could do was to restart the setup process using the MBR boot, and lose all the EFI little advantages like a non-retarded screen resolution. This time it worked. But it only logged me in.. once. After installing the crucial Big Update and a mandatory restart, the screen went blank just after the preboot sequence. There was no obvious answer about why it is happening and I started frantically searching for an answer, which was extremely embarrasing. The reason of the blank screen is the inability to initialize the graphics adapter correctly. The system won’t default to the VGA resolution, because the driver fits the hardware. It just doesn’t work. The drivers that borked the display were naturally slipstreamed from the BootCamp package. So I created yet another DISM, this time without the NVidia driver (what was I thinking…), allowing a yet another installation to fail in the same way. Why? Because it took the NVidia drivers from Windows Update, and those were broken as well. The last resort was to find out the last driver created for the GeForce 9400M chip. It’s the 341.95 release from March 2016. After that, support for the 9M series was dropped. I slipstreamed the giant bloatware driver package from NVidia and started the installation one more time. Passed the Windows Update, rebooted – and it worked! Finally!

Unfortunately, BootCamp is a piece of crap. All the drivers from the package were correctly slipstreamed, but the BootCamp core is not a driver. So it can’t be slipstreamed and has to be installed manually. Unfortunately, it’s mandatory for the following things:

  • brightness control (the built-in Windows 8 support doesn’t work, because the driver is ridiculously terrible)
  • Keyboard F* buttons (also should be supported by the driver, but aren’t)
  • clock settings (also should be supported by a driver)
  • trackpad (the trackpad drivers do not install correctly, also all the settings should be provided by it, not by the BootCamp dialog window)

So, the entire BootCamp is worthless. But it had to be installed, because the trackpad drivers do not install correctly, despite being slipstreamed. You can try picking them manually. It’s a fun thing to do. Either you break the trackpad AND keyboard support (in that case another reinstall awaits you! connecting external keyboard requires logging in, good luck with that then) or you actually pick the correct one from the randomly-populated list of identically-named drivers. But even then, you won’t be able to turn on the right click support. Because the trackpad drivers do not extend the Mouse control panel applet like virtually every other pointing device driver ever, but instead rely on the ticks in the BootCamp control applet. So the BootCamp suite had to be installed anyway. I robbed it from all the drivers, because they were slipstreamed already, and inly started the installer for the small BC support. Then, another red flags started showing up.

BootCamp 4 installer informed me that it’s not working with Windows 8 due to the compatibility issues. I obviously ignored that alert and turned on the option to impersonate Windows 7 and it installed correctly. I got my brightness control. I got my right-click. Now the final reboot and everything will be ready. I rebooted and the first window after logon was another alert of incompatibility of BootCamp. It has a tick “do not display it again” which I fortunately¬†did not click and a cute little “Run anyway”. I hit it and… bluescreen. BAD_POOL_HEADER. Reboot. Again. Another, identical bluescreen. So right now, the only thing that prevents you from constant crashing is that little window that halts the BootCamp execution to inform you that it’s not compatible. And it’s right. BootCamp 4 simply does not work with Windows 8.1. I was really disappointed. To make everything worse, the Get Windows 10 icon appeared behind the incompatibility alert.

I had a moment of clarity: why not to try? I started the Windows 10 upgrade procedure, it took about 40 minutes and afterwards… no imcompatibility alert, BootCamp start right after logon and everything works! I started installing all the software, disabled the TPM requirement and switched it to the password prompt to start encrypting the driver with BitLocker. All the crap like Office 2016, Visual Studio 2015 and every other piece of software I need, seems to work. Windows 10 turned out to be the lowest acceptable verion of Windows on a 2009 Core 2 Duo MacBook.

The next challenge? After mounting two SSD drives, I want to extend the amount of RAM to 8GB, instead of 4. Everymac says that 8GB is supported by this device, but inserting the 1333 MHz 4GB DDR3 sticks results in the constant beeping at boot. Maybe the 1080 sticks will work…? Anyway, when I find a way to put 8GB into this machine, I’ll end up with the ultimate MacBook, the last one before discontinuing the line. All this in a classic white policarbonate, which I consider much prettier than all the following MacBooks, made of aluminum.

But the new 12-inch MacBook looks nice…