Ua MacBook Pro 2018 T2 ua haujlwm nrog ArchLinux (dualboot)

Tau muaj me ntsis ntawm hype txog qhov tseeb tias T2 nti tshiab yuav ua rau nws tsis yooj yim sua rau nruab Linux ntawm 2018 MacBooks tshiab nrog touchbar. Lub sijhawm dhau mus, thiab thaum kawg ntawm 2019, cov neeg tsim tawm thib peb tau siv ntau tus neeg tsav tsheb thiab cov tshuaj ntsiav rau kev cuam tshuam nrog T2 nti. Tus tsav tsheb tseem ceeb rau MacBook qauv 2018 thiab tshiab dua siv VHCI kev ua haujlwm (kov / keyboard / thiab lwm yam haujlwm), nrog rau kev ua haujlwm suab.

Qhov project mbp2018-bridge-drv muab faib ua 3 yam tseem ceeb:

  • BCE (Buffer Copy Engine) - tsim kev sib txuas lus tseem ceeb nrog T2. VHCI thiab Suab xav tau cov khoom no.
  • VHCI yog USB Virtual Host Controller; cov keyboard, nas thiab lwm yam khoom siv yog muab los ntawm cov khoom siv no (lwm tus tsav tsheb siv tus tswj hwm no los muab kev ua haujlwm ntau dua.
  • Suab - tus neeg tsav tsheb rau T2 lub interface, tam sim no tsuas yog txhawb lub suab tso tawm los ntawm MacBook tus neeg hais lus built-in


Qhov project thib ob hu ua macbook12-spi-driver, thiab nws siv lub peev xwm los ua tus tsav tsheb nkag rau cov keyboard, SPI trackpad, thiab touchbar rau MacBook Pro lig 2016 thiab tom qab. Qee cov keyboard / trackpad tsav tsheb tam sim no suav nrog hauv cov ntsiav, pib nrog version 5.3.

Kev them nyiaj yug rau cov khoom siv xws li wi-fi, touchpad, thiab lwm yam kuj tau siv los siv cov tshuaj pleev ib ce. Tam sim no kernel version 5.3.5-1

Dab tsi ua haujlwm tam sim no

  1. NVMe
  2. Keyboard
  3. USB-C (Thunderbolt tsis tau sim; thaum lub module yog loaded txiav, nws freezes lub system)
  4. Touchbar (nrog lub peev xwm los qhib Fn yuam sij, backlight, ESC, thiab lwm yam)
  5. Suab (built-in hais lus nkaus xwb)
  6. Wi-Fi module (ntawm brcmfmac thiab tsuas yog ntawm iw)
  7. DisplayPort dhau USB-C
  8. Cov Ntsuas
  9. Suspend/Resume (ib nrab)
  10. thiab lwm yam ..

Qhov kev qhia no siv tau rau macbookpro15,1 thiab macbookpro15,2. Cov kab lus raug coj los ua ib qho hauv paus los ntawm Github ua lus Askiv. ntawm no. Tsis yog txhua yam hauv kab lus no ua haujlwm, yog li kuv yuav tsum nrhiav kev daws teeb meem rau kuv tus kheej.

Yam koj xav tau rau nruab

  • USB-C docking adapter rau USB (tsawg kawg yog peb USB inputs rau txuas tus nas, keyboard, USB modem lossis xov tooj hauv tethering hom). Qhov no tsuas yog tsim nyog thaum thawj theem ntawm kev teeb tsa
  • USB keyboard
  • USB/USB-C flash drive yam tsawg kawg 4GB

1. Disable qhov txwv tsis pub khau raj los ntawm cov xov xwm sab nraud

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

2. Muab qhov chaw pub dawb siv Disk Utility

Txhawm rau kom yooj yim, kuv tau faib 30GB tam sim rau lub disk, formatting nws hauv exfat hauv Disk Utility nws tus kheej. Partitioning ib tug Physical Disk Disk Utility.

3. Tsim ib daim duab ISO

Xaiv:

  1. Koj tuaj yeem mus rau txoj hauv kev yooj yim thiab rub tawm cov duab npaj txhij nrog ntsiav 5.3.5-1 thiab thaj ua rau thaj los ntawm aunli 1 txuas rau daim duab tiav
  2. Tsim ib daim duab koj tus kheej ntawm archlive (qhov system nrog Archa faib yuav tsum tau)

    Nruab archiso

    pacman -S archiso

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

    Ntxiv lub repository rau pacman.conf:

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

    Peb tsis quav ntsej tus thawj kernel hauv pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Ntxiv cov pob khoom tsim nyog, thaum kawg ntxiv linux-mbp kernel thiab linux-mbp-headers

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

    Peb hloov tsab ntawv los ua haujlwm hauv kev sib tham sib (hloov pacstrap -C nrog 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!"
    }

    Tsim ib daim duab:

    sudo ./build.sh -v

    Nias Y kom hla cov pob uas tsis quav ntsej, tom qab ntawd sau cov duab iso rau USB flash drive:

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

4. Thawj khau raj

Reboot nrog lub flash drive thiab keyboard tso. Nias cov kev xaiv thaum lub kua tshwm, xaiv EFI BOOT.

Tom ntej no, koj yuav tsum nias tus yuam sij "e" thiab nkag mus rau qhov kawg ntawm kab hais kom ua module_blacklist=thunderbolt. Yog tias qhov no tsis ua tiav, lub kaw lus yuav tsis khau raj thiab Thunderbolt ICM yuam kev yuav tshwm sim.

Siv fdisk/cfdisk peb pom peb muab faib (rau kuv nws yog nvme0n1p4), format nws thiab nruab cov archive. Koj siv tau lus qhia los yog sab xis.

Peb tsis tau tsim ib qho kev faib khau raj; peb yuav sau tus bootloader hauv /dev/nvme0n1p1
Tom qab ib puag ncig hauv / mnt tau tsim tiav thiab ua ntej tsiv mus rau arch-chroot, sau:

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

Ntxiv rau /etc/pacman.conf:


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

Nruab lub kernel:


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

Peb sau npe thunderbolt thiab applesmc hauv /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Keyboard, touchbar, thiab lwm yam

Install yaj:


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

Txhim kho modules rau lub touchbar ua haujlwm:


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

Ntxiv cov modules rau kev pib: /etc/modules-load.d/apple.conf

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

Txhim kho kernel modules rau cov keyboard. Nyob rau hauv lub repository anuali 1 muaj ib pob npaj txhij, nws hu ua apple-bce-dkms-git. Txhawm rau nruab nws, sau rau hauv console:

pacman -S apple-bce-dkms-git

Hauv qhov no, lub kernel module yuav raug hu apple-bce ua. Nyob rau hauv cov ntaub ntawv ntawm tus kheej-assembly, nws yog hu ua bce ua. Raws li, yog tias koj xav sau npe rau ib qho module hauv ntu MODULES ntawm mkinicpio.conf cov ntaub ntawv, ces tsis txhob hnov ​​​​qab qhov module koj tau nruab.

Phau ntawv sib dhos:


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

Ntxiv bce lossis apple-bce module rau kev pib: /etc/modules-load.d/bce.conf

bce

Yog tias koj xav siv Fn nyees khawm los ntawm lub neej ntawd, ces sau rau hauv /etc/modprobe.d/apple-tb.conf file:

options apple-ib-tb fnmode=2

Hloov kho cov kernel thiab initramfs.


mkinitcpio -p linux-mbp

Install iwd:

sudo pacman -S networkmanager iwd

5. Loader

Thaum tag nrho cov pob tseem ceeb tau teeb tsa hauv chroot, koj tuaj yeem pib txhim kho lub bootloader.

Kuv tsis muaj peev xwm ua tau grub mus ua haujlwm. Grub khau looj plab hlaub los ntawm lwm lub USB tsav, tab sis thaum koj sim sau npe rau hauv nvme ntawm

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

lub kaw lus nkag mus rau hauv ntsiav tshuaj ceeb, thiab tom qab rebooting ib yam khoom tshiab los ntawm kev xaiv tsis tshwm sim. Kuv tsis pom qhov kev daws teeb meem meej rau qhov teeb meem no thiab yog li txiav txim siab los sim ua kom siv booting siv systemd-boot.

  1. Tua tawm
    bootctl --path=/boot install

    thiab peb mus rau hauv kernel ceeb. Tua lub MacBook, tig nws dua, nyem xaiv (tsis txhob tua USB-C hub nrog keyboard)

  2. Peb xyuas tias EFI BOOT nkag tshiab tau tshwm sim ntxiv rau cov khoom siv sab nraud
  3. Peb xaiv khau raj los ntawm ib qho USB drive sab nraud, xws li thaum lub sij hawm thawj installation (tsis txhob hnov ​​​​qab qhia module_blacklist = thunderbolt)
  4. Peb mount peb disk thiab mus rau hauv ib puag ncig ntawm arch-chroot


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

Yog tias nws tsim nyog rau cov keyboard ua haujlwm kom txog thaum lub kaw lus puv tag (qhov no yog qhov tsim nyog thaum siv luks / dm-crypt encryption), ces sau nws hauv /etc/mkinicpio.conf cov ntaub ntawv hauv ntu MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Hloov kho cov kernel thiab initramfs.


mkinicpio -p linux-mbp

Kev teeb tsa systemd-boot

Peb hloov kho cov ntaub ntawv /boot/loader/loader.conf, rho tawm txhua yam hauv, thiab ntxiv cov hauv qab no:

default arch
timeout 5
editor 1

Mus rau /boot/loader/entries folder, tsim cov ntaub ntawv arch.conf thiab sau:

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

Yog tias koj siv luks thiab lvm, ces

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

Reboot rau MacOS.

6. Kev teeb tsa Wi-Fi

Raws li nws tau muab tawm thaum kawg, MacOS khaws cov ntaub ntawv firmware rau wi-fi adapter hauv daim nplaub tshev /usr/share/firmware/wifi , thiab koj tuaj yeem nqa lawv los ntawm qhov ntawd hauv daim ntawv ntawm blobs thiab pub rau brcmfmac kernel module. Txhawm rau kom paub seb cov ntaub ntawv twg koj lub adapter siv, qhib lub davhlau ya nyob twg hauv MacOS thiab sau:

ioreg -l | grep C-4364

Peb tau txais daim ntawv teev npe ntev. Peb tsuas xav tau cov ntaub ntawv los ntawm ntu Thov Files:

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

Hauv koj cov ntaub ntawv, cov npe ntawm cov ntaub ntawv yuav txawv. Luam lawv los ntawm /usr/share/firmware/wifi folder rau flash drive thiab rename lawv raws li hauv qab no:

    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>

Hauv qhov no, cov ntawv sau kawg muaj cov npe qauv; yog tias koj tus qauv tsis yog macbookpro15,2, ces koj yuav tsum hloov npe cov ntaub ntawv no raws li koj tus qauv MacBook.

Reboot rau hauv Arch.

Luam cov ntaub ntawv los ntawm flash drive mus rau /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/

Txheeb xyuas qhov ua haujlwm ntawm lub module:


rmmod brcmfmac
modprobe brcmfmac

Peb xyuas kom meej tias lub network interface tshwm los ntawm ifconfig/ip.
Kev teeb tsa wifi ntawm iwctl ua

Nco ntsoov. Ntawm netctl, nmcli, thiab lwm yam. Lub interface tsis ua haujlwm, tsuas yog los ntawm iwd.

Peb yuam NetworkManager siv iwd. Ua li no, tsim cov ntaub ntawv /etc/NetworkManager/NetworkManager.conf thiab sau:

[device]
wifi.backend=iwd

Pib qhov kev pabcuam NetworkManager


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

7. Suab

Txhawm rau kom lub suab ua haujlwm, koj yuav tsum nruab pulseaudio:


sudo pacman -S pulseaudio

Download tau peb cov ntaub ntawv:

Cia peb txav lawv:

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

Lub sijhawm no 16.10.2019 koj yuav tsum xaiv lub suab lossis ncua / rov pib dua. Peb tab tom tos tus sau bce module kom ua tiav cov haujlwm.

Txhawm rau tsim ib qho module nrog kev txhawb nqa / rov pib dua, koj yuav tsum ua cov hauv qab no:


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

Yog tias koj tau nruab qhov npaj ua kua-bce module los ntawm anuali1 repository, tom qab ntawd koj yuav tsum xub tshem nws thiab tsuas yog tom qab ntawd sib sau ua ke thiab nruab bce module nrog ncua kev txhawb nqa.

Tsis tas li, koj yuav tsum ntxiv cov applesmc module rau hauv daim ntawv teev npe dub (yog tias koj tsis tau ua qhov no ua ntej) thiab xyuas kom meej tias hauv /boot/loader/entries/arch.conf hauv cov kev xaiv kab ntawm qhov kawg qhov parameter ntxiv. pcie_ports= sib.

Tam sim no, tus tsav tsheb touchbar tsoo thaum nkag mus rau hom kev ncua, thiab tus tsav tsheb thunderbolt qee zaum khov lub kaw lus rau ntau tshaj 30 vib nas this, thiab rau ob peb feeb thaum rov pib dua. Qhov no tuaj yeem kho tau los ntawm kev rho tawm cov teeb meem teeb meem.

Tsim ib tsab ntawv /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

Ua kom nws executable:

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

Qhov ntawd yog tag nrho rau tam sim no. Qhov tshwm sim yog qhov ua haujlwm tau zoo, tshwj tsis yog qee qhov nuances nrog ncua / rov pib dua. Tsis muaj kev sib tsoo lossis kev ceeb ntshai tshwm sim thaum ob peb hnub ntawm kev ua haujlwm. Kuv vam tias yav tom ntej no tus sau ntawm bce module yuav ua tiav nws, thiab peb yuav tau txais kev txhawb nqa tag nrho rau kev ncua / rov pib dua thiab suab.

Tau qhov twg los: www.hab.com

Ntxiv ib saib