Að láta MacBook Pro 2018 T2 virka með ArchLinux (dualboot)

Það hefur verið talsvert um þá staðreynd að nýja T2 flísinn mun gera það ómögulegt að setja upp Linux á nýju 2018 MacBooks með snertistiku. Tíminn leið og í lok árs 2019 innleiddu þriðju aðilar fjölda rekla og kjarnaplástra fyrir samskipti við T2 flísinn. Aðaldrifinn fyrir MacBook módel 2018 og nýrri útfærir VHCI aðgerð (snerti/lyklaborð/o.s.frv. aðgerð), sem og hljóðaðgerð.

Project mbp2018-brú-drv skipt í 3 meginþætti:

  • BCE (Buffer Copy Engine) - stofnar aðalsamskiptarásina við T2. VHCI og Audio krefjast þessa íhluts.
  • VHCI er USB Virtual Host Controller; lyklaborðið, músin og aðrir kerfishlutar eru frá þessum íhlut (aðrir ökumenn nota þennan hýsilstýringu til að veita meiri virkni.
  • Hljóð - bílstjóri fyrir T2 hljóðviðmótið, sem stendur styður aðeins hljóðúttak í gegnum innbyggða hátalara MacBook


Annað verkefnið heitir macbook12-spi bílstjóri, og það útfærir getu til að stjórna inntaksdrifi fyrir lyklaborðið, SPI rekja spor einhvers og snertistiku fyrir MacBook Pro seint 2016 og síðar. Sumir lyklaborðs-/stýriborðsreklar eru nú innifalin í kjarnanum, frá og með útgáfu 5.3.

Stuðningur við tæki eins og Wi-Fi, snertiborð osfrv. var einnig útfærður með því að nota kjarnaplástra. Núverandi kjarnaútgáfa 5.3.5-1

Hvað er að virka í augnablikinu

  1. NVMe
  2. lyklaborð
  3. USB-C (Thunderbolt hefur ekki verið prófað; þegar einingin er hlaðin sjálfkrafa frýs hún kerfið)
  4. Touchbar (með getu til að kveikja á Fn lyklum, baklýsingu, ESC osfrv.)
  5. Hljóð (aðeins innbyggðir hátalarar)
  6. Wi-Fi eining (í gegnum brcmfmac og aðeins í gegnum iw)
  7. DisplayPort yfir USB-C
  8. Skynjarar
  9. Fresta/halda áfram (að hluta)
  10. etc ..

Þessi kennsla á við um macbookpro15,1 og macbookpro15,2. Greinin var tekin sem grunnur frá Github á ensku. þess vegna. Ekki virkaði allt í þessari grein, svo ég varð að finna lausn sjálfur.

Það sem þú þarft að setja upp

  • USB-C tengikví við USB (að minnsta kosti þrjú USB inntak til að tengja mús, lyklaborð, USB mótald eða síma í tjóðrun). Þetta er aðeins nauðsynlegt á fyrstu stigum uppsetningar
  • USB lyklaborð
  • USB/USB-C glampi drif að lágmarki 4GB

1. Slökktu á banni við ræsingu frá ytri miðlum

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

2. Úthlutaðu lausu plássi með því að nota Disk Utility

Til hægðarauka úthlutaði ég disknum strax 30GB og forsniði hann í exfat í sjálfu Diskaforritinu. Skipting á líkamlegum diskabúnaði.

3. Búðu til ISO mynd

Valkostir:

  1. Þú getur farið einfalda leið og hlaðið niður tilbúinni mynd með kjarna 5.3.5-1 og plástra frá aunali1 tengill á fullunna mynd
  2. Búðu til mynd sjálfur í gegnum archlive (kerfi með Archa dreifingu er krafist)

    Setja upp archiso

    pacman -S archiso

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

    Bættu geymslunni við pacman.conf:

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

    Við hunsum upprunalega kjarnann í pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Bættu við nauðsynlegum pökkum, í lokin bættu við linux-mbp kjarnanum og linux-mbp-hausunum

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

    Við breytum handritinu til að virka í gagnvirkum ham (skipta um pacstrap -C fyrir 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!"
    }

    Mynda mynd:

    sudo ./build.sh -v

    Ýttu á Y til að sleppa hunsuðum pakka, skrifaðu síðan iso-myndina á USB-drifið:

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

4. Fyrsta stígvél

Endurræstu með glampi drifinu og lyklaborðinu í. Ýttu á valkosti þegar eplið birtist, veldu EFI BOOT.

Næst þarftu að ýta á „e“ takkann og slá inn í lok skipanalínunnar module_blacklist=þrumufleygur. Ef þetta er ekki gert gæti kerfið ekki ræst og Thunderbolt ICM Villa mun birtast.

Með því að nota fdisk/cfdisk finnum við skiptinguna okkar (fyrir mér er það nvme0n1p4), forsníða það og setja upp skjalasafnið. Þú getur notað opinber fyrirmæli eða til hliðar.

Við erum ekki að búa til ræsihluti; við munum skrifa ræsiforritið inn /dev/nvme0n1p1
Eftir að umhverfið í /mnt er alveg myndað og áður en þú ferð yfir í arch-chroot skaltu skrifa:

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

Bæta við /etc/pacman.conf:


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

Settu upp kjarnann:


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

Við skráum thunderbolt og applesmc í /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Lyklaborð, snertistikur osfrv

Settu upp yay:


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

Að setja upp einingar til að snertistikan virki:


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

Bættu einingum við ræsingu: /etc/modules-load.d/apple.conf

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

Að setja upp kjarnaeiningar fyrir lyklaborðið. Í geymslunni anuali1 það er tilbúinn pakki heitir hann epli-bce-dkms-git. Til að setja það upp skaltu skrifa í stjórnborðið:

pacman -S apple-bce-dkms-git

Í þessu tilviki verður kjarnaeiningin kölluð epli-bce. Ef um sjálfsafgreiðslu er að ræða er það kallað f.Kr. Í samræmi við það, ef þú vilt skrá einingu í MODULES hlutann í mkinicpio.conf skránni, þá skaltu ekki gleyma hvaða einingu þú settir upp.

Handvirk samsetning:


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

Bættu bce eða apple-bce einingunni við ræsingu: /etc/modules-load.d/bce.conf

bce

Ef þú vilt nota Fn hnappana sjálfgefið, skrifaðu þá í /etc/modprobe.d/apple-tb.conf skrána:

options apple-ib-tb fnmode=2

Uppfærsla kjarnans og initramfs.


mkinitcpio -p linux-mbp

Settu upp iwd:

sudo pacman -S networkmanager iwd

5. Hleðslutæki

Þegar allir helstu pakkarnir hafa verið settir upp inni í chroot geturðu byrjað að setja upp ræsiforritið.

Ég hef ekki getað fengið grub í vinnuna. Grub ræsir af utanáliggjandi USB drifi, en þegar þú reynir að skrá það í nvme í gegnum

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

kerfið fór í kjarna læti og eftir endurræsingu birtist ekki nýtt atriði í gegnum valkosti. Ég fann enga skýra lausn á þessu vandamáli og ákvað því að reyna að innleiða ræsingu með systemd-boot.

  1. Sjósetja
    bootctl --path=/boot install

    og við förum í kjarna læti. Slökktu á MacBook, kveiktu á henni aftur, smelltu á valkosti (ekki slökkva á USB-C miðstöðinni með lyklaborðinu)

  2. Við athugum hvort ný EFI BOOT færsla hafi birst í viðbót við ytra tækið
  3. Við veljum að ræsa af utanáliggjandi USB drifi, eins og við fyrstu uppsetningu (ekki gleyma að tilgreina module_blacklist=thunderbolt)
  4. Við festum diskinn okkar og förum inn í umhverfið í gegnum arch-chroot


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

Ef það er nauðsynlegt fyrir lyklaborðið að virka þar til kerfið er fullhlaðið (þetta er nauðsynlegt þegar þú notar luks/dm-crypt dulkóðun), skrifaðu það þá í /etc/mkinicpio.conf skrána í MODULES hlutanum:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Uppfærsla kjarnans og initramfs.


mkinicpio -p linux-mbp

Setja upp systemd-boot

Við breytum /boot/loader/loader.conf skránni, eyðum öllu inni og bætum við eftirfarandi:

default arch
timeout 5
editor 1

Farðu í möppuna /boot/loader/entries, búðu til arch.conf skrána og skrifaðu:

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

Ef þú notaðir luks og lvm, þá

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

Endurræstu í MacOS.

6. Wi-Fi uppsetning

Eins og það kom í ljós á endanum geymir MacOS vélbúnaðarskrárnar fyrir Wi-Fi millistykkið í möppunni /usr/share/firmware/wifi , og þú getur tekið þá þaðan í formi klumpa og fóðrað þá í brcmfmac kjarnaeininguna. Til að komast að því hvaða skrár millistykkið þitt notar skaltu opna flugstöð í MacOS og skrifa:

ioreg -l | grep C-4364

Við fáum langan lista. Við þurfum aðeins skrár úr hlutanum Requested Files:

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

Í þínu tilviki geta skráarnöfnin verið mismunandi. Afritaðu þau úr /usr/share/firmware/wifi möppunni yfir á flash-drifið og endurnefna þau á eftirfarandi hátt:

    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>

Í þessu tilviki inniheldur síðasta textaskráin líkanheitin; ef líkanið þitt er ekki macbookpro15,2, þá þarftu að endurnefna þessa skrá í samræmi við MacBook líkanið þitt.

Endurræstu í Arch.

Afritaðu skrárnar af flash-drifinu í /lib/firmware/brcm/ möppuna


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/

Athugaðu virkni einingarinnar:


rmmod brcmfmac
modprobe brcmfmac

Við tryggjum að netviðmótið birtist í gegnum ifconfig/ip.
Að setja upp wifi í gegnum iwctl

Athygli. Í gegnum netctl, nmcli osfrv. Viðmótið virkar ekki, aðeins í gegnum iwd.

Við þvingum NetworkManager til að nota iwd. Til að gera þetta skaltu búa til skrána /etc/NetworkManager/NetworkManager.conf og skrifa:

[device]
wifi.backend=iwd

Ræstu NetworkManager þjónustuna


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

7. Hljóð

Til þess að hljóðið virki þarftu að setja upp pulsaudio:


sudo pacman -S pulseaudio

Sækja þrjár skrár:

Við skulum færa þá:

    /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. Fresta/halda áfram

Á þessari stundu 16.10.2019 þú verður að velja annað hvort hljóð eða biðja/halda áfram. Við erum að bíða eftir að höfundur bce einingarinnar ljúki virkninni.

Til að byggja upp einingu með stuðningi sem frestað er/halda áfram verður þú að gera eftirfarandi:


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

Ef þú settir upp tilbúnu apple-bce-eininguna úr anuali1 geymslunni, þá verður þú fyrst að fjarlægja hana og aðeins síðan setja saman og setja upp bce-eininguna með stöðvunarstillingu.

Einnig þarftu að bæta applesmc einingunni við svarta listann (ef þú hefur ekki gert þetta áður) og ganga úr skugga um að í /boot/loader/entries/arch.conf í valmöguleikalínunni í lokin sé færibreytunni bætt við pcie_ports=samhæfing.

Eins og er, hrynur snertistikan þegar hann fer í biðham og þrumufleygdrifurinn frýs stundum kerfið í meira en 30 sekúndur og í nokkrar mínútur þegar það er haldið áfram. Þetta er hægt að laga með því að afferma sjálfkrafa erfiðar einingar.

Búðu til handrit /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

Gerðu það keyranlegt:

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

Það er allt í bili. Niðurstaðan er algjörlega framkvæmanlegt kerfi, að undanskildum nokkrum blæbrigðum með frestun/ferilskrá. Engin hrun eða læti í kjarna sáust á nokkrum dögum spenntur. Ég vona að á næstunni muni höfundur bce mátsins klára hana og við fáum fullan stuðning fyrir stöðvun/ferilskrá og hljóð.

Heimild: www.habr.com

Bæta við athugasemd