A MacBook Pro 2018 T2 működése az ArchLinux-szal (kettős rendszerindítás)

Elég nagy a hírverés arról, hogy az új T2 chip lehetetlenné teszi a Linux telepítését az új 2018-as érintősávos MacBookokra. Telt-múlt az idő, és 2019 végén a külső fejlesztők számos illesztőprogramot és kernelfoltot implementáltak a T2 chippel való interakcióhoz. A 2018-as és újabb MacBook modellek fő meghajtója a VHCI működést (érintés/billentyűzet/stb. működés), valamint a hangkezelést valósítja meg.

Terv mbp2018-bridge-drv 3 fő összetevőre osztva:

  • BCE (Buffer Copy Engine) - létrehozza a fő kommunikációs csatornát a T2-vel. A VHCI és az Audio szükséges ehhez az összetevőhöz.
  • A VHCI egy USB Virtual Host Controller; a billentyűzetet, az egeret és az egyéb rendszerelemeket ez az összetevő biztosítja (más illesztőprogramok ezt a gazdagépvezérlőt használják a több funkció biztosítására.
  • Audio - illesztőprogram a T2 audio interfészhez, jelenleg csak a hangkimenetet támogatja a MacBook beépített hangszóróin keresztül


A második projekt az ún macbook12-spi-illesztőprogram, és megvalósítja a beviteli illesztőprogram működtetését a billentyűzethez, az SPI trackpadhez és az érintősávhoz a MacBook Pro 2016 végi és újabb verzióihoz. Néhány billentyűzet/trackpad illesztőprogram most már benne van a kernelben, az 5.3-as verziótól kezdve.

Az olyan eszközök támogatása, mint a wi-fi, touchpad stb., szintén kerneljavításokkal valósult meg. Jelenlegi kernel verzió 5.3.5-1

Mi működik jelenleg

  1. NVMe
  2. billentyűzet
  3. USB-C (a Thunderboltot nem tesztelték; ha a modul automatikusan betöltődik, lefagy a rendszer)
  4. Érintősáv (az Fn billentyűk, a háttérvilágítás, az ESC stb. bekapcsolásának lehetőségével)
  5. Hang (csak beépített hangszórók)
  6. Wi-Fi modul (brcmfmac-on keresztül és csak iw-n keresztül)
  7. DisplayPort USB-C-n keresztül
  8. Érzékelők
  9. Felfüggesztés/Folytatás (részben)
  10. stb..

Ez az oktatóanyag a macbookpro15,1 és a macbookpro15,2 rendszerekhez használható. A cikket a Githubból vettük alapul angolul. ezért. Ebben a cikkben nem minden működött, ezért magamnak kellett megoldást találnom.

Mit kell telepíteni

  • USB-C dokkoló-adapter USB-hez (legalább három USB bemenet egér, billentyűzet, USB modem vagy telefon internetmegosztási módban történő csatlakoztatásához). Ez csak a telepítés első szakaszában szükséges
  • USB billentyűzet
  • USB/USB-C flash meghajtó minimum 4 GB

1. Kapcsolja ki a külső adathordozóról történő rendszerindítás tilalmát

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

2. Foglaljon le szabad területet a Disk Utility segítségével

A kényelem kedvéért azonnal 30 GB-ot rendeltem a lemezhez, és magában a Disk Utility-ben exfatban formáztam. Fizikai lemez particionálása.

3. Hozzon létre egy ISO-képet

beállítások:

  1. Menj az egyszerű úton, és letölthetsz egy kész képet 5.3.5-1 kernellel és javításokkal innen aunali1 link a kész képhez
  2. Hozzon létre egy képet saját maga archíven keresztül (Archa disztribúciójú rendszer szükséges)

    Készlet archiso

    pacman -S archiso

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

    Adja hozzá a tárolót a pacman.conf fájlhoz:

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

    Figyelmen kívül hagyjuk az eredeti kernelt a pacman.conf fájlban:

    IgnorePkg   = linux linux-headers
    

    Add hozzá a szükséges csomagokat, a végén add hozzá a linux-mbp kernelt és a linux-mbp-headereket

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

    Megváltoztatjuk a szkriptet, hogy interaktív módban működjön (a pacstrap -C helyére pacstrap -i -C lép):

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

    Kép kialakítása:

    sudo ./build.sh -v

    Nyomja meg az Y billentyűt a figyelmen kívül hagyott csomagok kihagyásához, majd írja be az iso képet az USB flash meghajtóra:

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

4. Első indítás

Indítsa újra a flash meghajtót és a billentyűzetet. Nyomja meg az opciókat, amikor megjelenik az alma, és válassza az EFI BOOT lehetőséget.

Ezután meg kell nyomnia az „e” billentyűt, és be kell írnia a parancssor végén module_blacklist=thunderbolt. Ha ez nem történik meg, előfordulhat, hogy a rendszer nem indul el, és Thunderbolt ICM Error jelenik meg.

Az fdisk/cfdisk használatával megkeressük a partíciónkat (nekem ez az nvme0n1p4), formázzuk és telepítjük az archívumot. Te tudod használni hivatalos utasításokat vagy oldalt.

Nem hozunk létre rendszerindító partíciót, beírjuk a rendszerbetöltőt / dev / nvme0n1p1
Miután a /mnt-ben lévő környezet teljesen kialakult, és mielőtt az arch-chroot-ra váltana, írja be:

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

Hozzáadás az /etc/pacman.conf fájlhoz:


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

Telepítse a kernelt:


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

A thunderbolt és az applesmc fájlokat az /etc/modprobe.d/blacklist.conf fájlban regisztráljuk

blacklist thunderbolt
blacklist applesmc

Billentyűzet, érintősáv stb

Telepítés yay:


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

Modulok telepítése az érintősáv működéséhez:


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

Modulok hozzáadása az indításhoz: /etc/modules-load.d/apple.conf

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

Kernel modulok telepítése a billentyűzethez. Az adattárban anuali1 van kész csomag, úgy hívják apple-bce-dkms-git. A telepítéshez írja be a konzolba:

pacman -S apple-bce-dkms-git

Ebben az esetben a rendszermag modul meghívásra kerül alma-bce. Önszerelődés esetén ún i. e. Ennek megfelelően, ha egy modult szeretne regisztrálni az mkinicpio.conf fájl MODULES szakaszában, ne felejtse el, melyik modult telepítette.

Kézi összeszerelés:


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

Adja hozzá a bce vagy az apple-bce modult az indításhoz: /etc/modules-load.d/bce.conf

bce

Ha alapértelmezés szerint az Fn gombokat szeretné használni, akkor írja be az /etc/modprobe.d/apple-tb.conf fájlba:

options apple-ib-tb fnmode=2

A kernel és az initramfs frissítése.


mkinitcpio -p linux-mbp

iwd telepítése:

sudo pacman -S networkmanager iwd

5. Rakodó

Miután az összes fő csomag telepítve van a chrootban, elkezdheti a rendszerbetöltő telepítését.

Nem sikerült a grubot munkába vinnem. A Grub külső USB-meghajtóról indul, de amikor megpróbálja regisztrálni az nvme-n keresztül

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

a rendszer kernelpánikba került, és az opciókon keresztüli újraindítás után nem jelent meg egy új elem. Nem találtam egyértelmű megoldást erre a problémára, ezért úgy döntöttem, hogy megpróbálom megvalósítani a rendszerindítást a systemd-boot segítségével.

  1. Dob
    bootctl --path=/boot install

    és kernelpánikba kerülünk. Kapcsolja ki a MacBookot, kapcsolja be újra, kattintson az opciókra (ne kapcsolja ki az USB-C elosztót a billentyűzettel)

  2. Ellenőrizzük, hogy a külső eszközön kívül megjelent-e egy új EFI BOOT bejegyzés
  3. A rendszerindítást külső USB-meghajtóról választjuk, mint az első telepítéskor (ne felejtse el megadni a module_blacklist=thunderbolt)
  4. Felcsatoljuk a lemezünket, és arch-chroot segítségével belépünk a környezetbe


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

Ha szükséges, hogy a billentyűzet a rendszer teljes betöltéséig működjön (erre a luks/dm-crypt titkosítás használatakor van szükség), akkor írja be az /etc/mkinicpio.conf fájlba a MODULOK szakaszban:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

A kernel és az initramfs frissítése.


mkinicpio -p linux-mbp

A systemd-boot beállítása

Szerkesztjük a /boot/loader/loader.conf fájlt, mindent törölünk benne, és hozzáadjuk a következőket:

default arch
timeout 5
editor 1

Lépjen a /boot/loader/entries mappába, hozza létre az arch.conf fájlt, és írja be:

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

Ha lukst és lvm-et használtál, akkor

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

Indítsa újra a MacOS-t.

6. Wi-Fi beállítása

Mint a végén kiderült, a MacOS a mappában tárolja a wi-fi adapter firmware fájljait /usr/share/firmware/wifi , és onnan blobok formájában átveheti őket és betáplálhatja a brcmfmac kernel moduljába. Ha meg szeretné tudni, hogy az adapter mely fájlokat használja, nyisson meg egy terminált a MacOS rendszerben, és írja be:

ioreg -l | grep C-4364

Hosszú listát kapunk. Csak fájlokra van szükségünk a szakaszból 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>"})

Az Ön esetében a fájlnevek eltérhetnek. Másolja őket a /usr/share/firmware/wifi mappából a flash meghajtóra, és nevezze át őket a következőképpen:

    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>

Ebben az esetben az utolsó szövegfájl tartalmazza a modellneveket; ha az Ön modellje nem macbookpro15,2, akkor át kell neveznie ezt a fájlt a MacBook modelljének megfelelően.

Indítsa újra az Arch-ba.

Másolja a fájlokat a flash meghajtóról a /lib/firmware/brcm/ mappába


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/

A modul működőképességének ellenőrzése:


rmmod brcmfmac
modprobe brcmfmac

Gondoskodunk arról, hogy a hálózati interfész megjelenjen az ifconfig/ip-n keresztül.
A wifi beállítása ezen keresztül iwctl

Figyelem. Netctl-en, nmcli-n stb. A felület nem működik, csak iwd-n keresztül.

A NetworkManagert az iwd használatára kényszerítjük. Ehhez hozza létre az /etc/NetworkManager/NetworkManager.conf fájlt, és írja be:

[device]
wifi.backend=iwd

Indítsa el a NetworkManager szolgáltatást


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

7. Hang

A hang működéséhez telepítenie kell a pulseaudio-t:


sudo pacman -S pulseaudio

Három fájl letöltése:

Mozgassuk őket:

    /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. Felfüggesztés/Folytatás

Jelenleg 16.10.2019 ki kell választania a hangot vagy a felfüggesztést/folytatást. Várjuk, hogy a bce modul szerzője befejezze a funkcionalitást.

Felfüggesztett/újraindítási támogatással rendelkező modul létrehozásához a következőket kell tennie:


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

Ha az anuali1 tárolóból telepítette a kész apple-bce modult, akkor először el kell távolítania, és csak ezután kell összeállítania és telepítenie a felfüggesztési mód támogatásával rendelkező bce modult.

Ezenkívül hozzá kell adnia az applesmc modult a feketelistához (ha ezt korábban nem tette meg), és győződjön meg arról, hogy a /boot/loader/entries/arch.conf fájl végén a beállítások sorában a paraméter hozzáadásra került. pcie_ports=kompat.

Jelenleg az érintősáv illesztőprogramja összeomlik felfüggesztési módba lépéskor, és a thunderbolt illesztőprogram néha több mint 30 másodpercre lefagy a rendszerben, illetve néhány percre, amikor újraindul. Ez a problémás modulok automatikus eltávolításával javítható.

Hozzon létre egy szkriptet /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

Tedd végrehajthatóvá:

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

Ez minden most. Az eredmény egy teljesen működőképes rendszer, kivéve néhány árnyalatot a felfüggesztéssel/folytatással kapcsolatban. Több napos üzemidő alatt nem figyeltek meg összeomlást vagy kernelpánikot. Remélem, hogy a közeljövőben a bce modul szerzője befejezi, és teljes támogatást kapunk a felfüggesztéshez/resume-hoz és a hangzáshoz.

Forrás: will.com

Hozzászólás