MacBook Pro 2018 T2 für die Verwendung mit ArchLinux (Dualboot)

Es gab viel Hype um die Tatsache, dass es aufgrund des neuen T2-Chips unmöglich ist, Linux mit einer Touchbar auf dem neuen 2018 MacBook zu installieren. Im Laufe der Zeit und bis Ende 2019 implementierten Entwickler von Drittanbietern eine Reihe von Treibern und Kernel-Patches für die Interaktion mit dem T2-Chip. Der Haupttreiber für MacBook-Modelle ab 2018 implementiert die Arbeit von VHCI (die Bedienung von Touch / Tastatur / usw.) sowie die Funktionsweise des Sounds.

Das Projekt mbp2018-bridge-drv ist in drei Hauptkomponenten unterteilt:

  • BCE (Buffer Copy Engine) - Stellt den Hauptkommunikationskanal mit T2 her. VHCI und Audio benötigen diese Komponente.
  • VHCI ist ein virtueller USB-Host-Controller. Tastatur, Maus und andere Systemkomponenten werden von dieser Komponente bereitgestellt (andere Treiber verwenden diesen Host-Controller, um mehr Funktionen bereitzustellen.
  • Audio - Treiber für das T2-Audio-Interface, derzeit wird nur die Audioausgabe über die eingebauten Lautsprecher des MacBook unterstützt

Das zweite Projekt heißt macbook12-spi-driver und implementiert die Möglichkeit des Eingabetreibers für die Tastatur, das Trackpad SPI und die Touchbar für MacBook Pro Ende 2016 und spätere Versionen. Einige Treiber für die Tastatur / das Trackpad sind jetzt im Kernel enthalten, beginnend mit Version 5.3.

Unterstützung wurde auch für Geräte wie Wi-Fi, Touchpad usw. mithilfe von Kernel-Patches implementiert. Derzeit ist die Kernel-Version 5.3.5-1

Was funktioniert im Moment


  1. NVMe
  2. Tastatur
  3. USB-C (Thunderbolt wurde nicht getestet, wenn das Modul automatisch geladen wird, wird das System fest angehalten)
  4. Touchbar (mit der Möglichkeit, die Fn-Tasten, die Hintergrundbeleuchtung, den Regler usw. einzuschalten)
  5. Ton (nur eingebaute Lautsprecher)
  6. Wi-Fi-Modul (über brcmfmac und nur über iw)
  7. DisplayPort über USB-C
  8. Sensoren
  9. Anhalten / Fortsetzen (teilweise)
  10. etc ..

Dieses Tutorial gilt für macbookpro15.1 und macbookpro15.2. Der Artikel wurde von hier aus einem Github in englischer Sprache entnommen. Da nicht alle Artikel funktionierten, musste ich selbst nach einer Lösung suchen.

Was müssen Sie installieren


  • USB-C USB-Dock-Adapter (mindestens drei USB-Eingänge zum Anschließen einer Maus, Tastatur, eines USB-Modems oder eines Telefons im Tethering-Modus). Dies ist nur in den frühen Phasen der Installation erforderlich.
  • USB-Tastatur
  • USB / USB-C-Flash-Laufwerk mindestens 4 GB

1. Deaktivieren Sie das Verbot des Herunterladens von externen Medien


https://support.apple.com/en-us/HT208330
https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/

2. Weisen Sie mit dem Festplatten-Dienstprogramm freien Speicherplatz zu


Der Einfachheit halber habe ich der Festplatte sofort 30 GB zugewiesen und sie im Festplatten-Dienstprogramm selbst so formatiert, dass sie exfat ist. Partitionieren einer physischen Festplatte in Partitionen des Festplatten-Dienstprogramms .

3. Bilden Sie ein ISO-Bild


Optionen:

  1. Sie können den einfachen Weg gehen und das fertige Image mit dem Kernel 5.3.5-1 und den Patches vom Link aunali1 zum fertigen Image herunterladen
  2. Erstellen Sie selbst ein Bild über archlive (Sie benötigen ein System mit Archa-Verteilung).

    Installieren Sie archiso

    pacman -S archiso 

     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 

    Ignorieren Sie den ursprünglichen Kernel in pacman.conf:

     IgnorePkg = linux linux-headers 

    Fügen Sie die erforderlichen Pakete hinzu. Am Ende fügen wir den Kernel linux-mbp und linux-mbp-headers hinzu

     ... wvdial xl2tpd linux-mbp linux-mbp-headers 

    Ändern Sie 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!" } 

    Wir bilden ein Bild:

     sudo ./build.sh -v 

    Drücken Sie Y, um die ignorierten 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 dem eingesetzten Flash-Laufwerk und der Tastatur neu. Drücken Sie die Optionen, wenn der Apfel angezeigt wird, und wählen Sie EFI BOOT.

Als nächstes müssen Sie die Taste "e" drücken und module_blacklist = thunderbolt am Ende der Befehlszeile schreiben. Wenn dies nicht erfolgt, startet das System möglicherweise nicht und der Thunderbolt ICM-Fehler stürzt ab.

Mit fdisk / cfdisk finden wir unsere Partition (ich habe sie nvme0n1p4), formatieren und installieren den Bogen. Sie können die offiziellen Anweisungen oder von Dritten verwenden .

Wir erstellen keine Boot-Partition, sondern schreiben den Bootloader in / dev / nvme0n1p1
Nachdem die Umgebung in / mnt vollständig aufgebaut ist und bevor zu Arch-Chroot gewechselt wird, schreiben wir:

 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 Sie den Kernel:

 sudo pacman -S linux-mbp linux-mbp-headers sudo mkinitcpio -p linux-mbp 

Fügen Sie Thunderbolt und Applesmc in /etc/modprobe.d/blacklist.conf ein

 blacklist thunderbolt blacklist applesmc 

Tastatur, Touchbar usw.


Installieren Sie yay:

 sudo pacman -S git gcc make fakeroot binutils git clone https://aur.archlinux.org/yay.git cd yay makepkg -si 

Installieren Sie die Module für die Touchbar:

 git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git cd macbook12-spi-driver make install 

Fügen Sie dem Autoload Module hinzu: /etc/modules-load.d/apple.conf

 industrialio_triggered_buffer apple-ibridge apple-ib-tb apple-ib-als 

Installieren Sie die Kernelmodule für die Tastatur. Das anuali1- Repository hat ein fertiges Paket, es heißt apple-bce-dkms-git . Um es zu installieren, schreiben Sie in die Konsole:

 pacman -S apple-bce-dkms-git 

In diesem Fall heißt das Kernelmodul apple-bce . Im Falle der Selbstorganisation wird es bce genannt . Wenn Sie also ein Modul im Abschnitt MODULE in 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 automatischen Laden hinzu: /etc/modules-load.d/bce.conf

 bce 

Wenn Sie standardmäßig die Fn-Schaltflächen verwenden möchten, schreiben wir 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 

Installieren Sie iwd:

 sudo pacman -S networkmanager iwd 

5. Bootloader


Sobald in der Chroot alle Hauptpakete installiert sind, können Sie mit der Installation des Bootloaders fortfahren.

Ich habe es nie geschafft, Grub zur Arbeit zu bringen. Von einem externen USB-Laufwerk bootet Grub, aber wenn Sie versuchen, es in NVME über zu registrieren
grub-install --target = x86_64-efi --efi-directory = / boot --bootloader-id = grub
Das System stürzte in Kernel-Panik ab und nach dem Neustart eines neuen Elements über Optionen wurde nicht angezeigt. Ich habe keine verständliche Lösung für dieses Problem gefunden und mich daher entschlossen, den Start mit systemd-boot zu implementieren.

  1. Wir starten

     bootctl --path=/boot install 

    und fliege in die Kernel-Panik. Schalten Sie das MacBook aus, wieder ein, klicken Sie auf Optionen (deaktivieren Sie den USB-C-Hub nicht mit der Tastatur).
  2. Überprüfen Sie, ob zusätzlich zum externen Gerät ein neuer EFI BOOT-Eintrag angezeigt wurde
  3. Wir wählen den Boot wie bei der ersten Installation von einem externen USB-Laufwerk aus (vergessen Sie nicht, module_blacklist = thunderbolt zu schreiben).
  4. Wir mounten unsere Festplatte und gehen durch Arch-Chroot in die Umgebung

 mount /dev/nvme0n1p4 /mnt mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt 

Wenn die Tastatur funktionieren muss, bis das System vollständig geladen ist (dies ist erforderlich, wenn die luks / dm-crypt-Verschlüsselung verwendet wird), schreiben wir sie in die Datei /etc/mkinicpio.conf im Abschnitt MODULES:

 MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce) 

