Ho etsa MacBook Pro 2018 T2 e sebetse le ArchLinux (dualboot)

Ho bile le hype e nyane mabapi le taba ea hore chip e ncha ea T2 e tla etsa hore ho se khonehe ho kenya Linux ho 2018 MacBooks e ncha e nang le touchbar. Nako e ile ea feta, 'me qetellong ea selemo sa 2019, bahlahisi ba mokha oa boraro ba ile ba kenya ts'ebetsong bakhanni ba' maloa le li-patches tsa kernel bakeng sa ho sebelisana le chip ea T2. Mokhanni ea ka sehloohong bakeng sa mehlala ea MacBook 2018 le lisebelisoa tse ncha tsa VHCI (touch / keyboard / joalo-joalo), hammoho le ts'ebetso ea molumo.

Morero mbp2018-bridge-drv e arotsoe ka likarolo tse 3 tse kholo:

  • BCE (Buffer Copy Engine) - e theha mocha o moholo oa puisano le T2. VHCI le Audio li hloka karolo ena.
  • VHCI ke USB Virtual Host Controller; keyboard, mouse le likarolo tse ling tsa tsamaiso li fanoa ke karolo ena (bakhanni ba bang ba sebelisa molaoli oa moeti ho fana ka ts'ebetso e eketsehileng.
  • Audio - mokhanni oa sebopeho sa molumo oa T2, hajoale o ts'ehetsa feela tlhahiso ea molumo ka libui tse hahelletsoeng ka har'a MacBook


Morero oa bobeli o bitsoa macbook12-spi-driver, 'me e sebelisa bokhoni ba ho sebelisa mokhanni oa ho kenya keyboard, SPI trackpad, le touchbar bakeng sa Late 2016 le MacBook Pros hamorao. Bakhanni ba bang ba keyboard / trackpad joale ba kenyellelitsoe kernel, ho qala ka mofuta oa 5.3.

Tšehetso ea lisebelisoa tse kang wi-fi, touchpad, joalo-joalo e ile ea boela ea kenngoa ts'ebetsong ka li-patches tsa kernel. Mofuta oa hona joale oa kernel 5.3.5-1

Se sebetsang hona joale

  1. NVMe
  2. Keyboard
  3. USB-C (Thunderbolt ha e so lekoe; ha module e jarolloa ka bo eona, e homisa sistimi)
  4. Touchbar (e nang le bokhoni ba ho bulela linotlolo tsa Fn, backlight, ESC, joalo-joalo)
  5. Molumo (libui tse hahelletsoeng feela)
  6. Mojule oa Wi-Fi (ka bcmfmac le feela ka iw)
  7. DisplayPort holim'a USB-C
  8. E hlahlobang
  9. Emisa/Qala hape (karolo)
  10. joalo-joalo.

Thupelo ena e sebetsa bakeng sa macbookpro15,1 le macbookpro15,2. Sengoliloeng se nkiloe e le motheo oa Github ka Senyesemane. ho tloha mona. Ha se ntho e 'ngoe le e 'ngoe e hlahang sehloohong sena e ileng ea sebetsa, kahoo ke ile ka tlameha ho iphumanela tharollo.

Seo u se hlokang ho kenya

  • Adapter ea USB-C e kenang ho USB (bonyane lisebelisoa tse tharo tsa USB bakeng sa ho hokahanya mouse, keyboard, modem ea USB kapa fono ka mokhoa oa ho kopanya). Sena se hlokahala feela nakong ea mekhahlelo ea pele ea ho kenya
  • USB keyboard
  • USB/USB-C flash drive bonyane 4GB

1. Thibela thibelo ea booting ho tsoa mecha ea litaba ea kantle

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

2. Abela sebaka sa mahala u sebelisa Disk Utility

Bakeng sa boiketlo, hang-hang ke ile ka abela 30GB ho disk, ke e hlophisa ka exfat ho Disk Utility ka boeona. Ho arola lisebelisoa tsa Physical Disk Disk.

3. Etsa setšoantšo sa ISO

Khetho:

  1. U ka tsamaea ka tsela e bonolo 'me ua khoasolla setšoantšo se entsoeng ka kernel 5.3.5-1 le li-patches tse tsoang ho. anali1 sehokelo sa setšoantšo se phethiloeng
  2. Iketsetse setšoantšo ka archlive (ho hlokahala sistimi e nang le kabo ea Archa)

    Kenya archiso

    pacman -S archiso

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

    Kenya sebaka sa polokelo ho pacman.conf:

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

    Re hlokomoloha kernel ea mantlha ho pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Kenya liphutheloana tse hlokahalang, qetellong eketsa linux-mbp kernel le linux-mbp-headers.

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

    Re fetola sengoloa hore se sebetse ka mokhoa o kopanetsoeng (fetola pacstrap -C ka 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!"
    }

    Ho etsa setšoantšo:

    sudo ./build.sh -v

    Tobetsa Y ho tlola liphutheloana tse hlokomolohuoang, ebe u ngola setšoantšo sa iso ho usb flash drive:

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

4. Bootle ba pele

Qala hape ka flash drive le keyboard e kentsoeng. Tobetsa likhetho ha apole e hlaha, khetha EFI BOOT.

Ka mor'a moo, o hloka ho tobetsa konopo ea "e" 'me u kene qetellong ea mola oa taelo module_blacklist=sealuma. Haeba sena se sa etsoa, ​​​​sistimi e kanna ea se qale mme Phoso ea Thunderbolt ICM e tla hlaha.

U sebelisa fdisk / cfdisk re fumana karohano ea rona (ho nna ke nvme0n1p4), e hlophise ebe u kenya polokelo. U ka sebelisa ditaelo tsa semmuso kapa ka mahlakoreng.

Ha re thehe karolo ea boot; re tla ngola bootloader ho eona /dev/nvme0n1p1
Kamora hore tikoloho e /mnt e thehoe ka botlalo mme pele o fallela ho arch-chroot, ngola:

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

Kenya ho /etc/pacman.conf:


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

Kenya kernel:


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

Re ngolisa sealuma le applesmc ho /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Keyboard, touchbar, joalo-joalo

Kenya yay:


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

Ho kenya li-module hore touchbar e sebetse:


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

Kenya li-module ho qala: /etc/modules-load.d/apple.conf

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

Ho kenya li-module tsa kernel bakeng sa keyboard. Sebakeng sa polokelo anuali1 ho na le sephutheloana se seng se entsoe, se bitsoa apple-bce-dkms-git. Ho e kenya, ngola ka har'a console:

pacman -S apple-bce-dkms-git

Tabeng ena, kernel module e tla bitsoa apole-bce. Tabeng ea ho iketsetsa kopano, ho bitsoa ecb. Ka hona, haeba u batla ho ngolisa mojule karolong ea MODULES ea faele ea mkinicpio.conf, u se ke ua lebala hore na u kentse mojule ofe.

Ho kopanya ka letsoho:


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

Kenya mojule oa bce kapa oa apole-bce ho qala: /etc/modules-load.d/bce.conf

bce

Haeba u batla ho sebelisa likonopo tsa Fn ka ho sa feleng, joale ngola faeleng ea /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Ho nchafatsa kernel le initramfs.


mkinitcpio -p linux-mbp

Kenya iwd:

sudo pacman -S networkmanager iwd

5. Mojari

Hang ha liphutheloana tsohle tse ka sehloohong li kenngoa ka hare ho chroot, u ka qala ho kenya bootloader.

Ha ke so khone ho fumana grub ho sebetsa. Tlosa lieta ho tsoa ho drive ea kantle ea USB, empa ha u leka ho e ngolisa ho nvme ka

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

Sistimi e ile ea tšoha kernel, mme kamora ho qala ntho e ncha ka likhetho ha ea ka ea hlaha. Ha kea fumana tharollo e hlakileng ea bothata bona mme ka hona ke nkile qeto ea ho leka ho kenya ts'ebetsong ho sebelisa systemd-boot.

  1. Qala
    bootctl --path=/boot install

    'me re kena tšabong ea kernel. Tima MacBook, e bulele hape, tobetsa likhetho (u se ke ua tima hub ea USB-C ka keyboard)

  2. Re hlahloba hore ho kenoa ha EFI BOOT e ncha ho hlahile ho phaella ho sesebelisoa sa ka ntle
  3. Re khetha ho qalisa koloi ho tloha ka ntle ho USB drive, joalo ka nakong ea kopo ea pele (u se ke ua lebala ho hlakisa module_blacklist = thunderbolt)
  4. Re kenya disk ea rona ebe re ea tikolohong ka arch-chroot


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

Haeba ho hlokahala hore keyboard e sebetse ho fihlela sisteme e kentsoe ka botlalo (sena sea hlokahala ha u sebelisa encryption ea luks/dm-crypt), joale e ngole faeleng ea /etc/mkinicpio.conf karolong ea MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Ho nchafatsa kernel le initramfs.


mkinicpio -p linux-mbp

Ho theha systemd-boot

Re fetola faele ea /boot/loader/loader.conf, re hlakola ntho e 'ngoe le e' ngoe e ka hare, ebe re eketsa tse latelang:

default arch
timeout 5
editor 1

Eya ho foldara ea /boot/loader/entries, theha faele ea arch.conf ebe u ngola:

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

Haeba u sebelisitse luks le lvm, joale

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

Qala hape ho MacOS.

6. Ho seta ha Wi-Fi

Joalokaha ho ile ha etsahala qetellong, MacOS e boloka lifaele tsa firmware bakeng sa adaptara ea wi-fi foldareng /usr/share/firmware/wifi , 'me u ka li nka ho tloha moo ka mokhoa oa li-blobs' me u li fepe ho brcmfmac kernel module. Ho tseba hore na adaptara ea hau e sebelisa lifaele life, bula terminal ho MacOS ebe u ngola:

ioreg -l | grep C-4364

Re fumana lethathamo le lelelele. Re hloka feela lifaele tse tsoang karolong 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>"})

Tabeng ea hau, mabitso a lifaele a ka fapana. Li kopitse ho tloha ho /usr/share/firmware/wifi foldareng ho ea ho flash drive ebe u li reha lebitso ka tsela e latelang:

    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>

Tabeng ena, faele ea ho qetela ea mongolo e na le mabitso a mohlala; haeba mohlala oa hau e se macbookpro15,2, joale u lokela ho reha faele ena ho latela mohlala oa hau oa MacBook.

Qala hape ho Arch.

Kopitsa lifaele ho tloha ho flash drive ho ea ho /lib/firmware/brcm/ foldareng


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/

Ho hlahloba ts'ebetso ea module:


rmmod brcmfmac
modprobe brcmfmac

Re etsa bonnete ba hore sebopeho sa marang-rang se hlaha ka ifconfig/ip.
Ho theha wifi ka iwctl

Tlhokomeliso. Ka nettl, nmcli, joalo-joalo. Sehokelo ha se sebetse, feela ka iwd.

Re qobella NetworkManager ho sebelisa iwd. Ho etsa sena, theha faele /etc/NetworkManager/NetworkManager.conf ebe u ngola:

[device]
wifi.backend=iwd

Qala tšebeletso ea NetworkManager


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

7. Molumo

E le hore molumo o sebetse, o hloka ho kenya pulseaudio:


sudo pacman -S pulseaudio

Khoasolla lifaele tse tharo:

Ha re li suthe:

    /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. Emisa / Tsoela pele

Ka nako ena 16.10.2019 u tlameha ho khetha molumo kapa ho emisa / qala hape. Re emetse hore mongoli oa mojule oa bce a phethe mosebetsi.

Ho aha mojule ka tšehetso e emisitsoeng / qala hape, o tlameha ho etsa tse latelang:


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

Haeba o kentse mojule oa apple-bce o seng o entsoe sebakeng sa polokelo ea anuali1, joale o tlameha ho o tlosa pele ebe o kopanya le ho kenya module ea bce ka ts'ehetso ea mokhoa oa ho emisa.

Hape, ho hlokahala hore u kenye module ea applesmc lethathamong le letšo (haeba ha u e-s'o etse sena pele) 'me u netefatse hore ho /boot/loader/entries/arch.conf moleng oa likhetho qetellong parameter e eketsoa. pcie_ports=compati.

Hajoale, mokhanni oa touchbar oa senyeha ha a kena ka mokhoa oa ho emisa, 'me mokhanni oa sealuma ka linako tse ling o emisa sistimi ka metsotsoana e fetang 30, le metsotso e mengata ha a qala hape. Sena se ka lokisoa ka ho laolla li-module tse nang le bothata ka bo eona.

Etsa mongolo /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

Etsa hore e phethahale:

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

Ke phetho bakeng sa jwale. Sephetho ke sistimi e sebetsang ka botlalo, ntle le li-nuances tse ling tse emisang / qala hape. Ha ho na likotsi kapa tšabo ea kernel e ileng ea bonoa matsatsing a 'maloa a nako. Ke tšepa hore haufinyane mongoli oa bce module o tla e qeta, 'me re tla fumana tšehetso e feletseng ea ho emisa / resume le molumo.

Source: www.habr.com

Eketsa ka tlhaloso