MacBook Pro 2018 T2 töötamine koos ArchLinuxiga (kahekäivitusega)

Üsna palju on räägitud sellest, et uus T2 kiip muudab Linuxi installimise uutele puuteribaga 2018. aasta MacBookidele võimatuks. Aeg möödus ja 2019. aasta lõpus rakendasid kolmandate osapoolte arendajad T2 kiibiga suhtlemiseks mitmeid draivereid ja kerneli plaastreid. MacBooki 2018. aasta ja uuemate mudelite põhidraiver rakendab VHCI-funktsiooni (puutetundliku/klaviatuuri/jne toimimine), aga ka helijuhtimist.

Projekt mbp2018-bridge-drv jagatud 3 põhikomponendiks:

  • BCE (Buffer Copy Engine) – loob peamise sidekanali T2-ga. VHCI ja Audio nõuavad seda komponenti.
  • VHCI on USB virtuaalse hosti kontroller; klaviatuuri, hiirt ja muid süsteemikomponente pakub see komponent (teised draiverid kasutavad seda hostikontrollerit, et pakkuda rohkem funktsioone.
  • Audio – T2 heliliidese draiver, toetab praegu ainult heliväljundit läbi MacBooki sisseehitatud kõlarite


Teine projekt on nn macbook12-spi-draiver, ja see rakendab võimalust kasutada MacBook Pro 2016. aasta lõpu ja uuemate versioonide klaviatuuri, SPI-puuteplaadi ja puuteriba sisenddraiverit. Mõned klaviatuuri/puuteplaadi draiverid on nüüd kernelisse kaasatud, alates versioonist 5.3.

Tuuma sellistele seadmetele nagu wi-fi, puuteplaat jne rakendati ka tuumaplaastrite abil. Praegune kerneli versioon 5.3.5-1

Mis hetkel töötab

  1. NVMe
  2. klaviatuur
  3. USB-C (Thunderbolti pole testitud; kui moodul laaditakse automaatselt, külmub see süsteem)
  4. Puuteriba (võimalusega sisse lülitada Fn-klahvid, taustvalgustus, ESC jne)
  5. Heli (ainult sisseehitatud kõlarid)
  6. Wi-Fi moodul (brcmfmaci kaudu ja ainult iw kaudu)
  7. DisplayPort USB-C kaudu
  8. Andurid
  9. Peata/Jätka (osaliselt)
  10. jne ..

See õpetus on rakendatav Macbookpro15,1 ja macbookpro15,2 jaoks. Artikkel võeti aluseks inglise keeles Githubist. siit. Kõik selles artiklis ei töötanud, seega pidin ise lahenduse leidma.

Mida peate installima

  • USB-C dokkimisadapter USB-ga (vähemalt kolm USB-sisendit hiire, klaviatuuri, USB-modemi või telefoni ühendamiseks jagamisrežiimis). See on vajalik ainult paigaldamise esimestel etappidel
  • USB-klaviatuur
  • USB/USB-C mälupulk vähemalt 4 GB

1. Keelake väliselt meediumilt käivitamise keeld

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

2. Eraldage kettautiliidi abil vaba ruum

Mugavuse huvides eraldasin kettale kohe 30 GB, vormindades selle Disk Utility'is endas exfat-vormingus. Füüsilise ketta ketta utiliidi jagamine.

3. Looge ISO-pilt

Valikud:

  1. Võite minna lihtsat teed ja laadida alla kerneli 5.3.5-1 ja paikadega valmis pildi aunali1 link valmis pildile
  2. Looge ise pilt arhiivi kaudu (vaja on Archa distributsiooniga süsteem)

    Komplekt archiso

    pacman -S archiso

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

    Lisage hoidla saidile pacman.conf:

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

    Me ignoreerime algset kernelit failis pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Lisa vajalikud paketid, lõpus lisa linux-mbp kernel ja linux-mbp-headers

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

    Muudame skripti töötama interaktiivses režiimis (asenda pacstrap -C pacstrap -i -C-ga):

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

    Kujutise moodustamine:

    sudo ./build.sh -v

    Eiratud pakettide vahelejätmiseks vajutage Y, seejärel kirjutage iso-pilt USB-mälupulgale:

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

4. Esimene käivitamine

Taaskäivitage, kui mälupulk ja klaviatuur on sisestatud. Vajutage valikuid, kui ilmub õun, valige EFI BOOT.

Järgmisena peate vajutama klahvi "e" ja sisestama käsurea lõpus module_blacklist=äike. Kui seda ei tehta, ei pruugi süsteem käivituda ja ilmub Thunderbolt ICM Error.

Kasutades fdisk/cfdisk leiame oma partitsiooni (minu jaoks on see nvme0n1p4), vormindame selle ja installime arhiivi. Sa võid kasutada ametlikud juhised või külili.

Me ei loo alglaadija partitsiooni; me kirjutame alglaaduri sisse /dev/nvme0n1p1
Kui /mnt keskkond on täielikult moodustunud ja enne arch-chrootile üleminekut, kirjutage:

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

Lisa faili /etc/pacman.conf:


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

Installige kernel:


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

Registreerime failid thunderbolt ja applesmc failis /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Klaviatuur, puuteriba jne

Installige jah:


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

Moodulite installimine puuteriba töötamiseks:


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

Lisage käivitamisele moodulid: /etc/modules-load.d/apple.conf

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

Kerneli moodulite installimine klaviatuurile. Hoidlas anuali1 on valmis pakend, seda nn apple-bce-dkms-git. Selle installimiseks kirjutage konsooli:

pacman -S apple-bce-dkms-git

Sel juhul kutsutakse välja kerneli moodul õun-bce. Isemonteerimise puhul nimetatakse eKr. Seega, kui soovite registreerida mooduli faili mkinicpio.conf jaotises MOODULID, ärge unustage, millise mooduli installisite.

Käsitsi kokkupanek:


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

Lisage käivitamiseks moodul bce või apple-bce: /etc/modules-load.d/bce.conf

bce

Kui soovite vaikimisi kasutada nuppe Fn, siis kirjutage faili /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Kerneli ja initramfsi värskendamine.


mkinitcpio -p linux-mbp

Installige iwd:

sudo pacman -S networkmanager iwd

5. Laadur

Kui kõik põhipaketid on chrooti sisse installitud, võite alustada alglaaduri installimist.

Mul pole õnnestunud grubi tööle saada. Grub käivitub väliselt USB-draivilt, kuid kui proovite seda nvme-s registreerida

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

süsteem läks kerneli paanikasse ja pärast taaskäivitamist valikute kaudu uut elementi ei ilmunud. Ma ei leidnud sellele probleemile selget lahendust ja otsustasin seetõttu proovida käivitamist kasutada systemd-boot abil.

  1. Käivitamine
    bootctl --path=/boot install

    ja me satume kerneli paanikasse. Lülitage MacBook välja, lülitage see uuesti sisse, klõpsake valikutel (ärge lülitage USB-C jaoturit klaviatuuriga välja)

  2. Kontrollime, kas lisaks välisseadmele on ilmunud uus EFI BOOT kirje
  3. Valime käivitamise väliselt USB-draivilt, nagu ka esimese installimise ajal (ärge unustage määrata module_blacklist=thunderbolt)
  4. Kinnitame oma ketta ja läheme arch-chrooti kaudu keskkonda


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

Kui on vaja, et klaviatuur töötaks kuni süsteemi täieliku laadimiseni (see on vajalik luks/dm-crypt krüptimise kasutamisel), siis kirjutage see jaotisesse MOODULID faili /etc/mkinicpio.conf:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Kerneli ja initramfsi värskendamine.


mkinicpio -p linux-mbp

Systemd-boot seadistamine

Redigeerime faili /boot/loader/loader.conf, kustutame kõik selle sees ja lisame järgmise:

default arch
timeout 5
editor 1

Minge kausta /boot/loader/entries, looge fail arch.conf ja kirjutage:

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

Kui kasutasid luksi ja lvm-i, siis

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

Taaskäivitage MacOS-i.

6. Wi-Fi seadistamine

Nagu lõpuks selgus, salvestab MacOS kausta wi-fi-adapteri püsivara failid /usr/share/firmware/wifi , ja saate need sealt blobide kujul võtta ja brcmfmaci kerneli moodulisse suunata. Selleks et teada saada, milliseid faile teie adapter kasutab, avage MacOS-is terminal ja kirjutage:

ioreg -l | grep C-4364

Saame pika nimekirja. Vajame ainult sektsiooni faile Taotletud failid:

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

Teie puhul võivad failinimed erineda. Kopeerige need /usr/share/firmware/wifi kaustast mälupulgale ja nimetage need ümber järgmiselt.

    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>

Sel juhul sisaldab viimane tekstifail mudelinimesid; kui teie mudel ei ole macbookpro15,2, peate selle faili ümber nimetama vastavalt oma MacBooki mudelile.

Taaskäivitage Arch.

Kopeerige failid mälupulgalt kausta /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/

Mooduli funktsionaalsuse kontrollimine:


rmmod brcmfmac
modprobe brcmfmac

Veenduge, et võrguliides kuvatakse ifconfig/ip kaudu.
WiFi seadistamine kaudu iwctl

Tähelepanu. Netctl, nmcli jne kaudu. Liides ei tööta, ainult iwd kaudu.

Sunnime NetworkManagerit kasutama iwd. Selleks looge fail /etc/NetworkManager/NetworkManager.conf ja kirjutage:

[device]
wifi.backend=iwd

Käivitage teenus NetworkManager


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

7. Heli

Heli toimimiseks peate installima pulseaudio:


sudo pacman -S pulseaudio

Laadige alla kolm faili:

Liigutame need:

    /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. Peata/Jätka

Praegusel hetkel 16.10.2019 tuleb valida kas heli või peatamine/jätkamine. Ootame bce mooduli autorit funktsionaalsuse lõpuleviimiseks.

Peatatud/jätkamise toega mooduli koostamiseks peate tegema järgmist.


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

Kui installisite valmis apple-bce mooduli anuali1 hoidlast, siis peate selle esmalt eemaldama ja alles seejärel kokku panema ja installima peatamisrežiimi toega bce mooduli.

Samuti peate musta nimekirja lisama mooduli applesmc (kui te pole seda varem teinud) ja veenduge, et faili /boot/loader/entries/arch.conf lõpus oleva valikureal oleks parameeter lisatud pcie_ports=compat.

Praegu jookseb puuteriba draiver peatamisrežiimi sisenemisel kokku ja äikesedraiver külmutab süsteemi mõnikord rohkem kui 30 sekundiks ja jätkamisel mitmeks minutiks. Seda saab parandada probleemsete moodulite automaatse mahalaadimisega.

Loo skript /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

Muutke see käivitatavaks:

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

Praeguseks kõik. Tulemuseks on täiesti toimiv süsteem, kui mõned peatamise/jätkamise nüansid välja arvata. Mitme tööpäeva jooksul ei täheldatud ühtegi krahhi ega kerneli paanikat. Loodan, et lähiajal saab bce mooduli autor selle valmis ja saame peatamise/resume ja heli täieliku toe.

Allikas: www.habr.com

Lisa kommentaar