ProHoster > Blog > Verwaltung > MacBook Pro 2018 T2 mit ArchLinux (Dualboot) funktionieren lassen
MacBook Pro 2018 T2 mit ArchLinux (Dualboot) funktionieren lassen
Es gab einen ziemlichen Hype darüber, dass der neue T2-Chip die Installation von Linux auf den neuen 2018 MacBooks mit Touchbar unmöglich machen wird. Die Zeit verging und Ende 2019 implementierten Drittentwickler eine Reihe von Treibern und Kernel-Patches für die Interaktion mit dem T2-Chip. Der Haupttreiber für MacBook-Modelle 2018 und neuer implementiert den VHCI-Betrieb (Touch-/Tastatur-/usw.-Betrieb) sowie den Soundbetrieb.
BCE (Buffer Copy Engine) – stellt den Hauptkommunikationskanal mit T2 her. VHCI und Audio erfordern diese Komponente.
VHCI ist ein USB Virtual Host Controller; Tastatur, Maus und andere Systemkomponenten werden von dieser Komponente bereitgestellt (andere Treiber verwenden diesen Host-Controller, um mehr Funktionalität bereitzustellen.
Audio – Treiber für die T2-Audioschnittstelle, unterstützt derzeit nur die Audioausgabe über die eingebauten Lautsprecher des MacBook
Das zweite Projekt heißt MacBook12-SPI-Treiberund implementiert die Möglichkeit, einen Eingabetreiber für die Tastatur, das SPI-Trackpad und die Touchbar für MacBook Pro Ende 2016 und höher zu betreiben. Einige Tastatur-/Trackpad-Treiber sind jetzt im Kernel enthalten, beginnend mit Version 5.3.
Die Unterstützung für Geräte wie WLAN, Touchpad usw. wurde ebenfalls mithilfe von Kernel-Patches implementiert. Aktuelle Kernel-Version5.3.5-1
Was im Moment funktioniert
NVMe
Tastatur
USB-C (Thunderbolt wurde nicht getestet; wenn das Modul automatisch geladen wird, friert es das System ein)
Touchbar (mit der Möglichkeit, die Fn-Tasten, die Hintergrundbeleuchtung, ESC usw. einzuschalten)
Ton (nur eingebaute Lautsprecher)
Wi-Fi-Modul (über brcmfmac und nur über iw)
DisplayPort über USB-C
Sensoren
Unterbrechen/Fortsetzen (teilweise)
etc..
Dieses Tutorial gilt für MacBook Pro 15,1 und MacBook Pro 15,2. Der Artikel wurde als Grundlage von Github in englischer Sprache übernommen. daher. Da nicht alles in diesem Artikel funktionierte, musste ich selbst eine Lösung finden.
Was Sie für die Installation benötigen
USB-C-Docking-Adapter auf USB (mindestens drei USB-Eingänge zum Anschluss einer Maus, Tastatur, USB-Modem oder Telefon im Tethering-Modus). Dies ist nur in den ersten Phasen der Installation erforderlich
USB-Tastatur
USB/USB-C-Flash-Laufwerk mindestens 4 GB
1. Deaktivieren Sie das Bootverbot von externen Medien
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Fügen Sie das Repository zu pacman.conf hinzu:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Wir ignorieren den Originalkernel in pacman.conf:
IgnorePkg = linux linux-headers
Fügen Sie die erforderlichen Pakete hinzu und fügen Sie am Ende den Linux-MBP-Kernel und die Linux-MBP-Header hinzu
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Wir ändern das Skript so, dass es im interaktiven Modus funktioniert (ersetzen Sie pacstrap -C durch 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!"
}
Ein Bild formen:
sudo ./build.sh -v
Drücken Sie Y, um ignorierte Pakete zu überspringen, und schreiben Sie dann das ISO-Image auf das USB-Flash-Laufwerk:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Erster Start
Starten Sie mit eingesetztem Flash-Laufwerk und Tastatur neu. Drücken Sie Optionen, wenn der Apfel erscheint, und wählen Sie EFI BOOT.
Als nächstes müssen Sie die Taste „e“ drücken und am Ende der Befehlszeile eingeben module_blacklist=Thunderbolt. Andernfalls startet das System möglicherweise nicht und es wird ein Thunderbolt ICM-Fehler angezeigt.
Mit fdisk/cfdisk finden wir unsere Partition (bei mir ist es nvme0n1p4), formatieren sie und installieren das Archiv. Sie können verwenden offizielle Anweisung oder seitwärts.
Wir erstellen keine Boot-Partition; wir schreiben den Bootloader hinein /dev/nvme0n1p1
Nachdem die Umgebung in /mnt vollständig erstellt wurde und bevor Sie zu arch-chroot wechseln, schreiben Sie:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Zu /etc/pacman.conf hinzufügen:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Installieren von Kernelmodulen für die Tastatur. Im Repository anuali1 Es gibt ein fertiges Paket, das heißt apple-bce-dkms-git. Um es zu installieren, schreiben Sie in die Konsole:
pacman -S apple-bce-dkms-git
In diesem Fall wird das Kernelmodul aufgerufen Apfel-bce. Im Falle der Selbstorganisation spricht man von BCE. Wenn Sie also ein Modul im Abschnitt MODULES der Datei mkinicpio.conf registrieren möchten, vergessen Sie nicht, welches Modul Sie installiert haben.
Manuelle Montage:
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
Fügen Sie das bce- oder apple-bce-Modul zum Start hinzu: /etc/modules-load.d/bce.conf
bce
Wenn Sie standardmäßig die Fn-Tasten verwenden möchten, schreiben Sie in die Datei /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Aktualisieren des Kernels und der Initramfs.
mkinitcpio -p linux-mbp
iwd installieren:
sudo pacman -S networkmanager iwd
5. Lader
Sobald alle Hauptpakete in der Chroot installiert sind, können Sie mit der Installation des Bootloaders beginnen.
Es ist mir nicht gelungen, Grub zum Laufen zu bringen. Grub bootet von einem externen USB-Laufwerk, aber wenn Sie versuchen, es in nvme über zu registrieren
Das System geriet in eine Kernel-Panik und nach dem Neustart wurde über die Optionen kein neues Element angezeigt. Ich habe keine eindeutige Lösung für dieses Problem gefunden und habe mich daher entschlossen, zu versuchen, das Booten mit systemd-boot zu implementieren.
Rennen
bootctl --path=/boot install
und wir geraten in Kernel-Panik. Schalten Sie das MacBook aus, schalten Sie es wieder ein, klicken Sie auf Optionen (schalten Sie den USB-C-Hub mit Tastatur nicht aus).
Wir prüfen, ob zusätzlich zum externen Gerät ein neuer EFI BOOT-Eintrag erschienen ist
Wir wählen, wie bei der ersten Installation, von einem externen USB-Laufwerk zu booten (vergessen Sie nicht, module_blacklist=thunderbolt anzugeben).
Wir mounten unsere Festplatte und gehen per Arch-Chroot in die Umgebung
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Wenn es notwendig ist, dass die Tastatur funktioniert, bis das System vollständig geladen ist (dies ist bei Verwendung der luks/dm-crypt-Verschlüsselung erforderlich), dann schreiben Sie es in die Datei /etc/mkinicpio.conf im Abschnitt MODULES:
Wie sich am Ende herausstellte, speichert MacOS die Firmware-Dateien für den WLAN-Adapter in dem Ordner /usr/share/firmware/wifi , und Sie können sie von dort in Form von Blobs übernehmen und sie dem brcmfmac-Kernelmodul zuführen. Um herauszufinden, welche Dateien Ihr Adapter verwendet, öffnen Sie ein Terminal in MacOS und schreiben Sie:
ioreg -l | grep C-4364
Wir bekommen eine lange Liste. Wir benötigen nur Dateien aus dem Abschnitt Angeforderte Dateien:
In Ihrem Fall können die Dateinamen abweichen. Kopieren Sie sie aus dem Ordner /usr/share/firmware/wifi auf das Flash-Laufwerk und benennen Sie sie wie folgt um:
In diesem Fall enthält die letzte Textdatei die Modellnamen; wenn Ihr Modell nicht macbookpro15,2 ist, müssen Sie diese Datei entsprechend Ihrem MacBook-Modell umbenennen.
Starten Sie Arch neu.
Kopieren Sie die Dateien vom Flash-Laufwerk in den Ordner /lib/firmware/brcm/
Im Augenblick 16.10.2019 Sie müssen entweder „Ton“ oder „Unterbrechen/Fortsetzen“ wählen. Wir warten darauf, dass der Autor des bce-Moduls die Funktionalität vervollständigt.
Um ein Modul mit Susped/Resume-Unterstützung zu erstellen, müssen Sie Folgendes tun:
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
Wenn Sie das fertige Apple-BCE-Modul aus dem anuali1-Repository installiert haben, müssen Sie es zuerst entfernen und erst dann das BCE-Modul mit Unterstützung für den Suspend-Modus zusammenstellen und installieren.
Außerdem müssen Sie das applesmc-Modul zur Blacklist hinzufügen (falls Sie dies noch nicht getan haben) und sicherstellen, dass in /boot/loader/entries/arch.conf in der Optionszeile am Ende der Parameter hinzugefügt wird pcie_ports=compat.
Derzeit stürzt der Touchbar-Treiber ab, wenn er in den Suspend-Modus wechselt, und der Thunderbolt-Treiber friert das System manchmal für mehr als 30 Sekunden und beim Fortsetzen für mehrere Minuten ein. Dies kann durch automatisches Entladen problematischer Module behoben werden.
Erstellen Sie ein Skript /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
Machen Sie es ausführbar:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Das ist alles für den Moment. Das Ergebnis ist ein vollständig funktionsfähiges System, mit Ausnahme einiger Nuancen bei Suspend/Resume. Während der mehrtägigen Betriebszeit wurden keine Abstürze oder Kernel-Panik beobachtet. Ich hoffe, dass der Autor des bce-Moduls es in naher Zukunft fertigstellt und wir volle Unterstützung für Suspend/Resume und Sound erhalten.