MacBook Pro 2018 T2:n saaminen toimimaan ArchLinuxin kanssa (kaksoiskäynnistys)

On ollut melkoista hypeä siitä, että uusi T2-siru tekee mahdottomaksi Linuxin asentamisen uusiin 2018 MacBookeihin, joissa on kosketuspalkki. Aikaa kului, ja vuoden 2019 lopussa kolmannen osapuolen kehittäjät ottivat käyttöön useita ohjaimia ja ytimen korjaustiedostoja vuorovaikutukseen T2-sirun kanssa. MacBook-mallien 2018 ja uudempien pääohjain toteuttaa VHCI-toiminnan (kosketus/näppäimistö/jne. käyttö) sekä äänitoiminnan.

Hanke mbp2018-bridge-drv jaettu 3 pääkomponenttiin:

  • BCE (Buffer Copy Engine) - muodostaa pääviestintäkanavan T2:n kanssa. VHCI ja Audio vaativat tämän komponentin.
  • VHCI on USB Virtual Host Controller; tämä komponentti tarjoaa näppäimistön, hiiren ja muut järjestelmäkomponentit (muut ohjaimet käyttävät tätä isäntäohjainta tarjotakseen enemmän toimintoja.
  • Audio - T2-ääniliittymän ohjain, tukee tällä hetkellä vain äänen ulostuloa MacBookin sisäänrakennettujen kaiuttimien kautta


Toinen projekti on ns macbook12-spi-ohjain, ja se toteuttaa mahdollisuuden käyttää syöttöohjainta näppäimistölle, SPI-ohjauslevylle ja kosketuspalkin loppuvuodelle 2016 ja uudemmille MacBook Proille. Jotkut näppäimistön/ohjauslevyn ajurit sisältyvät nyt ytimeen versiosta 5.3 alkaen.

Tuki laitteille, kuten wi-fi, kosketuslevy jne., toteutettiin myös ytimen korjaustiedostoilla. Nykyinen ytimen versio 5.3.5-1

Mikä toimii tällä hetkellä

  1. NVMe
  2. näppäimistö
  3. USB-C (Thunderboltia ei ole testattu; kun moduuli ladataan automaattisesti, se jäädyttää järjestelmän)
  4. Kosketuspalkki (mahdollisuudella kytkeä päälle Fn-näppäimet, taustavalo, ESC jne.)
  5. Ääni (vain sisäänrakennetut kaiuttimet)
  6. Wi-Fi-moduuli (brcmfmacin kautta ja vain iw:n kautta)
  7. DisplayPort USB-C:n kautta
  8. Anturit
  9. Keskeytä/Jatka (osittain)
  10. jne..

Tämä opetusohjelma soveltuu macbookpro15,1:lle ja macbookpro15,2:lle. Artikkeli on otettu pohjaksi Githubista englanniksi. siten. Kaikki tässä artikkelissa ei toiminut, joten minun piti löytää ratkaisu itse.

Mitä tarvitset asennukseen

  • USB-C-telakointisovitin USB:hen (vähintään kolme USB-tuloa hiiren, näppäimistön, USB-modeemin tai puhelimen liittämiseen jakamistilassa). Tämä on tarpeen vain asennuksen ensimmäisissä vaiheissa
  • USB-näppäimistö
  • USB/USB-C-muistitikku vähintään 4 Gt

1. Poista käytöstä ulkoiselta tietovälineeltä käynnistämisen esto

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

2. Varaa vapaata tilaa Levytyökalulla

Mukavuussyistä varasin heti 30 Gt levylle, alustaen sen exfatissa itse Levytyökalussa. Fyysisen levyn levyapuohjelman osiointi.

3. Luo ISO-kuva

vaihtoehdoista:

  1. Voit siirtyä yksinkertaista reittiä ja ladata valmiin kuvan kernel 5.3.5-1 ja korjaustiedostot osoitteesta aunali1 linkki valmiiseen kuvaan
  2. Luo kuva itse arkiston kautta (tarvitaan järjestelmä Archa-jakelulla)

    Asettaa archiso

    pacman -S archiso

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

    Lisää arkisto tiedostoon pacman.conf:

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

    Jätämme huomioimatta alkuperäisen ytimen pacman.conf:ssa:

    IgnorePkg   = linux linux-headers
    

    Lisää tarvittavat paketit, lisää lopuksi linux-mbp-ydin ja linux-mbp-headers

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

    Muutamme skriptin toimimaan interaktiivisessa tilassa (korvaa pacstrap -C merkillä 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!"
    }

    Kuvan muodostaminen:

    sudo ./build.sh -v

    Ohita ohitetut paketit painamalla Y ja kirjoita sitten iso-kuva USB-muistitikulle:

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

4. Ensimmäinen käynnistys

Käynnistä uudelleen, kun flash-asema ja näppäimistö on asetettu. Paina vaihtoehtoja, kun omena tulee näkyviin, valitse EFI BOOT.

Seuraavaksi sinun on painettava "e"-näppäintä ja kirjoitettava komentorivin lopussa module_blacklist=ukkonen. Jos näin ei tehdä, järjestelmä ei välttämättä käynnisty ja näyttöön tulee Thunderbolt ICM Error.

Käyttämällä fdisk / cfdisk löydämme osiomme (minulle se on nvme0n1p4), alustamme sen ja asennamme arkiston. Voit käyttää virallisia ohjeita tai sivuttain.

Emme luo käynnistysosiota; kirjoitamme käynnistyslataimen sisään / dev / nvme0n1p1
Kun ympäristö /mnt:ssä on muodostunut kokonaan ja ennen siirtymistä arch-chrootiin, kirjoita:

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

Lisää tiedostoon /etc/pacman.conf:


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

Asenna ydin:


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

Rekisteröimme thunderbolt ja applesmc tiedostossa /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Näppäimistö, kosketuspalkki jne

Asenna joo:


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

Moduulien asentaminen kosketuspalkin toimintaa varten:


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

Lisää moduuleja käynnistykseen: /etc/modules-load.d/apple.conf

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

Ydinmoduulien asennus näppäimistölle. Arkistossa anuali1 on valmis paketti, se on ns apple-bce-dkms-git. Asenna se kirjoittamalla konsoliin:

pacman -S apple-bce-dkms-git

Tässä tapauksessa ydinmoduulia kutsutaan omena-bce. Itsekokoonpanon tapauksessa sitä kutsutaan BCE. Jos siis haluat rekisteröidä moduulin mkinicpio.conf-tiedoston MODULES-osioon, älä unohda, minkä moduulin asensit.

Manuaalinen kokoonpano:


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

Lisää bce- tai apple-bce-moduuli käynnistykseen: /etc/modules-load.d/bce.conf

bce

Jos haluat käyttää Fn-painikkeita oletuksena, kirjoita /etc/modprobe.d/apple-tb.conf-tiedostoon:

options apple-ib-tb fnmode=2

Päivitetään ydin ja initramfs.


mkinitcpio -p linux-mbp

Asenna iwd:

sudo pacman -S networkmanager iwd

5. Kuormaaja

Kun kaikki pääpaketit on asennettu chrootin sisään, voit aloittaa käynnistyslataimen asennuksen.

En ole päässyt töihin. Grub käynnistyy ulkoisesta USB-asemasta, mutta kun yrität rekisteröidä sen nvme:n kautta

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

järjestelmä joutui ytimen paniikkiin, ja uudelleenkäynnistyksen jälkeen uutta kohdetta vaihtoehtojen kautta ei ilmestynyt. En löytänyt selkeää ratkaisua tähän ongelmaan, ja siksi päätin yrittää käynnistää systemd-bootin avulla.

  1. Tuoda markkinoille
    bootctl --path=/boot install

    ja menemme ytimen paniikkiin. Sammuta MacBook, käynnistä se uudelleen, napsauta vaihtoehtoja (älä sammuta USB-C-keskitintä näppäimistöllä)

  2. Tarkistamme, että ulkoisen laitteen lisäksi on ilmestynyt uusi EFI BOOT -merkintä
  3. Valitsemme käynnistyksen ulkoiselta USB-asemalta, kuten ensimmäisen asennuksen yhteydessä (älä unohda määrittää module_blacklist=thunderbolt)
  4. Asennamme levymme ja menemme ympäristöön arch-chrootin kautta


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

Jos näppäimistön on toimittava, kunnes järjestelmä on ladattu täyteen (tämä on tarpeen luks/dm-crypt-salausta käytettäessä), kirjoita se /etc/mkinicpio.conf-tiedostoon MODULES-osiossa:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Päivitetään ydin ja initramfs.


mkinicpio -p linux-mbp

Asetetaan systemd-boot

Muokkaamme /boot/loader/loader.conf-tiedostoa, poistamme kaiken sisältä ja lisäämme seuraavat:

default arch
timeout 5
editor 1

Mene /boot/loader/entries-kansioon, luo arch.conf-tiedosto ja kirjoita:

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

Jos käytit luksia ja lvm:ää, niin

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

Käynnistä MacOS uudelleen.

6. Wi-Fi-asetukset

Kuten lopulta kävi ilmi, MacOS tallentaa Wi-Fi-sovittimen laiteohjelmistotiedostot kansioon /usr/share/firmware/wifi , ja voit ottaa ne sieltä blob-muodossa ja syöttää ne brcmfmac-ydinmoduuliin. Saadaksesi selville, mitä tiedostoja sovittimesi käyttää, avaa pääte MacOS:ssa ja kirjoita:

ioreg -l | grep C-4364

Saamme pitkän listan. Tarvitsemme vain tiedostoja osiosta Pyydetyt tiedostot:

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

Sinun tapauksessasi tiedostojen nimet voivat olla erilaisia. Kopioi ne /usr/share/firmware/wifi-kansiosta flash-asemaan ja nimeä ne uudelleen seuraavasti:

    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>

Tässä tapauksessa viimeinen tekstitiedosto sisältää mallien nimet; jos mallisi ei ole macbookpro15,2, sinun on nimettävä tämä tiedosto uudelleen MacBook-mallisi mukaisesti.

Käynnistä Archiin uudelleen.

Kopioi tiedostot flash-asemasta /lib/firmware/brcm/-kansioon


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/

Moduulin toimivuuden tarkistaminen:


rmmod brcmfmac
modprobe brcmfmac

Varmistamme, että verkkoliitäntä näkyy ifconfig/ip:n kautta.
Asetetaan wifi:n kautta yuctl

Huomio. Netctl:n, nmclin jne. kautta. Käyttöliittymä ei toimi, vain iwd:n kautta.

Pakotamme NetworkManagerin käyttämään iwd:tä. Tee tämä luomalla tiedosto /etc/NetworkManager/NetworkManager.conf ja kirjoittamalla:

[device]
wifi.backend=iwd

Käynnistä NetworkManager-palvelu


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

7. Ääni

Jotta ääni toimisi, sinun on asennettava pulseaudio:


sudo pacman -S pulseaudio

Lataa kolme tiedostoa:

Siirretään niitä:

    /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. Keskeytä/Jatka

Tällä hetkellä 16.10.2019 sinun on valittava joko ääni tai keskeytys/jatka. Odotamme bce-moduulin kirjoittajan suorittavan toiminnon valmiiksi.

Jos haluat rakentaa keskeytetyn/jatkamisen tuen sisältävän moduulin, sinun on toimittava seuraavasti:


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

Jos asensit valmiin apple-bce-moduulin anuali1-varastosta, sinun on ensin poistettava se ja vasta sitten koottava ja asennettava bce-moduuli keskeytystilan tuella.

Lisäksi sinun on lisättävä applesmc-moduuli mustalle listalle (jos et ole tehnyt tätä aiemmin) ja varmista, että parametri on lisätty parametririville /boot/loader/entries/arch.conf lopussa olevalle optioriville. pcie_ports=compat.

Tällä hetkellä kosketuspalkin ohjain kaatuu siirtyessään keskeytystilaan, ja ukkosen ohjain joskus jumittaa järjestelmän yli 30 sekunniksi ja useiksi minuuteiksi, kun se jatkaa. Tämä voidaan korjata poistamalla ongelmalliset moduulit automaattisesti.

Luo käsikirjoitus /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

Tee siitä suoritettava:

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

Tässä kaikki tältä erää. Tuloksena on täysin toimiva järjestelmä, lukuun ottamatta joitain keskeytyksen/jatkamisen vivahteita. Ei havaittu kaatumisia tai ytimen paniikkia useiden käyttöpäivien aikana. Toivon, että lähitulevaisuudessa bce-moduulin kirjoittaja saa sen valmiiksi ja saamme täyden tuen keskeytyksestä/jatkamisesta ja äänestä.

Lähde: will.com

Lisää kommentti