Samaynta MacBook Pro 2018 T2 la shaqaynta ArchLinux (dualboot)

Waxaa jiray xoogaa buunbuunin ah oo ku saabsan xaqiiqda ah in chip-ka cusub ee T2 uu ka dhigi doono mid aan suurtagal ahayn in Linux lagu rakibo MacBookga cusub ee 2018 oo leh taabashada taabashada. Waqti ayaa dhaafey, iyo dhamaadkii 2019, soosaarayaasha dhinac saddexaad waxay hirgeliyeen tiro darawallo ah iyo xirmo kernel si ay ula falgalaan chip T2. Dareewalka ugu weyn ee moodooyinka MacBook 2018 iyo kuwa cusub waxay fulisaa hawlgalka VHCI (taabasho/keyboard/ iwm. hawlgalka), iyo sidoo kale hawlgalka codka.

Mashruuca mbp2018-bridge-drv loo qaybiyay 3 qaybood oo waaweyn:

  • BCE (Buffer Copy Engine) - waxay dejisaa kanaalka isgaarsiinta ugu weyn T2. VHCI iyo Audio waxay u baahan yihiin qaybtan.
  • VHCI waa USB Virtual Host Controller; kiiboodhka, mouse-ka iyo qaybaha kale ee nidaamka waxa bixiya qaybtan (darawalada kale ayaa isticmaala kontoroolka martida loo yahay si ay u bixiyaan hawlo badan.
  • Maqalka - darawalka interface-ka maqalka ee T2, hadda waxa uu taageeraa oo keliya wax soo saarka maqalka iyada oo loo marayo ku-hadlayaasha MacBookga ee ku dhex jira


Mashruuca labaad waxaa la yiraahdaa macbook12-spi-driver, oo ay fuliso awoodda ay ugu shaqaynayso gelinta darawalka kiiboodhka, SPI trackpad, iyo taabashada MacBook Pro Late 2016 iyo ka dib. Qaar ka mid ah dareewalada kiiboodhka/ daba-galka ayaa hadda lagu daray kernel-ka, laga bilaabo nooca 5.3.

Taageerada aaladaha sida wi-fi, taabashada taabashada, iwm ayaa sidoo kale la hirgaliyay iyadoo la isticmaalayo balastar kernel. Nooca kernel-ka hadda 5.3.5-1

Maxaa hadda shaqeeya

  1. NVMe
  2. Keyboard
  3. USB-C (Thunderbolt lama tijaabin; marka moduleka si toos ah loo raro, wuxuu qaboojiyaa nidaamka)
  4. Bar taabashada (oo leh awood lagu shido furayaasha Fn, nalka dambe, ESC, iwm.)
  5. Cod (ku-hadlayaasha lagu dhex dhisay kaliya)
  6. moduleka Wi-Fi (iyada oo loo marayo brcmfmac oo loo sii marayo iw kaliya)
  7. DisplayPort korka USB-C
  8. Dareemayaal
  9. Laalis/Bilow (qayb ahaan)
  10. iwm.

Casharradani waxay khusaysaa macbookpro15,1 iyo macbookpro15,2. Maqaalka waxaa laga soo qaatay Github oo ku saleysan Ingiriis. halkan. Wax kasta oo maqaalkan ku jira ma shaqaynin, markaa waa inaan nafteyda xal u raadiyo.

Maxaad u baahan tahay inaad ku rakibto

  • Adabtarada USB-C ee USB-ga (ugu yaraan saddex qalab oo USB ah oo loogu talagalay isku xirka mouse, kiiboodhka, modem USB ama taleefanka qaabka tethering). Tani waa lagama maarmaan kaliya inta lagu jiro marxaladaha ugu horreeya ee rakibidda
  • Kiiboodhka USB
  • USB/USB-C flash drive ugu yaraan 4GB

1. Jooji mamnuucida ka soo kabashada warbaahinta dibadda

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

2. U qoondee meel banaan adigoo isticmaalaya Disk Utility

Si ay ugu habboonaato, waxaan isla markiiba u qoondeeyay 30GB disk-ga, anigoo ku qaabeeyay qaab exfat gudaha Disk Utility laftiisa. Qaybinta Utility Disk Disk-ga Jirka.

3. Samee sawirka ISO

Fursadaha:

  1. Waxaad mari kartaa wadada fudud oo aad soo dejisan kartaa sawir diyaarsan oo leh kernel 5.3.5-1 iyo balastar ka socda aunali1 isku xirka sawirka dhammeeyey
  2. Abuur sawir adiga oo isticmaalaya archlive (nidaam leh qaybinta Archa ayaa loo baahan yahay)

    Ku rakib archiso

    pacman -S archiso

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

    Kudar kaydka pacman.conf:

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

    Waxaan iska indhatiray kernel-kii asalka ahaa ee pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Ku dar xirmooyinka lagama maarmaanka ah, dhamaadka ku dar linux-mbp kernel iyo linux-mbp-headers

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

    Waxaan u bedelnaa qoraalka si uu ugu shaqeeyo qaab is dhexgal ah (ku bedel pacstrap -C 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!"
    }

    Samaynta sawir:

    sudo ./build.sh -v

    Riix Y si aad uga gudubto baakadaha la iska indho-tiray, dabadeed ku qor sawirka iso ee flash-ka:

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

4. Kabaha ugu horreeya

Dib u bilow adigoo flash-ka iyo kiiboodhka la geliyey. Riix xulashooyinka marka tufaaxu soo baxo, dooro EFI BOOT.

Marka xigta, waxaad u baahan tahay inaad riixdo furaha "e" oo geli dhamaadka khadka taliska module_blacklist=onkod. Haddii tan aan la samayn, nidaamku ma bootin karo oo waxaa soo bixi doona Khaladaadka Thunderbolt ICM.

Adigoo isticmaalaya fdisk/cfdisk waxaan helnaa qaybtayada (aniga waa nvme0n1p4), samee oo rakib kaydka. Waad isticmaali kartaa tilmaamaha rasmiga ah ama dhinac ah.

Ma abuurayno qayb bootloader ah; waxaan ku qori doonaa bootloader gudaha /dev/nvme0n1p1
Kadib marka deegaanka/mnt uu si buuxda u samaysmo iyo ka hor inta aanad u guurin arch-chroot, qor:

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

Kudar /etc/pacman.conf:


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

Ku rakib kernel-ka:


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

Waxaan ka diiwaan gelinaa Thunderbolt iyo applesmc gudaha /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Kiiboodhka, taabashada, iwm

Ku rakib yay:


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

Ku rakibida qaybo ka mid ah taabashada taabashada si ay u shaqeyso:


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

Ku dar modules bilowga: /etc/modules-load.d/apple.conf

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

Ku rakibida cutubyada kernel ee kiiboodhka. In kaydka sanadkii1 waxaa jira xirmo diyaarsan, waxaa la yiraahdaa tufaax-bce-dkms-git. Si aad u rakibto, ku qor console:

pacman -S apple-bce-dkms-git

Xaaladdan oo kale, moduleka kernel ayaa loo yeeri doonaa tufaax-bce. Marka la eego is-urursiga, waxaa la yiraahdaa BCE. Sidaa darteed, haddii aad rabto inaad iska diiwaan geliso moduleka qaybta MODULES ee faylka mkinicpio.conf, markaa ha ilaawin moduleka aad rakibtay.

Kulanka gacanta:


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

Ku dar moduleka bce ama apple-bce bilowga: /etc/modules-load.d/bce.conf

bce

Haddii aad rabto inaad isticmaasho badhamada Fn sida caadiga ah, ka dib ku qor faylka /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Cusbooneysiinta kernel-ka iyo initramfs


mkinitcpio -p linux-mbp

Ku rakib iwd:

sudo pacman -S networkmanager iwd

5. Soodejiye

Marka dhammaan xirmooyinka muhiimka ah lagu rakibo gudaha chroot, waxaad bilaabi kartaa rakibidda bootloader-ka.

Ma aan awoodin in aan shaqada ka tago. Grub boots ka USB drive dibadda, laakiin marka aad isku daydo in ay ka diiwaan nvme via

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

Nidaamku wuxuu galay argagaxa kernel, iyo ka dib markii dib loo bilaabo shay cusub iyada oo loo marayo xulashooyinka ma muuqan. Ma helin wax xal cad ah dhibaatadan sidaas darteed waxaan go'aansaday inaan isku dayo inaan hirgeliyo booting isticmaalaya systemd-boot.

  1. Daahfurka
    bootctl --path=/boot install

    waxaana galnay argagaxa kernel-ka. Demi MacBook, mar kale shid, dhagsii xulashooyinka (ha damin xudunta USB-C ee leh kiiboodhka)

  2. Waxaan hubineynaa in gelitaanka EFI BOOT ee cusub uu soo muuqday marka lagu daro qalabka dibadda
  3. Waxaan dooranaa inaan ka bootinno USB-ga dibadda ah, sida inta lagu jiro rakibaadda koowaad (ha iloobin inaad qeexdo module_blacklist=thunderbolt)
  4. Waxaan ku dhejinnaa saxankeena oo waxaan u galnaa deegaanka anagoo adeegsanayna arch-chroot


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

Haddii ay lagama maarmaan tahay in kiiboodhka uu shaqeeyo ilaa nidaamka si buuxda loo buuxiyo (tani waa lagama maarmaan marka la isticmaalayo luks/dm-crypt encryption), ka dibna ku qor faylka /etc/mkinicpio.conf ee qaybta MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Cusbooneysiinta kernel-ka iyo initramfs


mkinicpio -p linux-mbp

Dejinta systemd-boot

Waxaan tafatirnaa faylka /boot/loader/loader.conf, tirtirnaa wax kasta oo ku jira, oo ku dar kuwan soo socda:

default arch
timeout 5
editor 1

Tag faylka /boot/loader/entries, samee faylka arch.conf oo qor:

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

Haddii aad isticmaashay luks iyo lvm, markaa

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

Dib u bilow MacOS.

6. dejinta Wi-Fi

Sida ay soo baxday dhamaadka, MacOS waxay ku kaydisaa feylasha firmware-ka ee adabtarada wi-fi ee gal-galka /usr/share/firmware/wifi , oo waxaad uga soo qaadi kartaa halkaas qaab blobs oo waxaad ku quudin kartaa moduleka kernel-ka bcmfmac. Si aad u ogaato faylalka adabtaradaadu isticmaasho, fur terminal gudaha MacOS oo qor:

ioreg -l | grep C-4364

Waxaan helnaa liis dheer. Waxaan kaliya uga baahanahay faylasha qaybta Faylasha la codsaday:

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

Xaaladdaada, magacyada faylka way kala duwanaan karaan. Ka soo guuri galka/usr/share/firmware/wifi galka flash-ka oo dib ugu magacaw sidan soo socota:

    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>

Xaaladdan oo kale, faylka qoraalka ee ugu dambeeya wuxuu ka kooban yahay magacyada moodeelka, haddii moodeelkaagu aanu ahayn macbookpro15,2, markaa waxaad u baahan tahay inaad dib u magacawdo faylkan si waafaqsan nooca MacBookgaaga.

Dib u billow Arch

Ku koobbi faylalka flash-ka una rog/lib/firmware/brcm/ folder


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/

Hubinta shaqaynta cutubka:


rmmod brcmfmac
modprobe brcmfmac

Waxaan hubineynaa in interface-ka shabakadu uu ka soo muuqdo ifconfig/ip.
Dejinta wifi iyada oo loo marayo iwctl

Fiiro gaar ah. Iyada oo loo marayo netctl, nmcli, iwm. Interface-ku ma shaqeeyo, kaliya iyada oo loo marayo iwd.

Waxaan ku qasbi NetworkManager inuu isticmaalo iwd. Si tan loo sameeyo, samee faylka /etc/NetworkManager/NetworkManager.conf oo qor:

[device]
wifi.backend=iwd

Bilow adeegga NetworkManager


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

7. Cod

Si uu codku u shaqeeyo, waxaad u baahan tahay inaad ku rakibto pulseaudio:


sudo pacman -S pulseaudio

Soo deji saddex fayl:

Aan dhaqaajinno:

    /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. Laalista/Bilaabashada

Waqtigan xaadirka ah 16.10.2019 waa inaad doorataa dhawaaq ama laalid/bilaabid. Waxaan sugeynaa qoraaga moduleka bce si uu u dhamaystiro shaqeynta.

Si aad u dhisto cutub leh taageerada la hakiyay/ dib u bilaabaya, waa inaad samaysaa waxyaabaha soo socda:


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

Haddii aad ku rakibtay moduleka apple-bce ee diyaarka u ah kaydka anuali1, markaa waa inaad marka hore ka saartaa oo kaliya ka dibna soo ururisa oo rakib moduleka bce oo leh taageero hab laalid.

Sidoo kale, waxaad u baahan tahay inaad ku darto moduleka applesmc liiska madow (haddii aadan tan hore u samayn) oo aad hubiso in /boot/loader/entries/arch.conf ee xariiqda ikhtiyaariga ah ee dhamaadka cabbirka lagu daray pcie_ports=compat.

Waqtigan xaadirka ah, dareewalka taabashada ayaa shil marka uu soo galo habka suspend, darawalka onkodku wuxuu mararka qaarkood qaboojiyaa nidaamka in ka badan 30 ilbiriqsi, iyo dhowr daqiiqo marka uu dib u bilaabo. Tan waxaa lagu hagaajin karaa iyadoo si toos ah loo dejiyo cutubyada dhibaatada leh.

Samee qoraal /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

Ka dhig mid la fulin karo:

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

Waa intaas hadda. Natiijadu waa hab dhammaystiran oo la shaqayn karo, marka laga reebo nuances qaar ka mid ah oo leh laalid/shaqo shaqo. Wax shilal ah ama argagaxa kernel lama arkin dhowr maalmood oo wakhtiga shaqada ah. Waxaan rajeynayaa in mustaqbalka dhow qoraaga moduleka bce uu dhammeyn doono, waxaanan heli doonnaa taageero buuxda oo ku saabsan joojinta / shaqada iyo dhawaaqa.

Source: www.habr.com

Add a comment