Laat MacBook Pro 2018 T2 werk met ArchLinux (dualboot)

Daar was nogal 'n ophef oor die feit dat die nuwe T2-skyfie dit onmoontlik sal maak om Linux op die nuwe 2018 MacBooks met 'n raakbalk te installeer. Tyd het verbygegaan, en aan die einde van 2019 het derdeparty-ontwikkelaars 'n aantal drywers en kernpleisters geïmplementeer vir interaksie met die T2-skyfie. Die hoofbestuurder vir MacBook-modelle 2018 en nuwer implemente VHCI-werking (aanraak-/sleutelbord-/ensovoorts), sowel as klankwerking.

Project mbp2018-brug-drv verdeel in 3 hoofkomponente:

  • BCE (Buffer Copy Engine) - vestig die hoofkommunikasiekanaal met T2. VHCI en oudio vereis hierdie komponent.
  • VHCI is 'n USB virtuele gasheerbeheerder; die sleutelbord, muis en ander stelselkomponente word deur hierdie komponent verskaf (ander bestuurders gebruik hierdie gasheerbeheerder om meer funksionaliteit te verskaf.
  • Oudio - drywer vir die T2 oudio-koppelvlak, ondersteun tans slegs klankuitvoer deur die MacBook se ingeboude luidsprekers


Die tweede projek word genoem macbook12-spi-bestuurder, en dit implementeer die vermoë om 'n invoerbestuurder vir die sleutelbord, SPI-stuurbord en raakbalk vir MacBook Pro laat 2016 en later te gebruik. Sommige sleutelbord-/stuurbordbestuurders is nou by die kern ingesluit, begin met weergawe 5.3.

Ondersteuning vir toestelle soos wi-fi, touchpad, ens. is ook geïmplementeer met behulp van kernkolle. Huidige kern weergawe 5.3.5-1

Wat werk op die oomblik

  1. NVMe
  2. klawerbord
  3. USB-C (Thunderbolt is nie getoets nie; wanneer die module outomaties gelaai word, vries dit die stelsel)
  4. Raakbalk (met die vermoë om die Fn-sleutels, agtergrond, ESC, ens.)
  5. Klank (slegs ingeboude luidsprekers)
  6. Wi-Fi-module (via brcmfmac en slegs via iw)
  7. DisplayPort oor USB-C
  8. Sensors
  9. Opskort/Hervat (gedeeltelik)
  10. ens ..

Hierdie handleiding is van toepassing op macbookpro15,1 en macbookpro15,2. Die artikel is geneem as 'n basis van Github in Engels. vandaar. Nie alles in hierdie artikel het gewerk nie, so ek moes self 'n oplossing vind.

