Det var mye stÞy om at det nye T2-chippet gjÞr det umulig Ä installere Linux pÄ de nye MacBook-modellene fra 2018 med Touch Bar. Tiden gikk, og mot slutten av 2019 utviklet tredjeparts utviklere en rekke drivere og kjernepatcher for Ä kommunisere med T2-chippet. Hoveddriveren for MacBook-modellene fra 2018 og nyere implementerer VHCI (funksjonalitet for Touch Bar/tastatur/osv.), samt lyden.
Prosjekt delt opp i 3 hovedkomponenter:
- BCE (Buffer Copy Engine) â etablerer den primĂŠre kommunikasjonskanalen med T2. VHCI og Audio krever denne komponenten.
- VHCI â er en virtuell vertskontroller for USB; tastatur, mus og andre systemkomponenter leveres av denne komponenten (andre drivere bruker denne vertskontrolleren for Ă„ gi mer funksjonalitet).
- Audio â driveren for T2s lydgrensesnitt, stĂžtter for Ăžyeblikket bare lydutgang gjennom de innebygde hĂžyttalerne i MacBook.
Det andre prosjektet kalles , og det gir drivermulighetene for tastatur, trackpad SPI, og Touch Bar for MacBook Pro fra slutten av 2016 og nyere. Noen av driverne for tastatur/trackpad er nÄ inkludert i kjernen, fra versjon 5.3.
Det er ogsÄ lagt til stÞtte for enheter som Wi-Fi, trackpad, osv., ved hjelp av kjernepatcher. For Þyeblikket er kjerneversjonen
Hva som fungerer akkurat nÄ
- NVMe
- Tastatur
- USB-C (Thunderbolt har ikke blitt testet; ved automatisk lasting av modulen henger systemet seg helt).
- Touch Bar (med mulighet for Ă„ aktivere Fn-tastene, bakgrunnsbelysning, ESC osv.)
- Lyd (kun de innebygde hĂžyttalerne).
- Wi-Fi-modul (via brcmfmac og kun gjennom iw).
- DisplayPort via USB-C.
- Sensorer.
- Suspend/Resume (delvis).
- osv.
Denne guiden gjelder for macbookpro15,1 og macbookpro15,2. Basert pÄ en artikkel fra GitHub pÄ engelsk. Ikke alt i denne artikkelen fungerte, sÄ jeg mÄtte finne lÞsningen selv.
Hva som kreves for installasjon
- USB-C dokkestasjon til USB (minimum tre USB-porter for Ă„ koble til mus, tastatur, USB-modem eller telefon i tethering-modus). Dette er kun nĂždvendig i de tidlige installasjonsfasene.
- USB-tastatur.
- USB/USB-C flash-stasjon pÄ minst 4GB.
1. Deaktiver forbudet mot oppstart fra eksterne medier.
2. Alloker ledig plass ved hjelp av DiskverktĂžy.
For enkelhets skyld allokerte jeg med én gang 30GB til disken, formatert i exFAT i DiskverktÞy. .
3. Oppretting av ISO-bilde
Alternativer:
- Du kan ta den enkle veien og laste ned et ferdig bilde med kjerne 5.3.5-1 og patcher fra
- Lag bildet selv via archlive (krever et system med Arch-distribusjon)
Installerer
pacman -S archisocp -r /usr/share/archiso/configs/releng/ archlive cd archliveLegg til depot i pacman.conf:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$archIgnorer den originale kjernen i pacman.conf:
IgnorePkg = linux linux-headersLegg til nĂždvendige pakker, til slutt legger vi til kjernen linux-mbp og linux-mbp-headers
... wvdial xl2tpd linux-mbp linux-mbp-headersEndre skriptet for interaktivt modus (bytt pacstrap -C til 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!" }Oppretting av bildet:
sudo ./build.sh -vTrykk Y for Ä hoppe over de ignorerte pakkene, deretter skriver vi ISO-bildet pÄ USB-minne:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. FĂžrste oppstart
Start pÄ nytt med USB-minnet og tastaturet tilkoblet. Trykk options nÄr eplet vises, og velg EFI BOOT.
Deretter mÄ du trykke pÄ tasten «e» og skrive inn pÄ slutten av kommandolinjen module_blacklist=thunderbolt. Hvis du ikke gjÞr dette vil systemet kanskje ikke starte, og du vil fÄ en Thunderbolt ICM-feil.
Med fdisk/cfdisk finner vi vÄr partisjon (i mitt tilfelle er det nvme0n1p4), formaterer og installerer Arch. Du kan bruke eller .
Vi lager ikke en oppstartspartisjon, oppstartslasteren skal skrives til /dev/nvme0n1p1
NÄr miljÞet er fullstendig opprettet i /mnt og fÞr vi gÄr inn i arch-chroot, skriver vi:
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
Installer kjernen:
sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp
Skriv inn thunderbolt og applesmc i /etc/modprobe.d/blacklist.conf
blacklist thunderbolt
blacklist applesmc
Tastatur, Touch Bar, etc.
Installer yay:
sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
Installer moduler for Ä fÄ Touch Bar til Ä fungere:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install
Legg til moduler i oppstart i: /etc/modules-load.d/apple.conf
industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als
Installer kjerner for Ä fÄ tastaturet til Ä fungere. I depotet finnes en ferdig pakke som heter apple-bce-dkms-git. For Ä installere den, skriv i konsollen:
pacman -S apple-bce-dkms-gitI dette tilfellet vil kjernemodulet hete apple-bce. Hvis du bygger det selv, heter det bce. Hvis du vil inkludere modulen i MODULES-delen av mkinicpio.conf-filen, husk 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 modulen bce eller apple-bce i oppstartslisten: /etc/modules-load.d/bce.conf
bceHvis du vil bruke Fn-tastene som standard, sÄ skriver du i filen /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2Oppdater kjernen og initramfs.
mkinitcpio -p linux-mbp
Installer iwd:
sudo pacman -S networkmanager iwd5. Bootloader
NÄr alle hovedpakker er installert i chroot, kan vi begynne Ä installere bootloaderen.
Jeg klarte ikke Ä fÄ grub til Ä fungere. Fra en ekstern USB-disk starter grub opp, men ved forsÞk pÄ Ä installere det i nvme oppstod det problemer.
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
Systemet krasjet med kernel panic, og etter omstart dukket ikke det nye alternativet opp under options. Jeg fant ingen tydelig lÞsning pÄ dette problemet og bestemte meg derfor for Ä prÞve Ä implementere oppstart ved hjelp av systemd-boot.
- Startar
bootctl --path=/boot installOg vi krasjer med kernel panic. SlÄ av MacBooken, start pÄ nytt, hold inne options (ikke koble fra USB-C huben med tastaturet)
- Sjekk at det dukker opp et nytt EFI BOOT-alternativ i tillegg til den eksterne enheten
- Velg oppstart fra den eksterne USB-disken, som ved den fĂžrste installasjonen (ikke glem Ă„ skrive module_blacklist=thunderbolt)
- Monter disken vÄr og gÄ inn i miljÞet via arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Hvis det er nÞdvendig at tastaturet fungerer fÞr systemet er fullastet (dette er nÞdvendig ved bruk av luks/dm-crypt-kryptering), sÄ skriver vi inn i filen /etc/mkinicpio.conf i seksjonen MODULES:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
Oppdater kjernen og initramfs.
mkinicpio -p linux-mbp
Konfigurer systemd-boot
Rediger filen /boot/loader/loader.conf, slett alt inne i den, og legg til fĂžlgende:
default arch
timeout 5
editor 1
GĂ„ til mappen /boot/loader/entries, opprett filen arch.conf og skriv:
tittel arch
linux /vmlinuz-linux-mbp
initrd /initramfs-linux-mbp.img
alternativer root=/dev/<b>nvme0n1p4</b> rw pcie_ports=kompat
Hvis du har brukt luks og lvm, sÄ
alternativer cryptdevice=\/dev\/<b>nvme0n1p4</b>:luks rot=\/dev\/mapper\/vz0-root rw pcie_ports=kompatibel
Start pÄ nytt i MacOS.
6. Konfigurering av Wi-Fi
Som det viste seg, lagrer MacOS firmwarefiler for Wi-Fi-adapteren i mappen /usr/share/firmware/wifi , og du kan ta dem derfra i form av blobs og gi dem til brcmfmac-kjernemodulen. For Ä finne ut hvilke filer adapteren din bruker, Äpner du terminalen i MacOS og skriver:
ioreg -l | grep C-4364Du fÄr en lang liste. Vi trenger bare filene fra delen 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>"})
I ditt tilfelle kan filnavnene variere. Kopier dem fra mappen /usr/share/firmware/wifi til USB-pinn og gi dem et nytt navn:
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>
I dette tilfellet inneholder den siste tekstfilen modellnavn. Hvis modellen din ikke er macbookpro15,2, mÄ du gi filen nytt navn i trÄd med din MacBook-modell.
Vi starter pÄ nytt i Arch.
Vi kopierer filer fra USB-minnet til mappen /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/
Vi sjekker modulens funksjonalitet:
rmmod brcmfmac
modprobe brcmfmac
Vi sĂžrger for at nettverksgrensesnittet er synlig via ifconfig/ip.
Vi konfigurerer wifi via
Advarsel. Nettverksgrensesnittet fungerer ikke med netctl, nmcli, osv. Bare via iwd.
Vi tvinger NetworkManager til Ă„ bruke iwd. For dette lager vi filen /etc/NetworkManager/NetworkManager.conf og skriver:
[device]
wifi.backend=iwd
Vi starter NetworkManager-tjenesten
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
7. Lyd
For at lyden skal fungere, mÄ pulseaudio installeres:
sudo pacman -S pulseaudio
Vi laster ned tre filer:
Vi flytter dem:
/usr/share/alsa/cards/AppleT2.conf
/usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf
/usr/lib/udev/rules.d/91-pulseaudio-custom.rules8. Suspend/Resume
For Þyeblikket 16.10.2019 Vi mÄ velge enten lyd eller suspend/resume. Vi venter til forfatteren av bce-modulen oppdaterer funksjonaliteten.
For Ä bygge modulen med stÞtte for suspend/resume, 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 har installert den ferdige apple-bce-modulen fra repositoriet anuali1, mÄ du fÞrst fjerne den, og deretter bygge og installere bce-modulen med stÞtte for suspend-modus.
Det er ogsÄ nÞdvendig Ä legge applesmc-modulen til svartelisten (hvis du ikke har gjort det tidligere) og sÞrge for at parameteren pcie_ports=compat.
Per nÄ krasjer Touch Bar-driveren nÄr man gÄr inn i suspend-modus, og Thunderbolt-driveren kan noen ganger henge systemet i mer enn 30 sekunder, og ved gjenopptakelse i flere minutter. Dette kan lÞses ved automatisk Ä laste ut problematiske moduler.
Lag et skript /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
GjĂžr det kjĂžrbart:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh Det er alt sÄ langt. Resultatet er et ganske funksjonelt system, bortsett fra noen nyanser med suspend/resume. Ingen krasjer eller kernel panic har blitt observert pÄ flere dager med oppetid. Jeg hÄper forfatteren av bce-modulen vil forbedre det snart, slik at vi fÄr full stÞtte for suspend/resume og lyd.
Kilde: habr.com
