Омогућавање да МацБоок Про 2018 Т2 ради са АрцхЛинук-ом (дуалбоот)

Било је поприлично узбуђења око чињенице да ће нови Т2 чип онемогућити инсталирање Линука на нове МацБоок-ове из 2018. са додирном траком. Време је пролазило, а крајем 2019. године, независни програмери су имплементирали бројне драјвере и закрпе кернела за интеракцију са Т2 чипом. Главни драјвер за МацБоок моделе 2018 и новије имплементира ВХЦИ рад (рад на додир/тастатуру/итд.), као и рад са звуком.

Пројекат мбп2018-бридге-дрв подељен на 3 главне компоненте:

  • БЦЕ (Буффер Цопи Енгине) - успоставља главни комуникациони канал са Т2. ВХЦИ и Аудио захтевају ову компоненту.
  • ВХЦИ је УСБ виртуелни хост контролер; тастатуру, миш и друге системске компоненте обезбеђује ова компонента (други драјвери користе овај хост контролер да обезбеде више функционалности.
  • Аудио - драјвер за Т2 аудио интерфејс, тренутно подржава само аудио излаз преко уграђених звучника МацБоок-а


Други пројекат се зове мацбоок12-спи-дривер, и имплементира могућност управљања улазним драјвером за тастатуру, СПИ трацкпад и тоуцхбар за касне 2016. и касније МацБоок Про. Неки драјвери за тастатуру/трацкпад су сада укључени у кернел, почевши од верзије 5.3.

Подршка за уређаје као што су ви-фи, тоуцхпад итд. такође је имплементирана помоћу закрпа језгра. Тренутна верзија кернела 5.3.5-1

Шта ради у овом тренутку

  1. НВМе
  2. тастатура
  3. УСБ-Ц (Тхундерболт није тестиран; када се модул аутоматски учита, замрзава систем)
  4. Тоуцхбар (са могућношћу укључивања Фн тастера, позадинског осветљења, ЕСЦ-а итд.)
  5. Звук (само уграђени звучници)
  6. Ви-Фи модул (преко брцмфмац и само преко ив)
  7. ДисплаиПорт преко УСБ-Ц
  8. Сензори
  9. Обустави/настави (делимично)
  10. итд ..

Овај водич је применљив за мацбоокпро15,1 и мацбоокпро15,2. Чланак је узет као основа са Гитхуб-а на енглеском. стога. Није све у овом чланку функционисало, па сам морао сам да пронађем решење.

Šta treba da instalirate

  • УСБ-Ц адаптер за прикључивање на УСБ (најмање три УСБ улаза за повезивање миша, тастатуре, УСБ модема или телефона у режиму повезивања). Ово је неопходно само у првим фазама инсталације
  • УСБ тастатура
  • УСБ/УСБ-Ц флеш диск минимално 4 ГБ

1. Онемогућите забрану покретања са спољних медија

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

2. Доделите слободан простор користећи Диск Утилити

Ради практичности, одмах сам доделио 30 ГБ диску, форматирајући га у екфат у самом Диск Утилити-у. Партиционисање услужног програма за физички диск.

3. Направите ИСО слику

Опције:

  1. Можете ићи једноставним путем и преузети готову слику са кернелом 5.3.5-1 и закрпама са аунали1 везу до готове слике
  2. Направите слику сами преко архиве (потребан је систем са Арцха дистрибуцијом)

    Сет арцхисо

    pacman -S archiso

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

    Додајте спремиште у пацман.цонф:

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

    Ми игноришемо оригинално језгро у пацман.цонф:

    IgnorePkg   = linux linux-headers
    

    Додајте потребне пакете, на крају додајте линук-мбп кернел и линук-мбп-хеадерс

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

    Ми мењамо скрипту да ради у интерактивном режиму (замените пацстрап -Ц са пацстрап -и -Ц):

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

    Формирање слике:

    sudo ./build.sh -v

    Притисните И да прескочите занемарене пакете, а затим упишите исо слику на УСБ флеш диск:

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

4. Прво покретање

Поново покрените рачунар са уметнутим флеш диском и тастатуром. Притисните опције када се појави јабука, изаберите ЕФИ БООТ.

Затим морате да притиснете тастер „е“ и унесете на крају командне линије модуле_блацклист=тхундерболт. Ако се то не уради, систем се можда неће покренути и појавиће се Тхундерболт ИЦМ грешка.

Помоћу фдиск/цфдиск налазимо нашу партицију (код мене је то нвме0н1п4), форматирамо је и инсталирамо архиву. Можете користити службена упутства или бочно.

Не правимо партицију за покретање; уписаћемо покретач /дев/нвме0н1п1
Након што је окружење у /мнт потпуно формирано и пре него што пређете на арцх-цхроот, напишите:

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

Додајте у /етц/пацман.цонф:


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

Инсталирајте кернел:


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

Регистровали смо тхундерболт и апплесмц у /етц/модпробе.д/блацклист.цонф

blacklist thunderbolt
blacklist applesmc

Тастатура, тоуцхбар итд

Инсталирај иаи:


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

Инсталирање модула за рад тоуцхбара:


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

Додајте модуле за покретање: /етц/модулес-лоад.д/аппле.цонф

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

Инсталирање модула кернела за тастатуру. У спремишту ануали1 постоји готов пакет, зове се аппле-бце-дкмс-гит. Да бисте га инсталирали, напишите у конзоли:

pacman -S apple-bce-dkms-git

У овом случају биће позван модул кернела јабука-п.н.е. У случају самосталног склапања тзв бце. Сходно томе, ако желите да региструјете модул у одељку МОДУЛЕС датотеке мкиницпио.цонф, не заборавите који сте модул инсталирали.

Ручна монтажа:


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

Додајте бце или аппле-бце модул за покретање: /етц/модулес-лоад.д/бце.цонф

bce

Ако подразумевано желите да користите Фн дугмад, онда напишите у датотеку /етц/модпробе.д/аппле-тб.цонф:

options apple-ib-tb fnmode=2

Ажурирање кернела и инитрамфс-а.


mkinitcpio -p linux-mbp

Инсталирај ивд:

sudo pacman -S networkmanager iwd

5. Утоваривач

Када су сви главни пакети инсталирани унутар цхроот-а, можете почети са инсталирањем покретачког програма.

Нисам успео да натерам груб на посао. Груб се покреће са екстерног УСБ диска, али када покушате да га региструјете у нвме преко

груб-инсталл --таргет=к86_64-ефи --ефи-дирецтори=/боот --боотлоадер-ид=груб

систем је упао у панику кернела, а након поновног покретања нове ставке кроз опције се нису појавиле. Нисам пронашао јасно решење за овај проблем и стога сам одлучио да покушам да имплементирам покретање помоћу системд-боот.

  1. Лансирање
    bootctl --path=/boot install

    и улазимо у кернел панику. Искључите МацБоок, укључите га поново, кликните на опције (не искључујте УСБ-Ц чвориште са тастатуром)

  2. Проверавамо да ли се поред спољног уређаја појавио нови унос ЕФИ БООТ
  3. Бирамо да се покренемо са екстерног УСБ диска, као и током прве инсталације (не заборавите да наведете модуле_блацклист=тхундерболт)
  4. Монтирамо наш диск и улазимо у окружење преко арцх-цхроот-а


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

Ако је потребно да тастатура ради док се систем потпуно не учита (ово је неопходно када користите лукс/дм-црипт енкрипцију), онда то упишите у датотеку /етц/мкиницпио.цонф у одељку МОДУЛИ:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Ажурирање кернела и инитрамфс-а.


mkinicpio -p linux-mbp

Подешавање системд-боот-а

Уређујемо /боот/лоадер/лоадер.цонф датотеку, бришемо све унутра и додајемо следеће:

default arch
timeout 5
editor 1

Идите у фасциклу /боот/лоадер/ентриес, креирајте датотеку арцх.цонф и напишите:

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

Ако сте користили лукс и лвм, онда

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

Поново покрените МацОС.

6. Ви-Фи подешавање

Како се на крају испоставило, МацОС чува фајлове фирмвера за ви-фи адаптер у фасцикли /уср/схаре/фирмваре/вифи , и можете их узети одатле у облику мрљица и унети их у модул језгра брцмфмац. Да бисте сазнали које датотеке ваш адаптер користи, отворите терминал у МацОС-у и напишите:

ioreg -l | grep C-4364

Добијамо дугу листу. Потребне су нам само датотеке из секције РекуестедФилес:

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

У вашем случају, називи датотека могу се разликовати. Копирајте их из фасцикле /уср/схаре/фирмваре/вифи на флеш диск и преименујте их на следећи начин:

    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>

У овом случају, последња текстуална датотека садржи називе модела; ако ваш модел није мацбоокпро15,2, онда морате да преименујете ову датотеку у складу са вашим МацБоок моделом.

Поново покрените у Арцх.

Копирајте датотеке са флеш диска у фасциклу /либ/фирмваре/брцм/


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/

Провера функционалности модула:


rmmod brcmfmac
modprobe brcmfmac

Уверавамо се да се мрежни интерфејс појављује преко ифцонфиг/ип.
Подешавање ВиФи преко ивцтл

Пажња. Преко нетцтл, нмцли итд. Интерфејс не ради, само преко ивд-а.

Приморавамо НетворкМанагер да користи ивд. Да бисте то урадили, креирајте датотеку /етц/НетворкМанагер/НетворкМанагер.цонф и напишите:

[device]
wifi.backend=iwd

Покрените услугу НетворкМанагер


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

7. Звук

Да би звук радио, потребно је да инсталирате пулсеаудио:


sudo pacman -S pulseaudio

Преузмите три датотеке:

Хајде да их померимо:

    /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. Обустави/настави

Тренутно 16.10.2019 морате изабрати или звук или суспендовати/наставити. Чекамо да аутор бце модула заврши функционалност.

Да бисте направили модул са обустављеном/наставком подршке, морате да урадите следеће:


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

Ако сте инсталирали готов аппле-бце модул из ануали1 спремишта, онда га прво морате уклонити и тек онда саставити и инсталирати бце модул са подршком за суспендовани режим.

Такође, потребно је да додате апплесмц модул на црну листу (ако то раније нисте урадили) и уверите се да је у /боот/лоадер/ентриес/арцх.цонф у реду опција на крају параметар додат пцие_портс=цомпат.

Тренутно, драјвер тоуцхбар-а се руши када уђе у режим суспендовања, а драјвер Тхундерболт понекад замрзне систем на више од 30 секунди, а на неколико минута када се настави. Ово се може поправити аутоматским истоваром проблематичних модула.

Направите скрипту /либ/системд/систем-слееп/рммод.сх:

#!/bin/sh
if [ "" == "pre" ]; then
        rmmod thunderbolt
        rmmod apple_ib_tb
elif [ "" == "post" ]; then
        modprobe apple_ib_tb
        modprobe thunderbolt
fi

Учините га извршним:

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

То је све за сада. Резултат је потпуно функционалан систем, са изузетком неких нијанси са обуставом/наставком. Током неколико дана непрекидног рада нису примећени падови или паника кернела. Надам се да ће га у блиској будућности аутор бце модула завршити, а ми ћемо добити пуну подршку за суспенд/ресуме и звук.

Извор: ввв.хабр.цом

Додај коментар