Få MacBook Pro 2018 T2 til at fungere med ArchLinux (dualboot)
Der har været en del hype omkring, at den nye T2-chip vil gøre det umuligt at installere Linux på de nye 2018 MacBooks med en touchbar. Tiden gik, og i slutningen af 2019 implementerede tredjepartsudviklere en række drivere og kernepatches til interaktion med T2-chippen. Hoveddriveren for MacBook-modeller 2018 og nyere implementerer VHCI-betjening (touch/tastatur/etc.-betjening), samt lydbetjening.
BCE (Buffer Copy Engine) - etablerer hovedkommunikationskanalen med T2. VHCI og Audio kræver denne komponent.
VHCI er en USB Virtual Host Controller; tastaturet, musen og andre systemkomponenter leveres af denne komponent (andre drivere bruger denne værtscontroller til at give mere funktionalitet.
Lyd - driver til T2 lydgrænsefladen, understøtter i øjeblikket kun lydoutput gennem MacBook'ens indbyggede højttalere
Det andet projekt hedder macbook12-spi-driver, og den implementerer muligheden for at betjene en input-driver til tastaturet, SPI-trackpad og touchbar til MacBook Pro sent 2016 og senere. Nogle tastatur-/pegefelt-drivere er nu inkluderet i kernen, startende med version 5.3.
Understøttelse af enheder som wi-fi, touchpad osv. blev også implementeret ved hjælp af kernepatches. Nuværende kerneversion5.3.5-1
Hvad virker i øjeblikket
NVMe
tastatur
USB-C (Thunderbolt er ikke blevet testet; når modulet indlæses automatisk, fryser det systemet)
Touchbar (med mulighed for at tænde for Fn-tasterne, baggrundsbelysning, ESC osv.)
Lyd (kun indbyggede højttalere)
Wi-Fi-modul (via brcmfmac og kun via iw)
DisplayPort over USB-C
Sensorer
Suspender/Genoptag (delvist)
etc ..
Denne vejledning gælder for macbookpro15,1 og macbookpro15,2. Artiklen er taget som grundlag fra Github på engelsk. dermed. Ikke alt i denne artikel virkede, så jeg måtte selv finde en løsning.
Hvad du skal bruge til installation
USB-C docking-adapter til USB (mindst tre USB-indgange til tilslutning af mus, tastatur, USB-modem eller telefon i tethering-tilstand). Dette er kun nødvendigt i de første faser af installationen
USB-tastatur
USB/USB-C flashdrev minimum 4GB
1. Deaktiver forbuddet mod opstart fra eksterne medier
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Tilføj lageret til pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Vi ignorerer den originale kerne i pacman.conf:
IgnorePkg = linux linux-headers
Tilføj de nødvendige pakker, tilføj til sidst linux-mbp-kernen og linux-mbp-headerne
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Vi ændrer scriptet til at fungere i interaktiv tilstand (erstat 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!"
}
Dannelse af et billede:
sudo ./build.sh -v
Tryk på Y for at springe ignorerede pakker over, og skriv derefter iso-billedet til usb-flashdrevet:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Første boot
Genstart med flashdrevet og tastaturet indsat. Tryk på optioner, når æblet vises, vælg EFI BOOT.
Dernæst skal du trykke på "e" -tasten og indtaste i slutningen af kommandolinjen module_blacklist=tordenskold. Hvis dette ikke gøres, starter systemet muligvis ikke, og der vises en Thunderbolt ICM-fejl.
Ved at bruge fdisk/cfdisk finder vi vores partition (for mig er det nvme0n1p4), formaterer den og installerer arkivet. Du kan bruge officielle instruktioner eller sidelæns.
Vi opretter ikke en boot-partition; vi skriver bootloaderen ind /dev/nvme0n1p1
Efter at miljøet i /mnt er fuldstændig dannet, og før du flytter til arch-chroot, skriv:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Tilføj til /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Installation af kernemoduler til tastaturet. I depotet anuali1 der er en færdig pakke, hedder det æble-bce-dkms-git. For at installere det, skriv i konsollen:
pacman -S apple-bce-dkms-git
I dette tilfælde vil kernemodulet blive kaldt æble-bce. Ved selvmontering kaldes det BCE. Derfor, hvis du ønsker at registrere et modul i modulet MODULER i filen mkinicpio.conf, så glem ikke hvilket modul du har installeret.
Manuel samling:
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
Tilføj bce- eller apple-bce-modulet til opstart: /etc/modules-load.d/bce.conf
bce
Hvis du vil bruge Fn-knapperne som standard, så skriv i filen /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Opdatering af kernen og initramfs.
mkinitcpio -p linux-mbp
Installer iwd:
sudo pacman -S networkmanager iwd
5. Læssemaskine
Når alle hovedpakkerne er installeret inde i chrooten, kan du begynde at installere bootloaderen.
Jeg har ikke kunnet få grub til at arbejde. Grub starter fra et eksternt USB-drev, men når du forsøger at registrere det i nvme via
systemet gik i kernepanik, og efter genstart dukkede et nyt element gennem muligheder ikke op. Jeg fandt ikke nogen klar løsning på dette problem og besluttede derfor at prøve at implementere opstart ved hjælp af systemd-boot.
Lad os starte
bootctl --path=/boot install
og vi går i kernepanik. Sluk MacBook, tænd den igen, klik på muligheder (sluk ikke USB-C-hubben med tastatur)
Vi tjekker, at der er dukket en ny EFI BOOT-post op ud over den eksterne enhed
Vi vælger at starte fra et eksternt USB-drev, som under den første installation (glem ikke at angive module_blacklist=thunderbolt)
Vi monterer vores disk og går ind i miljøet via arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Hvis det er nødvendigt for tastaturet at virke, indtil systemet er fuldt indlæst (dette er nødvendigt, når du bruger luks/dm-crypt-kryptering), så skriv det i filen /etc/mkinicpio.conf i MODULER-sektionen:
Som det viste sig til sidst, gemmer MacOS firmwarefilerne til wi-fi-adapteren i mappen /usr/share/firmware/wifi , og du kan tage dem derfra i form af klatter og fodre dem til brcmfmac-kernemodulet. For at finde ud af, hvilke filer din adapter bruger, skal du åbne en terminal i MacOS og skrive:
ioreg -l | grep C-4364
Vi får en lang liste. Vi mangler kun filer fra sektionen RequestedFiles:
I dette tilfælde indeholder den sidste tekstfil modelnavnene; hvis din model ikke er macbookpro15,2, skal du omdøbe denne fil i overensstemmelse med din MacBook-model.
Genstart i Arch.
Kopier filerne fra flashdrevet til mappen /lib/firmware/brcm/
I dette øjeblik 16.10.2019 du skal vælge enten lyd eller suspendere/genoptage. Vi venter på, at forfatteren af bce-modulet fuldfører funktionaliteten.
For at bygge et modul med suspenderet/genoptag support skal du gø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 installerede det færdige apple-bce-modul fra anuali1-depotet, skal du først fjerne det og først derefter samle og installere bce-modulet med understøttelse af suspend-tilstand.
Du skal også tilføje applesmc-modulet til sortlisten (hvis du ikke har gjort dette før) og sørge for, at parameteren tilføjes i /boot/loader/entries/arch.conf i indstillingslinjen i slutningen. pcie_ports=compat.
I øjeblikket går touchbar-driveren ned, når den går ind i suspend-tilstand, og thunderbolt-driveren fryser nogle gange systemet i mere end 30 sekunder og i flere minutter, når det genoptages. Dette kan løses ved automatisk at aflæse problematiske moduler.
Opret et script /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
Gør det eksekverbart:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Det er alt for nu. Resultatet er et fuldstændig brugbart system, med undtagelse af nogle nuancer med suspend/resume. Der blev ikke observeret nogen nedbrud eller kernepanik i flere dages oppetid. Jeg håber, at forfatteren af bce-modulet i den nærmeste fremtid vil afslutte det, og vi får fuld support til suspend/resume og lyd.