MacBook Pro 2018 T2-nin ArchLinux ilə işləməsi (ikili yükləmə)

Yeni T2 çipinin toxunma paneli ilə yeni 2018 MacBook-lara Linux quraşdırmağı qeyri-mümkün edəcəyi ilə bağlı kifayət qədər şırınga var. Vaxt keçdi və 2019-cu ilin sonunda üçüncü tərəf tərtibatçıları T2 çipi ilə qarşılıqlı əlaqə üçün bir sıra drayverlər və nüvə yamaqlarını tətbiq etdilər. MacBook 2018 və daha yeni modellər üçün əsas sürücü VHCI əməliyyatını (toxunma/klaviatura/s. əməliyyat), eləcə də səs əməliyyatını həyata keçirir.

Layihə mbp2018-bridge-drv 3 əsas komponentə bölünür:

  • BCE (Buffer Copy Engine) - T2 ilə əsas rabitə kanalını qurur. VHCI və Audio bu komponenti tələb edir.
  • VHCI USB Virtual Host Nəzarətçisidir; klaviatura, siçan və digər sistem komponentləri bu komponent tərəfindən təmin edilir (digər sürücülər daha çox funksionallıq təmin etmək üçün bu host nəzarətçisindən istifadə edirlər.
  • Audio - T2 audio interfeysi üçün sürücü, hazırda yalnız MacBook-un daxili dinamikləri vasitəsilə səs çıxışını dəstəkləyir


İkinci layihə adlanır macbook12-spi sürücü, və o, MacBook Pro Late 2016 və sonrakı versiyalar üçün klaviatura, SPI trackpad və touchbar üçün daxiletmə sürücüsünü idarə etmək qabiliyyətini həyata keçirir. Bəzi klaviatura/trackpad drayverləri indi 5.3 versiyasından başlayaraq nüvəyə daxil edilmişdir.

Wi-Fi, touchpad və s. kimi cihazlara dəstək də nüvə yamaqlarından istifadə etməklə həyata keçirilib. Cari kernel versiyası 5.3.5-1

Hazırda nə işləyir

  1. NVMe
  2. Klaviatura
  3. USB-C (Thunderbolt sınaqdan keçirilməyib; modul avtomatik yükləndikdə sistemi dondurur)
  4. Toxunma paneli (Fn düymələrini, arxa işığı, ESC və s. yandırmaq imkanı ilə)
  5. Səs (yalnız daxili dinamiklər)
  6. Wi-Fi modulu (brcmfmac vasitəsilə və yalnız iw vasitəsilə)
  7. USB-C üzərindən DisplayPort
  8. Sensorlar
  9. Dayandırın/Davam edin (qismən)
  10. və s ..

Bu təlimat macbookpro15,1 və macbookpro15,2 üçün uyğundur. Məqalə ingilis dilində Github-dan əsas götürülüb. buradan. Bu məqalədəki hər şey nəticə vermədi, buna görə də özüm bir həll tapmalı oldum.

Nə quraşdırmalısınız

  • USB-C dok adapteri (siçanı, klaviaturanı, USB modemi və ya telefonu bağlama rejimində qoşmaq üçün ən azı üç USB girişi). Bu, yalnız quraşdırmanın ilk mərhələlərində lazımdır
  • USB klaviatura
  • USB/USB-C flash sürücüsü minimum 4 GB

1. Xarici mediadan yükləmə qadağasını söndürün

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

2. Disk Utility istifadə edərək boş yer ayırın

Rahatlıq üçün dərhal Disk Utility-də exfat-da formatlaşdıraraq diskə 30GB ayırdım. Fiziki Disk Disk Utility Proqramının Bölünməsi.

3. ISO şəkli yaradın

Seçimlər:

  1. Siz sadə marşrutla gedə və kernel 5.3.5-1 və yamaqları olan hazır şəkli yükləyə bilərsiniz. aunali1 bitmiş şəkilə keçid
  2. Archalive vasitəsilə özünüz şəkil yaradın (Archa paylanması olan sistem tələb olunur)

    Təyin etmək arxiso

    pacman -S archiso

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

    Anbarı pacman.conf-a əlavə edin:

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

    Biz pacman.conf-da orijinal nüvəyə məhəl qoymuruq:

    IgnorePkg   = linux linux-headers
    

    Lazımi paketləri əlavə edin, sonunda linux-mbp kernel və linux-mbp-headers əlavə edin.

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

    Skripti interaktiv rejimdə işləmək üçün dəyişdiririk (pacstrap -C-ni pacstrap -i -C ilə əvəz edin):

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

    Şəkil yaratmaq:

    sudo ./build.sh -v

    İcazəsiz paketləri keçmək üçün Y düyməsini basın, sonra iso şəklini usb flash sürücüsünə yazın:

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

4. İlk yükləmə

Daxil edilmiş flash sürücü və klaviatura ilə yenidən başladın. Alma görünəndə seçimləri basın, EFI BOOT seçin.

Sonra, "e" düyməsini basmalı və əmr satırının sonunda daxil etməlisiniz module_blacklist=ildırım. Bu edilmədikdə, sistem açılmaya bilər və Thunderbolt ICM Xətası görünəcək.

Fdisk/cfdisk-dən istifadə edərək bölməmizi tapırıq (mənim üçün bu nvme0n1p4), formatlaşdırıb arxivi quraşdırırıq. İstifadə edə bilərsən rəsmi göstərişlər və ya yan tərəfə.

Yükləmə bölməsi yaratmırıq, yükləyicini yazacağıq /dev/nvme0n1p1
/mnt-dəki mühit tamamilə formalaşdıqdan sonra və arch-chroot-a keçməzdən əvvəl yazın:

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

/etc/pacman.conf-a əlavə edin:


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

Kerneli quraşdırın:


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

Thunderbolt və applesmc-ni /etc/modprobe.d/blacklist.conf-da qeyd edirik.

blacklist thunderbolt
blacklist applesmc

Klaviatura, sensor panel və s

Yay quraşdırın:


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

Toxunma çubuğunun işləməsi üçün modulların quraşdırılması:


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

Başlanğıc üçün modulları əlavə edin: /etc/modules-load.d/apple.conf

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

Klaviatura üçün nüvə modullarının quraşdırılması. Anbarda anual1 hazır paketi var, adlanır apple-bce-dkms-git. Quraşdırmaq üçün konsolda yazın:

pacman -S apple-bce-dkms-git

Bu halda kernel modulu çağırılacaq alma-bce. Öz-özünə montaj vəziyyətində deyilir e.ə. Müvafiq olaraq, əgər siz modulu mkinicpio.conf faylının MODULLAR bölməsində qeydiyyatdan keçirmək istəyirsinizsə, o zaman hansı modulu quraşdırdığınızı unutmayın.

Əl ilə montaj:


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

Başlamaq üçün bce və ya apple-bce modulunu əlavə edin: /etc/modules-load.d/bce.conf

bce

Defolt olaraq Fn düymələrindən istifadə etmək istəyirsinizsə, /etc/modprobe.d/apple-tb.conf faylına yazın:

options apple-ib-tb fnmode=2

Kernelin və initramfların yenilənməsi.


mkinitcpio -p linux-mbp

iwd quraşdırın:

sudo pacman -S networkmanager iwd

5. Yükləyici

Bütün əsas paketlər chroot daxilində quraşdırıldıqdan sonra siz yükləyicini quraşdırmağa başlaya bilərsiniz.

Qrubu işə götürə bilmədim. Grub xarici USB sürücüsündən yüklənir, ancaq onu nvme-də qeydiyyatdan keçirməyə çalışdığınız zaman

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

sistem kernel çaxnaşmasına girdi və yenidən başladıqdan sonra seçimlər vasitəsilə yeni bir element görünmədi. Mən bu problemin aydın həllini tapmadım və buna görə də systemd-boot istifadə edərək yükləməni həyata keçirməyə qərar verdim.

  1. Başlat
    bootctl --path=/boot install

    və nüvə panikasına giririk. MacBook-u söndürün, yenidən yandırın, seçimlərə klikləyin (klaviatura ilə USB-C mərkəzini söndürməyin)

  2. Xarici cihaza əlavə olaraq yeni EFI BOOT girişinin göründüyünü yoxlayırıq
  3. Biz ilk quraşdırma zamanı olduğu kimi xarici USB sürücüsündən yükləməyi seçirik (modul_blacklist=thunderbolt təyin etməyi unutmayın)
  4. Biz diskimizi quraşdırırıq və arch-chroot vasitəsilə mühitə daxil oluruq


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

Sistem tam yüklənənə qədər klaviaturanın işləməsi lazımdırsa (bu, luks/dm-crypt şifrələməsindən istifadə edərkən lazımdır), onda onu MODULLAR bölməsində /etc/mkinicpio.conf faylına yazın:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Kernelin və initramfların yenilənməsi.


mkinicpio -p linux-mbp

Systemd-boot-un qurulması

/boot/loader/loader.conf faylını redaktə edirik, içindəki hər şeyi silir və aşağıdakıları əlavə edirik:

default arch
timeout 5
editor 1

/boot/loader/entries qovluğuna gedin, arch.conf faylını yaradın və yazın:

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

Əgər luks və lvm istifadə etmisinizsə, onda

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

MacOS-da yenidən başladın.

6. Wi-Fi quraşdırma

Sonda məlum oldu ki, MacOS wi-fi adapteri üçün proqram təminatı fayllarını qovluqda saxlayır /usr/share/firmware/wifi , və siz onları oradan bloblar şəklində götürüb brcmfmac kernel moduluna qidalandıra bilərsiniz. Adapterinizin hansı faylları istifadə etdiyini öyrənmək üçün MacOS-da terminal açın və yazın:

ioreg -l | grep C-4364

Uzun bir siyahı alırıq. Bizə yalnız bölmədən fayllar lazımdır 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>"})

Sizin vəziyyətinizdə fayl adları fərqli ola bilər. Onları /usr/share/firmware/wifi qovluğundan flash sürücüyə kopyalayın və adlarını aşağıdakı kimi dəyişdirin:

    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>

Bu halda, sonuncu mətn faylı model adlarını ehtiva edir, əgər modeliniz macbookpro15,2 deyilsə, onda siz MacBook modelinizə uyğun olaraq bu faylın adını dəyişdirməlisiniz.

Arch-da yenidən başladın.

Faylları flash sürücüdən /lib/firmware/brcm/ qovluğuna kopyalayın


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/

Modulun funksionallığının yoxlanılması:


rmmod brcmfmac
modprobe brcmfmac

Şəbəkə interfeysinin ifconfig/ip vasitəsilə göründüyünə əminik.
vasitəsilə wifi qurulması yuctl

Diqqət. Netctl, nmcli və s. İnterfeys işləmir, yalnız iwd vasitəsilə.

Biz NetworkManager-i iwd-dən istifadə etməyə məcbur edirik. Bunu etmək üçün /etc/NetworkManager/NetworkManager.conf faylını yaradın və yazın:

[device]
wifi.backend=iwd

NetworkManager xidmətini işə salın


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

7. Səs

Səsin işləməsi üçün pulseaudio quraşdırmaq lazımdır:


sudo pacman -S pulseaudio

Üç faylı yükləyin:

Gəlin onları köçürək:

    /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. Dayandırın/Davam edin

Hazırda 16.10.2019 ya səsi, ya da dayandırmağı/davam etməyi seçməlisiniz. Biz bce modulunun müəllifinin funksionallığı tamamlamasını gözləyirik.

Dayandırılmış/davam dəstəyi ilə modul yaratmaq üçün aşağıdakıları etməlisiniz:


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

Hazır apple-bce modulunu anuali1 repozitoriyasından quraşdırmısınızsa, onda siz əvvəlcə onu çıxarmalı və yalnız sonra dayandırma rejimi dəstəyi ilə bce modulunu yığıb quraşdırmalısınız.

Həmçinin, siz applesmc modulunu qara siyahıya əlavə etməlisiniz (əgər bunu əvvəllər etməmisinizsə) və sonunda seçimlər sətirində /boot/loader/entries/arch.conf-da parametrin əlavə olunduğundan əmin olun. pcie_ports=uyğun.

Hazırda toxunma panelinin sürücüsü dayandırma rejiminə daxil olarkən qəzaya uğrayır və ildırım sürücüsü bəzən sistemi 30 saniyədən çox, davam edərkən isə bir neçə dəqiqə dondurur. Bu, problemli modulları avtomatik boşaltmaqla düzəldilə bilər.

Skript yaradın /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

Onu icra edilə bilən hala gətirin:

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

Hələlik bu qədər. Nəticə, dayandırma/davam etmə ilə bəzi nüanslar istisna olmaqla, tamamilə işlək sistemdir. Bir neçə günlük iş vaxtı ərzində heç bir qəza və ya nüvə panikası müşahidə edilmədi. Ümid edirəm ki, yaxın gələcəkdə bce modulunun müəllifi onu bitirəcək və biz dayandırmaq/davam etmək və səs vermək üçün tam dəstək alacağıq.

Mənbə: www.habr.com

Добавить комментарий