KĂ€ivitame MacBook Pro 2018 T2 ArchLinuxiga (dualboot)

Palju on rÀÀgitud sellest, et uue T2 kiibi tÔttu ei ole vÔimalik 2018. aasta MacBookidega Touch Bar-iga Linuxit installida. Aja edenedes, 2019. aasta lÔpus, on kolmandate osapoolte arendajad loonud mitmeid draivereid ja kerneliplaatide parandusi T2 kiibiga suhtlemiseks. Peamine draiver 2018. ja uudse MacBooki mudelite jaoks vÔimaldab VHCI (touche/kliaviatuur jne) ning ka heli funktsionaalsust.

Projekt mbp2018-bridge-drv jagatud kolme peamise komponendi peale:

  • BCE (Buffer Copy Engine) — loob T2-ga peamise sidekanali. VHCI ja Audio vajavad seda komponenti.
  • VHCI — see on virtuaalne hostkontroller USB; klaviatuur, hiir ja muud sĂŒsteemi komponendid pakuvad selle komponenti kaudu (teised draiverid kasutavad seda hostkontrollerit, et tagada suurem funktsionaalsus).
  • Audio — draiver T2 heliliidestele, hetkel toetatakse ainult heli edastamist lĂ€bi MacBooki integreeritud kĂ”larite.


Teine projekt on nimega macbook12-spi-driver, ja see vÔimaldab klaviatuuri, SPI puuteplaadi ja MacBook Pro 2016. aasta lÔpu ning hilisemate versioonide puutepaneeli draiverit. Osad klaviatuuri/puutetplaadi draiverid on alates versioonist 5.3 lisatud kÀrku.

Samuti on rakendatud toe selliste seadmete nagu wi-fi, puuteplaat jne osas kÀrku patƥid. Praegu on kÀrku versioon 5.3.5-1

Mis hetkel töötab

  1. NVMe
  2. Klaviatuur
  3. USB-C (Thunderbolt ei ole testitud, mooduli automaatne laadimine hangib sĂŒsteemi tĂ€ielikult)
  4. Puutepaneel (Fn klahvide, taustvalguse, ESC jne toega)
  5. Heli (ainult sisseehitatud kÔlarid)
  6. Wi-Fi moodul (brcmfmac kaudu ja ainult lÀbi iw)
  7. DisplayPort USB-C kaudu
  8. Andurid
  9. Suspend/Resume (osaliselt)
  10. jne..

See juhend kehtib macbookpro15,1 ja macbookpro15,2 jaoks. Aluseks on ingliskeelne artikkel GitHubist. siitKuid mitte kÔik selle artikli osad ei töötanud, seega tuli lahendusi ise otsida.

Mida on installimiseks vaja

  • USB-C dokkadapter USB-le (vĂ€hemalt kolm USB porti hiire, klaviatuuri, usb modem vĂ”i telefoni ĂŒhendamiseks tethering reĆŸiimis). See on vajalik ainult installimise esimeses etapis.
  • USB-klaviatuur
  • USB/USB-C mĂ€lupulk, vĂ€hemalt 4GB

1. Keelame vÀliste seadmete laadimise keelamine

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

2. Eraldame vaba ruumi Disk Utility abil

Mugavuse huvides eraldasin ma kohe 30GB ketast, vormindades selle exfat formaati Disk Utility's. FĂŒĂŒsilise ketta jagamine Disk Utility kaudu.

3. Loome iso pildi

Valikud:

  1. VÔime minna lihtsat teed ja laadida alla valmis pilt tuumaga 5.3.5-1 ja plaastritega aunali1 link valmis pildile
  2. Luua pilt ise archlive'i kaudu (vajalik on sĂŒsteem Arch'i distributsiooniga)

    Paigaldame archiso

    pacman -S archiso

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

    Lisame hoidla pacman.conf'i:

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

    Ignoreerime originaalset tuuma pacman.conf'is:

    IgnorePkg   = linux linux-headers
    

    Lisame vajalikud paketid, lÔpuks lisame linux-mbp ja linux-mbp-headers tuuma

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

    Muudame skripti interaktiivseks tööks (asendame 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!"
    }

    Loome pildi:

    sudo ./build.sh -v

    Vajutame Y, et vahele jÀtta ignoreeritud paketid, seejÀrel kirjutame iso-pildi usb-mÀlupulgale:

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

