Hubo mucha expectación sobre el hecho de que debido al nuevo chip T2, es imposible instalar Linux en el nuevo MacBook 2018 con una barra táctil. A medida que pasó el tiempo, y para fines de 2019, los desarrolladores de terceros implementaron una serie de controladores y parches de kernel para interactuar con el chip T2. El controlador principal para los modelos MacBook 2018 y posteriores implementa el trabajo de VHCI (operación del tacto / teclado / etc.), así como el funcionamiento del sonido.
El proyecto 
mbp2018-bridge-drv se divide en 3 componentes principales:
- BCE (Buffer Copy Engine): establece el canal de comunicación principal con T2. VHCI y Audio requieren este componente.
- VHCI es un controlador de host virtual USB; Este componente proporciona el teclado, el mouse y otros componentes del sistema (otros controladores usan este controlador de host para proporcionar más funcionalidad.
- Audio: controlador para la interfaz de audio T2, actualmente solo se admite la salida de audio a través de los altavoces integrados de MacBook
El segundo proyecto se llama 
macbook12-spi-driver e implementa la posibilidad del controlador de entrada para el teclado, trackpad SPI, barra táctil para MacBook Pro a finales de 2016 y versiones posteriores. Algunos controladores para el teclado / trackpad ahora están incluidos en el kernel, comenzando con la versión 5.3.
También se implementó el soporte para dispositivos como wi-fi, touchpad, etc., que usan parches de kernel. Actualmente la versión del núcleo es 
5.3.5-1Lo que funciona en este momento
- NVMe
- Teclado
- USB-C (Thunderbolt no se probó, cuando el módulo se carga automáticamente, suspende fuertemente el sistema)
- Barra táctil (con la capacidad de encender las teclas Fn, luz de fondo, ESC, etc.)
- Sonido (solo altavoces integrados)
- Módulo Wi-Fi (a través de brcmfmac y solo a través de iw)
- DisplayPort a través de USB-C
- Sensores
- Suspender / Reanudar (parcialmente)
- etc.
Este tutorial es aplicable para macbookpro15.1 y macbookpro15.2. El artículo fue tomado de un github en inglés 
desde aquí . No todo este artículo funcionó, así que tuve que buscar una solución por mi cuenta.
Lo que necesitas instalar
- Adaptador de base USB-C USB (al menos tres entradas USB para conectar un mouse, teclado, módem USB o teléfono en modo de conexión). Esto solo es necesario en las primeras etapas de la instalación.
- Teclado USB
- Unidad flash USB / USB-C de al menos 4 GB
1. Desactive la prohibición de descargar desde medios externos
https://support.apple.com/en-us/HT208330https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/2. Asigne espacio libre utilizando la Utilidad de Discos
Por conveniencia, inmediatamente asigné 30GB al disco, formateándolo para exfat en la Utilidad de Discos. 
Particionar un disco físico en particiones de Utilidad de Discos .
3. Forme una imagen iso
Opciones:- Puede seguir el camino simple y descargar la imagen final con el kernel 5.3.5-1 y los parches del enlace aunali1 a la imagen final
- Cree una imagen usted mismo a través de archlive (necesita un sistema con distribución archa)
 
 Instalar archiso
 
 pacman -S archiso
 
  cp -r /usr/share/archiso/configs/releng/ archlive cd archlive
 
 Agregue el repositorio a pacman.conf:
 
  [mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch
 
 Ignora el núcleo original en pacman.conf:
 
  IgnorePkg = linux linux-headers
 
 Agregue los paquetes necesarios, al final agregamos el kernel linux-mbp y linux-mbp-headers
 
  ... wvdial xl2tpd linux-mbp linux-mbp-headers
 
 Cambie el script para que funcione en modo interactivo (reemplace pacstrap -C con pacstrap -i -C):
 
  sudo nano /usr/bin/mkarchiso
 
  # Install desired packages to airootfs _pacman () { _msg_info "Installing packages to '${work_dir}/airootfs/'..." if [[ "${quiet}" = "y" ]]; then pacstrap -i -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" $* &> /dev/null else pacstrap -i -C "${pacman_conf}" -c -G -M "${work_dir}/airootfs" $* fi _msg_info "Packages installed successfully!" }
 
 Formamos una imagen:
 
  sudo ./build.sh -v
 
 Presione Y para omitir los paquetes ignorados, luego escriba la imagen iso en la unidad flash usb:
 
  sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
 
 
4. Primer arranque
Reinicie con la unidad flash y el teclado insertados. Presione las opciones cuando aparezca la manzana, seleccione EFI BOOT.
A continuación, debe presionar la tecla "e" y escribir 
module_blacklist = thunderbolt al final de la línea de comando. Si esto no se hace, es posible que el sistema no se inicie y el error Thunderbolt ICM se bloqueará.
Usando fdisk / cfdisk encontramos nuestra partición (la tengo nvme0n1p4), formateamos e instalamos el arco. Puede utilizar las 
instrucciones oficiales o 
de terceros .
No creamos la partición de arranque, escribiremos el gestor de arranque en 
/ dev / nvme0n1p1Después de que el entorno en / mnt esté completamente formado y antes de cambiar a arch-chroot, escribimos:
 mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt /bin/bash 
Añadir a /etc/pacman.conf:
 [mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch 
Instala el núcleo:
 sudo pacman -S linux-mbp linux-mbp-headers sudo mkinitcpio -p linux-mbp 
Coloque thunderbolt y applesmc en /etc/modprobe.d/blacklist.conf
 blacklist thunderbolt blacklist applesmc 
Teclado, barra táctil, etc.
Instalar yay:
 sudo pacman -S git gcc make fakeroot binutils git clone https://aur.archlinux.org/yay.git cd yay makepkg -si 
Instale los módulos para la barra táctil:
 git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git cd macbook12-spi-driver make install 
Agregue módulos a la carga automática: /etc/modules-load.d/apple.conf
 industrialio_triggered_buffer apple-ibridge apple-ib-tb apple-ib-als 
Instale los módulos del kernel para el teclado. El repositorio 
anuali1 tiene un paquete listo para 
usar , se llama 
apple-bce-dkms-git . Para instalarlo, escriba en la consola:
 pacman -S apple-bce-dkms-git 
En este caso, el módulo del núcleo se llamará 
apple-bce . En el caso del autoensamblaje, se llama 
bce . Por consiguiente, si desea registrar un módulo en la sección MÓDULOS del archivo mkinicpio.conf, no olvide qué módulo instaló.
Montaje manual:
 git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git cd mbp2018-bridge-drv make cp bce.ko /usr/lib/modules/extramodules-mbp/bce.ko 
Agregue el módulo bce o apple-bce a la carga automática: /etc/modules-load.d/bce.conf
 bce 
Si desea utilizar los botones Fn de forma predeterminada, en el archivo /etc/modprobe.d/apple-tb.conf escribimos:
 options apple-ib-tb fnmode=2 
Actualización del kernel y initramfs.
 mkinitcpio -p linux-mbp 
Instalar iwd:
 sudo pacman -S networkmanager iwd 
5. Cargador de arranque
Una vez dentro del chroot, todos los paquetes principales están instalados, puede proceder a instalar el gestor de arranque.
Nunca logré poner comida a trabajar. Desde una unidad usb externa, arranca grub, pero cuando intentas registrarlo en nvme a través de
grub-install --target = x86_64-efi --efi-directory = / boot --bootloader-id = grub
el sistema se estrelló en el kernel panic, y después de reiniciar un nuevo elemento a través de las opciones no apareció. No encontré ninguna solución inteligible para este problema y, por lo tanto, decidí intentar implementar el arranque usando systemd-boot.
- Lanzamos
 
  bootctl --path=/boot install
 
 y volar al kernel panic. Apague la MacBook, enciéndala nuevamente, haga clic en opciones (no desactive el hub usb-c con el teclado)
- Compruebe que ha aparecido un nuevo registro EFI BOOT además del dispositivo externo
- Seleccionamos el arranque desde una unidad usb externa, como durante la primera instalación (no olvide escribir module_blacklist = thunderbolt)
- Montamos nuestro disco y vamos al medio ambiente a través de arch-chroot
 mount /dev/nvme0n1p4 /mnt mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt 
Si es necesario que el teclado funcione hasta que el sistema esté completamente cargado (esto es necesario si se usa el cifrado luks / dm-crypt), lo escribimos en el archivo /etc/mkinicpio.conf en la sección MÓDULOS:
 MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce) 
Actualización del kernel y initramfs.
 mkinicpio -p linux-mbp 
Configurar systemd-boot
Editamos el archivo /boot/loader/loader.conf, eliminamos todo lo que contiene y agregamos lo siguiente:
 default arch timeout 5 editor 1 
Vaya a la carpeta / boot / loader / entries, cree el archivo arch.conf y escriba:
 title arch linux /vmlinuz-linux-mbp initrd /initramfs-linux-mbp.img options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat 
Si usaste luks y lvm, entonces
 options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat 
Reiniciar en MacOS.
6. Configuración de wifi
Al final resultó que, MacOS almacena los archivos de firmware para el adaptador de wi-fi en la carpeta 
/ usr / share / firmware / wifi , y puede tomarlos desde allí en forma de blobs y alimentarlos al módulo del núcleo brcmfmac. Para saber exactamente qué archivos usa su adaptador, abra el terminal en MacOS y escriba:
 ioreg -l | grep C-4364 
Tenemos una larga lista. Solo necesitamos archivos de la sección 
RequestedFiles :
 "RequestedFiles" = ({"Firmware"="<b>C-4364__s-B2/maui.trx</b>","TxCap"="C-4364__s-B2/maui-X3.txcb","Regulatory"="C-4364__s-B2/<b>maui-X3.clmb</b>","NVRAM"="C-4364__s-B2/<b>P-maui-X3_M-HRPN_V-m__m-7.7.txt</b>"}) 
En su caso, los nombres de los archivos pueden diferir. Cópielos de la carpeta / usr / share / firmware / wifi a la unidad flash USB y cámbiele el nombre a la siguiente vista:
  maui.trx -> brcmfmac4364-pcie.bin maui-X3.clmb -> brcmfmac4364-pcie.clm_blob P-maui-X3_M-HRPN_V-m__m-7.7.txt -> brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt</b> 
En este caso, el último archivo de texto contiene el nombre del modelo, si su modelo no es macbookpro15,2, entonces debe cambiar el nombre de este archivo de acuerdo con su modelo de macbook.
Reiniciar en el arco.
Copie archivos de la unidad flash USB a la carpeta / lib / firmware / brcm /
 sudo cp brcmfmac4364-pcie.bin /lib/firmware/brcm/ sudo cp brcmfmac4364-pcie.clm_blob /lib/firmware/brcm/ sudo cp 'brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt' /lib/firmware/brcm/ 
Verifique el estado del módulo:
 rmmod brcmfmac modprobe brcmfmac 
Nos aseguramos de que la interfaz de red apareció a través de ifconfig / ip.
Configurar wifi a través de 
iwctlAtencion Vía netctl, nmcli, etc. la interfaz no funciona, solo a través de iwd.Hacer que NetworkManager use iwd. Para hacer esto, cree el archivo /etc/NetworkManager/NetworkManager.conf y escriba:
 [device] wifi.backend=iwd 
Inicio del servicio NetworkManager
 sudo systemctl start NetworkManager.service sudo systemctl enable NetworkManager.service 
7. sonido
Para hacer sonido, debe instalar pulseaudio:
 sudo pacman -S pulseaudio 
Descargue tres archivos:
Moverlos:
  /usr/share/alsa/cards/AppleT2.conf /usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf /usr/lib/udev/rules.d/91-pulseaudio-custom.rules 
8. Suspender / Reanudar
Por el momento, 
16/10/2019 tienes que elegir entre sonido o suspender / reanudar. Estamos esperando que el autor del módulo bce termine la funcionalidad.
Para crear un módulo compatible con susped / resume, debe hacer lo siguiente:
 git clone https://github.com/MCMrARM/mbp2018-bridge-drv.git cd mbp2018-bridge-drv git checkout suspend make cp bce.ko /usr/lib/modules/extramodules-mbp/bce.ko modprobe bce 
Si instaló el módulo apple-bce ya preparado desde el repositorio anuali1, primero debe eliminarlo y solo luego recopilar e instalar el módulo bce con soporte para el modo de suspensión.
Además, debe agregar el módulo applesmc a la lista negra (si no lo ha hecho antes) y asegurarse de que 
pcie_ports = compat se agrega a /boot/loader/entries/arch.conf en la línea de opciones al final.
En este momento, el controlador de la barra táctil se bloquea cuando ingresa al modo de suspensión, y el controlador de rayo a veces suspende el sistema durante más de 30 segundos, y cuando se reanuda, durante varios minutos. Esto se puede solucionar descargando automáticamente los módulos con problemas.
Cree el script 
/lib/systemd/system-sleep/rmmod.sh :
 #!/bin/sh if [ "${1}" == "pre" ]; then rmmod thunderbolt rmmod apple_ib_tb elif [ "${1}" == "post" ]; then modprobe apple_ib_tb modprobe thunderbolt fi 
Hazlo ejecutable:
 sudo chmod +x /lib/systemd/system-sleep/rmmod.sh 
Eso es todo por ahora. El resultado es un sistema completamente funcional, con la excepción de algunos matices con suspender / reanudar. No se han observado bloqueos ni pánico en el núcleo durante varios días de actividad. Espero que en el futuro cercano el autor del módulo bce lo termine, y obtengamos soporte completo para suspender / reanudar y sonar.