Fè MacBook Pro 2018 T2 travay ak ArchLinux (double demaraj)

Te gen yon ti jan battage sou lefèt ke nouvo chip T2 a pral fè li enposib enstale Linux sou nouvo MacBooks 2018 yo ak yon touchbar. Tan te pase, ak nan fen 2019, devlopè twazyèm pati yo te aplike yon kantite chofè ak plak nwayo pou entèraksyon ak chip T2 la. Chofè prensipal la pou modèl MacBook 2018 ak pi nouvo aplike operasyon VHCI (operasyon manyen / klavye / elatriye), osi byen ke operasyon son.

Pwojè mbp2018-pon-drv divize an 3 eleman prensipal:

  • BCE (Buffer Copy Engine) - etabli kanal kominikasyon prensipal la ak T2. VHCI ak Audio mande pou eleman sa a.
  • VHCI se yon USB Virtual Host Controller; klavye a, sourit ak lòt konpozan sistèm yo bay nan eleman sa a (lòt chofè yo itilize kontwolè lame sa a pou bay plis fonksyonalite.
  • Odyo - chofè pou koòdone odyo T2 a, kounye a sèlman sipòte pwodiksyon odyo atravè moun kap pale MacBook yo.


Dezyèm pwojè a rele macbook12-spi-driver, epi li aplike kapasite pou opere yon chofè antre pou klavye a, SPI trackpad, ak touchbar pou Fen 2016 ak pita MacBook Pro. Gen kèk chofè klavye/trackpad ki enkli kounye a nan nwayo a, kòmanse ak vèsyon 5.3.

Sipò pou aparèy tankou wi-fi, touchpad, elatriye te aplike tou lè l sèvi avèk plak nwayo. Vèsyon nwayo aktyèl la 5.3.5-1

Ki sa k ap travay nan moman an

  1. NVMe
  2. Klavye
  3. USB-C (Thunderbolt pa te teste; lè modil la chaje otomatikman, li jele sistèm nan)
  4. Touchbar (ak kapasite pou limen kle Fn yo, ekleraj, ESC, elatriye)
  5. Son (oratè entegre sèlman)
  6. Modil Wi-Fi (via brcmfmac ak sèlman atravè iw)
  7. DisplayPort sou USB-C
  8. Detèktè
  9. Sispann/Reprann (pasyèlman)
  10. elatriye ..

Tutorial sa a aplikab pou macbookpro15,1 ak macbookpro15,2. Atik la te pran kòm yon baz nan Github nan lang angle. kon sa. Se pa tout bagay nan atik sa a te travay, kidonk mwen te oblije jwenn yon solisyon tèt mwen.

Ki sa ou bezwen enstale

  • Adaptè docking USB-C pou USB (omwen twa antre USB pou konekte yon sourit, klavye, modèm USB oswa telefòn nan mòd atachman). Sa a se sèlman nesesè pandan premye etap yo nan enstalasyon yo
  • USB klavye
  • USB/USB-C kondwi flash minimòm 4GB

1. Enfim entèdiksyon an sou bòt soti nan medya ekstèn

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

2. Bay espas gratis lè l sèvi avèk Disk Utility

Pou konvenyans, mwen imedyatman atribye 30GB nan disk la, fòma li nan exfat nan Disk Utility tèt li. Partitionnement yon Disk Disk Fizik sèvis piblik.

3. Kreye yon imaj ISO

Opsyon:

  1. Ou ka ale nan wout ki senp epi telechaje yon imaj ki pare ak nwayo 5.3.5-1 ak plak soti nan aunali1 lyen nan imaj la fini
  2. Kreye yon imaj tèt ou atravè archlive (yon sistèm ki gen yon distribisyon Archa obligatwa)

    Enstale achiso

    pacman -S archiso

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

    Ajoute depo a nan pacman.conf:

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

    Nou inyore nwayo orijinal la nan pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Ajoute pakè ki nesesè yo, nan fen ajoute nwayo linux-mbp ak linux-mbp-headers

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

    Nou chanje script la pou travay nan mòd entèaktif (ranplase pacstrap -C ak 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!"
    }

    Fòme yon imaj:

    sudo ./build.sh -v

    Peze Y pou sote pakè yo inyore, Lè sa a, ekri imaj ISO a sou kondwi flash USB a:

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

4. Premye bòt

Rdemare ak kondwi flash la ak klavye mete. Peze opsyon lè pòm lan parèt, chwazi EFI BOOT.

Apre sa, ou bezwen peze "e" kle a epi antre nan fen liy lòd la module_blacklist=tonè. Si sa pa fèt, sistèm nan ka pa demaraj epi yon Erè Thunderbolt ICM ap parèt.

Sèvi ak fdisk/cfdisk nou jwenn patisyon nou an (pou mwen se nvme0n1p4), fòma li epi enstale achiv la. Ou ka itilize enstriksyon ofisyèl yo oswa sou kote.

Nou pa kreye yon patisyon bòt; nou pral ekri bootloader la /dev/nvme0n1p1
Apre anviwònman an nan /mnt fin fòme nèt epi anvan ou deplase nan arch-chroot, ekri:

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

Ajoute nan /etc/pacman.conf:


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

Enstale nwayo a:


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

Nou anrejistre thunderbolt ak applesmc nan /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Klavye, touchbar, elatriye

Enstale yay:


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

Enstale modil pou touchbar la travay:


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

Ajoute modil nan demaraj: /etc/modules-load.d/apple.conf

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

Enstale modil nwayo pou klavye a. Nan depo a anuali1 gen yon pake pare, li rele pòm-bce-dkms-git. Pou enstale li, ekri nan konsole a:

pacman -S apple-bce-dkms-git

Nan ka sa a, yo pral rele modil nwayo a pòm-bce. Nan ka pwòp tèt ou-asanble, li rele ecb. An konsekans, si ou vle anrejistre yon modil nan seksyon MODULES nan fichye mkinicpio.conf, pa bliye ki modil ou enstale.

Manyèl asanble:


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

Ajoute modil bce oswa apple-bce nan demaraj: /etc/modules-load.d/bce.conf

bce

Si ou vle itilize bouton Fn yo pa defo, ekri nan /etc/modprobe.d/apple-tb.conf fichye a:

options apple-ib-tb fnmode=2

Mete ajou nwayo a ak initramfs.


mkinitcpio -p linux-mbp

Enstale iwd:

sudo pacman -S networkmanager iwd

5. Chargeur

Yon fwa ke tout pakè prensipal yo enstale andedan chroot la, ou ka kòmanse enstale bootloader la.

Mwen pa te kapab jwenn grub nan travay. Grub bòt soti nan yon kondwi USB ekstèn, men lè ou eseye anrejistre li nan nvme atravè

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

sistèm nan te antre nan panik nwayo, epi apre rdemare yon nouvo atik nan opsyon pa t 'parèt. Mwen pa t 'jwenn okenn solisyon klè nan pwoblèm sa a ak Se poutèt sa deside eseye aplike demaraj lè l sèvi avèk systemd-boot.

  1. Lanse
    bootctl --path=/boot install

    epi nou antre nan panik nwayo. Etenn MacBook a, vire l ankò, klike sou opsyon (pa fèmen USB-C mwaye a ak klavye)

  2. Nou tcheke si yon nouvo antre EFI BOOT parèt anplis aparèy ekstèn lan
  3. Nou chwazi demare soti nan yon kondwi USB ekstèn, tankou pandan premye enstalasyon an (pa bliye presize module_blacklist = thunderbolt)
  4. Nou monte disk nou an epi ale nan anviwònman an atravè arch-chroot


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

Si li nesesè pou klavye a travay jiskaske sistèm lan konplètman chaje (sa a nesesè lè w ap itilize chifreman luks/dm-crypt), Lè sa a, ekri li nan /etc/mkinicpio.conf fichye a nan seksyon MODIL la:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Mete ajou nwayo a ak initramfs.


mkinicpio -p linux-mbp

Mete kanpe systemd-boot

Nou edite /boot/loader/loader.conf fichye a, efase tout bagay andedan, epi ajoute sa ki annapre yo:

default arch
timeout 5
editor 1

Ale nan katab /boot/loader/entries, kreye dosye arch.conf epi ekri:

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

Si ou te itilize luks ak lvm, lè sa a

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

Rdemare nan MacOS.

6. Wi-Fi konfigirasyon

Kòm li te tounen soti nan fen a, MacOS estoke fichye firmwèr yo pou adaptè a wi-fi nan katab la /usr/share/firmware/wifi , epi ou ka pran yo soti nan fòm lan nan blob epi bay yo manje nan modil la nwayo brcmfmac. Pou chèche konnen ki fichye adaptè w la itilize, louvri yon tèminal nan MacOS epi ekri:

ioreg -l | grep C-4364

Nou jwenn yon lis long. Nou sèlman bezwen dosye ki soti nan seksyon an 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>"})

Nan ka w, non dosye yo ka diferan. Kopi yo nan /usr/share/firmware/wifi folder nan kondwi flash la epi chanje non yo jan sa a:

    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>

Nan ka sa a, dènye dosye tèks la gen non modèl yo; si modèl ou a pa macbookpro15,2, Lè sa a, ou bezwen chanje non fichye sa a an akò ak modèl MacBook ou a.

Rdemare nan Arch.

Kopi fichye ki soti nan kondwi flash la nan katab /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/

Tcheke fonksyonalite modil la:


rmmod brcmfmac
modprobe brcmfmac

Nou asire w ke koòdone rezo a parèt atravè ifconfig/ip.
Mete kanpe wifi atravè iwctl

Atansyon. Via netctl, nmcli, elatriye. Koòdone a pa travay, sèlman atravè iwd.

Nou fòse NetworkManager sèvi ak iwd. Pou fè sa, kreye dosye a /etc/NetworkManager/NetworkManager.conf epi ekri:

[device]
wifi.backend=iwd

Kòmanse sèvis NetworkManager la


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

7. Son

Pou son an travay, ou bezwen enstale pulseaudio:


sudo pacman -S pulseaudio

Telechaje twa fichye:

Ann deplase yo:

    /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. Sispann/Reprann

Nan moman sa a 16.10.2019 ou dwe chwazi swa son oswa sispann / rezime. N ap tann otè modil bce a pou konplete fonksyonalite a.

Pou konstwi yon modil ak sipò sispansyon/rezime, ou dwe fè bagay sa yo:


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 ou enstale modil apple-bce ki pare a nan depo anuali1 la, Lè sa a, ou dwe premye retire li epi sèlman Lè sa a, rasanble epi enstale modil la bce ak sipò mòd sispann.

Epitou, ou bezwen ajoute modil applesmc a nan lis nwa a (si ou pa te fè sa anvan) epi asire w ke nan /boot/loader/entries/arch.conf nan liy opsyon yo nan fen paramèt la te ajoute. pcie_ports = konpa.

Kounye a, chofè a touchbar aksidan lè w ap antre nan mòd sispansyon, epi chofè a thunderbolt pafwa jele sistèm lan pou plis pase 30 segonn, ak pou plizyè minit lè rekòmanse. Sa a ka fiks pa otomatikman dechaje modil pwoblèm.

Kreye yon 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

Fè li ègzekutabl:

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

Se tout pou kounye a. Rezilta a se yon sistèm konplètman travayabl, ak eksepsyon de kèk nuans ak sispann / rezime. Pa gen okenn aksidan oswa panik nwayo yo te obsève pandan plizyè jou nan uptime. Mwen espere ke nan fiti prè otè a nan modil la bce pral fini li, epi nou pral jwenn sipò konplè pou sispann / rezime ak son.

Sous: www.habr.com

Add nouvo kòmantè