ProHoster > Blog > podávání > Jak zajistit, aby MacBook Pro 2018 T2 fungoval s ArchLinuxem (dualboot)
Jak zajistit, aby MacBook Pro 2018 T2 fungoval s ArchLinuxem (dualboot)
O tom, že nový čip T2 znemožní instalaci Linuxu na nové MacBooky 2018 s dotykovou lištou, se udělal docela velký humbuk. Čas plynul a na konci roku 2019 vývojáři třetích stran implementovali řadu ovladačů a záplat jádra pro interakci s čipem T2. Hlavní ovladač pro modely MacBook 2018 a novější implementuje ovládání VHCI (dotykové/klávesnice/atd. ovládání), stejně jako ovládání zvuku.
BCE (Buffer Copy Engine) - vytváří hlavní komunikační kanál s T2. VHCI a Audio tuto komponentu vyžadují.
VHCI je USB Virtual Host Controller; klávesnice, myš a další systémové komponenty jsou poskytovány touto komponentou (jiné ovladače používají tento hostitelský řadič k poskytování více funkcí.
Audio - ovladač pro audio rozhraní T2, aktuálně podporuje pouze audio výstup přes vestavěné reproduktory MacBooku
Druhý projekt se nazývá Ovladač pro macbook12-spia implementuje schopnost ovládat vstupní ovladač pro klávesnici, trackpad SPI a touchbar pro MacBooky Pro z konce roku 2016 a novější. Některé ovladače klávesnice/trackpadu jsou nyní součástí jádra, počínaje verzí 5.3.
Podpora pro zařízení jako wi-fi, touchpad atd. byla také implementována pomocí záplat jádra. Aktuální verze jádra5.3.5-1
Co v tuto chvíli funguje
NVMe
klávesnice
USB-C (Thunderbolt nebyl testován, při automatickém načtení modulu dojde k zamrznutí systému)
Touchbar (s možností zapnout Fn klávesy, podsvícení, ESC atd.)
Zvuk (pouze vestavěné reproduktory)
Wi-Fi modul (přes brcmfmac a pouze přes iw)
DisplayPort přes USB-C
Senzory
Pozastavit/obnovit (částečně)
atd..
Tento tutoriál je použitelný pro macbookpro15,1 a macbookpro15,2. Článek byl převzat jako základ z Githubu v angličtině. proto. Ne vše v tomto článku fungovalo, takže jsem musel najít řešení sám.
Co potřebujete nainstalovat
USB-C dokovací adaptér na USB (alespoň tři USB vstupy pro připojení myši, klávesnice, USB modemu nebo telefonu v režimu tetheringu). To je nutné pouze během prvních fází instalace
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Přidejte úložiště do pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Ignorujeme původní jádro v pacman.conf:
IgnorePkg = linux linux-headers
Přidejte potřebné balíčky, na konci přidejte jádro linux-mbp a linux-mbp-headers
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Změníme skript tak, aby pracoval v interaktivním režimu (nahraďte pacstrap -C za 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áření obrazu:
sudo ./build.sh -v
Stisknutím Y přeskočte ignorované balíčky a poté zapište obraz iso na USB flash disk:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. První spuštění
Restartujte s vloženou jednotkou flash a klávesnicí. Stiskněte možnosti, když se objeví jablko, vyberte EFI BOOT.
Dále musíte stisknout klávesu „e“ a zadat na konci příkazového řádku module_blacklist=blesk blesku. Pokud tak neučiníte, systém se nemusí spustit a objeví se chyba Thunderbolt ICM Error.
Pomocí fdisk/cfdisk najdeme náš oddíl (pro mě je to nvme0n1p4), naformátujeme jej a nainstalujeme archiv. Můžeš použít oficiální pokyny nebo bokem.
Nevytváříme spouštěcí oddíl, zapíšeme bootloader / dev / nvme0n1p1
Po úplném vytvoření prostředí v /mnt a před přechodem na arch-chroot napište:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Přidat do /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Instalace modulů jádra pro klávesnici. V úložišti anual1 existuje hotový balíček, říká se tomu apple-bce-dkms-git. Chcete-li jej nainstalovat, napište do konzole:
pacman -S apple-bce-dkms-git
V tomto případě bude zavolán modul jádra jablko-bce. V případě svépomocné montáže je to tzv bce. Pokud tedy chcete zaregistrovat modul v sekci MODULES souboru mkinicpio.conf, nezapomeňte, který modul jste nainstalovali.
Ruční 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
Přidejte modul bce nebo apple-bce do spuštění: /etc/modules-load.d/bce.conf
bce
Pokud chcete standardně používat tlačítka Fn, zapište do souboru /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Aktualizace jádra a initramfs.
mkinitcpio -p linux-mbp
Nainstalovat iwd:
sudo pacman -S networkmanager iwd
5. Nakladač
Jakmile jsou všechny hlavní balíčky nainstalovány do chrootu, můžete začít instalovat bootloader.
Nepodařilo se mi dostat gruba do práce. Grub bootuje z externího USB disku, ale při pokusu o registraci v nvme přes
systém přešel do jaderné paniky a po restartu se nová položka prostřednictvím voleb neobjevila. Nenašel jsem žádné jasné řešení tohoto problému, a proto jsem se rozhodl zkusit implementovat bootování pomocí systemd-boot.
Běh
bootctl --path=/boot install
a přecházíme do jaderné paniky. Vypněte MacBook, znovu jej zapněte, klikněte na možnosti (nevypínejte rozbočovač USB-C s klávesnicí)
Zkontrolujeme, zda se kromě externího zařízení objevila nová položka EFI BOOT
Vybereme bootování z externího USB disku, jako při první instalaci (nezapomeňte zadat module_blacklist=thunderbolt)
Připojíme náš disk a přejdeme do prostředí přes arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Pokud je nutné, aby klávesnice fungovala až do úplného načtení systému (toto je nutné při použití šifrování luks/dm-crypt), pak to zapište do souboru /etc/mkinicpio.conf v sekci MODULES:
Jak se nakonec ukázalo, MacOS ukládá soubory firmwaru pro wi-fi adaptér do složky /usr/share/firmware/wifi , a odtud je můžete vzít ve formě blobů a nasměrovat je do modulu jádra brcmfmac. Chcete-li zjistit, které soubory váš adaptér používá, otevřete terminál v MacOS a napište:
ioreg -l | grep C-4364
Dostáváme dlouhý seznam. Potřebujeme pouze soubory ze sekce RequestedFiles:
V tomto případě poslední textový soubor obsahuje názvy modelů; pokud váš model není macbookpro15,2, musíte tento soubor přejmenovat podle modelu vašeho MacBooku.
Restartujte do Arch.
Zkopírujte soubory z flash disku do složky /lib/firmware/brcm/
V současné době 16.10.2019 musíte zvolit zvuk nebo pozastavení/obnovení. Čekáme, až autor modulu bce dokončí funkcionalitu.
Chcete-li vytvořit modul s podporou pozastavení/obnovení, musíte provést následující:
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
Pokud jste nainstalovali hotový modul apple-bce z úložiště anuali1, musíte jej nejprve odstranit a teprve poté sestavit a nainstalovat modul bce s podporou režimu spánku.
Také musíte přidat modul applesmc na černou listinu (pokud jste to ještě neudělali) a ujistěte se, že v /boot/loader/entries/arch.conf v řádku voleb na konci je parametr přidán pcie_ports=compat.
V současné době ovladač dotykové lišty selže při přechodu do režimu spánku a ovladač thunderbolt někdy zamrzne systém na více než 30 sekund a při obnovení na několik minut. To lze opravit automatickým vyjmutím problematických modulů.
#!/bin/sh
if [ "" == "pre" ]; then
rmmod thunderbolt
rmmod apple_ib_tb
elif [ "" == "post" ]; then
modprobe apple_ib_tb
modprobe thunderbolt
fi
Udělejte to spustitelným:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
To je prozatím vše. Výsledkem je zcela funkční systém, s výjimkou některých nuancí s pozastavením/obnovením. Během několika dnů provozu nebyly pozorovány žádné pády nebo panika jádra. Doufám, že v dohledné době to autor modulu bce dokončí a dostaneme plnou podporu pro uspání/obnovení a zvuk.