Få MacBook Pro 2018 T2 til å fungere med ArchLinux (dualboot)
Det har vært en del hype om at den nye T2-brikken vil gjøre det umulig å installere Linux på de nye 2018 MacBook-ene med en touchbar. Tiden gikk, og på slutten av 2019 implementerte tredjepartsutviklere en rekke drivere og kjernepatcher for interaksjon med T2-brikken. Hoveddriveren for MacBook-modeller 2018 og nyere implementerer VHCI-drift (touch/keyboard/etc.-betjening), samt lyddrift.
BCE (Buffer Copy Engine) - etablerer hovedkommunikasjonskanalen med T2. VHCI og Audio krever denne komponenten.
VHCI er en USB Virtual Host Controller; tastaturet, musen og andre systemkomponenter leveres av denne komponenten (andre drivere bruker denne vertskontrolleren for å gi mer funksjonalitet.
Lyd - driver for T2-lydgrensesnittet, støtter for øyeblikket kun lydutgang gjennom MacBooks innebygde høyttalere
Det andre prosjektet heter macbook12-spi-driver, og den implementerer muligheten til å betjene en inngangsdriver for tastaturet, SPI-styreflaten og berøringslinjen for slutten av 2016 og senere MacBook Pros. Noen tastatur-/styreflate-drivere er nå inkludert i kjernen, fra og med versjon 5.3.
Støtte for enheter som wi-fi, touchpad, etc ble også implementert ved hjelp av kjernepatcher. Gjeldende kjerneversjon5.3.5-1
Hva fungerer for tiden
NVMe
tastatur
USB-C (Thunderbolt har ikke blitt testet; når modulen lastes automatisk, fryser den systemet)
Touchbar (med muligheten til å slå på Fn-tastene, bakgrunnsbelysningen, ESC, etc.)
Lyd (kun innebygde høyttalere)
Wi-Fi-modul (via brcmfmac og kun via iw)
DisplayPort over USB-C
Sensorer
Suspend/Fortsett (delvis)
etc..
Denne opplæringen gjelder for macbookpro15,1 og macbookpro15,2. Artikkelen er hentet som grunnlag fra Github på engelsk. derav. Ikke alt i denne artikkelen fungerte, så jeg måtte finne en løsning selv.
Hva du trenger for installasjon
USB-C docking-adapter til USB (minst tre USB-innganger for å koble til en mus, tastatur, USB-modem eller telefon i tethering-modus). Dette er kun nødvendig under de første stadiene av installasjonen
USB-tastatur
USB/USB-C flash-stasjon minimum 4 GB
1. Deaktiver forbudet mot oppstart fra eksterne medier
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Legg til depotet til pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Vi ignorerer den originale kjernen i pacman.conf:
IgnorePkg = linux linux-headers
Legg til de nødvendige pakkene, til slutt legg til linux-mbp-kjernen og linux-mbp-headerne
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Vi endrer skriptet til å fungere i interaktiv modus (erstatt pacstrap -C med 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!"
}
Å danne et bilde:
sudo ./build.sh -v
Trykk på Y for å hoppe over ignorerte pakker, og skriv deretter iso-bildet til usb-flashstasjonen:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Første oppstart
Start på nytt med flash-stasjonen og tastaturet satt inn. Trykk på alternativer når eplet vises, velg EFI BOOT.
Deretter må du trykke på "e" -tasten og gå inn på slutten av kommandolinjen module_blacklist=torden. Hvis dette ikke gjøres, kan det hende at systemet ikke starter opp og en Thunderbolt ICM-feil vises.
Ved å bruke fdisk/cfdisk finner vi partisjonen vår (for meg er det nvme0n1p4), formaterer den og installerer arkivet. Du kan bruke offisielle instruksjoner eller sidelengs.
Vi lager ikke en oppstartspartisjon; vi vil skrive oppstartslasteren inn /dev/nvme0n1p1
Etter at miljøet i /mnt er fullstendig dannet og før du går til arch-chroot, skriv:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Legg til i /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Installere kjernemoduler for tastaturet. I depotet anuali1 det er en ferdig pakke, heter det apple-bce-dkms-git. For å installere den, skriv i konsollen:
pacman -S apple-bce-dkms-git
I dette tilfellet vil kjernemodulen bli kalt eple-bce. Ved selvmontering kalles det f.v.t. Følgelig, hvis du ønsker å registrere en modul i MODULES-delen av mkinicpio.conf-filen, så ikke glem hvilken modul du installerte.
Manuell montering:
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
Legg til bce- eller apple-bce-modulen til oppstart: /etc/modules-load.d/bce.conf
bce
Hvis du vil bruke Fn-knappene som standard, skriver du i filen /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Oppdaterer kjernen og initramfs.
mkinitcpio -p linux-mbp
Installer iwd:
sudo pacman -S networkmanager iwd
5. Laster
Når alle hovedpakkene er installert inne i chrooten, kan du begynne å installere bootloaderen.
Jeg har ikke klart å få grub på jobb. Grub starter opp fra en ekstern USB-stasjon, men når du prøver å registrere den i nvme via
systemet gikk i kjernepanikk, og etter omstart dukket ikke et nytt element gjennom alternativer opp. Jeg fant ingen klar løsning på dette problemet og bestemte meg derfor for å prøve å implementere oppstart ved hjelp av systemd-boot.
Lansering
bootctl --path=/boot install
og vi går i kjernepanikk. Slå av MacBook, slå den på igjen, klikk på alternativer (ikke slå av USB-C-huben med tastatur)
Vi sjekker at en ny EFI BOOT-oppføring har dukket opp i tillegg til den eksterne enheten
Vi velger å starte opp fra en ekstern USB-stasjon, som under den første installasjonen (ikke glem å spesifisere module_blacklist=thunderbolt)
Vi monterer disken vår og går inn i miljøet via arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Hvis det er nødvendig for tastaturet å fungere til systemet er fullastet (dette er nødvendig når du bruker luks/dm-crypt-kryptering), så skriv det i /etc/mkinicpio.conf-filen i MODULER-delen:
Som det viste seg til slutt, lagrer MacOS fastvarefilene for wi-fi-adapteren i mappen /usr/share/firmware/wifi , og du kan ta dem derfra i form av klatter og mate dem til brcmfmac-kjernemodulen. For å finne ut hvilke filer adapteren bruker, åpne en terminal i MacOS og skriv:
ioreg -l | grep C-4364
Vi får en lang liste. Vi trenger bare filer fra seksjonen Forespurte filer:
I dette tilfellet inneholder den siste tekstfilen modellnavnene; hvis modellen din ikke er macbookpro15,2, må du endre navn på denne filen i samsvar med din MacBook-modell.
Start på nytt i Arch.
Kopier filene fra flash-stasjonen til mappen /lib/firmware/brcm/
Akkurat nå 16.10.2019 du må velge enten lyd eller suspendere/gjenoppta. Vi venter på at forfatteren av bce-modulen skal fullføre funksjonaliteten.
For å bygge en modul med støtte for suspendert/gjenoppta, må du gjøre følgende:
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
Hvis du installerte den ferdige apple-bce-modulen fra anuali1-depotet, må du først fjerne den og først deretter montere og installere bce-modulen med støtte for suspenderingsmodus.
Du må også legge til applesmc-modulen til svartelisten (hvis du ikke har gjort dette før) og sørge for at parameteren er lagt til i /boot/loader/entries/arch.conf i alternativlinjen på slutten pcie_ports=kompat.
For øyeblikket krasjer berøringslinjedriveren når den går inn i hvilemodus, og thunderbolt-driveren fryser noen ganger systemet i mer enn 30 sekunder, og i flere minutter når det fortsetter. Dette kan fikses ved å automatisk losse problematiske moduler.
Lag et skript /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
Gjør den kjørbar:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Det er alt for nå. Resultatet er et fullstendig brukbart system, med unntak av noen nyanser med suspend/resume. Ingen krasj eller kjernepanikk ble observert i løpet av flere dager med oppetid. Jeg håper at forfatteren av bce-modulen i nær fremtid vil fullføre den, og vi vil få full støtte for suspend/resume og lyd.