Omogućavanje da MacBook Pro 2018 T2 radi sa ArchLinuxom (dualboot)
Bilo je dosta navijanja oko činjenice da će novi T2 čip onemogućiti instalaciju Linuxa na nove MacBookove iz 2018. sa touchbar-om. Vrijeme je prolazilo, a krajem 2019. programeri treće strane implementirali su brojne drajvere i zakrpe kernela za interakciju sa T2 čipom. Glavni drajver za MacBook modele 2018 i novije implementira VHCI rad (rad na dodir/tastaturu/itd.), kao i rad sa zvukom.
BCE (Buffer Copy Engine) - uspostavlja glavni komunikacijski kanal sa T2. VHCI i Audio zahtijevaju ovu komponentu.
VHCI je USB Virtual Host Controller; tastatura, miš i druge sistemske komponente su obezbeđene ovom komponentom (drugi drajveri koriste ovaj host kontroler da obezbede više funkcionalnosti.
Audio - drajver za T2 audio interfejs, trenutno podržava samo audio izlaz preko ugrađenih zvučnika MacBook-a
Drugi projekat se zove macbook12-spi-driver, i implementira mogućnost upravljanja ulaznim drajverom za tastaturu, SPI trackpad i touchbar za MacBook Pro krajem 2016. i novije verzije. Neki drajveri za tastaturu/trackpad su sada uključeni u kernel, počevši od verzije 5.3.
Podrška za uređaje kao što su wi-fi, touchpad itd. je također implementirana pomoću kernel zakrpa. Trenutna verzija kernela5.3.5-1
Šta radi u ovom trenutku
NVMe
Tastatura
USB-C (Thunderbolt nije testiran; kada se modul automatski učita, zamrzava sistem)
Ovaj vodič je primjenjiv za macbookpro15,1 i macbookpro15,2. Članak je uzet kao osnova sa Githuba na engleskom. odavde. Nije sve u ovom članku funkcioniralo, pa sam morao sam pronaći rješenje.
Šta trebate instalirati
USB-C adapter za priključivanje na USB (najmanje tri USB ulaza za povezivanje miša, tastature, USB modema ili telefona u modu povezivanja). Ovo je potrebno samo u prvim fazama instalacije
USB tastatura
USB/USB-C fleš disk minimalno 4GB
1. Onemogućite zabranu pokretanja sa eksternog medija
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Dodajte spremište u pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Zanemarujemo originalno jezgro u pacman.conf:
IgnorePkg = linux linux-headers
Dodajte potrebne pakete, na kraju dodajte linux-mbp kernel i linux-mbp-headers
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Mijenjamo skriptu da radi u interaktivnom načinu (zamijenite pacstrap -C sa 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!"
}
Formiranje slike:
sudo ./build.sh -v
Pritisnite Y da preskočite zanemarene pakete, a zatim zapišite iso sliku na USB fleš disk:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Prvo pokretanje
Ponovo pokrenite sa umetnutim fleš diskom i tastaturom. Pritisnite opcije kada se pojavi jabuka, odaberite EFI BOOT.
Zatim morate pritisnuti tipku “e” i unijeti na kraju komandne linije module_blacklist=thunderbolt. Ako se to ne uradi, sistem se možda neće pokrenuti i pojaviće se Thunderbolt ICM greška.
Koristeći fdisk/cfdisk nalazimo našu particiju (kod mene je to nvme0n1p4), formatiramo je i instaliramo arhivu. Možeš koristiti službena uputstva ili bočno.
Ne kreiramo boot particiju; upisaćemo bootloader /dev/nvme0n1p1
Nakon što je okruženje u /mnt potpuno formirano i prije prelaska na arch-chroot, napišite:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Dodajte u /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Instaliranje kernel modula za tastaturu. U spremištu anuali1 postoji gotov paket, zove se apple-bce-dkms-git. Da biste ga instalirali, napišite u konzoli:
pacman -S apple-bce-dkms-git
U ovom slučaju će biti pozvan modul kernela apple-bce. U slučaju samomontaže, to se zove p.n.e. Shodno tome, ako želite da registrujete modul u sekciji MODULES datoteke mkinicpio.conf, ne zaboravite koji ste modul instalirali.
Ručna montaža:
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
Dodajte bce ili apple-bce modul za pokretanje: /etc/modules-load.d/bce.conf
bce
Ako želite da koristite Fn dugmad prema zadanim postavkama, onda napišite u /etc/modprobe.d/apple-tb.conf datoteku:
options apple-ib-tb fnmode=2
Ažuriranje kernela i initramfs-a.
mkinitcpio -p linux-mbp
Instaliraj iwd:
sudo pacman -S networkmanager iwd
5. Utovarivač
Nakon što su svi glavni paketi instalirani unutar chroot-a, možete započeti instalaciju pokretačkog programa.
Nisam mogao natjerati grub na posao. Grub se pokreće sa eksternog USB drajva, ali kada pokušate da ga registrujete u nvme preko
sistem je upao u paniku kernela i nakon ponovnog pokretanja nove stavke kroz opcije se nisu pojavile. Nisam našao nikakvo jasno rješenje za ovaj problem i stoga sam odlučio da pokušam implementirati dizanje koristeći systemd-boot.
Pokreni
bootctl --path=/boot install
i ulazimo u kernel paniku. Isključite MacBook, uključite ga ponovo, kliknite na opcije (ne isključujte USB-C čvorište s tastaturom)
Provjeravamo da li se pojavio novi unos EFI BOOT pored vanjskog uređaja
Odabiremo pokretanje sa eksternog USB diska, kao i prilikom prve instalacije (ne zaboravite navesti module_blacklist=thunderbolt)
Montiramo naš disk i ulazimo u okruženje preko arch-chroot-a
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Ako je potrebno da tastatura radi dok se sistem potpuno ne učita (ovo je neophodno kada koristite luks/dm-crypt enkripciju), onda to upišite u /etc/mkinicpio.conf fajl u odjeljku MODULI:
Kako se na kraju ispostavilo, MacOS pohranjuje fajlove firmvera za wi-fi adapter u folder /usr/share/firmware/wifi , i možete ih uzeti odatle u obliku mrljica i ubaciti ih u modul jezgre brcmfmac. Da biste saznali koje datoteke vaš adapter koristi, otvorite terminal u MacOS-u i napišite:
ioreg -l | grep C-4364
Dobijamo dugu listu. Potrebni su nam samo fajlovi iz sekcije RequestedFiles:
U vašem slučaju, nazivi datoteka mogu se razlikovati. Kopirajte ih iz fascikle /usr/share/firmware/wifi na fleš disk i preimenujte ih na sledeći način:
U ovom slučaju, posljednja tekstualna datoteka sadrži nazive modela; ako vaš model nije macbookpro15,2, onda morate preimenovati ovu datoteku u skladu s vašim MacBook modelom.
Ponovo pokrenite u Arch.
Kopirajte datoteke sa fleš diska u fasciklu /lib/firmware/brcm/
Trenutno 16.10.2019 morate odabrati zvuk ili obustaviti/nastaviti. Čekamo da autor bce modula završi funkcionalnost.
Da biste napravili modul sa podrškom za obustavljeno/nastavljanje, morate učiniti sljedeće:
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
Ako ste instalirali gotovi apple-bce modul iz anuali1 spremišta, onda ga prvo morate ukloniti i tek onda sastaviti i instalirati bce modul sa podrškom za suspend mod.
Takođe, potrebno je da dodate applesmc modul na crnu listu (ako to ranije niste uradili) i proverite da li je u /boot/loader/entries/arch.conf u redu opcija na kraju parametar dodat pcie_ports=compat.
Trenutno se drajver touchbara ruši kada uđe u režim suspendovanja, a drajver thunderbolt ponekad zamrzne sistem na više od 30 sekundi, a na nekoliko minuta kada se nastavi. Ovo se može popraviti automatskim istovarom problematičnih modula.
#!/bin/sh
if [ "" == "pre" ]; then
rmmod thunderbolt
rmmod apple_ib_tb
elif [ "" == "post" ]; then
modprobe apple_ib_tb
modprobe thunderbolt
fi
Učinite ga izvršnim:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
To je sve za sada. Rezultat je potpuno izvodljiv sistem, sa izuzetkom nekih nijansi sa obustavom/nastavkom. Tokom nekoliko dana neprekidnog rada nisu uočeni padovi ili panika kernela. Nadam se da će ga u bliskoj budućnosti autor bce modula završiti, a mi ćemo dobiti punu podršku za suspend/resume i zvuk.