Nggawe MacBook Pro 2018 T2 bisa digunakake karo ArchLinux (dualboot)

Ana akeh hype babagan kasunyatan manawa chip T2 anyar bakal ora bisa nginstal Linux ing MacBook 2018 anyar kanthi bar demek. Wektu liwati, lan ing pungkasan taun 2019, pangembang pihak katelu ngetrapake sawetara driver lan patch kernel kanggo interaksi karo chip T2. Pembalap utama kanggo model MacBook 2018 lan luwih anyar ngleksanakake operasi VHCI (operasi tutul / keyboard / etc), uga operasi swara.

Proyek kasebut mbp2018-jembatan-drv dipΓ©rang dadi 3 komponen utama:

  • BCE (Buffer Copy Engine) - nggawe saluran komunikasi utama karo T2. VHCI lan Audio mbutuhake komponen iki.
  • VHCI punika USB Virtual Host Controller; keyboard, mouse lan komponen sistem liyane diwenehake dening komponen iki (pembalap liyane nggunakake controller inang iki kanggo nyedhiyani fungsi liyane.
  • Audio - driver kanggo antarmuka audio T2, saiki mung ndhukung output audio liwat speaker dibangun ing MacBook


Proyek kapindho diarani macbook12-spi-driver, lan ngetrapake kemampuan kanggo ngoperasikake driver input kanggo keyboard, trackpad SPI, lan bar demek kanggo MacBook Pro Pungkasan 2016 lan mengko. Sawetara driver keyboard/trackpad saiki kalebu ing kernel, diwiwiti karo versi 5.3.

Dhukungan kanggo piranti kayata wi-fi, touchpad, lsp uga dileksanakake nggunakake patch kernel. Versi kernel saiki 5.3.5-1

Apa sing dianggo saiki

  1. NVMe
  2. Keyboard
  3. USB-C (Thunderbolt durung dites; nalika modul dimuat kanthi otomatis, sistem bakal beku)
  4. Bar demek (kanthi kemampuan kanggo nguripake tombol Fn, lampu latar, ESC, lsp.)
  5. Swara (mung speaker internal)
  6. Modul Wi-Fi (liwat brcmfmac lan mung liwat iw)
  7. DisplayPort liwat USB-C
  8. Sensor
  9. Nundha / Resume (sebagian)
  10. lsp.

Tutorial iki ditrapake kanggo macbookpro15,1 lan macbookpro15,2. Artikel kasebut dijupuk minangka basis saka Github ing basa Inggris. saka kene. Ora kabeh ing artikel iki bisa digunakake, mula aku kudu golek solusi dhewe.

Apa sampeyan kudu nginstal

  • Adaptor docking USB-C menyang USB (paling ora telung input USB kanggo nyambungake mouse, keyboard, modem USB utawa telpon ing mode tethering). Iki mung perlu nalika tahap wiwitan instalasi
  • keyboard USB
  • USB/USB-C flash drive minimal 4GB

1. Pateni larangan ing boot saka media external

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

2. Alokasi ruang kosong nggunakake Utilitas Disk

Kanggo penak, aku langsung nyedhiyakake 30GB menyang disk, ngowahi format ing exfat ing Disk Utility dhewe. Pemisahan Utilitas Disk Disk Fisik.

3. Nggawe gambar ISO

Pilihan:

  1. Sampeyan bisa pindhah rute prasaja lan download gambar siap-digawe karo kernel 5.3.5-1 lan patch saka awali1 link menyang gambar rampung
  2. Gawe gambar dhewe liwat archlive (sistem karo distribusi Archa dibutuhake)

    Instal archiso

    pacman -S archiso

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

    Tambah repositori menyang pacman.conf:

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

    Kita nglirwakake kernel asli ing pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Tambah paket sing dibutuhake, ing pungkasan nambah kernel linux-mbp lan linux-mbp-header

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

    Kita ngganti skrip supaya bisa digunakake ing mode interaktif (ganti pacstrap -C karo 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!"
    }

    Nggawe gambar:

    sudo ./build.sh -v

    Pencet Y kanggo ngliwati paket sing ora digatekake, banjur tulis gambar iso menyang flash drive USB:

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

4. Boot pisanan

Urip maneh karo flash drive lan keyboard dipasang. Pencet pilihan nalika apel katon, pilih EFI BOOT.

Sabanjure, sampeyan kudu mencet tombol "e" lan ketik ing mburi baris printah module_blacklist=thunderbolt. Yen iki ora rampung, sistem bisa uga ora boot lan Thunderbolt ICM Error bakal katon.

Nggunakake fdisk / cfdisk kita nemokake partisi kita (kanggo kula iku nvme0n1p4), format lan nginstal arsip. Sampeyan bisa nggunakake instruksi resmi utawa miring.

Kita ora nggawe partisi boot; kita bakal nulis bootloader ing /dev/nvme0n1p1
Sawise lingkungan ing / mnt rampung kawangun lan sadurunge pindhah menyang arch-chroot, nulis:

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

Tambah menyang /etc/pacman.conf:


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

Instal kernel:


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

Kita ndhaptar thunderbolt lan applesmc ing /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Papan tombol, demek, lsp

Instal yay:


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

Nginstal modul supaya bar demek bisa digunakake:


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

Tambah modul kanggo wiwitan: /etc/modules-load.d/apple.conf

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

Nginstal modul kernel kanggo keyboard. Ing repositori taunali1 ana paket siap, jenenge apple-bce-dkms-git. Kanggo nginstal, tulis ing console:

pacman -S apple-bce-dkms-git

Ing kasus iki, modul kernel bakal diarani apel-bce. Ing kasus kumpul dhewe, diarani ecb. Patut, yen sampeyan pengin ndhaftar modul ing bagean MODUL saka file mkinincpio.conf, banjur aja lali modul sing diinstal.

Ngrakit 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

Tambah modul bce utawa apple-bce kanggo miwiti: /etc/modules-load.d/bce.conf

bce

Yen sampeyan pengin nggunakake tombol Fn minangka standar, banjur tulis ing file /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Nganyari kernel lan initramfs.


mkinitcpio -p linux-mbp

Instal iwd:

sudo pacman -S networkmanager iwd

5. Pengisi

Sawise kabeh paket utama diinstal ing chroot, sampeyan bisa miwiti nginstal bootloader.

Aku wis ora bisa njaluk grub kanggo karya. Grub boots saka USB drive external, nanging nalika sampeyan nyoba kanggo ndhaftar ing nvme liwat

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

sistem dadi gupuh kernel, lan sawise rebooting item anyar liwat opsi ora katon. Aku ora nemokake solusi sing jelas kanggo masalah iki lan mulane mutusake nyoba ngleksanakake booting nggunakake systemd-boot.

  1. Bukak
    bootctl --path=/boot install

    lan kita dadi gupuh kernel. Pateni MacBook, urip maneh, klik opsi (aja mateni hub USB-C karo keyboard)

  2. Kita priksa manawa entri EFI BOOT anyar wis katon saliyane piranti eksternal
  3. Kita milih boot saka drive USB eksternal, kaya nalika instalasi pisanan (aja lali kanggo nemtokake module_blacklist=thunderbolt)
  4. Kita pasang disk lan pindhah menyang lingkungan liwat arch-chroot


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

Yen perlu kanggo keyboard bisa digunakake nganti sistem diisi kanthi lengkap (iki perlu nalika nggunakake enkripsi luks/dm-crypt), banjur tulis ing file /etc/mkinicpio.conf ing bagean MODUL:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Nganyari kernel lan initramfs.


mkinicpio -p linux-mbp

Nggawe systemd-boot

Kita ngowahi file /boot/loader/loader.conf, mbusak kabeh sing ana ing njero, lan nambah ing ngisor iki:

default arch
timeout 5
editor 1

Pindhah menyang folder /boot/loader/entri, gawe file arch.conf banjur tulis:

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

Yen sampeyan nggunakake luks lan lvm, banjur

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

Urip maneh menyang MacOS.

6. Persiyapan Wi-Fi

Ing pungkasan, MacOS nyimpen file perangkat kukuh kanggo adaptor wi-fi ing folder kasebut /usr/share/firmware/wifi , lan sampeyan bisa njupuk saka ing kono ing wangun blobs lan feed menyang modul kernel brcmfmac. Kanggo ngerteni file sing digunakake adaptor sampeyan, bukak terminal ing MacOS banjur tulis:

ioreg -l | grep C-4364

We njaluk dhaftar dawa. Kita mung butuh file saka bagean kasebut 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>"})

Ing kasus sampeyan, jeneng file bisa beda-beda. Salin saka folder /usr/share/firmware/wifi menyang flash drive banjur ganti jeneng kaya ing ngisor iki:

    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>

Ing kasus iki, file teks pungkasan ngemot jeneng model; yen model sampeyan dudu macbookpro15,2, sampeyan kudu ngganti jeneng file iki miturut model MacBook sampeyan.

Urip maneh menyang Arch.

Nyalin file saka flash drive menyang 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/

Priksa fungsi modul:


rmmod brcmfmac
modprobe brcmfmac

Kita priksa manawa antarmuka jaringan katon liwat ifconfig/ip.
Nyetel wifi liwat iwctl

manungsa waΓ©. Via netctl, nmcli, lsp. Antarmuka ora bisa digunakake, mung liwat iwd.

Kita meksa NetworkManager nggunakake iwd. Kanggo nindakake iki, gawe file /etc/NetworkManager/NetworkManager.conf banjur tulis:

[device]
wifi.backend=iwd

Miwiti layanan NetworkManager


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

7. Swara

Supaya swara bisa digunakake, sampeyan kudu nginstal pulseaudio:


sudo pacman -S pulseaudio

Ngundhuh telung file:

Ayo padha mindhah:

    /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. Nundha / Resume

Saiki 16.10.2019 sampeyan kudu milih salah siji swara utawa nundha / nerusake. Kita ngenteni penulis modul bce kanggo ngrampungake fungsi kasebut.

Kanggo mbangun modul kanthi dhukungan susped/resume, sampeyan kudu nindakake ing ngisor iki:


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

Yen sampeyan nginstal modul apple-bce sing wis siyap saka gudang anuali1, mula sampeyan kudu nyopot dhisik banjur ngumpulake lan nginstal modul bce kanthi dhukungan mode suspend.

Uga, sampeyan kudu nambah modul applesmc menyang daftar ireng (yen sampeyan durung nindakake iki sadurunge) lan priksa manawa ing /boot/loader/entries/arch.conf ing baris pilihan ing pungkasan parameter ditambahake pcie_ports=compat.

Saiki, driver touchbar tabrakan nalika ngetik mode suspend, lan driver thunderbolt kadhangkala freezes sistem kanggo luwih saka 30 detik, lan kanggo sawetara menit nalika nerusake. Iki bisa didandani kanthi mbongkar modul bermasalah kanthi otomatis.

Nggawe skrip /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

Nggawe bisa dieksekusi:

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

Semono wae. AsilΓ© minangka sistem sing bisa ditindakake kanthi lengkap, kajaba sawetara nuansa kanthi penundaan / resume. Ora ana kacilakan utawa panik kernel sing diamati sajrone sawetara dina wektu aktif. Mugi ing mangsa cedhak penulis modul bce bakal rampung, lan kita bakal njaluk support lengkap kanggo nundha / resume lan swara.

Source: www.habr.com

Add a comment