Mise en marche du MacBook Pro 2018 T2 avec ArchLinux (double démarrage)

Il y avait beaucoup de battage médiatique sur le fait qu'en raison de la nouvelle puce T2, il est impossible d'installer Linux sur le nouveau MacBook 2018 avec une barre tactile. Au fil du temps et à la fin de 2019, des développeurs tiers ont implémenté un certain nombre de pilotes et de correctifs de noyau pour interagir avec la puce T2. Le pilote principal pour les modÚles MacBook 2018 et plus récents implémente le travail de VHCI (le fonctionnement du tactile / clavier / etc.), ainsi que le fonctionnement du son.

Le projet mbp2018-bridge-drv est divisé en 3 composantes principales:

  • BCE (Buffer Copy Engine) - Ă©tablit le canal de communication principal avec T2. VHCI et Audio nĂ©cessitent ce composant.
  • VHCI est un contrĂŽleur hĂŽte virtuel USB; le clavier, la souris et d'autres composants du systĂšme sont fournis par ce composant (d'autres pilotes utilisent ce contrĂŽleur hĂŽte pour fournir plus de fonctionnalitĂ©s.
  • Audio - pilote pour l'interface audio T2, actuellement seule la sortie audio via les haut-parleurs intĂ©grĂ©s du MacBook est prise en charge

Le deuxiÚme projet s'appelle macbook12-spi-driver , et il implémente la possibilité du pilote d'entrée pour le clavier, le trackpad SPI, la barre tactile pour MacBook Pro fin 2016 et versions ultérieures. Certains pilotes pour le clavier / trackpad sont désormais inclus dans le noyau, à partir de la version 5.3.

La prise en charge a Ă©galement Ă©tĂ© mise en Ɠuvre pour des pĂ©riphĂ©riques tels que le Wi-Fi, le pavĂ© tactile, etc., utilisant des correctifs du noyau. Actuellement, la version du noyau est 5.3.5-1

