It works quite well on my 2015 Macbook Pro. Check out this hardware probe if you're curious.
https://linux-hardware.org/?probe=c3230ba277
I've ran this hardware with no problems on more advanced as well as obscure systems too. Typically, the trouble typically comes from the BCM43602 wireless chip. For Arch Linux, for example, you need to remove brcmfmac from a blacklist in the /etc/modprobe.d directory. On OpenBSD, you need to download the appropriate gunzipped tarball and place the relevant firmware blob into /etc/firmware over sneakernet. http://firmware.openbsd.org/firmware/ Normally, you can just connect an Ethernet cable and run fw-update but the Macbook Pro 12,1 doesn't have an Ethernet port.
The webcam doesn't typically work out of the box on anything but if you want to enable this, then there's a Github project with a reverse-engineered driver. I don't personally care for enabling it on my system.
https://github.com/patjak/facetimehd
Some other less common issues I've had are with automatic fan control, audio, and the special keys for screen brightness, keyboard brightness, and volume.
For the fan control, I created a script to do low level operations with the device. For example, the following will set the fan to 4000 rpm. Minimum and maximum values are 1299 and 6199!
echo 4000 | sudo tee /sys/class/hwmon/hwmon4/device/fan1_output
I highly recommend running watch sensors
on any newly installed system to prevent overheating. Macbooks tend to prefer heating up little over spinning up a loud fan, so they normally get a little bit toasty and it's hard to tell if automatic fan control is working without seeing the temperatures stabilize.
For the other issues, I don't remember exactly what I did. I highly doubt you'll ever run into those issues anyway unless you're a masochist like me that abuses their hardware with obscure software. If you're ever unsure though, it's usually a good idea to look at the dmesg
output first.
Concerning booting issues.
It's prudent to check the contents of efibootmgr from a live system. Ensure that the entry was created by the distribution's installer. Features like hibernation and encryption will change how these entries should look. Additionally, it's important that you set the boot order or delete old entries (with extreme caution). Rarely, you'll find a distro or variant that installs to the MBR. If this is the only operating system installed then it should boot just fine. No entries need to be present in efibootmgr in these cases.
Another thing to check with booting issues is the installer image integrity. Compare the checksum, verify the cryptographic signature, and write in unbuffered small chunks (easily done with the dd
command). For example on macOS, this is how you would do all of that.
sha256sum -c --ignore-missing supercool-gnu-slash-linux-distro.iso.sha256
wget supercool-gnu-slash-linux-distro.org/pubkey.gpg | gpg --import
gpg --verify supercool-gnu-slash-linux-distro.iso.sign supercool-gnu-slash-linux-distro.iso
diskutil list
diskutil unmountDisk /dev/disk10
sudo dd if=supercool-gnu-slash-linux-distro.iso of=/dev/rdisk10 bs=1M status=progress
Notice the use of /dev/rdiskX instead of /dev/diskX on macOS because /dev/diskX is buffered. Additionally, we're using a small block size with bs=1M. Although I've successfully written good disks with bs=64M on a modern macOS system without problems, the larger the block size the more likely the write error... especailly on memory constrained systems.