I can't think straight today (dumped a page worth of text after going on a tangent on EFI and eGPUs) so I'll just start straight with how to install Windows, OSX, and have one more partition.
Normally it's pretty straightforward to add partitions (not sure why would anyone need to slice a disk into quarters these days with a regular windows PC), but when it comes to Bootcamp's default method of installing windows, partitioning becomes tricky because Windows Disk Management would say that this Master Boot Record disk has run out of partitions and can not add any more. Which it's technically correct despite only having 2 usable partitions out of the theoretical limit of 4 partitions.
Spoilerbox for what I think is going on:
I'm going to do my best of making sense of what's explained on the internet here because I'm no computer scientist, so any mistakes in interpretation here are mine alone
disk partition theory is surprisingly hard to research for me o_o especially when it comes to what exactly is in a "GPT Protective" Primary Partition and what makes a Hybrid-MBR partition different from regular GPT (with MBR headers inside by default). The quick summary of the limits of the partition tables:
Master Boot Record:
- Maximum of 4 Primary Partitions under Windows' definitions
- One of the Primary Partitions can be split into multiple logical partitions (that behaves like any regular volume on the user's end)
- Maximum Capacity of 2.19TB
GUID Partition Table (or GPT):
- Maximum of 128 Primary Partitions (but why would you--)
- Maximum Capacity of 9.4ZB (roughly 9,400,000,000 TB) (but how would you--)
- interesting thing is that the header includes an MBR header of the first 4 Primary Partitions
Each OS has a "System Partition" before the actual OS Partition (the C: in Windows and the Macintosh HD for OSX). This is usually not visible from frontend file managers (e.g. File Explorer and Finder)
BIOS-based computers, whether they use MBR or GPT, rely on a boot loader in the first sector of the disk to help get the computer booted. In fact, the first 440 bytes of the MBR data structure are devoted to this boot loader. DOS and Windows place a very simplistic boot loader in this space. Other OSes and third-party utilities enable placing more sophisticated boot loaders in the MBR, although these boot loaders usually rely on multiple stages—the boot loader code loads a secondary boot loader that's located elsewhere, and that boot loader may even load a third stage. In principle, these boot loaders can work just fine when the MBR is in fact a GPT protective MBR. In practice, the boot loader needs to be GPT-aware in order to work. The GRUB 2 boot loader, when used on a GPT disk, works best when you to have a BIOS Boot Partition (GPT fdisk code EF02) on the disk. Most boot loaders, including the patched versions of GRUB Legacy (version 0.97) that include GPT support, don't require a BIOS Boot Partition. If you do need it, the BIOS Boot Partition can be quite small—sometimes as small as 32 KiB, although I've seen reports that some configurations require more space than this—sometimes over 1 MiB. If you align your partitions to 1 MiB boundaries, 1 or 2 MiB is the logical size.
From Microsoft's page about partitioning guidelines on GPT: https://support.microsoft.com/en-us/help/302873/frequently-asked-questions-about-the-guid-partitioning-table-disk-arch
Windows partition requirements:
The device must contain a system partition. On GPT drives, this is known as the EFI System Partition, or the ESP. This partition is usually stored on the primary hard drive. The device boots to this partition.
The minimum size of this partition is 100 MB, and must be formatted using the FAT32 file format.
This partition is managed by the operating system, and should not contain any other files, including Windows RE tools.
(second row adapted from the internet, but should represent the defaults of a normal windows PC)
When the system starts booting to an OS, the first thing it looks for is not the OS, but this system partition.
How Bootcamp furbishes two OSes, however, is kinda stubborn. Especially when the MBPs earlier than 2013 only gives a Legacy BIOS environment to non-OSX OSes, which only supports booting from MBR disks.
And just like that, MBR's 4 Partition Limit reached
(Pics are from two different screenshots from the internet, but ignoring the capacity numbers this is what it actually is, in terms of what both OSes see)
So when it first boots, it goes to the EFI bootloader meant for OSX (which is more visible when the Mac is booting with Option held down)
then to the one meant for Windows.
(also if anyone's wondering whether the first "EFI System Partition" is considered a (Primary) partition:
I've briefly heard of bootloader editing or generating tools, but those are meant for Linux and getting those to work without spoiling the rest is out of my time scope (at the time)
In the direction to force a fix, there are extended partitioning alternatives on MBR, with its Extended Partition and Logical Volumes and whatnot, but OSX (or maybe even GPT-booted Windows?) will not be able to see those "subdivided" partitions if they're on the same disk.
... not exactly sure of my interpretation here.
(Left: OSX can't see the Logical partitions on the MBR; Right: Windows can't see the partitions after the 4th primary partition)
(a later revision of this writeup would include screenshots of Disk Management and Disk Utility, but I don't think I'll be doing this anytime soon ,_,)
All being said, whatever is being dealt with here, with the term Hybrid-MBR, is considered to be a hack-on-a-hack that, in worst cases, will cause data loss when any system tries to adjust the partition tables without being aware, especially when it involves Logical partitions in the MBR part.
(and here's a rant from the guy who did the GPT fdisk tool: https://www.rodsbooks.com/gdisk/hybrid.html )
So adding a partition for both OSes to be able to access within the single disk in the MBP seems impossible without needing to resort to another disk somehow. But there's a workaround.
This is all about the oldest (and plebbiest) MBP to support Mojave (it's a 15" Mid-2012 non-retina), so anything else I can't guarantee that this will help
(2011 versions could just follow through up to the point of not being able to upgrade to Mojave;
newer versions after Late-2013 doesn't have to deal with this nonsense)
Actually mine this time.
Is this safe? Kinda.
Are there issues? the exFAT partition has had the whole partition go "you need to format this partition before using" in Windows and "this is a RAW partition" in OSX between OSX version upgrades (none since El Capitan though), but this is fixable when running checkdisk in windows on the exFAT drive, so it's not exactly a problem
How reliable is this? I've been on this setup since about 2013(?). With the above caveat, I'd say it's done good for a secondary system.
can something be done about the 128MB holes? I think so? I had to do the partitioning from OSX Lion Recovery (because I forgot to make a Mojave USB install stick) so maybe it might be different when the exFAT disk is partitioned from Disk Management instead?
- Windows 7 DVD (path of least resistance here. not going to deal with USB 3 drivers)
(Save this to a USB stick) Windows Bootcamp 5.x drivers from here: https://support.apple.com/kb/DL1720?locale=en_US
any OSX version already installed, or a Bootable USB installer of the current OSX version if starting from a blank disk
(internet recovery returns Lion, but it's still doable. just that I'll be installing
- side note: if OSX in on an APFS partition due to it being High Sierra or above (Space Sierra), the volume would not be readable in Windows as Apple has not released an APFS partition driver for windows yet (unlike Apple HFS where they do provide a read-only driver in the Bootcamp Installer).
- A Time Machine Backup or a copy of the OSX volume elsewhere. Better safe than sorry
For maxing out the OSes:
THE LATEST VERSION of the Windows 10 Installer (DVD or just the installer file. we'd be running this in windows anyway)
get the ISO or whatnot from the Media Creation Tool.
- Don't use an old installer because (from using a 2016-based installer) I've encountered Feature Update failing and messing up the Windows bootloader
This assumes you have already activated Windows 7. The Windows 10 installer will ask for a W10 key if it's not activated, unless you have one...
The reason for not installing from a boot disk/disc is because this MBP does not present the internal disk as an MBR disk for W10 installers, and only does so for a W7 installation environment. Yes it's this kind of old.
(Save this to a USB stick) Windows Bootcamp 6.0 drivers from OSX Mojave
(driver 6.0 is only downloadable through the assistant on Mojave. I tried in High Sierra and the Apple servers refused my connection ,_,)
start Bootcamp Assistant and go straight to Actions > Download
Steps for installing Windows 10 is via Windows 7 (I'll explain on the way), so if I were to already have a windows 7 install, I'd still HAVE to run the W10 installer while in W7.
I'll adapt the log from the point when everything started falling into their proper place, but anything I found prior to that I'll add on the way.
For quick reference:
- If Windows 7 is already installed (and you're looking to upgrade to Windows 10, do not wipe or uninstall W7. Start the W10 installer while in windows.
- There are multiple ways of going about depending on whether OSX is already installed ("out of the box") or starting from a clean disk. I'll summarise afterwards (with related steps referenced back)
- Plan the amount of space for each volume (Windows, exFAT partition, OSX) to roughly occupy before starting.
(it won't be exact, especially when both OSes present space numbers differently)
- Windows volume space: A
- Storage Partition space: B
- OSX volume space: C
- Get Bootcamp Driver 6.0, which currently is only downloadable from Mojave's Boot Camp Assistant. That's for Windows 10
- I actually got in right at the start before the ensuing mess (you'll see in these indented bullet points)
- also my first attempt was in High Sierra before upgrading. server refused to download ._.
- Get Bootcamp Driver 5.1.5621 from here. That's for Windows 7
- this isn't exactly necessary, but if you're using the DVD drive for W10 (or just want to use W7) this would be needed
- Boot into OSX to see if the space it currently occupies can fit in a smaller volume after partitioning
- It's more or less empty for me since this isn't my house-station (wait, homebase), so this's for the few who use it as one
- Power on and hold Command-R untill the Apple logo appears. This will start OSX Recovery.
- Start Disk Utility from the list of options
- Split the partitions in 2. match the filesystem of the main OSX disk (shouldn't need to change the filesystem actually)
Don't apply changes yet, there's a bit more to do
- If you're working in High Sierra or Mojave, the physical disk hierarchy might be hidden by default. find the View button above the list of volumes and Show All Devices
- If you're doing this for an APFS partition, it'll ask if you'd like to Partition or quickly add a volume. select Partition and make sure you see the full Pie Chart afterwards
- If you're doing this on El Capitan and earlier for a HFS+ partition, lucky you ,_,
- Adjust the second partition to be the target size of the partition (C)
- Optional step for convenience: rename this volume to something different from the original one. Changing volume names is simple while in OSX
- Shut Down. Power on and hold the Option key untill the boot menu appears.
figure out which was the second one and boot.
- remember the renaming thing?
- Check if we're booted from the second volume. Open Disk Utility and see if the second volume's mount point's the root of the system
(Mount point should just be a / )
- otherwise, reboot and select the other one
- or go to System Preferences > Startup Disk and select the right one to restart off
- ... wait actually you could do this while in OSX recovery earlier, so...
- Check if everything in this partition checks out. if it does, next step!
for OSX Partition C
- Go back to Disk Utility. Partition the first disk into two. Both will be of the FAT32 format
The partition order should be: Windows FAT32 A , Storage partition FAT32 B , OSX Partition C
Definitely rename the windows partition to something. Otherwise the Windows installer will give partitions with no names. choosing the wrong one from there would be pretty inconvenient ._.
- THIS WILL ERASE WHATEVER'S INSIDE THE FIRST PARTITION. CHECK IF STUFF PARTITION C CHECKS OUT BEFORE GOING TO THIS STEP
- This is more or less the final form/ratio/spacing/partitioning/whatever of the whole thing, so make peace with this step because this is more or less the setup we'll be living with the rest of the MBP's use life
- Restart normally. Just as a final check. If Partition C boots properly, this is all for the OSX partition
- small garden path tangent: I wiped the entire thing (i.e. started from a blank disk) and initially had a Time Machine Backup to recover to. Turns out Mojave's time machine implementation doesn't store a recovery tool to boot off, so I had to go the long way at the end to reinstall Lion first then Mojave, then restore from the time machine ,_,
for Windows Partition A
- Power off. Have the Windows 7 DVD ready
- Power on and hold option. Once the boot menu appears, insert the W7 installer DVD.
two additional disc options will appear. DO NOT CLICK EFI BOOT. Boot off the other one labeled Windows
- Follow the instructions normally. Enter the OS key
- Reminder: the Windows 10 upgrade assumes for the case that Windows 7 is Activated
- At the disk selection page, select Partition A (or the first obvious large chunk, or the "BOOTCAMP" partition) and click format. This will convert it to an NTFS partition
- By the way, the W7 installer is seeing an "MBR" disk, but that's the MBP in a legacy BIOS environment
- There's a whole lot of history of trying to get W7 to work on a Mac EFI ("1.0") environment, but personally I'm pretty far away from these deep low-level hacks and not many seem to have gotten it to work on the MBP I have.
- Ditto W10, but that's more or less obsolete now
- Let the installer run.
It'll restart once so prepare to catch the moment it restarts to remove the DVD
- Hold Option first to get to boot menu. Then long press the eject key untill the DVD ejects. Then boot Windows
- for reference: to remove the DVD as the first thing, hold down the eject button on power up untill the MBP spits it out
- I've had installs where it read from the DVD instead of the half-finished disk, so it restarted the install process again, LOL
- (just exit the installer and remember to remove the DVD on power up, if that happens)
After booting to the Windows 7 desktop proper, plug in the Bootcamp driver (the 5.x one) and install it. This is more or less it for using it for Windows 7
(one more step though: boot to OSX and "Erase" Partition B to exFAT. Then it's done.)
(and windows update)
This is for installing Windows 10 in this loadout. If you have a sane 2-partition 2-OS deal (installed by Bootcamp Assistant's way), run the installer in Windows 7.
- Boot to Windows 7. Have the Bootcamp 6.0 driver USB stick ready
- remember boot menu
- Copy over the Windows 10 installer. Or insert the Windows 10 DVD
- If using the DVD, install the bootcamp 5.x driver first
- my earlier attempts to install Windows 10 were pretty frustrating. First I used an old OEM DVD (2016?) to install it. it was kinda unstable (especially so in the EFI install), and attempts to leap to the most recent feature update (the November 2018 one. Yes it's October 2018 but really) corrupted the windows side of the bootloader ,_,
- Then I tried doing away with the EFI nonsense and head straight to the Nov-- October update installer. Windows found a GPT disk instead of an MBR one (despite NOT being booted to the EFI installer).
Made the mistake of wiping it before realising what it was because now the OSX internet recovery installer found an MBR disk and couldn't install ,_,
- so yeah, that's why. the W10 installer isn't given a proper legacy BIOS environment for the storage part, so installing W10 clean without that roundabout part would be pretty frustrating
- Run the installer. It'll check if W7 is already activated
- If W7 just had a fresh install and it's already having a valid key while the installer says it "needs an activated OS" and is asking for a key, quit the installer and find System properties (Control panel > System). click activate online and it should be done
- Can't help with other methods
- Follow though. It'll say the 650M might have issues with W10. install anyway.
- Once it's on the W10 desktop, insert the USB stick and install bootcamp 6.0 drivers
The cleanup, for Storage Partition B
- Test booting to both OSes
- While in OSX, go ahead and format/erase Partition B to exFAT in Disk Utility
- I had to install OSX at this part (because earlier above). if done properly OSX recovery will still be able to see an GPT disk and install on it.
- Also don't use Lion to recover from a Time Machine backup made from a later version of OSX. Definitely not an APFS-formatted one ,_,
And that should be it.
Now after all these mess: how about Linux distros?
Unfortunately I don't dabble as much in that area to make educated guesses about the partition orders, which is especially frustrating given that OSX seem to not need to have the System Partition next to itself. If the distro can handle Apple's hardware-based EFI handoffs, then the hybrid MBR thing isn't necessary
There are alternatives to installing an extra partition while in the limits of an MBR partition table. Mostly just avoiding the problem at all, like switching out the DVD drive with a 2.5" disk adapter, or just plain using a USB disk (or a bone-big (micro)SD card (adapter) with an outline shorter than a regular SD card). But the idea of having nothing dangling while still keeping a DVD drive (not used as much today but moreso when I got it) and a quick inbetween partition to move files between OSes (there's only 2 USB3 ports by the way, so losing one to a USB disk would be pretty limited)
there's also subsystem programs like Parallels but realistically that's a yearly recurring thing
I'm trying to not phrase this as a tutorial but more of a museum piece. Partially because (as mentioned earlier) all this applies to the last Macs that predate UEFI 2.0 and always presented Windows installs with a BIOS-MBR restriction, that's allowed to run macOS Mojave. And once this falls off there's no modern Macs that would really have to deal with this nonsense.
Also because I only recently got to figuring out how to get Windows 10 onto it. Maybe in UEFI, but alas that's not possible. And then afterward I had to rediscover how to go about doing this again.
so yeah. possibly pointless, but here it is.
PS: if anyone's looking to match the trackpad direction: look into this link
there shouldn't be a need to make new registry DWORDS. there were two that appeared for me, that had both FlipFlopWheel and FlipFlopHScroll off the bat. change both keys from 0 to 1 and restart (if it didn't work, reverse and try the other device)