Ce qui fonctionne en ce moment


  1. NVMe
  2. Clavier
  3. USB-C (Thunderbolt n'a pas été testé, lorsque le module se charge automatiquement, il suspend fermement le systÚme)
  4. Barre tactile (avec la possibilité d'activer les touches Fn, rétro-éclairage, ESC, etc.)
  5. Son (haut-parleurs intégrés uniquement)
  6. Module Wi-Fi (via brcmfmac et uniquement via iw)
  7. DisplayPort via USB-C
  8. Capteurs
  9. Suspendre / reprendre (partiellement)
  10. etc.

Ce didacticiel s'applique Ă  macbookpro15.1 et macbookpro15.2. L'article a Ă©tĂ© extrait d'un github en anglais d'ici . Tout cet article n'a pas fonctionnĂ©, j'ai donc dĂ» chercher une solution par moi-mĂȘme.

Ce que vous devez installer


  • Adaptateur de station d'accueil USB-C USB (au moins trois entrĂ©es USB pour connecter une souris, un clavier, un modem USB ou un tĂ©lĂ©phone en mode modem). Cela n'est nĂ©cessaire qu'aux premiers stades de l'installation.
  • Clavier USB
  • Lecteur flash USB / USB-C d'au moins 4 Go

1. Désactivez l'interdiction de téléchargement à partir de supports externes


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

2. Allouez de l'espace libre Ă  l'aide de l'Utilitaire de disque


Pour plus de commoditĂ©, j'ai immĂ©diatement allouĂ© 30 Go au disque, le formatant en exfat dans l'Utilitaire de disque lui-mĂȘme. Partitionnement d'un disque physique en partitions Disk Utility .

3. Former une image iso


Options:

  1. Vous pouvez suivre la voie simple et télécharger l'image finie avec le noyau 5.3.5-1 et les correctifs du lien aunali1 vers l'image finie
  2. CrĂ©ez vous-mĂȘme une image via archlive (vous avez besoin d'un systĂšme avec distribution archa)

    Installer archiso

    pacman -S archiso 

     cp -r /usr/share/archiso/configs/releng/ archlive cd archlive 

    Ajoutez le référentiel à pacman.conf:

     [mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch 

    Ignorez le noyau d'origine dans pacman.conf:

     IgnorePkg = linux linux-headers 

    Ajoutez les packages nécessaires, à la fin nous ajoutons le noyau linux-mbp et linux-mbp-headers

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

    Modifiez le script pour qu'il fonctionne en mode interactif (remplacez pacstrap -C par 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!" } 

    Nous formons une image:

     sudo ./build.sh -v 

    Appuyez sur Y pour ignorer les packages ignorés, puis écrivez l'image iso sur le lecteur flash USB:

     sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M 


4. Premier démarrage


Redémarrez avec le lecteur flash et le clavier insérés. Appuyez sur options lorsque la pomme apparaßt, sélectionnez EFI BOOT.

Ensuite, vous devez appuyer sur la touche "e" et écrire module_blacklist = thunderbolt à la fin de la ligne de commande. Si cela n'est pas fait, le systÚme risque de ne pas démarrer et l'erreur Thunderbolt ICM se bloquera.

En utilisant fdisk / cfdisk, nous trouvons notre partition (je l'ai nvme0n1p4), formatez et installez l'arche. Vous pouvez utiliser les instructions officielles ou des tiers .

Nous ne créons pas la partition de démarrage, nous allons écrire le chargeur de démarrage dans / dev / nvme0n1p1
Une fois l'environnement dans / mnt entiÚrement formé et avant de passer à arch-chroot, nous écrivons:

 mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt /bin/bash 

Ajoutez Ă  /etc/pacman.conf:

 [mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch 

Installez le noyau:

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

Mettez thunderbolt et applesmc dans /etc/modprobe.d/blacklist.conf

 blacklist thunderbolt blacklist applesmc 

Clavier, barre tactile, etc.


Installez yay:

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

Installez les modules de la barre tactile:

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

Ajouter des modules au chargement automatique: /etc/modules-load.d/apple.conf

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

Installez les modules du noyau pour le clavier. Le rĂ©fĂ©rentiel anuali1 a un paquet prĂȘt Ă  l'emploi, il s'appelle apple-bce-dkms-git . Pour l'installer, Ă©crivez dans la console:

 pacman -S apple-bce-dkms-git 

Dans ce cas, le module du noyau s'appellera apple-bce . Dans le cas de l'auto-assemblage, il est appelé bce . Par conséquent, si vous souhaitez enregistrer un module dans la section MODULES du fichier mkinicpio.conf, n'oubliez pas le module que vous avez installé.

Assemblage manuel:

 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 

Ajoutez le module bce ou apple-bce au chargement automatique: /etc/modules-load.d/bce.conf

 bce 

Si vous souhaitez utiliser les boutons Fn par défaut, alors dans le fichier /etc/modprobe.d/apple-tb.conf nous écrivons:

 options apple-ib-tb fnmode=2 

Mise Ă  jour du noyau et des initramfs.

 mkinitcpio -p linux-mbp 

Installez iwd:

 sudo pacman -S networkmanager iwd 

5. Bootloader


Une fois à l'intérieur du chroot, tous les packages principaux sont installés, vous pouvez procéder à l'installation du chargeur de démarrage.

Je n'ai jamais rĂ©ussi Ă  faire travailler Grub. À partir d'un lecteur USB externe, grub dĂ©marre, mais lorsque vous essayez de l'enregistrer dans nvme via
grub-install --target = x86_64-efi --efi-directory = / boot --bootloader-id = grub
le systĂšme s'est Ă©crasĂ© dans la panique du noyau, et aprĂšs le redĂ©marrage d'un nouvel Ă©lĂ©ment via les options n'apparaissait pas. Je n'ai trouvĂ© aucune solution intelligible Ă  ce problĂšme et j'ai donc dĂ©cidĂ© d'essayer de mettre en Ɠuvre le dĂ©marrage en utilisant systemd-boot.

  1. Nous lançons

     bootctl --path=/boot install 

    et s'envoler vers la panique du noyau. Éteignez le MacBook, rallumez-le, cliquez sur Options (ne dĂ©sactivez pas le concentrateur USB-C avec le clavier)
  2. Vérifier qu'un nouvel enregistrement EFI BOOT est apparu en plus du périphérique externe
  3. Nous sélectionnons le démarrage à partir d'un lecteur USB externe, comme lors de la premiÚre installation (n'oubliez pas d'écrire module_blacklist = thunderbolt)
  4. Nous montons notre disque et allons dans l'environnement via arch-chroot

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

S'il est nécessaire que le clavier fonctionne jusqu'à ce que le systÚme soit complÚtement chargé (cela est nécessaire si le cryptage luks / dm-crypt est utilisé), alors nous l'écrivons dans le fichier /etc/mkinicpio.conf dans la section MODULES:

 MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce) 

Mise Ă  jour du noyau et des initramfs.

 mkinicpio -p linux-mbp 

Configurer systemd-boot


Nous Ă©ditons le fichier /boot/loader/loader.conf, supprimons tout ce qu'il contient et ajoutons ce qui suit:

 default arch timeout 5 editor 1 

Accédez au dossier / boot / loader / entries, créez le fichier arch.conf et écrivez:

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

Si vous avez utilisé luks et lvm, alors

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

Redémarrez sous MacOS.

6. Configuration Wi-Fi


Il s'est avéré que MacOS stocke les fichiers du firmware de l'adaptateur Wi-Fi dans le dossier / usr / share / firmware / wifi , et vous pouvez les prendre à partir de là sous la forme de blobs et les alimenter vers le module du noyau brcmfmac. Afin de savoir exactement quels fichiers votre adaptateur utilise, ouvrez le terminal dans MacOS et écrivez:

 ioreg -l | grep C-4364 

Nous obtenons une longue liste. Nous n'avons besoin que des fichiers de la section 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>"}) 

Dans votre cas, les noms de fichiers peuvent différer. Copiez-les du dossier / usr / share / firmware / wifi sur le lecteur flash USB et renommez-le dans la vue suivante:

  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> 

Dans ce cas, le dernier fichier texte contient le nom du modĂšle, si votre modĂšle n'est pas macbookpro15,2, vous devez renommer ce fichier en fonction de votre modĂšle macbook.

Redémarrez en arc.

Copiez les fichiers de la clé USB dans le dossier / 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/ 

Vérifiez la santé du module:

 rmmod brcmfmac modprobe brcmfmac 

Nous nous assurons que l'interface réseau est apparue via ifconfig / ip.
Configurer le wifi via iwctl

Attention Via netctl, nmcli, etc. l'interface ne fonctionne pas, uniquement via iwd.

Utilisation de iwd par NetworkManager. Pour ce faire, créez le fichier /etc/NetworkManager/NetworkManager.conf et écrivez:

 [device] wifi.backend=iwd 

DĂ©marrage du service NetworkManager

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

7. Son


Pour faire du son, vous devez installer pulseaudio:

 sudo pacman -S pulseaudio 

Téléchargez trois fichiers:


DĂ©placez-les:

  /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. Suspension / reprise


Pour le moment, le 16/10/2019, vous devez choisir entre le son ou la suspension / reprise. Nous attendons que l'auteur du module bce termine la fonctionnalité.

Pour créer un module avec prise en charge des suspensions / reprises, vous devez procéder comme suit:

 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 

Si vous avez installĂ© le module apple-bce prĂȘt Ă  l'emploi Ă  partir du rĂ©fĂ©rentiel anuali1, vous devez d'abord le supprimer et ensuite uniquement collecter et installer le module bce avec prise en charge du mode suspension.

De plus, vous devez ajouter le module applesmc à la liste noire (si vous ne l'avez pas déjà fait auparavant) et vous assurer que pcie_ports = compat est ajouté à /boot/loader/entries/arch.conf dans la ligne d'options à la fin.

À l'heure actuelle, le pilote de la barre tactile se bloque lorsque vous entrez en mode suspension, et le pilote Thunderbolt suspend parfois le systĂšme pendant plus de 30 secondes, et lors de la reprise, pendant plusieurs minutes. Cela peut ĂȘtre rĂ©solu en tĂ©lĂ©chargeant automatiquement les modules problĂ©matiques.

Créez le script /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 

Rendez-le exécutable:

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

C'est tout pour l'instant. Le résultat est un systÚme entiÚrement fonctionnel, à l'exception de certaines nuances avec suspension / reprise. Aucun plantage et panique du noyau n'a été observé pendant plusieurs jours de disponibilité. J'espÚre que dans un proche avenir l'auteur du module bce le terminera, et nous obtiendrons un support complet pour la suspension / reprise et le son.

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


All Articles