„MacBook Pro 2018 T2“ veikimas su „ArchLinux“ (dviguba įkrova)

Buvo daug ažiotažų apie tai, kad dėl naujojo T2 lusto bus neįmanoma įdiegti „Linux“ naujuose 2018 m. „MacBook“ kompiuteriuose su jutikline juosta. Laikas praėjo, o 2019 m. pabaigoje trečiųjų šalių kūrėjai įdiegė daugybę tvarkyklių ir branduolio pataisų, skirtų sąveikai su T2 lustu. Pagrindinė 2018 m. ir naujesnių „MacBook“ modelių tvarkyklė įgyvendina VHCI veikimą (touch/klaviatūros/tt valdymą), taip pat garso valdymą.

Projektas mbp2018-bridge-drv padalintas į 3 pagrindinius komponentus:

  • BCE (Buffer Copy Engine) – nustato pagrindinį ryšio kanalą su T2. VHCI ir Audio reikalingas šis komponentas.
  • VHCI yra USB virtualaus pagrindinio kompiuterio valdiklis; klaviatūrą, pelę ir kitus sistemos komponentus teikia šis komponentas (kitos tvarkyklės naudoja šį pagrindinio kompiuterio valdiklį, kad suteiktų daugiau funkcijų.
  • Garsas – T2 garso sąsajos tvarkyklė, šiuo metu palaiko tik garso išvestį per MacBook integruotus garsiakalbius


Antrasis projektas vadinamas macbook12-spi tvarkyklę, ir įdiegta galimybė valdyti klaviatūros, SPI valdymo pulto ir jutiklinės juostos įvesties tvarkyklę, skirtą „MacBook Pro Late 2016“ ir naujesnėms versijoms. Kai kurios klaviatūros / valdymo pulto tvarkyklės dabar įtrauktos į branduolį, pradedant nuo 5.3 versijos.

Tokių įrenginių kaip „Wi-Fi“, jutiklinė dalis ir kt. palaikymas taip pat buvo įgyvendintas naudojant branduolio pataisas. Dabartinė branduolio versija 5.3.5-1

Kas šiuo metu veikia

  1. NVMe
  2. Klaviatūra
  3. USB-C (Thunderbolt nebuvo išbandytas; kai modulis įkeliamas automatiškai, sistema užšąla)
  4. Jutiklinė juosta (su galimybe įjungti Fn klavišus, apšvietimą, ESC ir kt.)
  5. Garsas (tik įmontuoti garsiakalbiai)
  6. Wi-Fi modulis (per brcmfmac ir tik per iw)
  7. „DisplayPort“ per USB-C
  8. Jutikliai
  9. Sustabdyti / atnaujinti (iš dalies)
  10. ir tt ..

Ši pamoka tinka macbookpro15,1 ir macbookpro15,2. Straipsnis buvo paimtas kaip pagrindas iš Github anglų kalba. taigi. Ne viskas šiame straipsnyje pasiteisino, todėl sprendimą teko ieškoti pačiam.

Ką reikia įdiegti

  • USB-C prijungimo prie USB adapteris (mažiausiai trys USB įėjimai, skirti prijungti pelę, klaviatūrą, USB modemą ar telefoną, veikiantį modemo režimu). Tai būtina tik pirmaisiais montavimo etapais
  • USB klaviatūra
  • USB / USB-C atmintinė mažiausiai 4 GB

1. Išjunkite draudimą paleisti iš išorinės laikmenos

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

2. Paskirkite laisvos vietos naudodami Disk Utility

Patogumui iš karto paskyriau 30 GB diskui, suformatavau jį exfat formatu pačioje Disk Utility. Fizinio disko disko įrankis.

3. Sukurkite ISO atvaizdą

Pasirinkimai:

  1. Galite eiti paprastu keliu ir atsisiųsti paruoštą vaizdą su branduoliu 5.3.5-1 ir pataisomis iš aunali1 nuoroda į baigtą vaizdą
  2. Sukurkite vaizdą patys naudodami archyvą (reikalinga sistema su Archa platinimu)

    Nustatyti archiso

    pacman -S archiso

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

    Pridėkite saugyklą prie pacman.conf:

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

    Mes ignoruojame pradinį branduolį pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Pridėkite reikiamus paketus, pabaigoje pridėkite linux-mbp branduolį ir linux-mbp-headers

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

    Pakeičiame scenarijų, kad jis veiktų interaktyviuoju režimu (pakeiskite pacstrap -C į 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!"
    }

    Vaizdo formavimas:

    sudo ./build.sh -v

    Paspauskite Y, kad praleistumėte nepaisomus paketus, tada įrašykite iso vaizdą į USB atmintinę:

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

4. Pirmas įkrovimas

Paleiskite iš naujo įdėję „flash drive“ ir klaviatūrą. Paspauskite parinktis, kai pasirodys obuolys, pasirinkite EFI BOOT.

Tada turite paspausti klavišą „e“ ir įvesti komandų eilutės pabaigoje module_blacklist=perkūnas. Jei to nepadarysite, sistema gali nepasileisti ir pasirodys Thunderbolt ICM klaida.

Naudodami fdisk / cfdisk randame savo skaidinį (man tai nvme0n1p4), suformatuojame ir įdiegiame archyvą. Tu gali naudoti oficialių nurodymų arba į šoną.

Mes nekuriame įkrovos skaidinio; mes įrašysime įkrovos įkroviklį / dev / nvme0n1p1
Kai aplinka /mnt yra visiškai suformuota ir prieš pereinant prie arch-chroot, parašykite:

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

Pridėti prie /etc/pacman.conf:


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

Įdiekite branduolį:


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

„Thunderbolt“ ir „applesmc“ registruojame /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Klaviatūra, jutiklinė juosta ir kt

Įdiegti taip:


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

Modulių įdiegimas, kad jutiklinė juosta veiktų:


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

Pridėkite modulius prie paleisties: /etc/modules-load.d/apple.conf

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

Klaviatūros branduolio modulių įdiegimas. Saugykloje anuali1 yra paruošta pakuotė, ji vadinama apple-bce-dkms-git. Norėdami jį įdiegti, konsolėje parašykite:

pacman -S apple-bce-dkms-git

Tokiu atveju bus iškviestas branduolio modulis obuolys-bce. Savarankiško surinkimo atveju jis vadinamas bce. Atitinkamai, jei norite užregistruoti modulį mkinicpio.conf failo skiltyje MODULIAI, nepamirškite, kurį modulį įdiegėte.

Rankinis surinkimas:


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

Pridėkite bce arba apple-bce modulį prie paleisties: /etc/modules-load.d/bce.conf

bce

Jei pagal numatytuosius nustatymus norite naudoti Fn mygtukus, faile /etc/modprobe.d/apple-tb.conf parašykite:

options apple-ib-tb fnmode=2

Branduolio ir initramfs atnaujinimas.


mkinitcpio -p linux-mbp

Įdiegti iwd:

sudo pacman -S networkmanager iwd

5. Krautuvas

Kai visi pagrindiniai paketai yra įdiegti chroot, galite pradėti diegti įkrovos įkroviklį.

Man nepavyko privesti grub į darbą. Grub paleidžiama iš išorinio USB disko, bet kai bandote jį užregistruoti nvme per

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

sistema pateko į branduolio paniką, o iš naujo paleidus naujas elementas per parinktis nepasirodė. Neradau jokio aiškaus šios problemos sprendimo, todėl nusprendžiau pabandyti įdiegti įkrovą naudojant systemd-boot.

  1. Paleisti
    bootctl --path=/boot install

    ir mes patenkame į branduolio paniką. Išjunkite „MacBook“, vėl įjunkite, spustelėkite parinktis (neišjunkite USB-C šakotuvo su klaviatūra)

  2. Mes patikriname, ar šalia išorinio įrenginio atsirado naujas EFI BOOT įrašas
  3. Mes pasirenkame paleisti iš išorinio USB disko, kaip ir pirmojo diegimo metu (nepamirškite nurodyti module_blacklist=thunderbolt)
  4. Sumontuojame diską ir pereiname į aplinką per arch-chroot


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

Jei reikia, kad klaviatūra veiktų tol, kol sistema bus pilnai įkelta (tai būtina naudojant luks/dm-crypt šifravimą), tada įrašykite tai /etc/mkinicpio.conf faile, esančiame skyriuje MODULIAI:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Branduolio ir initramfs atnaujinimas.


mkinicpio -p linux-mbp

Systemd-boot nustatymas

Redaguojame /boot/loader/loader.conf failą, ištriname viską, kas yra viduje, ir pridedame:

default arch
timeout 5
editor 1

Eikite į aplanką /boot/loader/entries, sukurkite arch.conf failą ir parašykite:

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

Jei naudojote luks ir lvm, tada

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

Perkraukite į MacOS.

6. Wi-Fi sąranka

Kaip paaiškėjo pabaigoje, „MacOS“ aplanke išsaugo „Wi-Fi“ adapterio programinės aparatinės įrangos failus /usr/share/firmware/wifi , ir jūs galite paimti juos iš ten blobų pavidalu ir perkelti į brcmfmac branduolio modulį. Norėdami sužinoti, kuriuos failus naudoja jūsų adapteris, atidarykite terminalą „MacOS“ ir parašykite:

ioreg -l | grep C-4364

Gauname ilgą sąrašą. Mums reikia tik failų iš skyriaus Prašyti failai:

"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>"})

