Gwneud i MacBook Pro 2018 T2 weithio gydag ArchLinux (dualboot)

Bu cryn dipyn o hype ynghylch y ffaith y bydd y sglodyn T2 newydd yn ei gwneud hi'n amhosibl gosod Linux ar y MacBooks 2018 newydd gyda bar cyffwrdd. Aeth amser heibio, ac ar ddiwedd 2019, gweithredodd datblygwyr trydydd parti nifer o yrwyr a chlytiau cnewyllyn ar gyfer rhyngweithio â'r sglodyn T2. Mae'r prif yrrwr ar gyfer modelau MacBook 2018 a mwy newydd yn gweithredu gweithrediad VHCI (gweithrediad cyffwrdd/bysellfwrdd/etc.), yn ogystal â gweithrediad cadarn.

Prosiect mbp2018-bont-drv wedi'i rannu'n 3 prif gydran:

  • BCE (Injan Copi Clustogi) - yn sefydlu'r brif sianel gyfathrebu gyda T2. Mae angen y gydran hon ar VHCI a Sain.
  • Mae VHCI yn Rheolwr Gwesteiwr Rhithwir USB; darperir y bysellfwrdd, llygoden a chydrannau system eraill gan y gydran hon (mae gyrwyr eraill yn defnyddio'r rheolydd gwesteiwr hwn i ddarparu mwy o ymarferoldeb.
  • Sain - gyrrwr ar gyfer y rhyngwyneb sain T2, ar hyn o bryd dim ond yn cefnogi allbwn sain trwy siaradwyr adeiledig y MacBook


Gelwir yr ail brosiect macbook12-spi-gyrrwr, ac mae'n gweithredu'r gallu i weithredu gyrrwr mewnbwn ar gyfer y bysellfwrdd, trackpad SPI, a bar cyffwrdd ar gyfer 2016 hwyr ac yn ddiweddarach MacBook Pros. Mae rhai gyrwyr bysellfwrdd / trackpad bellach wedi'u cynnwys yn y cnewyllyn, gan ddechrau gyda fersiwn 5.3.

Gweithredwyd cefnogaeth ar gyfer dyfeisiau fel wi-fi, touchpad, ac ati hefyd gan ddefnyddio clytiau cnewyllyn. Fersiwn cnewyllyn cyfredol 5.3.5-1

Beth sy'n gweithio ar hyn o bryd

  1. NVMe
  2. bysellfwrdd
  3. USB-C (Nid yw Thunderbolt wedi'i brofi; pan fydd y modiwl yn cael ei lwytho'n awtomatig, mae'n rhewi'r system)
  4. Bar Cyffwrdd (gyda'r gallu i droi'r bysellau Fn ymlaen, backlight, ESC, ac ati)
  5. Sain (siaradwyr adeiledig yn unig)
  6. Modiwl Wi-Fi (trwy brcmfmac a dim ond trwy iw)
  7. DisplayPort dros USB-C
  8. Synwyryddion
  9. Atal/Ailgychwyn (yn rhannol)
  10. ac ati ..

Mae'r tiwtorial hwn yn berthnasol ar gyfer macbookpro15,1 a macbookpro15,2. Cymerwyd yr erthygl fel sail o Github yn Saesneg. felly. Nid oedd popeth yn yr erthygl hon yn gweithio, felly roedd yn rhaid i mi ddod o hyd i ateb fy hun.

Beth sydd angen i chi ei osod

  • Addasydd tocio USB-C i USB (o leiaf dri mewnbwn USB ar gyfer cysylltu llygoden, bysellfwrdd, modem USB neu ffôn yn y modd clymu). Dim ond yn ystod camau cyntaf y gosodiad y mae hyn yn angenrheidiol
  • Bysellfwrdd USB
  • Gyriant fflach USB/USB-C o leiaf 4GB

1. Analluoga'r gwaharddiad ar booting o gyfryngau allanol

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

2. Neilltuo lle am ddim gan ddefnyddio Disk Utility

Er hwylustod, dyrannais 30GB i'r ddisg ar unwaith, gan ei fformatio mewn exfat yn Disk Utility ei hun. Rhannu Cyfleustodau Disg Corfforol.

3. Creu delwedd ISO

Opsiynau:

  1. Gallwch chi fynd y llwybr syml a lawrlwytho delwedd barod gyda chnewyllyn 5.3.5-1 a chlytiau o aunali1 dolen i'r ddelwedd orffenedig
  2. Creu delwedd eich hun trwy archlive (mae angen system gyda dosbarthiad Archa)

    Gosod archiso

    pacman -S archiso

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

    Ychwanegu'r ystorfa i pacman.conf:

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

    Rydym yn anwybyddu'r cnewyllyn gwreiddiol yn pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Ychwanegwch y pecynnau angenrheidiol, ar y diwedd ychwanegwch y cnewyllyn linux-mbp a linux-mbp-headers

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

    Rydym yn newid y sgript i weithio yn y modd rhyngweithiol (yn lle pacstrap -C gyda 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!"
    }

    Ffurfio delwedd:

    sudo ./build.sh -v

    Pwyswch Y i hepgor pecynnau wedi'u hanwybyddu, yna ysgrifennwch y ddelwedd iso i'r gyriant fflach usb:

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

4. Cist cyntaf

Ailgychwyn gyda'r gyriant fflach a'r bysellfwrdd wedi'u mewnosod. Pwyswch opsiynau pan fydd yr afal yn ymddangos, dewiswch EFI BOOT.

Nesaf, mae angen i chi wasgu'r allwedd “e” a nodi ar ddiwedd y llinell orchymyn module_blacklist=follt taranau. Os na wneir hyn, efallai na fydd y system yn cychwyn a bydd Gwall ICM Thunderbolt yn ymddangos.

Gan ddefnyddio fdisk/cfdisk rydym yn dod o hyd i'n rhaniad (i mi nvme0n1p4 ydyw), ei fformatio a gosod yr archif. Gallwch ddefnyddio cyfarwyddiadau swyddogol neu ochr.

Nid ydym yn creu rhaniad cychwyn; byddwn yn ysgrifennu'r cychwynnydd i mewn /dev/nvme0n1p1
Ar ôl i'r amgylchedd yn /mnt gael ei ffurfio'n llwyr a chyn symud i arch-chroot, ysgrifennwch:

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

Ychwanegu at /etc/pacman.conf:


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

Gosodwch y cnewyllyn:


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

Rydym yn cofrestru taranfollt ac applesmc yn /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Bysellfwrdd, bar cyffwrdd, ac ati

Gosod yay:


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

Gosod modiwlau i'r bar cyffwrdd weithio:


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

Ychwanegu modiwlau i gychwyn: /etc/modules-load.d/apple.conf

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

Gosod modiwlau cnewyllyn ar gyfer y bysellfwrdd. Yn yr ystorfa anuali1 mae pecyn parod, fe'i gelwir afal-bce-dkms-git. I'w osod, ysgrifennwch yn y consol:

pacman -S apple-bce-dkms-git

Yn yr achos hwn, bydd y modiwl cnewyllyn yn cael ei alw afal-bce. Yn achos hunan-gynulliad, fe'i gelwir CC. Yn unol â hynny, os ydych chi am gofrestru modiwl yn adran MODULES y ffeil mkinicpio.conf, yna peidiwch ag anghofio pa fodiwl a osodwyd gennych.

Cydosod â llaw:


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

Ychwanegwch y modiwl bce neu apple-bce i gychwyn: /etc/modules-load.d/bce.conf

bce

Os ydych chi am ddefnyddio'r botymau Fn yn ddiofyn, yna ysgrifennwch yn y ffeil /etc/modprobe.d/apple-tb.conf:

options apple-ib-tb fnmode=2

Diweddaru'r cnewyllyn a'r initramfs.


mkinitcpio -p linux-mbp

Gosod iwd:

sudo pacman -S networkmanager iwd

5. Llwythwr

Unwaith y bydd yr holl brif becynnau wedi'u gosod y tu mewn i'r chroot, gallwch chi ddechrau gosod y cychwynnwr.

Dydw i ddim wedi gallu cael grub i weithio. Grub boots o yriant USB allanol, ond pan fyddwch yn ceisio ei gofrestru yn nvme drwy

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

aeth y system i banig cnewyllyn, ac ar ôl ailgychwyn eitem newydd trwy opsiynau nid oedd yn ymddangos. Ni ddaethpwyd o hyd i unrhyw ateb clir i'r broblem hon ac felly penderfynais geisio gweithredu cychwyn gan ddefnyddio systemd-boot.

  1. Lansio
    bootctl --path=/boot install

    ac awn i mewn i banig cnewyllyn. Diffoddwch y MacBook, trowch ef ymlaen eto, cliciwch ar opsiynau (peidiwch â diffodd y canolbwynt USB-C gyda bysellfwrdd)

  2. Rydym yn gwirio bod cofnod BOOT EFI newydd wedi ymddangos yn ychwanegol at y ddyfais allanol
  3. Rydyn ni'n dewis cychwyn o yriant USB allanol, fel yn ystod y gosodiad cyntaf (peidiwch ag anghofio nodi module_blacklist = thunderbolt)
  4. Rydyn ni'n gosod ein disg ac yn mynd i'r amgylchedd trwy arch-chroot


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

Os oes angen i'r bysellfwrdd weithio nes bod y system wedi'i llwytho'n llawn (mae hyn yn angenrheidiol wrth ddefnyddio amgryptio luks/dm-crypt), yna ysgrifennwch ef yn y ffeil /etc/mkinicpio.conf yn yr adran MODIWLAU:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Diweddaru'r cnewyllyn a'r initramfs.


mkinicpio -p linux-mbp

Sefydlu systemd-boot

Rydym yn golygu'r ffeil /boot/loader/loader.conf, yn dileu popeth y tu mewn, ac yn ychwanegu'r canlynol:

default arch
timeout 5
editor 1

Ewch i'r ffolder /boot/loader/entries, creu'r ffeil arch.conf ac ysgrifennu:

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

Os oeddech chi'n defnyddio luks a lvm, yna

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

Ailgychwyn i MacOS.

6. Gosodiad Wi-Fi

Fel y digwyddodd yn y diwedd, mae MacOS yn storio'r ffeiliau firmware ar gyfer yr addasydd wi-fi yn y ffolder /usr/rhannu/cadarnwedd/wifi , a gallwch eu cymryd oddi yno ar ffurf smotiau a'u bwydo i'r modiwl cnewyllyn brcmfmac. Er mwyn darganfod pa ffeiliau y mae eich addasydd yn eu defnyddio, agorwch derfynell yn MacOS ac ysgrifennwch:

ioreg -l | grep C-4364

Cawn restr hir. Dim ond ffeiliau o'r adran sydd eu hangen arnom Ffeiliau Cais:

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

Yn eich achos chi, gall enwau'r ffeiliau fod yn wahanol. Copïwch nhw o'r ffolder /usr/share/firmware/wifi i'r gyriant fflach a'u hail-enwi fel a ganlyn:

    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>

Yn yr achos hwn, mae'r ffeil testun olaf yn cynnwys enwau'r model; os nad macbookpro15,2 yw'ch model, yna mae angen i chi ailenwi'r ffeil hon yn unol â'ch model MacBook.

Ailgychwyn i Arch.

Copïwch y ffeiliau o'r gyriant fflach i'r ffolder /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/

Gwirio ymarferoldeb y modiwl:


rmmod brcmfmac
modprobe brcmfmac

Rydym yn sicrhau bod y rhyngwyneb rhwydwaith yn ymddangos trwy ifconfig/ip.
Sefydlu wifi trwy iwctl

Sylw. Trwy netctl, nmcli, ac ati. Nid yw'r rhyngwyneb yn gweithio, dim ond trwy iwd.

Rydym yn gorfodi NetworkManager i ddefnyddio iwd. I wneud hyn, crëwch y ffeil /etc/NetworkManager/NetworkManager.conf ac ysgrifennwch:

[device]
wifi.backend=iwd

Dechreuwch y gwasanaeth NetworkManager


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

7. Sain

Er mwyn i'r sain weithio, mae angen i chi osod pulseaudio:


sudo pacman -S pulseaudio

Lawrlwythwch tair ffeil:

Gadewch i ni eu symud:

    /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.Atal/Ailgychwyn

Ar hyn o bryd 16.10.2019 rhaid i chi ddewis naill ai sain neu atal/ailddechrau. Rydym yn aros i awdur y modiwl bce gwblhau'r swyddogaeth.

I adeiladu modiwl gyda chefnogaeth amheus/ailddechrau, rhaid i chi wneud y canlynol:


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

Os gwnaethoch chi osod y modiwl apple-bce parod o'r ystorfa anuali1, yna mae'n rhaid i chi ei dynnu'n gyntaf a dim ond wedyn cydosod a gosod y modiwl bce gyda chefnogaeth modd atal.

Hefyd, mae angen i chi ychwanegu'r modiwl applesmc at y rhestr ddu (os nad ydych wedi gwneud hyn o'r blaen) a gwnewch yn siŵr bod y paramedr yn cael ei ychwanegu yn /boot/loader/entries/arch.conf yn y llinell opsiynau ar y diwedd pcie_ports = compat.

Ar hyn o bryd, mae gyrrwr y bar cyffwrdd yn damwain wrth fynd i mewn i'r modd atal, ac mae'r gyrrwr taranfollt weithiau'n rhewi'r system am fwy na 30 eiliad, ac am sawl munud wrth ailddechrau. Gellir trwsio hyn trwy ddadlwytho modiwlau problemus yn awtomatig.

Creu sgript /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

Ei wneud yn weithredadwy:

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

Dyna i gyd am y tro. Y canlyniad yw system gwbl ymarferol, ac eithrio rhai arlliwiau gydag ataliad / ailddechrau. Ni welwyd unrhyw ddamweiniau na phanig cnewyllyn yn ystod sawl diwrnod o uptime. Gobeithiaf yn y dyfodol agos y bydd awdur y modiwl bce yn ei orffen, ac y cawn gefnogaeth lawn i atal/ailddechrau a sain.

Ffynhonnell: hab.com

Ychwanegu sylw