How can I triple boot MacOS Catalina , Ubuntu 18.04, and Windows 10

Further issues

Linux Drivers

  • Version 8.24.6 or later of ATI’s notebook linux drivers support the X1600 card found the MacBook Pro. They are available on ATI’s website.
  • wstein has a working xorg.conf using Ati’s drivers and lilo+bootcamp for triple boot. This xorg.conf file is written for a Macbook Pro, but has also been tested successfully on a 20″ iMac. (Simply change all occurances of “1440×900” with “1680×1050”)


Setup Your Hard Drive for Windows

Follow Microsoft’s guide to use Microsoft Surface Data Eraser to repartition your hard drive. This will allow you to reinstall Windows on a clean hard drive and it will create the EFI system partition for you.

Step One: Partition Your Drive


Right now, you should have a drive with just one partition containing Snow Leopard (plus your 200MB EFI partition, which won't be visible in Disk Utility). Start up Disk Utility and click on the drive containing OS X in the left sidebar. Head over to the Partition tab, and click on your Mac OS X partition. Hit the plus sign at the bottom of the window twice, so you have a total of three partitions. Head to the upper right-hand corner of the window and name the second partition WINDOWS and the third one LINUX, formatting them both as FAT32 for now. If you need swap space for Linux, you can add a fourth partition, but nowadays this seems pretty unnecessary, so three partitions should be just fine. Hit the Apply button and let it work its magic.

When you're done, insert your Windows 7 installation disc and restart your computer.


Step Four: Fix the Windows Bootloader You Just Broke

You'd think keeping Grub away from Windows would leave Windows' bootloader untouched, but these operating systems just don't like to play nicely together. Unfortunately, when you first installed Mac OS X, you set your hard drive to use a GUID partition table (GPT), which is not fully compatible with Windows (Windows and Grub really prefer an MBR partition table). Now that you've installed Mac OS X, Windows, and Linux side-by-side, your drive is a GPT/MBR hybrid, and your partition tables are "out of sync". To make the GPT and MBR tables play nicely with one another on the same drive, you need to sync them with a program called gptsync in Linux.


So, grab your iBoot CD and use it to boot into your new Linux partition (since Chameleon is strangely missing—we'll get to that in a second). Download gptsync from your distro's repositories (though Ubuntu users may want to use the .deb files available here instead of the older versions still in the repositories). Once it's installed, pull up a Terminal window and type:

where /dev/sda is the drive containing all your partitions. If you aren't sure which one is the one you're using, type in fdisk -l to see a list. Note that you aren't using it on just one of the partitions (e.g. /dev/sda1), you're using it on the entire drive. Once you're done, your computer should successfully boot into Windows whenever you reboot.


If Linux is installed first

  1. Make sure that your linux partitions are not labled as Microsoft Basic Data, if they are, Bootcamp Assistant will think Windows is already installed. To fix this, go to Linux and do sudo cfdisk /dev/nvme0n1 and change the type of your linux partitions to Linux Filesystem.
  2. Install Windows normaly with Bootcamp. Windows will replace your Linux boot option.
  3. Boot into macOS.
  4. sudo diskutil mount disk0s1
  5. Go to /Volumes/EFI/efi
  6. In this folder there will be a Microsoft folder, an Apple folder, one with your distro’s name or just GRUB, and one called Boot. The Boot folder will have a file named bootx64.efi, rename this to windows_bootx64.efi
  7. Copy the grubx64.efi file in your distro’s folder to /Volumes/EFI/efi/Boot/bootx64.efi. The the Windows option in Startup Manager will now boot Linux.
  8. Fix blank screen issue that may occur when booting Windows (Credits to gbrow004 for documenting this fix on his Gist).

    1. In Linux, open a terminal and type in sudo gdisk /dev/nvme0n1.
    2. Press x for expert mode
    3. Press n to create a protective MBR
    4. Press w to write the partition and y to confirm
    5. If gdisk doesn’t quit, press q to exit the command
  9. Enable the GRUB menu so that you’ll have time to pick Windows

    1. Boot into your linux install by selecting the Windows option in startup manager.
    2. Edit /etc/default/grub with any preferred editior (nano/vim/) and with sudo. Change line GRUB_TIMEOUT_STYLE to GRUB_TIMEOUT_STYLE=MENU. If you are using nano, save the file by doing CTRL+X, Y, then enter.
    3. We’ve now changed the GRUB Bootloader settings, but we now need to update GRUB to apply these changes. Type in sudo update-grub and hit enter. After the command is done, you’re finished.
  10. You should now be able to boot either Windows or Linux from the GRUB bootloader.

It may be possible to skip steps 5-8 by doing the following command in macOS: sudo sh -c "bless --mount /Volumes/EFI --setBoot --file /Volumes/EFI/efi/$(ls /Volumes/EFI/efi|grep -i -e microsoft -e boot -e apple -v)/grubx64.efi --shortform" This might not prevent step 8 from being needed.

Installing Windows without Using the Boot Camp Assistant

Note: If you can use the Boot Camp Assistant application to install Windows, I would suggest you do so. These instructions are mainly for those who have a special configuration which prohibits the use of the Boot Camp Assistant application to install Windows.

  1. Use the Disk Utility application to erase a 16 GB or larger flash drive. Choose the ExFAT format and the Master Boot Record scheme.

  2. Mount the Windows ISO file, the copy the files to the flash drive. The current Windows 10 ISO can be downloaded from the Microsoft website Download Windows 10 Disc Image (ISO File).

  3. Copy the Windows Support Software designed for your Mac to the flash drive. The Windows Support Software can be downloaded by using the Boot Camp Assistant application. Select Action->Download Window Support Software from menu bar.

    Below is the contents of Windows installation flash drive as viewed in the Finder application. The AutoUnattend.xml file and both the $WinPEDriver$ and BootCamp folders came from the Windows Support Software downloaded from Apple for an iMac (21.5-inch, Late 2013). The remaining files and folders were from the Win10_1909_English_x64.iso file downloaded from Microsoft.

  4. Create free space to be used by Windows. In this example, 400 GB will be reserved for Windows on a 1.1 TB drive. Before allocating the free space, the output from the command diskutil list disk0 is shown below.

    To make 300 GB of free space available, the command shown below was used.

    The new output from the command diskutil list disk0 is shown below. Notice, the 300 GB block of free space created directly below disk0s2 is not shown.

  5. Restart the Mac and immediately hold down the option key until the Startup Manager icons appear. Choose the EFI Boot label below the flash drive icon.

  6. When the image below appears, press the shift+F10 key combination. The Command Prompt window shown below should appear.

  7. Enter the following command to create the Windows partitions. There commands are based on the instructions found at the Microsoft website .

    The output from the list partition command for this example is given below.

    Enter the command exit to close the Command Prompt window.

  8. Proceed and finish the installation of Windows.

    Note: If the Mac boots back to macOS before the installation of Windows completes, open the Startup Disk pane of the System Preferences application. After unlocking, highlight the icon labeled Windows and then click on the Restart button. The installation of Windows should proceed.

  9. If after Windows finishes installing, the Windows Support Software does not automatically starting installing, run the Setup application in the BootCamp folder on the flash drive.

Install Linux##

Boot into macOS and have a USB key available to be reformatted, it can be pretty small (small works better), an 8GB drive is perfect.

In order to create a bootable USB drive, you can use the Terminal:

  1. Run the Terminal from the Utilities folder under Applications
  2. Change the directory to where you downloaded the ISO for your Linux installation, e.g. kali-linux-2016.1-amd64.iso
  3. Find your USB key by running: diskutil list, note the drive name, e.g. disk2
  4. Run the command: dd -if=kali-linux-2016.1-amd64.iso -of=/dev/disk2 bs=1m
  5. The above command will take a long time to run, as it is imaging the ISO onto the USB drive. Once it finishes you should have a bootable USB key for Kali Linux (or whatever)

Alternatively, if you want a graphical imaging process, you can use UNetbootin as documented here for Ubuntu (just use Kali or whatever image you want).

You’re now ready to install Linux. The reason you had to install rEFInd before installing Linux was that, in my experience, I could not get the standard macOS boot manager to recognize the USB drive I had prepared with Kali Linux. However, if you reboot now, you’ll see the rEFInd boot menu. You can then insert your USB drive, then hit ESC to refresh the volumes and you should see the Linux installation drive appear. Select it for booting.

Follow the instructions for installing Linux, making sure to select the correct partition that you created while you were under Windows 10 earlier.

Install WinBtrfs (optional)

If you plan on using btrfs as your primary partition format, be sure to install WinBtrfs. Its still under active development, but good enough for day-to-day tasks and viewing your file systems on Windows. There is a very large NOTICE in the Readme file though. Decide if its worth the risk.

Windows setup is complete! You can go to the next section to install Kali Linux on the Surface Pro!