Jūsų atveju failų pavadinimai gali skirtis. Nukopijuokite juos iš aplanko /usr/share/firmware/wifi į „flash drive“ ir pervardykite taip:

    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>

Šiuo atveju paskutiniame tekstiniame faile yra modelių pavadinimai; jei jūsų modelis nėra macbookpro15,2, turite pervardyti šį failą pagal savo MacBook modelį.

Perkraukite į Arch.

Nukopijuokite failus iš „flash drive“ į aplanką /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/

Modulio funkcionalumo patikrinimas:


rmmod brcmfmac
modprobe brcmfmac

Užtikriname, kad tinklo sąsaja būtų rodoma per ifconfig/ip.
„Wi-Fi“ nustatymas per iwctl

Dėmesio. Per netctl, nmcli ir kt. Sąsaja neveikia, tik per iwd.

Priverčiame NetworkManager naudoti iwd. Norėdami tai padaryti, sukurkite failą /etc/NetworkManager/NetworkManager.conf ir parašykite:

[device]
wifi.backend=iwd

Paleiskite „NetworkManager“ paslaugą


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

7. Garsas

Kad garsas veiktų, turite įdiegti pulseaudio:


sudo pacman -S pulseaudio

Atsisiųskite tris failus:

Perkelkime juos:

    /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. Sustabdyti / tęsti

