1. Linux
Summary
The first thing that needs to be done is Linux. I wanted to stick with Rocky Linux to mirror an HPC environment, however it doesn't support the 2018 T2 mac mini well. 1. The installer doesn't support "mactel-boot", even if installing on an external drive. This is worked around by running the installer on an Intel NUC. Furthermore once it does boot, the system throws a bunch of errors regarding the Apple SMC controller.
Good news is that there's a T2 Linux community that's created a nice device support. Sadly no T2 Rocky fork. There's a few other supported distros, and I chose Arch Linux because I've installed it before and it gives fine grain control over the installation.
Noa Himesaka's Branch
Device support
Everything I need is upstream, I'm not concerned about wifi or bluetooth drivers. The previous SMC error I've experienced was most likely due to other stuff.
Rundown of T2 Patches
Git repo: https://github.com/t2linux/linux-t2-patches/tree/main Linux main: https://github.com/torvalds/linux/tree/master/drivers Review as of:
/Disclaimer: I'm not a security export. I know enough C to look at something and make sure it's not complete garbage. Nothing below is complete garbage./
Here's what we have:
- 1001-Add-apple-bce-driver.patch
- 1002-Put-apple-bce-in-drivers-staging.patch
- 1004-HID-core-add-helper-for-finding-a-field-with-a-certa.patch
- 1005-HID-hid-appletb-bl-add-driver-for-the-backlight-of-A.patch
- 1006-HID-hid-appletb-kbd-add-driver-for-the-keyboard-mode.patch
- 1007-HID-multitouch-support-getting-the-contact-ID-from.patch
- 1008-HID-multitouch-support-getting-the-tip-state-from-HI.patch
- 1009-HID-multitouch-take-cls-maxcontacts-into-account-for.patch
- 1010-HID-multitouch-allow-specifying-if-a-device-is-direc.patch
- 1011-HID-multitouch-add-device-ID-for-Apple-Touch-Bars.patch
- 1012-lib-vsprintf-Add-support-for-generic-FOURCCs-by-exte.patch
- 1014-drm-format-helper-add-helper-for-BGR888-to-XRGB8888-.patch
- 1015-drm-tiny-add-driver-for-Apple-Touch-Bars-in-x86-Macs.patch
- 1017-HID-hid-appletb-kbd-add-support-for-fn-toggle-betwee.patch
- 2008-i915-4-lane-quirk-for-mbp15-1.patch
- 2009-apple-gmux-allow-switching-to-igpu-at-probe.patch
- 3001-applesmc-convert-static-structures-to-drvdata.patch
- 3002-applesmc-make-io-port-base-addr-dynamic.patch
- 3003-applesmc-switch-to-acpi_device-from-platform.patch
- 3004-applesmc-key-interface-wrappers.patch
- 3005-applesmc-basic-mmio-interface-implementation.patch
- 3006-applesmc-fan-support-on-T2-Macs.patch
- 3007-applesmc-Add-iMacPro-to-applesmc_whitelist.patch
- 3008-applesmc-make-applesmc_remove-void.patch
- 3009-applesmc-battery-charge-limiter.patch
- 4001-Input-bcm5974-Add-support-for-the-T2-Macs.patch
- 7001-drm-i915-fbdev-Discard-BIOS-framebuffers-exceeding-h.patch
- 8001-Add-APFS-driver.patch
- 8002-Necessary-modifications-to-build-APFS-with-the-kerne.patch
Glossary
- BCE: Buffer Copy Engine, communication channel for T2. Needed for VHCI and audio
- VHCI: Virtual host controller, provides usb, keyboard, mouse, and other unknown things
- Audio: Sound
- HID: Human Interface Device: trackpad, keyboard built into mac
- ACPI: Advanced Configuration and Power Interface, important interface between EFI and OS.
- MMIO: Memory-mapped I/O, device communication through standard memory address space.
Modules
Use: 1001-Add-apple-bce-driver.patch
Use: 1002-Put-apple-bce-in-drivers-staging.patch
Apple BCE driver (VHCI and Audio support). Kernel config.
NA: 1004-HID-core-add-helper-for-finding-a-field-with-a-certa.patch
NA: 1005-HID-hid-appletb-bl-add-driver-for-the-backlight-of-A.patch
NA: 1006-HID-hid-appletb-kbd-add-driver-for-the-keyboard-mode.patch
NA: 1007-HID-multitouch-support-getting-the-contact-ID-from.patch
1008-HID-multitouch-support-getting-the-tip-state-from-HI.patch
1009-HID-multitouch-take-cls-maxcontacts-into-account-for.patch
1010-HID-multitouch-allow-specifying-if-a-device-is-direc.patch
1011-HID-multitouch-add-device-ID-for-Apple-Touch-Bars.patch
Maybe: 1012-lib-vsprintf-Add-support-for-generic-FOURCCs-by-exte.patch
This is either for communicating with T2 or touchbar
NA: 1014-drm-format-helper-add-helper-for-BGR888-to-XRGB8888-.patch
DRM for touchbar
NA: 1015-drm-tiny-add-driver-for-Apple-Touch-Bars-in-x86-Macs.patch
x68 touchbar driver
NA: 1017-HID-hid-appletb-kbd-add-support-for-fn-toggle-betwee.patch
Internal apple keyboards to switch Media and function keys. Don't care.
Maybe: 2008-i915-4-lane-quirk-for-mbp15-1.patch
Fixes lane count for iGPU if dual boot GPUs. Might be applicable with thunderbolt eGPU.
NA: 2009-apple-gmux-allow-switching-to-igpu-at-probe.patch
Switch iGPU to AMD GPU
USE: 3001-applesmc-convert-static-structures-to-drvdata.patch
Makes applesmc struct
USE: 3002-applesmc-make-io-port-base-addr-dynamic.patch
Allows reconfiguring IO port for SCM
USE: 3003-applesmc-switch-to-acpi_device-from-platform.patch
ACPI drivers with SCM
USE: 3004-applesmc-key-interface-wrappers.patch
SMC io rw wrappers
USE: 3005-applesmc-basic-mmio-interface-implementation.patch
MMIO-based interface to communicate with SMC.
USE: 3006-applesmc-fan-support-on-T2-Macs.patch
SMC fan fix.
NA: 3007-applesmc-Add-iMacPro-to-applesmc_whitelist.patch
Add iMacPro to drivers/hwmon/applesmc.c
MAYBE: 3008-applesmc-make-applesmc_remove-void.patch
Make remove function void for linux 6.2
MAYBE: 3009-applesmc-battery-charge-limiter.patch
Batter charge limiter
NA: 4001-Input-bcm5974-Add-support-for-the-T2-Macs.patch
Trackpad driver
USE: 7001-drm-i915-fbdev-Discard-BIOS-framebuffers-exceeding-h.patch
Fix 4k framebuffer for i915 gpu
NA: 8001-Add-APFS-driver.patch
Don't want to mess up my macOS APFS driver.
NA: 8002-Necessary-modifications-to-build-APFS-with-the-kerne.patch
APFS driver.
(secret) Mac Mini 2018 Boot config
Thank you Nick Contini. https://web.archive.org/web/20220610155458/https://wiki.archlinux.org/title/Mac#Mac_Mini