Wat u moet installeer

  • USB-C-koppeladapter na USB (ten minste drie USB-insette om 'n muis, sleutelbord, USB-modem of foon in koppelmodus te koppel). Dit is slegs nodig tydens die eerste fases van installasie
  • USB-sleutelbord
  • USB/USB-C flash drive minimum 4GB

1. Deaktiveer die verbod op selflaai vanaf eksterne media

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

2. Ken vrye spasie toe met behulp van Disk Utility

Gerieflikheidshalwe het ek dadelik 30 GB aan die skyf toegewys en dit in exfat in Disk Utility self geformateer. Partisionering van 'n Fisiese Skyfskyfnutsding.

3. Skep 'n ISO-beeld

opsies:

  1. Jy kan die eenvoudige roete gaan en 'n klaargemaakte prent aflaai met kern 5.3.5-1 en pleisters vanaf aunali1 skakel na die voltooide prent
  2. Skep self 'n prent via archlive ('n stelsel met 'n Archa-verspreiding word vereis)

    Stel archiso

    pacman -S archiso

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

    Voeg die bewaarplek by pacman.conf:

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

    Ons ignoreer die oorspronklike kern in pacman.conf:

    IgnorePkg   = linux linux-headers
    

    Voeg die nodige pakkette by, voeg aan die einde die linux-mbp-kern en linux-mbp-headers by

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

    Ons verander die skrif om in interaktiewe modus te werk (vervang pacstrap -C met 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!"
    }

    Vorm 'n beeld:

    sudo ./build.sh -v

    Druk Y om geïgnoreer pakkette oor te slaan, skryf dan die iso-beeld na die usb-flitsskyf:

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

4. Eerste selflaai

Herlaai met die flash drive en sleutelbord ingesit. Druk opsies wanneer die appel verskyn, kies EFI BOOT.

Vervolgens moet u die "e" -sleutel druk en aan die einde van die opdragreël invoer module_blacklist=donderslag. As dit nie gedoen word nie, sal die stelsel dalk nie selflaai nie en 'n Thunderbolt ICM-fout sal verskyn.

Met behulp van fdisk/cfdisk vind ons ons partisie (vir my is dit nvme0n1p4), formateer dit en installeer die argief. Jy kan gebruik amptelike instruksies of sywaarts.

Ons skep nie 'n selflaaipartisie nie; ons sal die selflaaiprogram inskryf /dev/nvme0n1p1
Nadat die omgewing in /mnt heeltemal gevorm is en voordat jy na arch-chroot beweeg, skryf:

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

Voeg by /etc/pacman.conf:


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

Installeer die kern:


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

Ons registreer donderslag en appelsmc in /etc/modprobe.d/blacklist.conf

blacklist thunderbolt
blacklist applesmc

Sleutelbord, raakbalk, ens

Installeer yay:


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

Installeer modules vir die raakbalk om te werk:


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

Voeg modules by opstart: /etc/modules-load.d/apple.conf

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

Installeer kernmodules vir die sleutelbord. In die bewaarplek jaarliks ​​1 daar is 'n klaargemaakte pakkie, word dit genoem appel-bce-dkms-git. Om dit te installeer, skryf in die konsole:

pacman -S apple-bce-dkms-git

In hierdie geval sal die kernmodule genoem word appel-bce. In die geval van selfmontering word dit genoem vce. Gevolglik, as jy 'n module in die MODULES-afdeling van die mkinicpio.conf-lêer wil registreer, moenie vergeet watter module jy geïnstalleer het nie.

Handmatige samestelling:


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

Voeg die bce of apple-bce module by opstart: /etc/modules-load.d/bce.conf

bce

As jy die Fn-knoppies by verstek wil gebruik, skryf dan in die /etc/modprobe.d/apple-tb.conf lêer:

options apple-ib-tb fnmode=2

Opdatering van die kern en initramfs.


mkinitcpio -p linux-mbp

Installeer iwd:

sudo pacman -S networkmanager iwd

5. Laaimasjien

Sodra al die hoofpakkette binne die chroot geïnstalleer is, kan jy begin om die selflaaiprogram te installeer.

Ek kon nie grub by die werk kry nie. Grub begin vanaf 'n eksterne USB-stasie, maar wanneer jy probeer om dit in nvme via te registreer

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

die stelsel het in kernpaniek geraak, en nadat 'n nuwe item deur opsies herlaai is, het dit nie verskyn nie. Ek het geen duidelike oplossing vir hierdie probleem gevind nie en het daarom besluit om opstart met systemd-boot te probeer implementeer.

  1. Begin
    bootctl --path=/boot install

    en ons gaan in pit paniek. Skakel die MacBook af, skakel dit weer aan, klik opsies (moenie die USB-C-hub met sleutelbord afskakel nie)

  2. Ons kyk of 'n nuwe EFI BOOT-inskrywing bykomend tot die eksterne toestel verskyn het
  3. Ons kies om vanaf 'n eksterne USB-stasie te begin, soos tydens die eerste installasie (moenie vergeet om module_blacklist=thunderbolt te spesifiseer nie)
  4. Ons monteer ons skyf en gaan na die omgewing via arch-chroot


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

As dit nodig is vir die sleutelbord om te werk totdat die stelsel volledig gelaai is (dit is nodig wanneer luks/dm-crypt-enkripsie gebruik word), skryf dit dan in die /etc/mkinicpio.conf-lêer in die MODULES-afdeling:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Opdatering van die kern en initramfs.


mkinicpio -p linux-mbp

Stel systemd-boot op

Ons wysig die /boot/loader/loader.conf-lêer, vee alles uit en voeg die volgende by:

default arch
timeout 5
editor 1

Gaan na die /boot/loader/entries-lêergids, skep die arch.conf-lêer en skryf:

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

As jy luks en lvm gebruik het, dan

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

Herlaai in MacOS.

6. Wi-Fi opstelling

Soos dit uiteindelik geblyk het, stoor MacOS die firmwarelêers vir die wi-fi-adapter in die gids /usr/share/firmware/wifi , en jy kan hulle daarvandaan in die vorm van blobs neem en dit na die brcmfmac kernmodule voer. Om uit te vind watter lêers jou adapter gebruik, maak 'n terminaal in MacOS oop en skryf:

ioreg -l | grep C-4364

Ons kry 'n lang lys. Ons benodig slegs lêers van die afdeling Versoekte lêers:

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

In jou geval kan die lêername verskil. Kopieer hulle van die /usr/share/firmware/wifi-lêergids na die flash drive en hernoem hulle soos volg:

    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>

In hierdie geval bevat die laaste tekslêer die modelname; as jou model nie macbookpro15,2 is nie, moet jy hierdie lêer hernoem in ooreenstemming met jou MacBook-model.

Herlaai in Arch.

Kopieer die lêers vanaf die flash drive na die /lib/firmware/brcm/-lêergids


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/

Kontroleer die funksionaliteit van die module:


rmmod brcmfmac
modprobe brcmfmac

Ons maak seker dat die netwerkkoppelvlak deur ifconfig/ip verskyn.
Stel wifi op via yuctl

Aandag. Via netctl, nmcli, ens. Die koppelvlak werk nie, net deur iwd.

Ons dwing NetworkManager om iwd te gebruik. Om dit te doen, skep die lêer /etc/NetworkManager/NetworkManager.conf en skryf:

[device]
wifi.backend=iwd

Begin die NetworkManager-diens


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

7. Klank

Om die klank te laat werk, moet jy pulsaudio installeer:


sudo pacman -S pulseaudio

Laai drie lêers af:

Kom ons skuif hulle:

    /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. Opskort/Hervat

Op hierdie oomblik 16.10.2019 jy moet óf klank óf opskort/hervat kies. Ons wag vir die skrywer van die bce-module om die funksionaliteit te voltooi.

Om 'n module met opgeskorte/hervat-ondersteuning te bou, moet jy die volgende doen:


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

As jy die klaargemaakte apple-bce-module vanaf die anuali1-bewaarplek geïnstalleer het, moet jy dit eers verwyder en eers dan die bce-module met opskortmodusondersteuning monteer en installeer.

Jy moet ook die applesmc-module by die swartlys voeg (as jy dit nog nie voorheen gedoen het nie) en seker maak dat in /boot/loader/entries/arch.conf in die opsieslyn aan die einde die parameter bygevoeg word pcie_ports=compat.

Tans val die aanraakbalkbestuurder in wanneer die suspendmodus betree word, en die donderslagbestuurder vries die stelsel soms vir meer as 30 sekondes, en vir 'n paar minute wanneer dit hervat word. Dit kan reggestel word deur outomaties problematiese modules af te laai.

Skep 'n skrif /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

Maak dit uitvoerbaar:

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

Dit is al vir nou. Die resultaat is 'n heeltemal werkbare stelsel, met die uitsondering van 'n paar nuanses met opskorting/hervat. Geen ineenstortings of kernpaniek is gedurende 'n paar dae van optyd waargeneem nie. Ek hoop dat die skrywer van die bce-module in die nabye toekoms dit sal voltooi, en dat ons volle ondersteuning sal kry vir suspend/hervat en klank.

Bron: will.com

Voeg 'n opmerking