Šiuo momentu 16.10.2019 turite pasirinkti garsą arba sustabdyti / tęsti. Laukiame, kol bce modulio autorius užbaigs funkcionalumą.

Norėdami sukurti modulį su sustabdytu / atnaujintu palaikymu, turite atlikti šiuos veiksmus:


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

Jei įdiegėte paruoštą Apple-bce modulį iš anuali1 saugyklos, pirmiausia turite jį pašalinti ir tik tada surinkti ir įdiegti bce modulį su sustabdymo režimo palaikymu.

Be to, į juodąjį sąrašą turite įtraukti modulį applesmc (jei to dar nepadarėte) ir įsitikinkite, kad failo /boot/loader/entries/arch.conf parinkčių eilutės pabaigoje parametras yra įtrauktas. pcie_ports=compat.

Šiuo metu jutiklinės juostos tvarkyklė sugenda, kai įjungiamas sustabdymo režimas, o „Thunderbolt“ tvarkyklė kartais sustabdo sistemą ilgiau nei 30 sekundžių, o atnaujinant – kelioms minutėms. Tai galima išspręsti automatiškai iškraunant probleminius modulius.

Sukurkite scenarijų /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

Padarykite jį vykdomą:

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

Tai kol kas viskas. Rezultatas yra visiškai veikianti sistema, išskyrus kai kuriuos sustabdymo / atnaujinimo niuansus. Per kelias veikimo dienas nebuvo pastebėta jokių gedimų ar branduolio panikos. Tikiuosi, kad artimiausiu metu bce modulio autorius jį užbaigs ir sulauksime visiško sustabdymo/resume ir garso palaikymo.

Šaltinis: www.habr.com

Добавить комментарий