Kupanga MacBook Pro 2018 T2 kugwira ntchito ndi ArchLinux (dualboot)

Pakhala pali hype pang'ono ponena kuti chipangizo chatsopano cha T2 chidzapangitsa kuti zikhale zosatheka kukhazikitsa Linux pa MacBooks atsopano a 2018 okhala ndi touchbar. Nthawi idapita, ndipo kumapeto kwa chaka cha 2019, opanga chipani chachitatu adakhazikitsa madalaivala angapo ndi ma kernel kuti agwirizane ndi chip T2. Dalaivala wamkulu wamitundu ya MacBook 2018 ndi zida zatsopano za VHCI (touch/keyboard/ etc. operation), komanso magwiridwe antchito amawu.

Ntchitoyi mbp2018-bridge-drv agawidwa m'magulu atatu:

  • BCE (Buffer Copy Engine) - imakhazikitsa njira yayikulu yolumikizirana ndi T2. VHCI ndi Audio zimafuna chigawo ichi.
  • VHCI ndi USB Virtual Host Controller; kiyibodi, mbewa ndi zigawo zina zamakina zimaperekedwa ndi gawo ili (madalaivala ena amagwiritsa ntchito chowongolera chowongolera kuti apereke magwiridwe antchito ambiri.
  • Audio - dalaivala wa mawonekedwe omvera a T2, pakadali pano amathandizira kutulutsa kwamawu kudzera pa olankhula opangidwa ndi MacBook


Ntchito yachiwiri imatchedwa Macbook12-spi-driver, ndipo imagwiritsa ntchito dalaivala wolowetsa pa kiyibodi, SPI trackpad, ndi touchbar ya Late 2016 ndipo kenako MacBook Pros. Madalaivala ena a kiyibodi/trackpad tsopano akuphatikizidwa mu kernel, kuyambira ndi mtundu 5.3.

Thandizo pazida monga wi-fi, touchpad, ndi zina zidagwiritsidwanso ntchito pogwiritsa ntchito zigamba za kernel. Mtundu waposachedwa wa kernel 5.3.5-1

Zomwe zikugwira ntchito pakadali pano

  1. NVMe
  2. Makedoni
  3. USB-C (Bingu silinayesedwe; module ikangodzaza yokha, imayimitsa dongosolo)
  4. Touchbar (yotha kuyatsa makiyi a Fn, backlight, ESC, etc.)
  5. Phokoso (zokamba zomangidwa mkati zokha)
  6. Wi-Fi module (kudzera bcmfmac komanso kudzera iw)
  7. DisplayPort pa USB-C
  8. Zizindikiro
  9. Imitsani/Yambitsaninso (pang'ono)
  10. etc ..

Phunziroli limagwira ntchito pa macbookpro15,1 ndi macbookpro15,2. Nkhaniyi idatengedwa ngati maziko kuchokera ku Github mu Chingerezi. kuchokera pano. Sikuti zonse zomwe zili m'nkhaniyi zinagwira ntchito, choncho ndinayenera kupeza yankho ndekha.

Zomwe muyenera kukhazikitsa

  • Adaputala ya USB-C yolumikizira ku USB (zolowera zosachepera zitatu za USB zolumikiza mbewa, kiyibodi, modemu ya USB kapena foni munjira yolumikizira). Izi ndi zofunika pa magawo oyambirira unsembe
  • USB kiyibodi
  • USB/USB-C flash drive osachepera 4GB

1. Lemekezani kuletsa booting kuchokera kunja TV

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

2. Perekani malo aulere pogwiritsa ntchito Disk Utility

Kuti zitheke, nthawi yomweyo ndidapereka 30GB ku diski, ndikuyipanga mu exfat mu Disk Utility palokha. Kugawa kwa Physical Disk Disk Utility.

3. Pangani chithunzi cha ISO

Zosankha:

  1. Mutha kupita njira yosavuta ndikutsitsa chithunzi chopangidwa kale chokhala ndi kernel 5.3.5-1 ndi zigamba kuchokera. aunali1 ulalo ku chithunzi chomalizidwa
  2. Pangani chithunzi nokha kudzera pa archlive (kachitidwe kogawa kwa Archa ndikofunikira)

    Sakani archiso

    pacman -S archiso

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

    Onjezani chosungira ku pacman.conf:

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

    Timanyalanyaza kernel yoyambirira mu pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Onjezani mapaketi ofunikira, pamapeto onjezani linux-mbp kernel ndi linux-mbp-headers.

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

    Timasintha script kuti igwire ntchito mumayendedwe (sinthani pacstrap -C ndi 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!"
    }

    Kupanga chithunzi:

    sudo ./build.sh -v

    Dinani Y kuti mudumphe phukusi losanyalanyazidwa, kenako lembani chithunzi cha iso ku USB flash drive:

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

4. Boot yoyamba

Yambitsaninso ndi flash drive ndi kiyibodi yolowetsedwa. Dinani zosankha pamene apulo akuwonekera, sankhani EFI BOOT.

Kenako, muyenera kukanikiza kiyi "e" ndikulowa kumapeto kwa mzere wolamula module_blacklist=bingu. Ngati izi sizinachitike, dongosololi silingayambike ndipo cholakwika cha Thunderbolt ICM chidzawonekera.

Pogwiritsa ntchito fdisk/cfdisk timapeza magawo athu (kwa ine ndi nvme0n1p4), ikonzeni ndikuyika zosungira. Mutha kugwiritsa ntchito malangizo ovomerezeka kapena kumbali.

Sitikupanga gawo la boot; tilemba bootloader mkati /dev/nvme0n1p1
Malo a / mnt atapangidwa kwathunthu ndipo musanasunthike ku arch-chroot, lembani:

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

Onjezani ku /etc/pacman.conf:


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

Ikani kernel:


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

Timalembetsa bingu ndi applesmc mu /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Kiyibodi, touchbar, etc

Ikani yay:


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

Kuyika ma module kuti touchbar igwire ntchito:


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

Onjezani magawo poyambira: /etc/modules-load.d/apple.conf

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

Kuyika ma module a kernel pa kiyibodi. M'nkhokwe anuali1 pali phukusi lopangidwa mokonzeka, limatchedwa apple-bce-dkms-git. Kuti muyike, lembani mu console:

pacman -S apple-bce-dkms-git

Pankhaniyi, gawo la kernel lidzatchedwa apulo-bce. Pankhani yodzipangira nokha, imatchedwa ecb. Chifukwa chake, ngati mukufuna kulembetsa gawo mu gawo la MODULES la fayilo ya mkinicpio.conf, musaiwale kuti ndi gawo liti lomwe mwayika.

Kumanga pamanja:


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

Onjezani gawo la bce kapena apulo-bce kuti muyambe: /etc/modules-load.d/bce.conf

bce

Ngati mukufuna kugwiritsa ntchito mabatani a Fn mwachisawawa, lembani fayilo ya /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Kusintha kernel ndi initramfs.


mkinitcpio -p linux-mbp

Ikani iwd:

sudo pacman -S networkmanager iwd

5. Chotsitsa

Maphukusi onse akuluakulu atayikidwa mkati mwa chroot, mukhoza kuyamba kukhazikitsa bootloader.

Sindinathe kupeza grub kuntchito. Grub boots kuchokera pa USB drive yakunja, koma mukayesa kulembetsa mu nvme kudzera

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

makinawo adachita mantha a kernel, ndipo mutayambiranso chinthu chatsopano kudzera muzosankha sizinawonekere. Sindinapeze yankho lomveka bwino pa vutoli ndipo ndinaganiza zoyesa kukhazikitsa booting pogwiritsa ntchito systemd-boot.

  1. Yambitsani
    bootctl --path=/boot install

    ndipo timapita ku kernel mantha. Zimitsani MacBook, yatsaninso, dinani zosankha (musazimitse USB-C hub ndi kiyibodi)

  2. Tikuwona kuti cholowa chatsopano cha EFI BOOT chawonekera kuwonjezera pa chipangizo chakunja
  3. Timasankha kuyambitsa kuchokera pagalimoto yakunja ya USB, monga pakuyika koyamba (musaiwale kutchula module_blacklist=bingu)
  4. Timakwera diski yathu ndikupita ku chilengedwe kudzera mu arch-chroot


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

Ngati kuli kofunikira kuti kiyibodi igwire ntchito mpaka dongosolo litadzaza (izi ndizofunikira mukamagwiritsa ntchito luks/dm-crypt encryption), ndiye lembani mu fayilo /etc/mkinicpio.conf mu gawo la MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Kusintha kernel ndi initramfs.


mkinicpio -p linux-mbp

Kukhazikitsa systemd-boot

Timasintha fayilo ya /boot/loader/loader.conf, kuchotsa zonse mkati, ndikuwonjezera zotsatirazi:

default arch
timeout 5
editor 1

Pitani ku /boot/loader/entries foda, pangani fayilo ya arch.conf ndikulemba:

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

Ngati mudagwiritsa ntchito luks ndi lvm, ndiye

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

Yambitsaninso ku MacOS.

6. Kukonzekera kwa Wi-Fi

Monga momwe zinakhalira pamapeto pake, MacOS imasunga mafayilo a firmware a adapter ya wi-fi mufoda /usr/share/firmware/wifi , ndipo mutha kuwatenga kuchokera pamenepo ngati ma blobs ndikuwadyetsa ku brcmfmac kernel module. Kuti mudziwe mafayilo omwe adaputala yanu imagwiritsa ntchito, tsegulani terminal mu MacOS ndikulemba:

ioreg -l | grep C-4364

Timapeza mndandanda wautali. Timangofunika mafayilo kuchokera kugawoli 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>"})

Kwa inu, mayina a mafayilo akhoza kusiyana. Lembani kuchokera ku /usr/share/firmware/wifi foda kupita ku flash drive ndikuzitchanso motere:

    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>

Pachifukwa ichi, fayilo yomaliza imakhala ndi mayina achitsanzo; ngati chitsanzo chanu si macbookpro15,2, ndiye kuti muyenera kutchulanso fayiloyi motsatira chitsanzo chanu cha MacBook.

Yambitsaninso ku Arch.

Lembani mafayilo kuchokera pa flash drive kupita ku /lib/firmware/brcm/foda


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/

Kuwona magwiridwe antchito a module:


rmmod brcmfmac
modprobe brcmfmac

Timaonetsetsa kuti mawonekedwe a netiweki akuwonekera kudzera pa ifconfig/ip.
Kupanga WiFi kudzera iwctl

Chidwi. Kudzera pa nettl, nmcli, etc. Mawonekedwe sagwira ntchito, pokhapokha kudzera mu iwd.

Timakakamiza NetworkManager kugwiritsa ntchito iwd. Kuti muchite izi, pangani fayilo /etc/NetworkManager/NetworkManager.conf ndi kulemba:

[device]
wifi.backend=iwd

Yambitsani ntchito ya NetworkManager


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

7. Phokoso

Kuti phokoso ligwire ntchito, muyenera kukhazikitsa pulseaudio:


sudo pacman -S pulseaudio

Tsitsani mafayilo atatu:

Tiyeni tiwasunthe:

    /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. Imitsani/Yambitsaninso

Pa nthawiyi 16.10.2019 muyenera kusankha mawu kapena kuyimitsa / kuyambiranso. Tikudikirira wolemba bce module kuti amalize ntchitoyi.

Kuti mupange module yokhala ndi chithandizo choyimitsidwa / kuyambiranso, muyenera kuchita izi:


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

Ngati mwayika gawo la apulo-bce lopangidwa kale kuchokera ku anuali1 repository, ndiye kuti muyenera kuchotsa kaye kenako ndikusonkhanitsa ndikuyika gawo la bce ndikuthandizira kuyimitsa.

Komanso, muyenera kuwonjezera gawo la applesmc pamndandanda wakuda (ngati simunachite izi m'mbuyomu) ndikuwonetsetsa kuti /boot/loader/entries/arch.conf muzosankha mzere kumapeto kwa gawo lowonjezera likuwonjezeredwa. pcie_ports=compati.

Pakadali pano, dalaivala wa touchbar amawonongeka akalowa njira yoyimitsa, ndipo woyendetsa bingu nthawi zina amawumitsa makinawo kwa masekondi opitilira 30, komanso kwa mphindi zingapo akayambiranso. Izi zitha kukhazikitsidwa potsitsa zokha ma module ovuta.

Pangani script /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

Pangani kuti zitheke:

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

Ndizo zonse pakadali pano. Zotsatira zake ndi njira yogwirira ntchito kwathunthu, kupatula ma nuances ena ndikuyimitsa / kuyambiranso. Palibe kuwonongeka kapena mantha a kernel omwe adawonedwa m'masiku angapo anthawi yayitali. Ndikuyembekeza kuti posachedwa wolemba gawo la bce adzamaliza, ndipo tidzapeza chithandizo chokwanira cha kuyimitsa / kuyambiranso ndi kumveka.

Source: www.habr.com

Kuwonjezera ndemanga