ProHoster > Blog > administration > Faire fonctionner le MacBook Pro 2018 T2 avec ArchLinux (double démarrage)
Faire fonctionner le MacBook Pro 2018 T2 avec ArchLinux (double démarrage)
Il y a eu beaucoup de battage médiatique sur le fait que la nouvelle puce T2 rendrait impossible l'installation de Linux sur les nouveaux MacBook 2018 dotés d'une barre tactile. Le temps a passé et fin 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 fonctionnement VHCI (fonctionnement tactile/clavier/etc.), ainsi que le fonctionnement sonore.
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 les 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, ne prend actuellement en charge que la sortie audio via les haut-parleurs intégrés du MacBook
Le deuxième projet s'appelle pilote macbook12-spi, et il implémente la possibilité d'utiliser un pilote d'entrée pour le clavier, le trackpad SPI et la barre tactile pour MacBook Pro fin 2016 et versions ultérieures. Certains pilotes de clavier/trackpad sont désormais inclus dans le noyau, à partir de la version 5.3.
La prise en charge de périphériques tels que le Wi-Fi, le pavé tactile, etc. a également été implémentée à l'aide de correctifs du noyau. Version actuelle du noyau5.3.5-1
Qu'est-ce qui fonctionne en ce moment
NVMe
clavier
USB-C (Thunderbolt n'a pas été testé ; lorsque le module est chargé automatiquement, il fige le système)
Touchbar (avec possibilité d'activer les touches Fn, le rétroéclairage, ESC, etc.)
Son (haut-parleurs intégrés uniquement)
Module Wi-Fi (via brcmfmac et uniquement via iw)
DisplayPort sur USB-C
Capteurs
Suspendre/Reprendre (partiellement)
etc..
Ce didacticiel s'applique aux macbookpro15,1 et macbookpro15,2. L'article a été pris comme base sur Github en anglais. par conséquent,. Tout dans cet article n’a pas fonctionné, j’ai donc dû trouver une solution moi-même.
Ce que vous devez installer
Adaptateur d'accueil USB-C vers USB (au moins trois entrées USB pour connecter une souris, un clavier, un modem USB ou un téléphone en mode partage de connexion). Ceci n'est nécessaire que pendant les premières étapes de l'installation
Clavier USB
Clé USB/USB-C d'au moins 4 Go
1. Désactivez l'interdiction de démarrer à partir d'un support externe
Vous pouvez suivre la voie la plus simple et télécharger une image prête à l'emploi avec le noyau 5.3.5-1 et les correctifs à partir de aunali1lien vers l'image terminée
Créez vous-même une image via archlive (un système avec une distribution Archa est requis)
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
Nous ignorons le noyau d'origine dans pacman.conf :
IgnorePkg = linux linux-headers
Ajoutez les packages nécessaires, à la fin ajoutez le noyau linux-mbp et les en-têtes linux-mbp
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Nous modifions 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!"
}
Former une image :
sudo ./build.sh -v
Appuyez sur Y pour ignorer les packages ignorés, puis écrivez l'image ISO sur la clé 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 entrer à la fin de la ligne de commande module_blacklist=coup de tonnerre. Si cela n'est pas fait, le système risque de ne pas démarrer et une erreur Thunderbolt ICM apparaîtra.
En utilisant fdisk/cfdisk, nous trouvons notre partition (pour moi c'est nvme0n1p4), la formatons et installons l'archive. Vous pouvez utiliser instruction officielle ou de côté.
Nous ne créons pas de partition de démarrage ; nous écrirons le chargeur de démarrage dans / dev / nvme0n1p1
Une fois l’environnement dans /mnt complètement formé et avant de passer à arch-chroot, écrivez :
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Ajouter à /etc/pacman.conf :
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Installation des modules du noyau pour le clavier. Dans le dépôt annuel1 il existe un package prêt à l'emploi, il s'appelle pomme-bce-dkms-git. Pour l'installer, écrivez dans la console :
pacman -S apple-bce-dkms-git
Dans ce cas, le module noyau sera appelé pomme-bce. Dans le cas de l'auto-assemblage, on parle de BCE. Par conséquent, si vous souhaitez enregistrer un module dans la section MODULES du fichier mkinicpio.conf, n'oubliez pas quel module 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 démarrage : /etc/modules-load.d/bce.conf
bce
Si vous souhaitez utiliser les boutons Fn par défaut, écrivez dans le fichier /etc/modprobe.d/apple-tb.conf :
options apple-ib-tb fnmode=2
Mise à jour du noyau et d'initramfs.
mkinitcpio -p linux-mbp
Installez iwd :
sudo pacman -S networkmanager iwd
5. Chargeur
Une fois que tous les packages principaux sont installés dans le chroot, vous pouvez commencer à installer le chargeur de démarrage.
Je n'ai pas réussi à faire fonctionner la nourriture. Grub démarre à partir d'un lecteur USB externe, mais lorsque vous essayez de l'enregistrer dans NVME via
le système est entré en panique du noyau et après le redémarrage, un nouvel élément via les options n'est pas apparu. Je n'ai trouvé aucune solution claire à ce problème et j'ai donc décidé d'essayer d'implémenter le démarrage à l'aide de systemd-boot.
Run
bootctl --path=/boot install
et nous entrons dans la panique du noyau. Éteignez le MacBook, rallumez-le, cliquez sur options (n'éteignez pas le hub USB-C avec le clavier)
On vérifie qu'une nouvelle entrée EFI BOOT est apparue en plus du périphérique externe
On choisit de démarrer depuis une clé USB externe, comme lors de la première installation (n'oubliez pas de préciser module_blacklist=thunderbolt)
Nous montons notre disque et entrons 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 lors de l'utilisation du cryptage luks/dm-crypt), alors écrivez-le dans le fichier /etc/mkinicpio.conf dans la section MODULES :
Il s'est finalement avéré que MacOS stocke les fichiers du micrologiciel de l'adaptateur Wi-Fi dans le dossier /usr/share/firmware/wifi , et vous pouvez les récupérer à partir de là sous forme de blobs et les transmettre au module du noyau brcmfmac. Afin de savoir quels fichiers votre adaptateur utilise, ouvrez un terminal sous MacOS et écrivez :
ioreg -l | grep C-4364
Nous obtenons une longue liste. Nous n'avons besoin que des fichiers de la section Fichiers demandés:
Dans ce cas, le dernier fichier texte contient les noms des modèles ; si votre modèle n'est pas macbookpro15,2, alors vous devez renommer ce fichier en fonction de votre modèle de MacBook.
Redémarrez dans Arch.
Copiez les fichiers du lecteur flash vers le dossier /lib/firmware/brcm/
Actuellement 16.10.2019 vous devez choisir soit le son, soit suspendre/reprendre. Nous attendons que l'auteur du module bce complète la fonctionnalité.
Pour créer un module avec prise en charge suspendue/reprise, 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 annuali1, vous devez d'abord le supprimer, puis assembler 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) et vous assurer que dans /boot/loader/entries/arch.conf dans la ligne d'options à la fin, le paramètre est ajouté pcie_ports=compat.
Actuellement, le pilote de la barre tactile plante lors du passage en mode suspension, et le pilote Thunderbolt gèle parfois le système pendant plus de 30 secondes et pendant plusieurs minutes lors de la reprise. Cela peut être résolu en déchargeant automatiquement les modules problématiques.
Créer un script /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
Rendez-le exécutable :
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
C'est tout pour le moment. Le résultat est un système tout à fait fonctionnel, à l'exception de quelques nuances avec suspension/reprise. Aucun crash ni panique du noyau n'a été observé pendant plusieurs jours de disponibilité. J'espère que dans un avenir proche, l'auteur du module bce le terminera et que nous obtiendrons un support complet pour la suspension/reprise et le son.