Ngadamel MacBook Pro 2018 T2 tiasa dianggo sareng ArchLinux (dualboot)

Aya rada hype ngeunaan kanyataan yén chip T2 anyar bakal ngajadikeun eta teu mungkin masang Linux Ubuntu dina MacBooks anyar 2018 kalawan touchbar a. Waktos kaliwat, sareng dina ahir taun 2019, pamekar pihak katilu ngalaksanakeun sababaraha supir sareng patch kernel pikeun interaksi sareng chip T2. Supir utama pikeun modél MacBook 2018 sareng anu langkung énggal ngalaksanakeun operasi VHCI (operasi touch / keyboard / jsb), ogé operasi sora.

proyek mbp2018-sasak-drv dibagi kana 3 komponén utama:

  • BCE (Buffer Copy Engine) - ngadegkeun saluran komunikasi utama sareng T2. VHCI sareng Audio ngabutuhkeun komponén ieu.
  • VHCI mangrupakeun USB Virtual Host Controller; kibor, mouse sareng komponenana sistem anu sanésna disayogikeun ku komponén ieu (driver sanésna nganggo host controller ieu pikeun nyayogikeun langkung seueur fungsionalitas.
  • Audio - supir pikeun panganteur audio T2, ayeuna ngan ngarojong kaluaran audio ngaliwatan spiker diwangun-di MacBook urang


Proyék kadua disebut macbook12-spi-supir, sarta eta implements kamampuhan pikeun beroperasi supir input pikeun keyboard, trackpad SPI, sarta touchbar pikeun MacBook Pro Ahir 2016 sarta engké. Sababaraha panggerak keyboard/trackpad ayeuna diasupkeun kana kernel, dimimitian ku versi 5.3.

Rojongan pikeun alat sapertos wi-fi, touchpad, jsb ogé dilaksanakeun nganggo patch kernel. Vérsi kernel ayeuna 5.3.5-1

Naon anu dianggo ayeuna

  1. NVMe
  2. keyboard
  3. USB-C (Thunderbolt teu acan diuji; nalika modul dimuat sacara otomatis, éta beku sistem)
  4. Touchbar (kalayan kamampuan pikeun ngaktipkeun kenop Fn, lampu tukang, ESC, jsb.)
  5. Sora (spéker internal wungkul)
  6. Modul Wi-Fi (via brcmfmac sareng ngan ukur liwat iw)
  7. DisplayPort ngaliwatan USB-C
  8. Sénsor
  9. Tunda / Neruskeun (sabagian)
  10. jsb ..

Tutorial ieu lumaku pikeun macbookpro15,1 jeung macbookpro15,2. Tulisan ieu dicandak salaku dasar tina Github dina basa Inggris. di dieu. Henteu sadayana dina tulisan ieu tiasa dianggo, janten kuring kedah milarian solusi sorangan.

Naon anu anjeun kedah pasang

  • USB-C docking adaptor ka USB (sahenteuna tilu input USB pikeun nyambungkeun mouse a, keyboard, modem USB atawa telepon dina modeu Nga-tether). Ieu ngan diperlukeun dina tahap mimiti instalasi
  • kibor USB
  • USB / USB-C flash drive minimum 4GB

1. Pareuman larangan dina booting ti média éksternal

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

2. Alokasikeun rohangan bébas nganggo Disk Utility

Pikeun genah, kuring langsung nyayogikeun 30GB kana disk, pormatna dina exfat dina Disk Utility sorangan. Ngabagi Utilitas Disk Disk Fisik.

3. Jieun hiji gambar ISO

Pilihan:

  1. Anjeun tiasa buka jalur basajan tur ngundeur gambar siap-dijieun kalawan kernel 5.3.5-1 sarta patch ti aunali1 link ka gambar rengse
  2. Jieun gambar sorangan via archlive (sistem kalawan distribusi Archa diperlukeun)

    Masang archiso

    pacman -S archiso

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

    Tambahkeun Repository kana pacman.conf:

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

    Urang malire kernel aslina dina pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Tambahkeun bungkusan anu diperyogikeun, dina tungtungna tambahkeun kernel linux-mbp sareng linux-mbp-headers

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

    Kami ngarobih naskah pikeun dianggo dina modeu interaktif (ganti pacstrap -C sareng 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!"
    }

    Ngabentuk gambar:

    sudo ./build.sh -v

    Pencét Y pikeun ngalangkungan bungkusan anu teu dipaliré, teras tuliskeun gambar iso kana USB flash drive:

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

4. boot munggaran

Reboot sareng flash drive sareng keyboard diselapkeun. Pencét pilihan nalika apel muncul, pilih EFI BOOT.

Salajengna, anjeun kedah pencét tombol "e" sareng lebetkeun dina tungtung garis paréntah module_blacklist = guludug. Upami ieu henteu dilakukeun, sistem moal tiasa boot sareng Kasalahan Thunderbolt ICM bakal muncul.

Ngagunakeun fdisk / cfdisk kami manggihan partisi urang (kanggo kuring éta nvme0n1p4), pormat eta tur masang arsip. Anjeun tiasa make parentah resmi atawa gigir.

Kami henteu nyiptakeun partisi boot; kami bakal nyerat bootloader di /dev/nvme0n1p1
Saatos lingkungan di / mnt kabentuk lengkep sareng sateuacan ngalih ka arch-chroot, nyerat:

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

Tambahkeun ka /etc/pacman.conf:


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

Pasang kernel:


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

Urang ngadaptar thunderbolt na applesmc di /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Kibor, touchbar, jsb

Pasang yeuh:


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

Masang modul pikeun touchbar pikeun jalan:


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

Tambahkeun modul pikeun ngamimitian: /etc/modules-load.d/apple.conf

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

Masang modul kernel pikeun keyboard. Dina gudang taunan1 aya bungkusan siap-siap, disebutna apel-bce-dkms-git. Pikeun masang éta, tulis dina konsol:

pacman -S apple-bce-dkms-git

Dina hal ieu, modul kernel bakal disebut apal-bce. Dina kasus timer assembly, mangka disebut SM. Sasuai, upami anjeun hoyong ngadaptar modul dina bagian MODUL dina file mkinicpio.conf, teras ulah hilap modul anu anjeun pasang.

Majelis manual:


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

Tambahkeun modul bce atanapi apple-bce pikeun ngamimitian: /etc/modules-load.d/bce.conf

bce

Upami anjeun hoyong nganggo tombol Fn sacara standar, teras tulis dina file /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Ngamutahirkeun kernel sareng initramfs.


mkinitcpio -p linux-mbp

Pasang iwd:

sudo pacman -S networkmanager iwd

5. Pamuat

Sakali sadaya bungkusan utama dipasang di jero chroot, anjeun tiasa ngamimitian masang bootloader.

Abdi henteu acan tiasa kéngingkeun grub damel. Sapatu Grub tina drive USB éksternal, tapi nalika anjeun nyobian ngadaptar dina nvme via

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

Sistim indit kana panik kernel, sarta sanggeus rebooting item anyar ngaliwatan pilihan teu muncul. Kuring henteu mendakan solusi anu jelas pikeun masalah ieu sareng ku kituna mutuskeun nyobian ngalaksanakeun booting nganggo systemd-boot.

  1. Ngaluncurkeun
    bootctl --path=/boot install

    sarta kami balik kana panik kernel. Pareuman MacBook, hurungkeun deui, klik pilihan (ulah mareuman hub USB-C sareng keyboard)

  2. Kami pariksa yén éntri EFI BOOT énggal parantos muncul salian ti alat éksternal
  3. Urang milih boot ti USB drive éksternal, sakumaha dina mangsa pamasangan munggaran (tong poho pikeun nangtukeun module_blacklist=thunderbolt)
  4. Urang Gunung disk urang jeung lebet kana lingkungan via arch-chroot


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

Lamun perlu keyboard pikeun digawé nepi ka sistem pinuh dimuat (ieu diperlukeun nalika ngagunakeun enkripsi luks/dm-crypt), lajeng nulis eta dina file /etc/mkinicpio.conf dina bagian MODUL:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Ngamutahirkeun kernel sareng initramfs.


mkinicpio -p linux-mbp

Nyetél systemd-boot

Kami ngédit file /boot/loader/loader.conf, ngahapus sadayana anu aya di jero, sareng nambihan ieu:

default arch
timeout 5
editor 1

Pindah ka folder /boot/loader/entry, jieun file arch.conf sareng nyerat:

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

Lamun dipaké luks na lvm, lajeng

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

Reboot kana MacOS.

6. Setélan Wi-Fi

Sapertos tungtungna, MacOS nyimpen file firmware pikeun adaptor wi-fi dina polder /usr/share/firmware/wifi , sareng anjeun tiasa nyandakna ti dinya dina bentuk gumpalan sareng tuang kana modul kernel brcmfmac. Pikeun milarian file mana anu dianggo ku adaptor anjeun, buka terminal dina MacOS sareng nyerat:

ioreg -l | grep C-4364

Simkuring meunang daptar panjang. Urang ngan butuh file ti bagian DipéntaFiles:

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

Dina kasus anjeun, nami file tiasa béda. Tiron ti folder /usr/share/firmware/wifi kana flash drive jeung ganti ngaran jadi kieu:

    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>

Dina hal ieu, file téks anu terakhir ngandung nami modél; upami modél anjeun sanés macbookpro15,2, maka anjeun kedah ngaganti nami file ieu saluyu sareng modél MacBook anjeun.

Reboot kana Arch.

Nyalin file tina flash drive kana folder /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/

Mariksa pungsionalitas modul:


rmmod brcmfmac
modprobe brcmfmac

Urang pastikeun yén panganteur jaringan némbongan ngaliwatan ifconfig / ip.
Nyetél wifi via yuctl

Perhatian. Ngaliwatan netctl, nmcli, jsb. Antarbeungeutna henteu jalan, ngan ukur ngalangkungan iwd.

Urang maksakeun NetworkManager ngagunakeun iwd. Jang ngalampahkeun ieu, jieun file /etc/NetworkManager/NetworkManager.conf sareng nyerat:

[device]
wifi.backend=iwd

Mimitian jasa NetworkManager


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

7. Sora

Supados sora tiasa dianggo, anjeun kedah pasang pulseaudio:


sudo pacman -S pulseaudio

Unduh tilu file:

Hayu urang mindahkeun aranjeunna:

    /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. Nunda / neruskeun

Dina momen ieu 16.10.2019 anjeun kedah milih sora atanapi ngagantungkeun / neruskeun. Kami ngantosan panulis modul bce ngalengkepan fungsionalitasna.

Pikeun ngawangun modul kalayan dukungan anu disangka / neruskeun, anjeun kedah ngalakukeun ieu:


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

Lamun dipasang modul apel-bce siap-dijieun ti Repository anuali1, mangka anjeun kudu mimiti nyabut eta na ngan lajeng ngumpul tur masang modul bce kalayan rojongan mode suspend.

Ogé, anjeun kedah nambihan modul applesmc kana daptar hideung (upami anjeun henteu acan ngalakukeun ieu sateuacanna) sareng pastikeun yén dina /boot/loader/entry/arch.conf dina garis pilihan dina tungtung parameter ditambahkeun. pcie_ports=compat.

Ayeuna, supir touchbar nabrak nalika asup kana mode suspend, sarta supir thunderbolt kadang freezes sistem pikeun leuwih ti 30 detik, sarta sababaraha menit nalika resuming. Ieu bisa dibenerkeun ku otomatis unloading modul masalah.

Jieun naskah /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

Jieun eta laksana:

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

Sakitu wae kanggo ayeuna. Hasilna mangrupikeun sistem anu tiasa dianggo, iwal sababaraha nuansa kalayan ngagantungkeun / neruskeun. Henteu aya kacilakaan atanapi panik kernel anu dititénan salami sababaraha dinten uptime. Kuring miharep éta dina mangsa nu bakal datang panulis modul bce bakal rengse eta, sarta kami bakal meunang rojongan pinuh pikeun ngagantungkeun / neruskeun jeung sora.

sumber: www.habr.com

Tambahkeun komentar