MacBook Pro 2018 T2 darbÄ«bas nodroÅ”ināŔana ar ArchLinux (dubultā sāknÄ“Å”ana)

Ir bijis diezgan daudz ažiotāžu par to, ka jaunā T2 mikroshēma padarÄ«s neiespējamu Linux instalÄ“Å”anu jaunajos 2018. gada MacBooks ar skārienjoslu. Laiks pagāja, un 2019. gada beigās treÅ”o puÅ”u izstrādātāji ieviesa vairākus draiverus un kodola ielāpus mijiedarbÄ«bai ar T2 mikroshēmu. Galvenais draiveris MacBook 2018. gada un jaunākiem modeļiem ievieÅ” VHCI darbÄ«bu (pieskāriena/tastatÅ«ras/u.c. darbÄ«ba), kā arÄ« skaņas darbÄ«bu.

Projekts mbp2018-bridge-drv sadalīts 3 galvenajos komponentos:

  • BCE (Buffer Copy Engine) - izveido galveno sakaru kanālu ar T2. VHCI un Audio ir nepiecieÅ”ams Å”is komponents.
  • VHCI ir USB virtuālā resursdatora kontrolieris; tastatÅ«ru, peli un citus sistēmas komponentus nodroÅ”ina Å”is komponents (citi draiveri izmanto Å”o resursdatora kontrolleri, lai nodroÅ”inātu vairāk funkcionalitātes.
  • Audio ā€” T2 audio interfeisa draiveris, paÅ”laik atbalsta tikai audio izvadi caur MacBook iebÅ«vētajiem skaļruņiem


Otrais projekts saucas macbook12-spi draiveris, un tas nodroÅ”ina iespēju darbināt tastatÅ«ras ievades draiveri, SPI skārienpaliktni un skārienjoslu MacBook Pro 2016. gada beigām un jaunākām versijām. Daži tastatÅ«ras/skārienpaliktņa draiveri tagad ir iekļauti kodolā, sākot ar versiju 5.3.

Izmantojot kodola ielāpus, tika ieviests arÄ« atbalsts tādām ierÄ«cēm kā Wi-Fi, skārienpaliktnis utt. PaÅ”reizējā kodola versija 5.3.5-1

Kas Ŕobrīd darbojas

  1. NVMe
  2. tastatūra
  3. USB-C (Thunderbolt nav pārbaudīts; kad modulis tiek ielādēts automātiski, sistēma sasalst)
  4. Skārienjosla (ar iespēju ieslēgt Fn taustiņus, fona apgaismojumu, ESC utt.)
  5. Skaņa (tikai iebūvētie skaļruņi)
  6. Wi-Fi modulis (izmantojot brcmfmac un tikai caur iw)
  7. DisplayPort, izmantojot USB-C
  8. Sensori
  9. Apturēt/atsākt (daļēji)
  10. utt ..

Å Ä« apmācÄ«ba ir piemērojama Macbookpro15,1 un macbookpro15,2. Raksts tika ņemts par pamatu no Github angļu valodā. tātad. Ne viss Å”ajā rakstā darbojās, tāpēc man paÅ”am bija jāatrod risinājums.

Kas jums nepiecieŔams uzstādīŔanai

  • USB-C dokstacijas adapteris pie USB (vismaz trÄ«s USB ieejas peles, tastatÅ«ras, USB modema vai tālruņa pievienoÅ”anai piesaistes režīmā). Tas ir nepiecieÅ”ams tikai pirmajos uzstādÄ«Å”anas posmos
  • USB tastatÅ«ra
  • USB/USB-C zibatmiņas disks vismaz 4 GB

1. Atspējojiet sāknÄ“Å”anas aizliegumu no ārējā datu nesēja

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

2. PieŔķiriet brīvo vietu, izmantojot Disk Utility

ĒrtÄ«bas labad es diskam uzreiz pieŔķīru 30 GB, paŔā Disk Utility formatējot to exfat formātā. Fiziskā diska diska utilÄ«ta sadalÄ«Å”ana.

3. Izveidojiet ISO attēlu

Iespējas:

  1. Varat iet pa vienkārÅ”o ceļu un lejupielādēt gatavu attēlu ar kodolu 5.3.5-1 un ielāpus no aunali1 saite uz gatavo attēlu
  2. Izveidojiet attēlu pats, izmantojot arhÄ«vu (nepiecieÅ”ama sistēma ar Archa izplatÄ«Å”anu)

    Komplekts arhizo

    pacman -S archiso

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

    Pievienojiet repozitoriju vietnei pacman.conf:

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

    Mēs ignorējam sākotnējo kodolu pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Pievienojiet nepiecieŔamās pakotnes, beigās pievienojiet linux-mbp kodolu un linux-mbp-headers

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

    Mēs mainām skriptu, lai tas darbotos interaktīvajā režīmā (aizstāt pacstrap -C ar 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!"
    }

    Attēla veidoÅ”ana:

    sudo ./build.sh -v

    Nospiediet Y, lai izlaistu ignorētās pakotnes, pēc tam ierakstiet ISO attēlu USB zibatmiņas diskā:

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

4. Pirmā sāknÄ“Å”ana

Restartējiet ar ievietotu zibatmiņas disku un tastatūru. Nospiediet opcijas, kad parādās ābols, atlasiet EFI BOOT.

Pēc tam jums jānospiež taustiņŔ ā€œeā€ un komandrindas beigās jāievada module_blacklist=pērkons. Ja tas nav izdarÄ«ts, sistēma var netikt sāknēta un parādÄ«sies Thunderbolt ICM kļūda.

Izmantojot fdisk/cfdisk, mēs atrodam savu nodalījumu (man tas ir nvme0n1p4), formatējam to un instalējam arhīvu. Tu vari izmantot oficiālās instrukcijas vai uz sāniem.

Mēs neveidojam sāknÄ“Å”anas nodalÄ«jumu; mēs ierakstÄ«sim sāknÄ“Å”anas ielādētāju /dev/nvme0n1p1
Kad /mnt vide ir pilnībā izveidota un pirms pārejas uz arch-chroot, rakstiet:

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

Pievienot /etc/pacman.conf:


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

Instalējiet kodolu:


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

Mēs reģistrējam thunderbolt un applesmc mapē /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Tastatūra, skārienjosla utt

Instalējiet yay:


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

Moduļu instalÄ“Å”ana, lai skārienjosla darbotos:


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

Pievienojiet moduļus startÄ“Å”anai: /etc/modules-load.d/apple.conf

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

Kodola moduļu instalÄ“Å”ana tastatÅ«rai. Repozitorijā anuali1 ir jau gatava paka, tā saucas apple-bce-dkms-git. Lai to instalētu, ierakstiet konsolē:

pacman -S apple-bce-dkms-git

Å ajā gadÄ«jumā tiks izsaukts kodola modulis ābols-bce. PaÅ”montāžas gadÄ«jumā to sauc bce. AttiecÄ«gi, ja vēlaties reÄ£istrēt moduli faila mkinicpio.conf sadaļā MODUÄ»I, neaizmirstiet, kuru moduli instalējāt.

Manuāla montāža:


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

Pievienojiet bce vai apple-bce moduli startēŔanai: /etc/modules-load.d/bce.conf

bce

Ja pēc noklusējuma vēlaties izmantot Fn pogas, ierakstiet /etc/modprobe.d/apple-tb.conf failā:

options apple-ib-tb fnmode=2

Kodola un initramfs atjaunināŔana.


mkinitcpio -p linux-mbp

Instalējiet iwd:

sudo pacman -S networkmanager iwd

5. Iekrāvējs

Kad visas galvenās pakotnes ir instalētas chroot, varat sākt instalēt sāknÄ“Å”anas programmu.

Man nav izdevies grubu dabūt darbā. Grub sāknējas no ārējā USB diska, bet, mēģinot to reģistrēt nvme, izmantojot

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

sistēma nonāca kodola panikā, un pēc pārstartÄ“Å”anas jauns vienums, izmantojot opcijas, neparādÄ«jās. Es neatradu skaidru Ŕīs problēmas risinājumu un tāpēc nolēmu mēģināt ieviest sāknÄ“Å”anu, izmantojot systemd-boot.

  1. Palaist
    bootctl --path=/boot install

    un mēs nonākam kodola panikā. Izslēdziet MacBook, ieslēdziet to vēlreiz, noklikŔķiniet uz opcijām (neizslēdziet USB-C centrmezglu ar tastatÅ«ru)

  2. Mēs pārbaudām, vai papildus ārējai ierīcei ir parādījies jauns EFI BOOT ieraksts
  3. Mēs izvēlamies palaist no ārējā USB diska, tāpat kā pirmās instalÄ“Å”anas laikā (neaizmirstiet norādÄ«t module_blacklist=thunderbolt)
  4. Mēs uzstādām savu disku un dodamies vidē, izmantojot arch-chroot


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

Ja ir nepiecieÅ”ams, lai tastatÅ«ra darbotos lÄ«dz sistēmas pilnÄ«gai ielādei (tas ir nepiecieÅ”ams, izmantojot luks/dm-crypt Å”ifrÄ“Å”anu), tad ierakstiet to /etc/mkinicpio.conf failā sadaļā MODUÄ»I:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Kodola un initramfs atjaunināŔana.


mkinicpio -p linux-mbp

Systemd-boot iestatīŔana

Mēs rediģējam /boot/loader/loader.conf failu, izdzÄ“Å”am visu, kas ir iekŔā, un pievienojam:

default arch
timeout 5
editor 1

Dodieties uz mapi /boot/loader/entries, izveidojiet failu arch.conf un ierakstiet:

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

Ja izmantoji luks un lvm, tad

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

Restartējiet operētājsistēmā MacOS.

6. Wi-Fi iestatīŔana

Kā izrādījās beigās, MacOS mapē saglabā Wi-Fi adaptera programmaparatūras failus /usr/share/firmware/wifi , un jūs varat ņemt tos no turienes lāsumu veidā un ievadīt brcmfmac kodola modulī. Lai uzzinātu, kurus failus izmanto jūsu adapteris, atveriet termināli operētājsistēmā MacOS un ierakstiet:

ioreg -l | grep C-4364

Mēs iegÅ«stam garu sarakstu. Mums ir nepiecieÅ”ami tikai faili no sadaļas PieprasÄ«tie faili:

"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Å«su gadÄ«jumā failu nosaukumi var atŔķirties. Kopējiet tos no /usr/share/firmware/wifi mapes uz zibatmiņas disku un pārdēvējiet tos Ŕādi:

    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>

Å ajā gadÄ«jumā pēdējā teksta failā ir modeļu nosaukumi; ja jÅ«su modelis nav macbookpro15,2, jums ir jāpārdēvē Å”is fails atbilstoÅ”i jÅ«su MacBook modelim.

Pārstartējiet programmā Arch.

Kopējiet failus no zibatmiņas diska mapē /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/

Moduļa funkcionalitātes pārbaude:


rmmod brcmfmac
modprobe brcmfmac

Mēs pārliecināmies, ka tīkla interfeiss parādās, izmantojot ifconfig/ip.
Wi-Fi iestatīŔana, izmantojot iwctl

Uzmanību. Izmantojot netctl, nmcli utt. Interfeiss nedarbojas, tikai caur iwd.

Mēs piespiežam NetworkManager izmantot iwd. Lai to izdarītu, izveidojiet failu /etc/NetworkManager/NetworkManager.conf un ierakstiet:

[device]
wifi.backend=iwd

Sāciet pakalpojumu NetworkManager


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

7. Skaņa

Lai skaņa darbotos, jums jāinstalē pulseaudio:


sudo pacman -S pulseaudio

Lejupielādējiet trīs failus:

Pārvietosim tos:

    /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. Apturēt/atsākt

Šobrīd 16.10.2019 jums ir jāizvēlas vai nu skaņa, vai apturēt/atsākt. Gaidām, kad bce moduļa autors pabeigs funkcionalitāti.

Lai izveidotu moduli ar apturētu/atsāktu atbalstu, jums ir jāveic Ŕādas darbÄ«bas:


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

Ja instalējāt gatavo Apple-bce moduli no anuali1 repozitorija, tad vispirms tas ir jāizņem un tikai pēc tam jāsamontē un jāinstalē bce modulis ar apturÄ“Å”anas režīma atbalstu.

Tāpat melnajam sarakstam ir jāpievieno modulis applesmc (ja iepriekŔ to neesat izdarījis) un jāpārliecinās, ka parametrs ir pievienots /boot/loader/entries/arch.conf opciju rindā beigās. pcie_ports=compat.

PaÅ”laik skārienjoslas draiveris avarē, pārejot uz apturÄ“Å”anas režīmu, un pērkonstrāvas draiveris dažreiz iesaldē sistēmu ilgāk par 30 sekundēm un uz vairākām minÅ«tēm, atsākot darbÄ«bu. To var novērst, automātiski izkraujot problemātiskos moduļus.

Izveidojiet skriptu /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

Padariet to izpildāmu:

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

Tas pagaidām ir viss. Rezultāts ir pilnÄ«bā funkcionējoÅ”a sistēma, izņemot dažas nianses ar apturÄ“Å”anu/atsākÅ”anu. Vairāku darbspējas dienu laikā netika novērotas avārijas vai kodola panikas. Ceru, ka tuvākajā laikā bce moduļa autors to pabeigs, un mēs saņemsim pilnu atbalstu suspend/resume un sound.

Avots: www.habr.com

Pievieno komentāru