ProHoster > Blog > Administrácia > Zabezpečenie fungovania MacBooku Pro 2018 T2 s ArchLinuxom (dualboot)
Zabezpečenie fungovania MacBooku Pro 2018 T2 s ArchLinuxom (dualboot)
Okolo toho, že nový čip T2 znemožní inštaláciu Linuxu na nové MacBooky 2018 s dotykovým panelom, sa vytvoril pomerne veľký humbuk. Čas plynul a na konci roka 2019 vývojári tretích strán implementovali množstvo ovládačov a záplat jadra na interakciu s čipom T2. Hlavný ovládač pre modely MacBook 2018 a novšie implementuje ovládanie VHCI (ovládanie dotykom/klávesnicou/atď.), ako aj ovládanie zvuku.
BCE (Buffer Copy Engine) - vytvára hlavný komunikačný kanál s T2. VHCI a Audio vyžadujú tento komponent.
VHCI je USB Virtual Host Controller; klávesnica, myš a ďalšie systémové komponenty sú poskytované týmto komponentom (iné ovládače používajú tento hostiteľský radič na poskytovanie ďalších funkcií.
Audio – ovládač pre audio rozhranie T2, v súčasnosti podporuje iba zvukový výstup cez vstavané reproduktory MacBooku
Druhý projekt je tzv ovládač pre macbook12-spia implementuje schopnosť ovládať vstupný ovládač pre klávesnicu, trackpad SPI a dotykový panel pre MacBooky Pro z konca roka 2016 a novšie. Niektoré ovládače klávesnice/trackpadu sú teraz zahrnuté v jadre, počnúc verziou 5.3.
Podpora zariadení ako wi-fi, touchpad atď. bola implementovaná aj pomocou záplat jadra. Aktuálna verzia jadra5.3.5-1
Čo momentálne funguje
NVMe
klávesnica
USB-C (Thunderbolt nebol testovaný, keď sa modul automaticky načíta, systém zamrzne)
Touchbar (s možnosťou zapnúť klávesy Fn, podsvietenie, ESC atď.)
Zvuk (iba vstavané reproduktory)
Wi-Fi modul (cez brcmfmac a iba cez iw)
DisplayPort cez USB-C
Senzory
Pozastaviť/Obnoviť (čiastočne)
atď ..
Tento tutoriál je použiteľný pre macbookpro15,1 a macbookpro15,2. Článok bol prevzatý ako základ z Githubu v angličtine. preto. Nie všetko v tomto článku fungovalo, takže som musel nájsť riešenie sám.
Čo je potrebné nainštalovať
USB-C dokovací adaptér na USB (najmenej tri USB vstupy na pripojenie myši, klávesnice, USB modemu alebo telefónu v režime tetheringu). Toto je potrebné iba počas prvých fáz inštalácie
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Pridajte úložisko do pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Ignorujeme pôvodné jadro v pacman.conf:
IgnorePkg = linux linux-headers
Pridajte potrebné balíčky, na koniec pridajte jadro linux-mbp a hlavičky linux-mbp
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Zmeníme skript, aby pracoval v interaktívnom režime (nahradiť pacstrap -C 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!"
}
Vytváranie obrazu:
sudo ./build.sh -v
Stlačením Y preskočíte ignorované balíčky a potom zapíšete obraz iso na USB flash disk:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Prvé spustenie
Reštartujte s vloženou jednotkou Flash a klávesnicou. Keď sa objaví jablko, stlačte options a vyberte EFI BOOT.
Ďalej musíte stlačiť kláves „e“ a zadať na konci príkazového riadku module_blacklist=blesk blesku. Ak tak neurobíte, systém sa nemusí spustiť a zobrazí sa chyba Thunderbolt ICM Error.
Pomocou fdisk/cfdisk nájdeme náš oddiel (pre mňa je to nvme0n1p4), naformátujeme ho a nainštalujeme archív. Môžeš použiť oficiálne pokyny alebo bokom.
Nevytvárame zavádzací oddiel, zapíšeme bootloader /dev/nvme0n1p1
Po úplnom vytvorení prostredia v /mnt a pred prechodom na arch-chroot napíšte:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Pridať do /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Inštalácia modulov jadra pre klávesnicu. V úložisku anual1 je tam hotový balík, je to tzv apple-bce-dkms-git. Ak ho chcete nainštalovať, napíšte do konzoly:
pacman -S apple-bce-dkms-git
V tomto prípade sa zavolá modul jadra jablko-bce. V prípade svojpomocnej montáže je to tzv BCE. Preto, ak chcete zaregistrovať modul v sekcii MODULES súboru mkinicpio.conf, nezabudnite, ktorý modul ste nainštalovali.
Manuálna montáž:
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
Pridajte modul bce alebo apple-bce do spustenia: /etc/modules-load.d/bce.conf
bce
Ak chcete štandardne používať tlačidlá Fn, napíšte do súboru /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Aktualizácia jadra a initramfs.
mkinitcpio -p linux-mbp
Nainštalovať iwd:
sudo pacman -S networkmanager iwd
5. Nakladač
Po nainštalovaní všetkých hlavných balíkov do chrootu môžete začať inštalovať bootloader.
Nepodarilo sa mi dostať gruba do práce. Grub bootuje z externého USB disku, ale pri pokuse o registráciu v nvme cez
systém prešiel do jadrovej paniky a po reštarte sa nová položka cez možnosti neobjavila. Nenašiel som žiadne jasné riešenie tohto problému a preto som sa rozhodol skúsiť implementovať bootovanie pomocou systemd-boot.
Spustiť
bootctl --path=/boot install
a prechádzame do jadrovej paniky. Vypnite MacBook, znova ho zapnite, kliknite na možnosti (nevypínajte rozbočovač USB-C s klávesnicou)
Skontrolujeme, či sa okrem externého zariadenia objavila aj nová položka EFI BOOT
Vyberieme bootovanie z externého USB disku, ako pri prvej inštalácii (nezabudnite zadať module_blacklist=thunderbolt)
Pripojíme náš disk a ideme do prostredia cez arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Ak je potrebné, aby klávesnica fungovala až do úplného načítania systému (je to potrebné pri použití šifrovania luks/dm-crypt), tak to zapíšte do súboru /etc/mkinicpio.conf v sekcii MODULES:
Ako sa nakoniec ukázalo, MacOS ukladá súbory firmvéru pre wi-fi adaptér do priečinka /usr/share/firmware/wifi , a môžete ich odtiaľ vziať vo forme blobov a nasmerovať ich do modulu jadra brcmfmac. Ak chcete zistiť, ktoré súbory používa váš adaptér, otvorte terminál v systéme MacOS a napíšte:
ioreg -l | grep C-4364
Dostávame dlhý zoznam. Potrebujeme iba súbory zo sekcie Požadované súbory:
V tomto prípade posledný textový súbor obsahuje názvy modelov; ak váš model nie je macbookpro15,2, musíte tento súbor premenovať podľa modelu vášho MacBooku.
Reštartujte do Arch.
Skopírujte súbory z flash disku do priečinka /lib/firmware/brcm/
V súčasnosti 16.10.2019 musíte si vybrať zvuk alebo pozastavenie/obnovenie. Čakáme, kým autor modulu bce dokončí funkcionalitu.
Ak chcete vytvoriť modul s podporou pozastavenia/obnovenia, musíte urobiť nasledovné:
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
Ak ste nainštalovali hotový modul apple-bce z úložiska anuali1, musíte ho najskôr odstrániť a až potom zostaviť a nainštalovať modul bce s podporou režimu spánku.
Tiež musíte pridať modul applesmc na čiernu listinu (ak ste to ešte neurobili) a uistite sa, že v /boot/loader/entries/arch.conf v riadku volieb na konci je pridaný parameter pcie_ports=compat.
V súčasnosti ovládač touchbaru pri prechode do režimu pozastavenia zlyhá a ovládač blesku niekedy zamrzne systém na viac ako 30 sekúnd a pri opätovnom spustení aj na niekoľko minút. Dá sa to vyriešiť automatickým vyložením problematických modulov.
#!/bin/sh
if [ "" == "pre" ]; then
rmmod thunderbolt
rmmod apple_ib_tb
elif [ "" == "post" ]; then
modprobe apple_ib_tb
modprobe thunderbolt
fi
Urobte to spustiteľné:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
To je zatiaľ všetko. Výsledkom je úplne funkčný systém, s výnimkou niektorých nuancií s pozastavením/obnovením. Počas niekoľkých dní prevádzky neboli pozorované žiadne pády ani paniky jadra. Dúfam, že v blízkej budúcnosti to autor modulu bce dokončí a dostaneme plnú podporu pre pozastavenie/obnovenie a zvuk.