Fer que MacBook Pro 2018 T2 funcioni amb ArchLinux (arrencada dual)
Hi ha hagut una mica de bombo el fet que el nou xip T2 farà impossible instal·lar Linux als nous MacBook 2018 amb una barra tàctil. Va passar el temps i, a finals del 2019, els desenvolupadors de tercers van implementar una sèrie de controladors i pedaços del nucli per a la interacció amb el xip T2. El controlador principal per als models de MacBook 2018 i posteriors implementa l'operació VHCI (operació tàctil/teclat/etc.), així com l'operació de so.
BCE (Buffer Copy Engine): estableix el canal de comunicació principal amb T2. VHCI i àudio requereixen aquest component.
VHCI és un controlador d'amfitrió virtual USB; el teclat, el ratolí i altres components del sistema els proporciona aquest component (altres controladors utilitzen aquest controlador d'amfitrió per oferir més funcionalitat.
Àudio: controlador per a la interfície d'àudio T2, actualment només admet la sortida d'àudio a través dels altaveus integrats del MacBook
El segon projecte es diu macbook12-spi-driver, i implementa la capacitat d'utilitzar un controlador d'entrada per al teclat, el trackpad SPI i la barra tàctil per a MacBook Pros de finals de 2016 i posteriors. Alguns controladors de teclat/ trackpad ara s'inclouen al nucli, a partir de la versió 5.3.
El suport per a dispositius com ara wi-fi, touchpad, etc. també es va implementar mitjançant pedaços del nucli. Versió actual del nucli5.3.5-1
Què està funcionant en aquests moments
NVMe
Teclat
USB-C (Thunderbolt no s'ha provat; quan el mòdul es carrega automàticament, congela el sistema)
Barra tàctil (amb la possibilitat d'activar les tecles Fn, retroil·luminació, ESC, etc.)
So (només altaveus integrats)
Mòdul Wi-Fi (mitjançant brcmfmac i només mitjançant iw)
DisplayPort a través d'USB-C
Sensors
Suspensió/reprèn (parcialment)
etc ..
Aquest tutorial és aplicable a macbookpro15,1 i macbookpro15,2. L'article es va prendre com a base de Github en anglès. per tant. No tot en aquest article va funcionar, així que vaig haver de trobar una solució jo mateix.
El que necessiteu per a la instal·lació
Adaptador d'acoblament USB-C a USB (almenys tres entrades USB per connectar un ratolí, teclat, mòdem USB o telèfon en mode de connexió). Això només és necessari durant les primeres etapes d'instal·lació
Teclat USB
Unitat flash USB/USB-C de 4 GB com a mínim
1. Desactiveu la prohibició d'arrencar des de mitjans externs
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Afegiu el repositori a pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Ignorem el nucli original a pacman.conf:
IgnorePkg = linux linux-headers
Afegiu els paquets necessaris, al final afegiu el nucli linux-mbp i les capçaleres linux-mbp
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Canviem l'script perquè funcioni en mode interactiu (substituïm pacstrap -C per 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!"
}
Formació d'una imatge:
sudo ./build.sh -v
Premeu Y per ometre els paquets ignorats i, a continuació, escriviu la imatge iso a la unitat flash USB:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Primer arrencada
Reinicieu amb la unitat flaix i el teclat inserits. Premeu opcions quan aparegui la poma, seleccioneu EFI BOOT.
A continuació, heu de prémer la tecla "e" i entrar al final de la línia d'ordres module_blacklist=raig. Si això no es fa, és possible que el sistema no arrenqui i apareixerà un error ICM Thunderbolt.
Utilitzant fdisk/cfdisk trobem la nostra partició (per a mi és nvme0n1p4), la formem i instal·lem l'arxiu. Pots fer servir instruccions oficials o de costat.
No estem creant una partició d'arrencada, escriurem el carregador d'arrencada /dev/nvme0n1p1
Després que l'entorn a /mnt estigui completament format i abans de passar a arch-chroot, escriviu:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Afegeix a /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Instal·lació de mòduls del nucli per al teclat. Al repositori anuali1 hi ha un paquet ja fet, es diu apple-bce-dkms-git. Per instal·lar-lo, escriviu a la consola:
pacman -S apple-bce-dkms-git
En aquest cas, es cridarà el mòdul del nucli poma-bce. En el cas de l'automuntatge, es diu bce. En conseqüència, si voleu registrar un mòdul a la secció MÒDULS del fitxer mkinicpio.conf, no oblideu quin mòdul heu instal·lat.
Muntatge 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
Afegiu el mòdul bce o apple-bce a l'inici: /etc/modules-load.d/bce.conf
bce
Si voleu utilitzar els botons Fn de manera predeterminada, escriviu al fitxer /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Actualització del nucli i initramfs.
mkinitcpio -p linux-mbp
Instal·leu iwd:
sudo pacman -S networkmanager iwd
5. Carregador
Un cop instal·lats tots els paquets principals dins del chroot, podeu començar a instal·lar el carregador d'arrencada.
No he pogut posar el grub a treballar. Grub arrenca des d'una unitat USB externa, però quan intenteu registrar-lo a nvme via
el sistema va entrar en pànic del nucli i, després de reiniciar, no va aparèixer un nou element mitjançant opcions. No vaig trobar cap solució clara a aquest problema i, per tant, vaig decidir intentar implementar l'arrencada mitjançant systemd-boot.
Llançament
bootctl --path=/boot install
i entrem en pànic del nucli. Apagueu el MacBook, torneu-lo a encendre, feu clic a opcions (no apagueu el concentrador USB-C amb el teclat)
Comprovem que ha aparegut una nova entrada EFI BOOT a més del dispositiu extern
Seleccionem arrencar des d'una unitat USB externa, com durant la primera instal·lació (no us oblideu d'especificar module_blacklist=thunderbolt)
Muntem el nostre disc i entrem a l'entorn mitjançant arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Si és necessari que el teclat funcioni fins que el sistema estigui completament carregat (això és necessari quan s'utilitza el xifratge luks/dm-crypt), escriu-lo al fitxer /etc/mkinicpio.conf a la secció MÒDULS:
Com va resultar al final, MacOS emmagatzema els fitxers de microprogramari per a l'adaptador Wi-Fi a la carpeta /usr/share/firmware/wifi , i podeu agafar-los des d'allà en forma de blobs i alimentar-los al mòdul del nucli brcmfmac. Per esbrinar quins fitxers utilitza el vostre adaptador, obriu un terminal a MacOS i escriviu:
ioreg -l | grep C-4364
Tenim una llarga llista. Només necessitem fitxers de la secció Fitxers sol·licitats:
En el vostre cas, els noms dels fitxers poden ser diferents. Copieu-los de la carpeta /usr/share/firmware/wifi a la unitat flaix i canvieu-los el nom de la següent manera:
En aquest cas, l'últim fitxer de text conté els noms dels models si el vostre model no és macbookpro15,2, haureu de canviar el nom d'aquest fitxer d'acord amb el vostre model de MacBook.
Reinicieu a Arch.
Copieu els fitxers de la unitat flaix a la carpeta /lib/firmware/brcm/
En aquest moment 16.10.2019 heu de triar entre so o suspendre/reprendre. Estem esperant que l'autor del mòdul bce completi la funcionalitat.
Per crear un mòdul amb suport suspès/reprend, heu de fer el següent:
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 heu instal·lat el mòdul apple-bce preparat des del dipòsit anuali1, primer haureu d'eliminar-lo i només després muntar i instal·lar el mòdul bce amb suport de mode suspès.
A més, heu d'afegir el mòdul applesmc a la llista negra (si no ho heu fet abans) i assegureu-vos que a /boot/loader/entries/arch.conf a la línia d'opcions al final s'afegeix el paràmetre. pcie_ports=compat.
Actualment, el controlador de la barra tàctil es bloqueja en entrar en el mode de suspensió i, de vegades, el controlador del raig congela el sistema durant més de 30 segons i durant diversos minuts quan es reprèn. Això es pot solucionar descarregant automàticament els mòduls problemàtics.
Creeu un guió /lib/systemd/system-sleep/rmmod.sh:
#!/bin/sh
if [ "" == "pre" ]; then
rmmod thunderbolt
rmmod apple_ib_tb
elif [ "" == "post" ]; then
modprobe apple_ib_tb
modprobe thunderbolt
fi
Fes-lo executable:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Això és tot per ara. El resultat és un sistema completament viable, amb l'excepció d'alguns matisos amb suspensió/reprendre. No es van observar bloquejos ni pànics del nucli durant diversos dies de temps d'activitat. Espero que l'autor del mòdul bce l'acabi en un futur proper i tindrem suport complet per a suspendre/reprendre i so.