I recently got a new MacBook Pro 2019 with 16" display. I like to keep my options open, so I installed three (and one virtual) operating systems in it. Since this laptop contains T2 chip, installing other operating systems than macOS is more challenging than my previous adventure with MacBook Pro 2015.

I want to point out, that this post is more a memo to myself than instructions to others. If you want to install a Linux distributions on your Mac, I suggest to take a look at (http://t2linux.org/), which has excellent wiki. If you need more interactive support, head on to Discord

Power up the laptop and start MacOS. After configuring it the way you want:

  • Reboot your Mac and at the boot chime, press cmd-r to boot into the recovery image.

  • Once loaded, in the top menu select Utilities->Terminal

  • To disable the integrity protection, enter

    csrutil disable

  • Type reboot to reboot into standard OSX. You can check with csrutil status if it’s enabled or not.

Next steps are familiar to anyone, who has installed Windows with Boot Camp.

  1. Download the installation ISO for Windows.
  2. Start Boot Camp Assistant inside MacOS.
  3. Decide the Boot Camp partition size. I have 500GB SSD, so I will partition it like this: 300GB MacOS (and Windows 10 virtual machine that I will installa later on) 200GB Windows 10 (this will split in two later, when I give 70GB to Arch Linux)
  4. Choose the Windows ISO file and start the Windows installation.
  5. When the Windows installation is complete, open the disk management and shrink Windows partition to get free space for Arch Linux. Boot Camp has taken around 10GB to itself, so I will shrink the C: partition with 70GB, which will go to Arch Linux. This leaves around 120GB for Windows 10.

Before starting the Manjaro installation, we need to change the boot settings. Once again, boot to macOS recovery by pressing cmd-R after seeing Apple logo. Inside recovery mode, select Utilities - Startup Security Utility.

In Secure Boot, select No Security. Under Allowed Boot Media, allow booting from external media.

Then it’s time to install the third operating system, Manjaro Linux. The first thing I noticed with my first installation attempt, was that the stock kernel coming with Manjaro doesn’t enable MacBook’s keyboard. It’s possible to circumwent this using external keyboard, but at the time I didn’t have any that would have USB-C connector or an adapter to convert USB-A to USB-C. Therefore, my best option was to download Manjaro KDE with a patched kernel.

After “dd’ing” the ISO file to USB drive I booted from it to start a live session. Note that Wi-Fi won’t work at this point, so I connected my phone via USB cable and shared network connection over USB. Once I got to the desktop, I followed the installation instructions. The short version is:

systemctl start systemd-timesyncd.service
sudo sed -i 's/https:\/\/jacobpyke.xyz/https:\/\/mbp-repo.jacobpyke.xyz/' /etc/pacman.conf
sudo pacman -R calamares
sudo pacman -Sy cmake extra-cmake-modules pkgconfig
wget https://github.com/KDE/kpmcore/archive/v4.2.0.tar.gz
tar -xvf v4.2.0.tar.gz
cd kpmcore-4.2.0
mkdir build
cd build
sudo pacman -Sy lib32-glibc
cmake ..
sudo make install
sudo pacman -Sy calamares-mbp
sudo calamares
Continue with the installation process until you come to partitioning. Select manual partitioning. Click on /dev/nvme0n1p1 then press edit at the bottom of the install window. Change the Change the Mount Point: /boot/efi, after that click okay. Create a 2000 MiB partition with ext4 as the file system. Change the mount point to /boot and click okay. Use the remaining disk space to create an ext4 file system. Change the mount point to /.

Continue the rest of the setup as normal. Once the setup process is complete, restart your computer remembering to remove the install medium once powered off. Once again, Power on your computer whilst holding the Option (⌥) key.. Selecting macOS gives you, surprise suprise, macOS. Selecting Windows brings you to the Grub menu, where you can choose to boot either Windows or Manjaro.

After the installation completes, there is still no working Wi-Fi. To enable it, we need another patched kernel. To use it, we need first install basic build tools:

sudo pacman -S base-devel
sudo pacman -Syu --ignore zfs-utils
makepkg -si

If you get error about keys untrusted public keys, check them and after verification add with:

gpg --keyserver hkp://pool.sks.keyservers.net --recv-keys <key>

Once the kernel with patches is installed, follow the JPyke3’s installation instructions.

At this point you should have a working WiFi. Next step is to enable integrated GPU to get a better battery life. This is optional, but for me the laptop got very hot while using dedicated GPU and the battery lasted only a couple of hours. Apple has decided that by default other operating systems can’t use integrated GPU. These instructions show you a way to circumwent that restriction. I ended up installing gnu-efi inside Manjaro, since installing it to macOS didn’t succeed, but gave various errors.

After all of this tinkering, you have a working triple boot MacBook Pro. The only downside I found after all this effort was the difficulty of enabling integrated GPU after using macOS. As I use roughly half of the time macOS and another half Manjaro, runnin nvram commands manually in macOS recovery is a must, at least if I’m running on battery. If Apple continues restricting its hardware like this, I believe my next laptop will be HP, Lenovo or something from System76.