Ukwenza iMacBook Pro 2018 T2 isebenze ngeArchLinux (dualboot)

Kukho i-hype encinci malunga nokuba i-chip entsha ye-T2 iya kwenza kube nzima ukufaka i-Linux kwii-MacBooks ze-2018 ezintsha nge-touchbar. Ixesha lihambile, kwaye ekupheleni kuka-2019, abaphuhlisi beqela lesithathu baphumeze inani labaqhubi kunye ne-kernel patches ukusebenzisana ne-T2 chip. Umqhubi oyintloko weemodeli ze-MacBook 2018 kunye nezixhobo ezintsha zokusebenza kwe-VHCI (touch / keyboard / etc. operation), kunye nokusebenza kwesandi.

Le projekthi mbp2018-bridge-drv yahlulwe yangamacandelo ama-3 aphambili:

  • I-BCE (i-Buffer Copy Engine) - iseka umjelo oyintloko wonxibelelwano kunye ne-T2. I-VHCI kunye ne-Audio zifuna eli candelo.
  • I-VHCI yi-USB Virtual Host Controller; ibhodi yezitshixo, imouse kunye namanye amacandelo enkqubo anikwe leli candelo (abanye abaqhubi basebenzisa lo mlawuli wenginginya ukunika umsebenzi ongaphezulu.
  • I-Audio-umqhubi we-interface ye-T2 yomsindo, okwangoku ixhasa kuphela imveliso yomsindo ngokusebenzisa izithethi ezakhelwe ngaphakathi zeMacBook


Iprojekthi yesibini ibizwa ngokuba macbook12-spi-umqhubi, kwaye iphumeza ukukwazi ukusebenzisa umqhubi wegalelo kwibhodibhodi, i-SPI trackpad, kunye ne-touchbar ye-MacBook Pro Late 2016 kwaye kamva. Abanye abaqhubi bebhodi yezitshixo/iphedi ngoku babandakanyiwe kwikernel, ukuqala ngenguqulo 5.3.

Inkxaso yezixhobo ezifana ne-wi-fi, i-touchpad, njl kwaye yaphunyezwa ngokusebenzisa iipatches ze-kernel. Inguqulelo ye-kernel yangoku 5.3.5-1

Yintoni esebenzayo ngoku

  1. NVMe
  2. Ikhibhodi
  3. I-USB-C (iThunderbolt ayivavanywanga; xa imodyuli ilayishwe ngokuzenzekelayo, imisa inkqubo)
  4. Ibar yokuchukumisa (ngokukwazi ukuvula izitshixo zeFn, ukukhanya ngasemva, ESC, njl.)
  5. Isandi (izithethi ezakhelwe ngaphakathi kuphela)
  6. Imodyuli ye-Wi-Fi (nge-brcmfmac kwaye kuphela nge-iw)
  7. I-DisplayPort phezu kwe-USB-C
  8. Iimvakalelo
  9. Misa/Qalisa kwakhona (ngokuyinxenye)
  10. njl ..

Esi sifundo sisebenza kwi-macbookpro15,1 kunye ne-macbookpro15,2. Eli nqaku lithathwe njengesiseko kwi-Github ngesiNgesi. kusuka apha. Ayizange isebenze yonke into kweli nqaku, ngoko kwafuneka ndifumane isisombululo ngokwam.

Yintoni oyifunayo ukufakela

  • I-adapter yedokhi ye-USB-C kwi-USB (ubuncinci amagalelo amathathu e-USB okudibanisa imowusi, ikhibhodi, imodem ye-USB okanye ifowuni kwimowudi yokudibanisa). Oku kuyimfuneko kuphela ngexesha lezigaba zokuqala zofakelo
  • USB keyboard
  • USB/USB-C flash drive ubuncinane 4GB

1. Khubaza ukuvalwa kokuqalisa kwimidiya yangaphandle

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

2. Yabela indawo ekhululekile usebenzisa iDisk Utility

Ukuze kube lula, ndabela kwangoko i-30GB kwidiski, ndiyifometha kwi-exfat kwiDisk Utility ngokwayo. Ukwahlulahlula iPhysical Disk Disk Utility.

3. Yenza umfanekiso we-ISO

Khetha:

  1. Ungahamba ngendlela elula kwaye ukhuphele umfanekiso osele ulungile nge-kernel 5.3.5-1 kunye neziqwenga ezivela aunali1 ikhonkco kumfanekiso ogqityiweyo
  2. Yenza umfanekiso ngokwakho nge-archlive (inkqubo enosasazo lweArcha iyafuneka)

    Faka ifayile archiso

    pacman -S archiso

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

    Yongeza indawo yokugcina kwi-pacman.conf:

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

    Asiyihoyi i-kernel yoqobo kwi-pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Yongeza iipakethe eziyimfuneko, ekugqibeleni yongeza i-linux-mbp kernel kunye ne-linux-mbp-headers.

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

    Sitshintsha iskripthi ukuba sisebenze kwimowudi yokunxibelelana (buyisela 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!"
    }

    Ukwenza umfanekiso:

    sudo ./build.sh -v

    Cinezela u-Y ukutsiba iipakethe ezingahoywanga, emva koko ubhale umfanekiso we-iso kwi-usb flash drive:

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

4. Ukuqala kokuqala

Qalisa kwakhona nge-flash drive kunye nekhibhodi efakiweyo. Cinezela okukhethwa kukho xa kuvela iapile, khetha EFI BOOT.

Emva koko, kufuneka ucofe iqhosha elithi "e" kwaye ungene ekupheleni komgca womyalelo imodyuli_blacklist=indudumo. Ukuba oku akwenziwanga, inkqubo isenokungaqalisi kwaye Imposiso ye-Thunderbolt ye-ICM iya kuvela.

Ukusebenzisa i-fdisk/cfdisk sifumana isahlulelo sethu (kum yi-nvme0n1p4), yifomethe kwaye ufake indawo yokugcina. Ungasebenzisa imiyalelo esemthethweni okanye ecaleni.

Asenzi isahlulelo se-boot; /dev/nvme0n1p1
Emva kokuba imeko-bume kwi/mnt yenziwe ngokupheleleyo kwaye ngaphambi kokuba uye kwi-arch-chroot, bhala:

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

Yongeza 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 kunye ne applesmc kwi /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Ikhibhodi, ibar yokuchukumisa, njl

Faka yay:


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

Kuhlohlwa iimodyuli zebar yokuchukumisa isebenze:


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

Yongeza iimodyuli ukuqalisa: /etc/modules-load.d/apple.conf

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

Ukufakela iimodyuli zekernel kwibhodi yezitshixo. Kwindawo yokugcina anuali1 kukho ipakethe esele yenziwe, ibizwa ngokuba apple-bce-dkms-git. Ukuyifaka, bhala kwikhonsoli:

pacman -S apple-bce-dkms-git

Kulo mzekelo, imodyuli ye-kernel iya kubizwa iapile-bce. Kwimeko yokuzihlanganisa, kuthiwa ecb. Ngokufanelekileyo, ukuba ufuna ukubhalisa imodyuli kwiMODULI icandelo lefayile mkinicpio.conf, ungalibali ukuba yeyiphi imodyuli oyifakileyo.

Ukudibanisa ngezandla:


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

Yongeza i-bce okanye i-apile-bce imodyuli ukuqalisa: /etc/modules-load.d/bce.conf

bce

Ukuba ufuna ukusebenzisa amaqhosha e-Fn ngokungagqibekanga, ngoko bhala kwifayile /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Ukuhlaziya i-kernel kunye ne-initramfs.


mkinitcpio -p linux-mbp

Faka iwd:

sudo pacman -S networkmanager iwd

5. Umlayishi

Nje ukuba zonke iipakethe eziphambili zifakwe ngaphakathi kwechroot, ungaqala ukufaka i-bootloader.

Andizange ndikwazi ukufumana i-grub emsebenzini. Iibhutsi zeGrub kwi-USB drive yangaphandle, kodwa xa uzama ukuyibhalisa kwi-nvme nge

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

inkqubo iye kwi-kernel panic, kwaye emva kokuqalisa ngokutsha into entsha ngeenketho ayizange ivele. Andifumananga nasiphi na isisombululo esicacileyo kule ngxaki kwaye ke ndaye ndagqiba kwelokuba ndizame ukuqalisa nge-systemd-boot.

  1. Qalisa
    bootctl --path=/boot install

    kwaye singena kwi-kernel panic. Cima iMacBook, yivule kwakhona, cofa iinketho (musa ukuyicima i-USB-C hub ngekhibhodi)

  2. Sijonga ukuba ukungena kwe-EFI BOOT entsha kubonakala ngaphezu kwesixhobo sangaphandle
  3. Sikhetha ukuqala kwi-USB drive yangaphandle, njengoko ngexesha lofakelo lokuqala (ungalibali ukucacisa imodyuli_blacklist=thunderbolt)
  4. Sifaka idiski yethu kwaye singene kwindawo nge-arch-chroot


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

Ukuba kuyimfuneko ukuba ibhodi yezitshixo isebenze de inkqubo ilayishwe ngokupheleleyo (oku kuyimfuneko xa usebenzisa i-luks/dm-crypt encryption), emva koko uyibhale kwifayile /etc/mkinicpio.conf kwicandelo leMODULI:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Ukuhlaziya i-kernel kunye ne-initramfs.


mkinicpio -p linux-mbp

Ukumisela i-systemd-boot

Sihlela ifayile /boot/loader/loader.conf, cima yonke into ngaphakathi, kwaye songeze oku kulandelayo:

default arch
timeout 5
editor 1

Yiya kwi-/boot/loader/entries folder, yenza ifayile ye-arch.conf kwaye ubhale:

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

Ukuba usebenzise i-luks kunye ne-lvm, ngoko

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

Qalisa kwakhona kwi-MacOS.

6. Ukuseta Wi-Fi

Njengoko kwavela ekugqibeleni, iMacOS igcina iifayile ze-firmware zeadaptha ye-wi-fi kwifolda /usr/share/firmware/wifi , kwaye unokuzithatha ukusuka apho ngendlela yeeblobs kwaye uzondle kwimodyuli yekernel ye-brcmfmac. Ukufumana ukuba zeziphi iifayile ezisetyenziswa yiadaptha yakho, vula i-terminal kwi-MacOS kwaye ubhale:

ioreg -l | grep C-4364

Sifumana uluhlu olude. Sifuna kuphela iifayile ezivela kwicandelo Iifayile eziceliwe:

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

Kwimeko yakho, amagama efayile anokwahluka. Zikhuphelele kwi/usr/share/firmware/wifi ifolda kwi-flash drive kwaye uyithiye ngokutsha ngolu hlobo lulandelayo:

    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>

Kule meko, ifayile yokubhaliweyo yokugqibela iqulethe amagama emodeli;

Qalisa kwakhona kwiArch.

Khuphela iifayile kwi-flash drive ukuya kwi/lib/firmware/brcm/fowulda


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/

Ukujonga ukusebenza kwemodyuli:


rmmod brcmfmac
modprobe brcmfmac

Siyaqinisekisa ukuba ujongano lwenethiwekhi luvela nge ifconfig/ip.
Ukuseta i-wifi nge iwctl

Ingqalelo. Nge-netctl, nmcli, njl. Ujongano alusebenzi, kuphela nge-iwd.

Sinyanzela NetworkManager ukuba isebenzise iwd. Ukwenza oku, yenza ifayile /etc/NetworkManager/NetworkManager.conf kwaye ubhale:

[device]
wifi.backend=iwd

Qala inkonzo ye-NetworkManager


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

7. Isandi

Ukuze isandi sisebenze, kufuneka ufake i-pulseaudio:


sudo pacman -S pulseaudio

Khuphela iifayile ezintathu:

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/Qhuba kwakhona

Ngalo mzuzu 16.10.2019 kufuneka ukhethe nokuba sisandi okanye urhoxise/uqalise kwakhona. Silindele umbhali wemodyuli ye-bce ukuba agqibezele ukusebenza.

Ukwakha imodyuli ngenkxaso enqunyanyisiweyo/uqalise kwakhona, kufuneka wenze oku kulandelayo:


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

Ukuba ufake imodyuli esele yenziwe iapile-bce kwindawo yokugcina i-anuali1, ngoko kufuneka uqale uyisuse kwaye emva koko uhlanganise kwaye ufake imodyuli ye-bce ngenkxaso yemowudi yokunqumamisa.

Kwakhona, kufuneka udibanise i applesmc imodyuli kuluhlu olumnyama (ukuba awuzange wenze oku ngaphambili) kwaye qinisekisa ukuba kwi /boot/loader/entries/arch.conf kumgca wokukhetha ekupheleni iparameter iyongezwa. pcie_ports=compati.

Okwangoku, umqhubi webar yokuchukumisa uyantlitheka xa engena kwimowudi yokumisa, kwaye umqhubi wendudumo ngamanye amaxesha ukhulula inkqubo ngaphezulu kwemizuzwana engama-30, kwaye kangangemizuzu emininzi xa ephinda eqalisa. Oku kunokulungiswa ngokukhupha ngokuzenzekelayo iimodyuli eziyingxaki.

Yenza iskripthi /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

Yenze iphunyezwe:

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

Kuphelele apho okwangoku. Isiphumo sisixokelelwano esisebenzisekayo ngokupheleleyo, ngaphandle kwezinye iinuances ngokunqumamisa/ukuqalisa kwakhona. Akukho ntlitheko okanye i-kernel panics yabonwa ngeentsuku ezininzi zokuphumla. Ndiyathemba ukuba kungekudala umbhali wemodyuli ye-bce uyakuyigqiba, kwaye siya kufumana inkxaso epheleleyo yokunqumamisa/ukuqalisa kwakhona kunye nesandi.

umthombo: www.habr.com

Yongeza izimvo