Ṣiṣe MacBook Pro 2018 T2 ṣiṣẹ pẹlu ArchLinux (dualboot)

Aruwo pupọ ti wa nipa otitọ pe chirún T2 tuntun yoo jẹ ki o ṣee ṣe lati fi Linux sori ẹrọ MacBooks 2018 tuntun pẹlu ọpa ifọwọkan kan. Akoko ti kọja, ati ni opin ọdun 2019, awọn olupilẹṣẹ ẹnikẹta ṣe imuse nọmba kan ti awakọ ati awọn abulẹ kernel fun ibaraenisepo pẹlu chirún T2. Iwakọ akọkọ fun awọn awoṣe MacBook 2018 ati awọn imuse tuntun ti iṣẹ VHCI (ifọwọkan / bọtini itẹwe / ati bẹbẹ lọ isẹ), bakanna bi iṣẹ ohun.

Ise agbese na mbp2018-afara-drv pin si awọn ẹya akọkọ mẹta:

  • BCE (Buffer Copy Engine) - ṣe agbekalẹ ikanni ibaraẹnisọrọ akọkọ pẹlu T2. VHCI ati Audio nilo paati yii.
  • VHCI ni a USB foju Gbalejo Adarí; keyboard, Asin ati awọn miiran eto irinše ti wa ni pese nipa yi paati (miiran awakọ lo yi ogun oludari to a pese diẹ iṣẹ-.
  • Audio - awakọ fun wiwo ohun T2, lọwọlọwọ ṣe atilẹyin iṣelọpọ ohun nikan nipasẹ awọn agbohunsoke ti a ṣe sinu MacBook


Awọn keji ise agbese ni a npe ni MacBook12-spi-iwakọ, ati pe o ṣe imuse agbara lati ṣiṣẹ awakọ titẹ sii fun keyboard, SPI trackpad, ati bọtini ifọwọkan fun MacBook Pro Late 2016 ati nigbamii. Diẹ ninu awọn awakọ keyboard/papad wa ninu ekuro, bẹrẹ pẹlu ẹya 5.3.

Atilẹyin fun awọn ẹrọ bii wi-fi, touchpad, ati bẹbẹ lọ ni a tun ṣe imuse nipa lilo awọn abulẹ kernel. Ẹya ekuro lọwọlọwọ 5.3.5-1

Kini n ṣiṣẹ ni akoko yii

  1. NVMe
  2. Keyboard
  3. USB-C (Thunderbolt ko ti ni idanwo; nigbati module ba ti kojọpọ laifọwọyi, o di eto naa)
  4. Pẹpẹ ifọwọkan (pẹlu agbara lati tan awọn bọtini Fn, ina ẹhin, ESC, ati bẹbẹ lọ)
  5. Ohun (awọn agbọrọsọ ti a ṣe sinu nikan)
  6. module Wi-Fi (nipasẹ brcmfmac ati nipasẹ iw nikan)
  7. DisplayPort lori USB-C
  8. Awọn sensosi
  9. Daduro/Tẹ bẹrẹ (apakan)
  10. ati bẹbẹ lọ.

Ikẹkọ yii wulo fun macbookpro15,1 ati macbookpro15,2. A mu nkan naa gẹgẹbi ipilẹ lati Github ni Gẹẹsi. lati ibi. Kii ṣe gbogbo nkan ti o wa ninu nkan yii ṣiṣẹ, nitorinaa Mo ni lati wa ojutu kan funrararẹ.

Ohun ti o nilo lati fi sori ẹrọ

  • USB-C ohun ti nmu badọgba docking si USB (o kere ju awọn ifunni USB mẹta fun sisopọ asin kan, keyboard, modẹmu USB tabi foonu ni ipo sisọpọ). Eyi jẹ pataki nikan lakoko awọn ipele akọkọ ti fifi sori ẹrọ
  • USB keyboard
  • USB/USB-C filasi drive kere 4GB

1. Pa wiwọle lori booting lati ita media

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

2. Pin aaye ọfẹ nipa lilo IwUlO Disk

Fun irọrun, Mo pin 30GB lẹsẹkẹsẹ si disiki naa, n ṣe ọna kika rẹ ni exfat ni IwUlO Disk funrararẹ. Pipin IwUlO Disk Disk Ti ara.

3. Ṣẹda ISO image

Awọn aṣayan:

  1. O le lọ ọna ti o rọrun ati ṣe igbasilẹ aworan ti a ti ṣetan pẹlu ekuro 5.3.5-1 ati awọn abulẹ lati aunali1 ọna asopọ si awọn ti pari aworan
  2. Ṣẹda aworan funrararẹ nipasẹ archlive (eto kan pẹlu pinpin Archa nilo)

    Fi sori ẹrọ archiso

    pacman -S archiso

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

    Ṣafikun ibi ipamọ naa si pacman.conf:

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

    A foju kernel atilẹba ni pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Ṣafikun awọn idii pataki, ni ipari ṣafikun ekuro linux-mbp ati awọn akọle linux-mbp

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

    A paarọ iwe afọwọkọ lati ṣiṣẹ ni ipo ibaraenisepo (rọpo pacstrap -C pẹlu 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!"
    }

    Ṣiṣe aworan kan:

    sudo ./build.sh -v

    Tẹ Y lati fo awọn idii ti a ko bikita, lẹhinna kọ aworan iso si kọnputa filasi usb:

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

4. Akọkọ bata

Atunbere pẹlu kọnputa filasi ati keyboard ti a fi sii. Tẹ awọn aṣayan nigbati apple ba han, yan EFI BOOT.

Nigbamii, o nilo lati tẹ bọtini “e” ki o tẹ sii ni opin laini aṣẹ naa module_blacklist=thunderbolt. Ti eyi ko ba ṣe, eto naa le ma bata ati Aṣiṣe Thunderbolt ICM yoo han.

Lilo fdisk/cfdisk a wa ipin wa (fun mi o jẹ nvme0n1p4), ṣe ọna kika rẹ ki o fi sii pamosi naa. O le lo osise ilana tabi lẹgbẹẹ.

A ko ṣẹda ipin bata; a yoo kọ bootloader sinu /dev/nvme0n1p1
Lẹhin ti agbegbe ni / mnt ti ṣẹda patapata ati ṣaaju gbigbe si arch-chroot, kọ:

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

Ṣafikun si /etc/pacman.conf:


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

Fi kernel sori ẹrọ:


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

A forukọsilẹ thunderbolt ati applesmc ni /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Keyboard, touchbar, ati be be lo

Fi sori ẹrọ yay:


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

Fifi awọn modulu sori ẹrọ fun ọpa ifọwọkan lati ṣiṣẹ:


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

Fi awọn modulu kun si ibẹrẹ: /etc/modules-load.d/apple.conf

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

Fifi awọn modulu ekuro fun keyboard. Ninu ibi ipamọ lododun 1 package ti o ti ṣetan wa, o pe apple-bce-dkms-git. Lati fi sii, kọ sinu console:

pacman -S apple-bce-dkms-git

Ni idi eyi, module ekuro yoo pe apple-bce. Ninu ọran ti apejọ ara ẹni, o pe ecb. Nitorinaa, ti o ba fẹ forukọsilẹ module kan ni apakan MODULES ti faili mkinicpio.conf, lẹhinna maṣe gbagbe iru module ti o fi sii.

Apejọ pẹlu ọwọ:


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

Ṣafikun module bce tabi apple-bce si ibẹrẹ: /etc/modules-load.d/bce.conf

bce

Ti o ba fẹ lo awọn bọtini Fn nipasẹ aiyipada, lẹhinna kọ sinu faili /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Nmu dojuiwọn ekuro ati initramfs.


mkinitcpio -p linux-mbp

Fi sori ẹrọ iwd:

sudo pacman -S networkmanager iwd

5. Agberu

Ni kete ti gbogbo awọn idii akọkọ ti fi sori ẹrọ inu chroot, o le bẹrẹ fifi sori ẹrọ bootloader.

Emi ko ni anfani lati gba grub lati ṣiṣẹ. Grub orunkun lati ẹya ita USB drive, ṣugbọn nigbati o ba gbiyanju lati forukọsilẹ ni nvme nipasẹ

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

eto naa lọ sinu ijaaya ekuro, ati lẹhin atunbere ohun kan titun nipasẹ awọn aṣayan ko han. Emi ko rii ojutu ti o han gbangba si iṣoro yii ati nitorinaa pinnu lati gbiyanju lati ṣe imuse booting nipa lilo systemd-boot.

  1. Ifilọlẹ
    bootctl --path=/boot install

    ati awọn ti a lọ sinu ekuro ijaaya. Pa MacBook, tan-an lẹẹkansi, tẹ awọn aṣayan (maṣe pa ibudo USB-C pẹlu keyboard)

  2. A ṣayẹwo pe titẹ sii EFI BOOT tuntun ti han ni afikun si ẹrọ ita
  3. A yan lati bata lati inu kọnputa USB ita, bi lakoko fifi sori akọkọ (maṣe gbagbe lati pato module_blacklist=thunderbolt)
  4. A gbe disk wa ki o lọ sinu ayika nipasẹ arch-chroot


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

Ti o ba jẹ dandan fun keyboard lati ṣiṣẹ titi ti eto yoo fi gbejade ni kikun (eyi jẹ pataki nigba lilo luks/dm-crypt encryption), lẹhinna kọ sinu faili /etc/mkinicpio.conf ni apakan MODULES:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Nmu dojuiwọn ekuro ati initramfs.


mkinicpio -p linux-mbp

Eto eto-bata

A ṣatunkọ faili /boot/loader/loader.conf, paarẹ ohun gbogbo inu, ki o si ṣafikun atẹle naa:

default arch
timeout 5
editor 1

Lọ si folda /boot/loader/awọn titẹ sii, ṣẹda faili arch.conf ki o kọ:

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

Ti o ba lo luks ati lvm, lẹhinna

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

Tun atunbere sinu MacOS.

6. Wi-Fi setup

Bi o ti wa ni ipari, MacOS tọju awọn faili famuwia fun ohun ti nmu badọgba wi-fi ninu folda naa /usr/pin/famuwia/wifi , ati pe o le mu wọn lati ibẹ ni irisi blobs ati ifunni wọn si module ekuro brcmfmac. Lati le rii iru awọn faili ti ohun ti nmu badọgba rẹ nlo, ṣii ebute ni MacOS ki o kọ:

ioreg -l | grep C-4364

A gba a gun akojọ. A nilo awọn faili nikan lati apakan Awọn faili ti a beere:

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

Ninu ọran rẹ, awọn orukọ faili le yatọ. Daakọ wọn lati inu folda / usr / pin / famuwia / wifi si kọnputa filasi ki o fun lorukọ wọn bi atẹle:

    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>

Ni ọran yii, faili ọrọ ti o kẹhin ni awọn orukọ awoṣe; ti awoṣe rẹ ko ba jẹ macbookpro15,2, lẹhinna o nilo lati tunrukọ faili yii ni ibamu pẹlu awoṣe MacBook rẹ.

Atunbere sinu Arch.

Daakọ awọn faili lati kọnputa filasi si folda /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/

Ṣiṣayẹwo iṣẹ ṣiṣe ti module:


rmmod brcmfmac
modprobe brcmfmac

A rii daju wipe awọn nẹtiwọki ni wiwo han nipasẹ ifconfig/ip.
Ṣiṣeto wifi nipasẹ iwctl

Ifarabalẹ. Nipasẹ netctl, nmcli, ati bẹbẹ lọ. Ni wiwo ko ṣiṣẹ, nikan nipasẹ iwd.

A fi agbara mu NetworkManager lati lo iwd. Lati ṣe eyi, ṣẹda faili /etc/NetworkManager/NetworkManager.conf ki o kọ:

[device]
wifi.backend=iwd

Bẹrẹ iṣẹ NetworkManager


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

7. Ohun

Ni ibere fun ohun lati ṣiṣẹ, o nilo lati fi pulseaudio sori ẹrọ:


sudo pacman -S pulseaudio

Ṣe igbasilẹ awọn faili mẹta:

Jẹ ki a gbe wọn:

    /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. Daduro / bere

Ni akoko yii 16.10.2019 o ni lati yan boya ohun tabi daduro / bere. A n duro de onkọwe ti module bce lati pari iṣẹ ṣiṣe.

Lati kọ module kan pẹlu ifura / bẹrẹ atilẹyin, o gbọdọ ṣe atẹle naa:


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

Ti o ba fi sori ẹrọ module apple-bce ti a ti ṣetan lati ibi ipamọ anuali1, lẹhinna o gbọdọ kọkọ yọ kuro lẹhinna nikan lẹhinna ṣajọ ati fi sori ẹrọ module bce pẹlu atilẹyin ipo idaduro.

Pẹlupẹlu, o nilo lati ṣafikun module applesmc si blacklist (ti o ko ba ti ṣe eyi tẹlẹ) ati rii daju pe ni /boot/loader/entries/arch.conf ninu laini aṣayan ni ipari paramita ti wa ni afikun. pcie_ports=akopọ.

Lọwọlọwọ, awakọ ifọwọkan kọlu nigbati o nwọle ipo idaduro, ati awakọ thunderbolt nigbakan didi eto naa fun diẹ sii ju awọn aaya 30, ati fun awọn iṣẹju pupọ nigbati o bẹrẹ. Eyi le ṣe atunṣe nipasẹ sisọ awọn modulu iṣoro laifọwọyi.

Ṣẹda iwe afọwọkọ /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

Mu ki o ṣiṣẹ:

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

Iyẹn ni gbogbo fun bayi. Abajade jẹ eto iṣẹ ṣiṣe patapata, ayafi ti diẹ ninu awọn nuances pẹlu idaduro / bẹrẹ iṣẹ. Ko si awọn ipadanu tabi awọn ijaaya kernel ti a ṣe akiyesi lakoko awọn ọjọ pupọ ti akoko iṣẹ. Mo nireti pe onkọwe Bce module yoo pari ni ọjọ iwaju nitosi, ati pe a yoo gba atilẹyin ni kikun fun idaduro / bẹrẹ iṣẹ ati ohun.

orisun: www.habr.com

Fi ọrọìwòye kun