Aktualisieren des Kernels und der initramfs.

 mkinicpio -p linux-mbp 

Konfigurieren Sie systemd-boot


Wir bearbeiten die Datei /boot/loader/loader.conf, löschen alles darin und fügen Folgendes hinzu:

 default arch timeout 5 editor 1 

Gehen Sie zum Ordner / boot / loader / entry, erstellen Sie die Datei arch.conf und schreiben Sie:

 title arch linux /vmlinuz-linux-mbp initrd /initramfs-linux-mbp.img options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat 

Wenn Sie luks und lvm verwendet haben, dann

 options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat 

Starten Sie unter MacOS neu.

6. Wi-Fi-Setup


Wie sich herausstellte, speichert MacOS die Firmware-Dateien für den WLAN-Adapter im Ordner / usr / share / firmware / wifi , und Sie können sie von dort in Form von Blobs übernehmen und dem Kernelmodul brcmfmac zuführen. Um genau herauszufinden, welche Dateien Ihr Adapter verwendet, öffnen Sie das Terminal in MacOS und schreiben Sie:

 ioreg -l | grep C-4364 

Wir bekommen eine lange Liste. Wir benötigen nur Dateien aus dem Abschnitt 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>"}) 

In Ihrem Fall können die Dateinamen abweichen. Kopieren Sie sie aus dem Ordner / usr / share / firmware / wifi auf das USB-Flash-Laufwerk und benennen Sie es in die folgende Ansicht um:

  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> 

