Yin MacBook Pro 2018 T2 aiki tare da ArchLinux (dualboot)

An yi ɗan ƙara jin daɗi game da gaskiyar cewa sabon guntu T2 zai sa ba zai yiwu a shigar da Linux akan sabon 2018 MacBooks tare da taɓa taɓawa ba. Lokaci ya wuce, kuma a ƙarshen 2019, masu haɓaka ɓangare na uku sun aiwatar da adadin direbobi da facin kernel don hulɗa tare da guntu T2. Babban direba don samfuran MacBook 2018 da sababbi suna aiwatar da aikin VHCI (aiki na taɓawa / allon allo / da sauransu), da kuma aikin sauti.

Wannan aikin mbp2018-bridge-drv Kasu kashi uku manyan abubuwa:

  • BCE (Buffer Copy Engine) - ya kafa babban tashar sadarwa tare da T2. VHCI da Audio suna buƙatar wannan bangaren.
  • VHCI mai kula da Mai watsa shiri ne na USB; Ana samar da maballin, linzamin kwamfuta da sauran abubuwan tsarin ta wannan bangaren (sauran direbobi suna amfani da wannan mai sarrafa mai masaukin don samar da ƙarin ayyuka.
  • Audio - direba don mu'amala mai jiwuwa ta T2, a halin yanzu yana goyan bayan fitowar sauti kawai ta hanyar ginanniyar lasifikar da ke cikin MacBook


Ana kiran aikin na biyu macbook12-spi-driver, kuma yana aiwatar da ikon sarrafa direban shigarwa don madannai, SPI trackpad, da mashaya don MacBook Pro Late 2016 da kuma daga baya. Wasu direbobin madannai/maɓallin waƙa yanzu an haɗa su a cikin kernel, farawa da sigar 5.3.

An kuma aiwatar da goyan bayan na'urori irin su wi-fi, touchpad, da sauransu ta amfani da facin kernel. Sigar kernel na yanzu 5.3.5-1

Me ke aiki a halin yanzu

  1. NVMe
  2. Keyboard
  3. USB-C (ba a gwada Thunderbolt ba; lokacin da aka ɗora kayan aikin ta atomatik, yana daskare tsarin)
  4. Touchbar (tare da ikon kunna maɓallan Fn, hasken baya, ESC, da sauransu)
  5. Sauti (ginayen lasifika kawai)
  6. Wi-Fi module (ta hanyar bcmfmac kuma ta hanyar iw kawai)
  7. DisplayPort akan USB-C
  8. Na'urar haska bayanai
  9. Dakatar da / Ci gaba (wani bangare)
  10. da dai sauransu ..

Wannan koyawa tana aiki don macbookpro15,1 da macbookpro15,2. An ɗauki labarin azaman tushe daga Github a Turanci. daga nan. Ba duk abin da ke cikin wannan labarin ya yi aiki ba, don haka dole ne in sami mafita da kaina.

Abin da kuke buƙata don shigarwa

  • USB-C adaftar docking zuwa USB (aƙalla abubuwan shigar da kebul guda uku don haɗa linzamin kwamfuta, keyboard, modem USB ko waya a yanayin haɗawa). Wannan wajibi ne kawai a lokacin matakan farko na shigarwa
  • USB keyboard
  • Kebul/USB-C flash drive mafi ƙarancin 4GB

1. Kashe haramcin yin booting daga kafofin watsa labarai na waje

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

2. Ware sarari kyauta ta amfani da Disk Utility

Don saukakawa, nan da nan na ware 30GB ga faifan, inda na tsara shi a cikin exfat a cikin Disk Utility kanta. Rarraba Kayan Aikin Disk na Jiki.

3. Ƙirƙiri hoton ISO

Zabuka:

  1. Kuna iya zuwa hanya mai sauƙi kuma zazzage hoton da aka shirya tare da kernel 5.3.5-1 da faci daga aunali1 hanyar haɗi zuwa hoton da aka gama
  2. Ƙirƙiri hoto da kanka ta hanyar archlive (ana buƙatar tsarin tare da rarraba Archa)

    Shigar archiso

    pacman -S archiso

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

    Ƙara wurin ajiya zuwa pacman.conf:

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

    Mun yi watsi da ainihin kernel a pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Ƙara fakitin da suka dace, a ƙarshe ƙara linux-mbp kernel da linux-mbp-headers.

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

    Muna canza rubutun zuwa aiki a yanayin hulɗa (maye gurbin pacstrap -C tare da 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!"
    }

    Ƙirƙirar hoto:

    sudo ./build.sh -v

    Latsa Y don tsallake fakitin da ba a kula da su ba, sannan rubuta hoton iso zuwa filasha na USB:

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

4. Farko taya

Sake yi tare da filasha da kuma shigar da madannai. Danna zaɓuɓɓuka lokacin da apple ya bayyana, zaɓi EFI BOOT.

Na gaba, kuna buƙatar danna maɓallin "e" kuma shigar a ƙarshen layin umarni module_blacklist = tsawa. Idan ba a yi haka ba, tsarin na iya ƙila yin taya kuma Kuskuren Thunderbolt ICM zai bayyana.

Yin amfani da fdisk/cfdisk muna samun ɓangaren mu (a gare ni nvme0n1p4 ne), tsara shi kuma shigar da tarihin. Kuna iya amfani da umarnin hukuma ko a gefe.

Ba muna ƙirƙirar ɓangaren taya ba; za mu rubuta bootloader a ciki /dev/nvme0n1p1
Bayan yanayin a /mnt ya kasance gaba daya kuma kafin motsawa zuwa arch-chroot, rubuta:

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

Ƙara zuwa /etc/pacman.conf:


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

Sanya kernel:


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

Muna yin rijistar thunderbolt da applesmc a /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Allon madannai, sandar taɓawa, da sauransu

Shigar yaya:


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

Shigar da kayayyaki don taɓa taɓawa yayi aiki:


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

Ƙara kayayyaki zuwa farawa: /etc/modules-load.d/apple.conf

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

Sanya kernel modules don madannai. A cikin ma'ajiyar shekara 1 akwai kunshin da aka shirya, ana kiransa apple-bce-dkms-git. Don shigar da shi, rubuta a cikin na'ura mai kwakwalwa:

pacman -S apple-bce-dkms-git

A wannan yanayin, za a kira ƙirar kernel apple-bce. A cikin yanayin haɗin kai, ana kiran shi lanƙwasa. Don haka, idan kuna son yin rijistar module a sashin MODULES na fayil ɗin mkinicpio.conf, to kar ku manta da wanne tsarin da kuka shigar.

Haɗa hannu:


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

Ƙara ƙirar bce ko apple-bce zuwa farawa: /etc/modules-load.d/bce.conf

bce

Idan kuna son amfani da maɓallin Fn ta tsohuwa, to ku rubuta a cikin fayil /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Ana ɗaukaka kernel da initramfs.


mkinitcpio -p linux-mbp

Shigar iwd:

sudo pacman -S networkmanager iwd

5. Mai lodi

Da zarar an shigar da duk manyan fakiti a cikin chroot, zaku iya fara shigar da bootloader.

Ba zan iya samun grub don aiki ba. Grub boots daga kebul na USB na waje, amma lokacin da kake ƙoƙarin yin rijista ta nvme ta

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

tsarin ya shiga cikin firgita kernel, kuma bayan sake yin sabon abu ta hanyar zaɓuɓɓuka bai bayyana ba. Ban sami wata bayyananniyar mafita ga wannan matsalar ba saboda haka na yanke shawarar ƙoƙarin aiwatar da booting ta amfani da systemd-boot.

  1. Kaddamarwa
    bootctl --path=/boot install

    kuma mun shiga cikin firgici. Kashe MacBook, kunna shi kuma, danna zaɓuɓɓuka (kada ku kashe tashar USB-C tare da keyboard)

  2. Mun duba cewa sabon shigarwar EFI BOOT ya bayyana baya ga na'urar waje
  3. Mun zaɓi don taya daga kebul na USB na waje, kamar lokacin shigarwa na farko (kar a manta da saka module_blacklist=thunderbolt)
  4. Muna hawa faifan mu kuma mu shiga cikin muhalli ta hanyar arch-chroot


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

Idan maballin ya zama dole ya yi aiki har sai tsarin ya cika (wannan yana da mahimmanci yayin amfani da luks/dm-crypt encryption), sannan rubuta shi a cikin fayil /etc/mkinicpio.conf a cikin sashin MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Ana ɗaukaka kernel da initramfs.


mkinicpio -p linux-mbp

Saita systemd-boot

Muna gyara fayil ɗin /boot/loader/loader.conf, share duk abin da ke ciki, kuma mu ƙara masu zuwa:

default arch
timeout 5
editor 1

Je zuwa babban fayil /boot/loader/ shigarwar, ƙirƙirar fayil ɗin arch.conf kuma rubuta:

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

Idan kun yi amfani da luks da lvm, to

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

Sake kunna MacOS.

6. Saitin Wi-Fi

Kamar yadda ya juya a ƙarshe, MacOS yana adana fayilolin firmware don adaftar wi-fi a cikin babban fayil ɗin /usr/share/firmware/wifi , kuma zaku iya ɗaukar su daga can a cikin nau'in ɓangarorin ku ciyar da su zuwa tsarin kernel na bcmfmac. Don gano fayilolin adaftar ku ke amfani da su, buɗe tasha a MacOS kuma rubuta:

ioreg -l | grep C-4364

Muna samun dogon jeri. Muna buƙatar fayiloli kawai daga sashin Fayilolin da ake buƙata:

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

A cikin yanayin ku, sunayen fayil ɗin na iya bambanta. Kwafi su daga babban fayil /usr/share/firmware/wifi zuwa faifan faifai kuma sake suna kamar haka:

    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>

A wannan yanayin, fayil ɗin rubutu na ƙarshe ya ƙunshi sunayen ƙira; idan samfurin ku ba macbookpro15,2 ba ne, to kuna buƙatar sake suna wannan fayil ɗin daidai da ƙirar MacBook ɗinku.

Sake kunnawa cikin Arch.

Kwafi fayilolin daga filasha zuwa babban fayil /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/

Duba aikin module:


rmmod brcmfmac
modprobe brcmfmac

Muna tabbatar da cewa cibiyar sadarwar ke bayyana ta hanyar ifconfig/ip.
Saita wifi ta hanyar iwctl

Hankali. Ta hanyar netctl, nmcli, da dai sauransu. Mai dubawa baya aiki, ta hanyar iwd kawai.

Muna tilasta NetworkManager yin amfani da iwd. Don yin wannan, ƙirƙirar fayil ɗin /etc/NetworkManager/NetworkManager.conf kuma rubuta:

[device]
wifi.backend=iwd

Fara sabis na NetworkManager


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

7. Sauti

Domin sauti yayi aiki, kuna buƙatar shigar da pulseaudio:


sudo pacman -S pulseaudio

Zazzage fayiloli guda uku:

Mu motsa su:

    /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. Dakatarwa/ Ci gaba

A wannan lokacin 16.10.2019 dole ne ka zaɓi ko dai sauti ko dakatarwa/ci gaba. Muna jiran marubucin BC module don kammala aikin.

Don gina module tare da dakatarwa/ci gaba da tallafi, dole ne ku yi masu zuwa:


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

Idan kun shigar da kayan aikin apple-bce da aka shirya daga ma'ajiyar anuali1, to dole ne ku fara cire shi sannan kawai ku tattara kuma shigar da tsarin BC tare da goyan bayan yanayin dakatarwa.

Har ila yau, kuna buƙatar ƙara samfurin applesmc zuwa blacklist (idan ba ku yi wannan ba a da) kuma ku tabbata cewa a /boot/loader/entries/arch.conf a cikin layin zaɓuɓɓuka a ƙarshen an ƙara siginar. pcie_ports=compat.

A halin yanzu, direban taɓawar yana yin karo lokacin shigar da yanayin dakatarwa, kuma direban tsawa wani lokacin yana daskare tsarin sama da daƙiƙa 30, kuma na mintuna da yawa lokacin da aka ci gaba. Ana iya gyara wannan ta sauke kayan aiki masu matsala ta atomatik.

Ƙirƙiri rubutun /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

Sanya shi mai aiwatarwa:

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

Shi ke nan a yanzu. Sakamakon shine cikakken tsarin aiki, ban da wasu nuances tare da dakatarwa / ci gaba. Ba a ga faɗuwa ko fargabar kwaya a cikin kwanaki da yawa na lokacin aiki ba. Ina fatan nan gaba kadan marubucin BC module zai gama shi, kuma za mu sami cikakken goyon baya don dakatarwa / ci gaba da sauti.

source: www.habr.com

Add a comment