4. Esimene kÀivitamine

TaaskÀivitame sisestatud mÀlupulgaga ja klaviatuuriga. Vajutame options, kui Ôun ilmub, valime EFI BOOT.

SeejĂ€rel tuleb vajutada klahvi „e” ja kirjutada kĂ€surea lĂ”pule module_blacklist=thunderbolt. Kui seda ei tehta, ei pruugi sĂŒsteem kĂ€ivituda ja ilmneb viga Thunderbolt ICM Error.

Kasutades fdisk/cfdisk, leidke meie jaotus (minu puhul on see nvme0n1p4), vormindage ja paigaldage Arch. VÔite kasutada ametlikku juhendit vÔi kolmandate osapoolte.

KĂ€ivitamisjaotust ei loo, laadijat kirjutame /dev/nvme0n1p1
PĂ€rast seda, kui keskkond on tĂ€ielikult loodud /mnt kaustas ja enne arch-chrooti ĂŒleminekut, kirjutame:

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

Lisame /etc/pacman.conf:


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

Paigaldame tuuma:


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

Lisame thunderbolt ja applesmc /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Klaviatuur, tačhbar jne

Paigaldame yay:


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

Paigaldame moodulid tačhbariga töötamiseks:


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

Lisame moodulid automaatlaadimisse: /etc/modules-load.d/apple.conf

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

Paigaldame tuuma moodulid klaviatuuri tööks. Repos anuali1 on valmis paket, nimega apple-bce-dkms-git. Selle installimiseks kirjutame konsoolis:

pacman -S apple-bce-dkms-git

Selle juhul on tuumamoodul nimega apple-bce. Kui koguda iseseisvalt, siis nimetatakse seda bce. Vastavalt, kui soovite mooduli kirjutada sektsiooni MODULES faili mkinicpio.conf, siis Àrge unustage, millist moodulit te installisite.

KĂ€sitsi kogumine:


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

Lisame mooduli bce vÔi apple-bce automaatkÀivitusse: /etc/modules-load.d/bce.conf

bce

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

options apple-ib-tb fnmode=2

Uuendame tuuma ja initramfs.


mkinitcpio -p linux-mbp

Installime iwd:

sudo pacman -S networkmanager iwd

5. Laadur

PÀrast seda, kui chrootis on kÔik peamised paketid installitud, saab alustada laadurite installimist.

Mul ei Ă”nnestunud grub'i tööle saada. VĂ€liselt usb-kettalt grub laadib, kuid kui pĂŒĂŒan seda nvme'isse kirjutada lĂ€bi

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

sĂŒsteem lĂ€heb kernel panic'i ja pĂ€rast taaskĂ€ivitamist uut punkti options'i kaudu ei ilmunud. Selge lahendust sellele probleemile ma ei leidnud ja seepĂ€rast otsustasin proovida laadimist systemd-boot'i kaudu.

  1. KĂ€ivitage
    bootctl --path=/boot install

    ja ja kernel panic. LĂŒlitame MacBooki vĂ€lja, lĂŒlitame uuesti sisse, vajutame options (usb-c hubi klaviatuuriga ei katkesta)

  2. Kontrollime, et lisaks vÀlisele seadmele on ilmunud uus EFI BOOT kirje
  3. Valime kÀivitamise vÀliselt usb-kettalt nagu esmakordsel installimisel (Àrge unustage sisestada module_blacklist=thunderbolt)
  4. Mountime meie ketta ja liigume keskkonda arch-chroot kaudu


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

Kui on vajalik, et klaviatuur töötaks enne sĂŒsteemi tĂ€ielikku kĂ€ivitamist (see on vajalik luks/dm-crypt-i krĂŒpteerimise korral), siis kirjutame faili /etc/mkinicpio.conf jaotisesse MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Uuendame tuuma ja initramfs.


