Ukwenza iMacBook Pro 2018 T2 isebenze nge-ArchLinux (dualboot)

Kube ne-hype encane mayelana neqiniso lokuthi i-chip entsha ye-T2 izokwenza kungenzeki ukufaka i-Linux kuma-MacBooks amasha we-2018 nge-touchbar. Kwadlula isikhathi, futhi ekupheleni kuka-2019, abathuthukisi bezinkampani zangaphandle basebenzise inani labashayeli nama-kernel patches ukuze kusetshenziswe i-chip ye-T2. Umshayeli oyinhloko wamamodeli we-MacBook 2018 kanye nokusebenza okusha kwe-VHCI (ukusebenza kokuthinta/ikhibhodi/ njll), kanye nokusebenza komsindo.

Le phrojekthi mbp2018-bridge-drv ihlukaniswe yaba izingxenye ezi-3 eziyinhloko:

  • BCE (Buffer Copy Engine) - isungula isiteshi esikhulu sokuxhumana ne-T2. I-VHCI nomsindo zidinga le ngxenye.
  • I-VHCI iyi-USB Virtual Host Controller; ikhibhodi, igundane nezinye izingxenye zesistimu zihlinzekwa yile ngxenye (abanye abashayeli basebenzisa lesi silawuli sokusingatha ukuze banikeze ukusebenza okwengeziwe.
  • Umsindo - umshayeli wesixhumi esibonakalayo somsindo we-T2, okwamanje usekela kuphela okukhipha umsindo ngezipikha ezakhelwe ngaphakathi ze-MacBook


Iphrojekthi yesibili ibizwa ngokuthi macbook12-spi-driver, futhi isebenzisa amandla okusebenzisa umshayeli wokufaka wekhibhodi, i-trackpad ye-SPI, nebha yokuthinta yeLate 2016 kanye ne-MacBook Pros yakamuva. Ezinye izishayeli zekhibhodi/iphedi manje sezifakiwe ku-kernel, ziqala ngenguqulo 5.3.

Ukusekelwa kwamadivayisi afana ne-wi-fi, i-touchpad, njll nakho kwasetshenziswa kusetshenziswa ama-kernel patches. Inguqulo yamanje ye-kernel 5.3.5-1

Yini esebenzayo okwamanje

  1. I-NVMe
  2. Ikhibhodi
  3. I-USB-C (I-Thunderbolt ayihloliwe; uma imojuli ilayishwa ngokuzenzakalelayo, imisa uhlelo)
  4. Ibha yokuthinta (enekhono lokuvula okhiye be-Fn, ukukhanya kwangemuva, i-ESC, njll.)
  5. Umsindo (izipikha ezakhelwe ngaphakathi kuphela)
  6. Imojula ye-Wi-Fi (nge-brcmfmac futhi kuphela nge-iw)
  7. I-DisplayPort phezu kwe-USB-C
  8. Izinzwa
  9. Misa okwesikhashana/Qalisa kabusha (ingxenye)
  10. njll.

Lesi sifundo sisebenza ku-macbookpro15,1 kanye ne-macbookpro15,2. I-athikili ithathwe njengesisekelo esivela ku-Github ngesiNgisi. kusuka lapha. Akukona konke okukulesi sihloko okwasebenza, ngakho kwadingeka ngizitholele isixazululo ngokwami.

Okudingayo ukukufaka

  • I-adaptha yokudokha ye-USB-C ku-USB (okungenani okokufaka kwe-USB okuthathu kokuxhuma igundane, ikhibhodi, imodemu ye-USB noma ifoni kumodi yokusebenzisa ifoni njengemodemu). Lokhu kudingekile kuphela phakathi nezigaba zokuqala zokufakwa
  • Ikhibhodi ye-USB
  • I-USB/USB-C flash drive ubuncane be-4GB

1. Khubaza ukuvinjelwa kokuqalisa imidiya yangaphandle

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

2. Nikeza indawo yamahhala usebenzisa i-Disk Utility

Ukuze kube lula, ngabela ngokushesha i-30GB kudiski, ngiyifometha nge-exfat ku-Disk Utility ngokwayo. Ukuhlukanisa I-Physical Disk Disk Utility.

3. Dala isithombe se-ISO

Izinketho:

  1. Ungahamba ngendlela elula futhi ulande isithombe esenziwe ngomumo nge-kernel 5.3.5-1 nama-patches avela unali1 isixhumanisi esithombeni esiqediwe
  2. Dala isithombe ngokwakho nge-archlive (isistimu enokusabalalisa kwe-Archa iyadingeka)

    Faka i-archiso

    pacman -S archiso

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

    Engeza indawo yokugcina ku-pacman.conf:

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

    Asiyinaki i-kernel yoqobo ku-pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Engeza amaphakheji adingekayo, ekugcineni engeza i-linux-mbp kernel kanye ne-linux-mbp-headers.

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

    Sishintsha iskripthi sisebenze kumodi yokusebenzisana (shintshanisa i-pacstrap -C nge-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!"
    }

    Ukwakha isithombe:

    sudo ./build.sh -v

    Cindezela okuthi Y ukuze weqe amaphakheji azitshiwe, bese ubhala isithombe se-iso kudrayivu ye-usb:

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

4. Ibhuthi yokuqala

Qalisa kabusha nge-flash drive kanye nekhibhodi efakiwe. Cindezela okukhethwa kukho lapho i-apula livela, khetha i-EFI BOOT.

Okulandelayo, udinga ukucindezela inkinobho ethi "e" bese ufaka ekupheleni komugqa womyalo module_blacklist=ukuduma. Uma lokhu kungenziwanga, isistimu ingase ingaqalisi futhi kuzovela Iphutha le-Thunderbolt ICM.

Sisebenzisa i-fdisk/cfdisk sithola ukwahlukanisa kwethu (kimina kuyi-nvme0n1p4), kuyifomethe bese ufaka ingobo yomlando. Ungasebenzisa imiyalelo esemthethweni noma emaceleni.

Asidali i-boot partition; sizobhala i-bootloader ku /dev/nvme0n1p1
Ngemuva kokuthi imvelo ku-/mnt yakheke ngokuphelele futhi ngaphambi kokuthuthela ku-arch-chroot, bhala:

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

Engeza ku-/etc/pacman.conf:


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

Faka i-kernel:


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

Sibhalisa i-thunderbolt ne-applesmc ku-/etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Ikhibhodi, ibha yokuthinta, njll

Faka i-yay:


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

Ifaka amamojula ukuze ibha yokuthinta isebenze:


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

Engeza amamojula ekuqaleni: /etc/modules-load.d/apple.conf

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

Ifaka amamojula e-kernel ekhibhodi. Endaweni yokugcina unali1 kukhona iphakheji esenziwe ngomumo, ibizwa ngokuthi apple-bce-dkms-git. Ukuze uyifake, bhala kukhonsoli:

pacman -S apple-bce-dkms-git

Kulokhu, imojuli ye-kernel izobizwa apula-bce. Endabeni yokuzihlanganisa, kubizwa ngokuthi ecb. Ngokufanelekile, uma ufuna ukubhalisa imojuli esigabeni se-MODULES sefayela le-mkinicpio.conf, ungakhohlwa ukuthi iyiphi imojula oyifakile.

Ukuhlanganisa mathupha:


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

Engeza imojula ye-bce noma ye-apula-bce ukuze uqalise: /etc/modules-load.d/bce.conf

bce

Uma ufuna ukusebenzisa izinkinobho ze-Fn ngokuzenzakalelayo, bhala kufayela elithi /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Ibuyekeza i-kernel ne-initramfs.


mkinitcpio -p linux-mbp

Faka iwd:

sudo pacman -S networkmanager iwd

5. Isilayishi

Uma wonke amaphakheji amakhulu efakwe ngaphakathi kwe-chroot, ungaqala ukufaka i-bootloader.

Angikwazanga ukuthola i-grub emsebenzini. Grub amabhuzu kudrayivu ye-USB yangaphandle, kodwa uma uzama ukuyibhalisa ku-nvme nge

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

isistimu ingene ku-kernel panic, futhi ngemva kokuqalisa kabusha into entsha ngezinketho ayizange ivele. Angitholanga sixazululo esicacile sale nkinga ngakho-ke nginqume ukuzama ukusebenzisa i-systemd-boot.

  1. Yethula
    bootctl --path=/boot install

    bese singena ethukile. Vala iMacBook, uyivule futhi, chofoza izinketho (ungacishi ihabhu le-USB-C ngekhibhodi)

  2. Sihlola ukuthi ukufakwa okusha kwe-EFI BOOT kuvele ngaphezu kwedivayisi yangaphandle
  3. Sikhetha ukuqalisa kudrayivu ye-USB yangaphandle, njengaphakathi nokufakwa kokuqala (ungakhohlwa ukucacisa imodule_blacklist=thunderbolt)
  4. Sifaka idiski yethu futhi singene endaweni nge-arch-chroot


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

Uma kudingekile ukuthi ikhibhodi isebenze kuze kube yilapho isistimu isilayishwa ngokugcwele (lokhu kuyadingeka uma usebenzisa ukubethela kwe-luks/dm-crypt), bese uyibhala kufayela /etc/mkinicpio.conf esigabeni se-MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Ibuyekeza i-kernel ne-initramfs.


mkinicpio -p linux-mbp

Isetha i-systemd-boot

Sihlela ifayela /boot/loader/loader.conf, sisuse yonke into engaphakathi, bese sengeza okulandelayo:

default arch
timeout 5
editor 1

Iya kufolda ye-/boot/loader/entries, dala ifayela le-arch.conf bese ubhala:

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

Uma usebenzise i-luks ne-lvm, ke

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

Qalisa kabusha ku-MacOS.

6. Ukusethwa kwe-Wi-Fi

Njengoba kuvele ekugcineni, iMacOS igcina amafayela we-firmware we-adaptha ye-wi-fi kufolda /usr/share/firmware/wifi , futhi ungawathatha lapho ngendlela yama-blobs futhi uwafunze kumojula ye-brcmfmac kernel. Ukuze uthole ukuthi yimaphi amafayela esetshenziswa yi-adaptha yakho, vula i-terminal ku-MacOS bese ubhala:

ioreg -l | grep C-4364

Sithola uhlu olude. Sidinga kuphela amafayela avela esigabeni Amafayela aceliwe:

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

Esimeni sakho, amagama wefayela angase ahluke. Zikopishe kusuka kufolda /usr/share/firmware/wifi uye ku-flash drive futhi uyiqambe kabusha ngale ndlela elandelayo:

    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>

Kulokhu, ifayela lombhalo wokugcina liqukethe amagama emodeli; uma imodeli yakho ingeyona i-macbookpro15,2, udinga ukuqamba kabusha leli fayela ngokuhambisana nemodeli yakho ye-MacBook.

Qalisa kabusha ku-Arch.

Kopisha amafayela kusuka ku-flash drive kuya kufolda /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/

Ihlola ukusebenza kwemojuli:


rmmod brcmfmac
modprobe brcmfmac

Senza isiqiniseko sokuthi isixhumi esibonakalayo senethiwekhi sivela nge-ifconfig/ip.
Isetha i-wifi nge iwctl

Ukunaka. Nge-netctl, nmcli, njll. I-interface ayisebenzi, kuphela nge-iwd.

Siphoqa i-NetworkManager ukuthi isebenzise iwd. Ukuze wenze lokhu, dala ifayela /etc/NetworkManager/NetworkManager.conf bese ubhala:

[device]
wifi.backend=iwd

Qala isevisi ye-NetworkManager


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

7. Umsindo

Ukuze umsindo usebenze, udinga ukufaka i-pulseaudio:


sudo pacman -S pulseaudio

Landa amafayela amathathu:

Masizisuse:

    /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. Misa/Qalisa kabusha

Ngalesi sikhathi 16.10.2019 kufanele ukhethe noma umsindo noma umise okwesikhashana/uqalise kabusha. Silindele umbhali wemojula ye-bce ukuthi aqedele ukusebenza.

Ukwakha imojuli ngokusekelwa okumisiwe/ukuqalisa kabusha, kufanele wenze lokhu okulandelayo:


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

Uma ufake imojuli esenziwe ngomumo ye-apula-bce endaweni yokugcina ye-anuali1, kufanele uqale uyisuse bese uhlanganisa kuphela bese ufaka imojuli ye-bce ngokusekelwa kwemodi yokumisa okwesikhashana.

Futhi, udinga ukwengeza imojula ye-applesmc ohlwini lwabavinjelwe (uma ungazange ukwenze lokhu ngaphambilini) futhi uqiniseke ukuthi ku-/boot/loader/entries/arch.conf kulayini wezinketho ekugcineni ipharamitha yengeziwe pcie_ports=compati.

Okwamanje, umshayeli we-touchbar uyaphahlazeka lapho engena kumodi yokumisa okwesikhashana, futhi umshayeli we-thunderbolt kwesinye isikhathi umisa isistimu imizuzwana engaphezu kuka-30, kanye nemizuzu embalwa uma iqala kabusha. Lokhu kungalungiswa ngokukhipha ngokuzenzakalelayo amamojula ayinkinga.

Dala umbhalo /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

Kwenze kusebenziseke:

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

Yilokho kuphela okwamanje. Umphumela uwuhlelo olusebenziseka ngokuphelele, ngaphandle kwamanye ama-nuances anokumisa okwesikhashana/ukuqalisa kabusha. Akukho ukuphahlazeka noma ukwethuka kwe-kernel okubonwe phakathi nezinsuku ezimbalwa zokuphumula. Ngithemba ukuthi esikhathini esizayo esiseduze umbhali wemojuli ye-bce uzoyiqeda, futhi sizothola ukwesekwa okugcwele kokumisa/ukuqalisa kabusha nomsindo.

Source: www.habr.com

Engeza amazwana