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-1Ce qui fonctionne en ce moment
- NVMe
- Clavier
- USB-C (Thunderbolt n'a pas été testé, lorsque le module se charge automatiquement, il suspend fermement le systÚme)
- Barre tactile (avec la possibilité d'activer les touches Fn, rétro-éclairage, ESC, etc.)
- Son (haut-parleurs intégrés uniquement)
- Module Wi-Fi (via brcmfmac et uniquement via iw)
- DisplayPort via USB-C
- Capteurs
- Suspendre / reprendre (partiellement)
- 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/HT208330https://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:- 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
- 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 / nvme0n1p1Une 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.
- 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) - VĂ©rifier qu'un nouvel enregistrement EFI BOOT est apparu en plus du pĂ©riphĂ©rique externe
- 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)
- 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
iwctlAttention 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.