In diesem Fall enthält die letzte Textdatei den Modellnamen. Wenn Ihr Modell nicht macbookpro15,2 ist, müssen Sie diese Datei entsprechend Ihrem MacBook-Modell umbenennen.

Starten Sie in arch neu.

Kopieren Sie Dateien vom USB-Stick in den Ordner / 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/ 

Überprüfen Sie den Zustand des Moduls:

 rmmod brcmfmac modprobe brcmfmac 

Wir stellen sicher, dass die Netzwerkschnittstelle über ifconfig / ip angezeigt wird.
Konfigurieren Sie WLAN über iwctl

Achtung Über netctl, nmcli usw. Die Schnittstelle funktioniert nicht, nur über iwd.

NetworkManager dazu bringen, iwd zu verwenden. Erstellen Sie dazu die Datei /etc/NetworkManager/NetworkManager.conf und schreiben Sie:

 [device] wifi.backend=iwd 

Starten des NetworkManager-Dienstes

 sudo systemctl start NetworkManager.service sudo systemctl enable NetworkManager.service 

7. Ton


Um Sound zu erzeugen, müssen Sie pulseaudio installieren:

 sudo pacman -S pulseaudio 

Laden Sie drei Dateien herunter:


Bewegen Sie sie:

  /usr/share/alsa/cards/AppleT2.conf /usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf /usr/lib/udev/rules.d/91-pulseaudio-custom.rules 

8. Anhalten / Fortsetzen


Im Moment, 16.10.2019 , müssen Sie entweder Sound oder Suspend / Resume auswählen. Wir warten darauf, dass der Autor des bce-Moduls die Funktionalität beendet.

Um ein Modul mit Unterstützung für Susped / Resume 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 vorgefertigte 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 sammeln und installieren.

Außerdem müssen Sie das applesmc-Modul zur Blacklist hinzufügen (falls Sie dies noch nicht getan haben) und sicherstellen, dass der Parameter pcie_ports = compatible der Zeile /boot/loader/entries/arch.conf in der Optionszeile am Ende hinzugefügt wird.

Im Moment stürzt der Touchbar-Treiber ab, wenn Sie in den Suspend-Modus wechseln, und der Thunderbolt-Treiber unterbricht das System manchmal für mehr als 30 Sekunden und wenn Sie es fortsetzen, für einige Minuten. Dies kann durch automatisches Herunterladen von Problemmodulen behoben werden.

Erstellen Sie das 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 

Machen Sie es ausführbar:

 sudo chmod +x /lib/systemd/system-sleep/rmmod.sh 

Das ist alles für jetzt. Das Ergebnis ist ein voll funktionsfähiges System, mit Ausnahme einiger Nuancen mit Suspend / Resume. Mehrere Tage lang wurden keine Abstürze und Kernel-Panik beobachtet. Ich hoffe, dass der Autor des bce-Moduls es in naher Zukunft fertigstellen wird und wir volle Unterstützung für Suspend / Resume und Sound erhalten.

Source: https://habr.com/ru/post/de472106/


All Articles