mkinicpio -p linux-mbp

Seame systemd-booti

Muudame faili /boot/loader/loader.conf, kustutame sealt kÔik ja lisame jÀrgmise:

default arch
timeout 5
editor 1

Liigume kausta /boot/loader/entries, loome faili arch.conf ja kirjutame:

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

Kui kasutasime luks ja lvm, siis

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

TaaskÀivitame MacOS-i.

6. Wi-Fi seadistamine

Kuidas selgus, salvestab MacOS wi-fi adaptorite pĂŒsivara failid kausta /usr/share/firmware/wifi , ja saate need sealt blob'idena vĂ”tta ja edastada brcmfmac-i tuumamoodulile. Selleks et teada saada, milliseid faile teie adapter kasutab, avage MacOS-is terminal ja kirjutage:

ioreg -l | grep C-4364

Saame pika nimekirja. Meid huvitavad ainult failid jaotises 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>"})

Teie puhul vĂ”ivad failide nimed erineda. Kopeerige need kaustast /usr/share/firmware/wifi mĂ€lupulgale ja nimetage ĂŒmber jĂ€rgmisse vormingusse:

    maui.trx -&gt; brcmfmac4364-pcie.bin
    maui-X3.clmb -&gt; brcmfmac4364-pcie.clm_blob
    P-maui-X3_M-HRPN_V-m__m-7.7.txt -&gt; brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt</b>

Antud juhul sisaldab viimane tekstifail mudeli nimesid; kui teie mudel ei ole macbookpro15,2, tuleb see fail ĂŒmber nimetada vastavalt teie MacBooki mudelile.

TaaskÀivitage archi.

Kopeerime 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/

Kontrollime mooduli toimivust:


rmmod brcmfmac
modprobe brcmfmac

Veenduge, et vÔrguliides oleks nÀhtav ifconfig/ip kaudu.
Seame wifi ĂŒles lĂ€bi iwctl

TÀhelepanu. Netctl, nmcli jne kaudu liides ei tööta, ainult iwd kaudu.

Sundime NetworkManagerit kasutama iwd-d. Selleks loome faili /etc/NetworkManager/NetworkManager.conf ja kirjutame:

[device]
wifi.backend=iwd

KĂ€ivitame NetworkManageri teenuse


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

7. HÀÀl

Heli toimimiseks on vaja installida pulseaudio:


sudo pacman -S pulseaudio

Laadime 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. Suspend/Resume

Praegu tuleb valida kas heli vÔi suspend/resume. Ootame, kuni mooduli autor funktsionaalsuse lÔpetab. 16.10.2019 Selleks, et koguda moodul suspend/resume toe jaoks, tuleb teha 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 olete installinud valmis mooduli apple-bce repostoryst anuali1, siis tuleb see eelnevalt eemaldada ja alles seejĂ€rel koguda ning installida bce moodul suspend reĆŸiimi toega.

Samuti peate lisama musta nimekirja mooduli applesmc (kui te pole seda varem teinud) ja veenduma, et /boot/loader/entries/arch.conf failis, read options lÔpus on lisatud parameeter

pcie_ports=compat Praegu kukub touchbar'i juhtimisseade suspend reĆŸiimi minnes ning thunderbolti draiver vahel kĂŒlmutab sĂŒsteemi ĂŒle 30 sekundi ja taaselustamisel — mitu minutit. Seda saab parandada probleemselt moodulit automaatselt eemaldades..

Looge skript

Tehke see kÀivitatavaks: /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

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

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

Sellega oleme lĂ”petanud. LĂ”ppkokkuvĂ”ttes on tekkinud ĂŒsna toimiv sĂŒsteem, vĂ€lja arvatud mĂ”ned detailid suspend/resume osas. Paari pĂ€eva jooksul pole olnud mingeid krahhe ega kernel panic'e. Loodetavasti tĂ€iustab moduli autor bce peagi ning saame tĂ€ieliku toe suspend/resume ja heli osas.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster