Направете MacBook Pro 2018 T2 да работи со ArchLinux (dualboot)
Имаше доста возбуда околу фактот дека новиот T2 чип ќе го оневозможи инсталирањето на Linux на новите MacBook 2018 со лента за допир. Помина времето, а на крајот на 2019 година, програмерите од трети страни имплементираа голем број на драјвери и закрпи на јадрото за интеракција со чипот T2. Главниот двигател за моделите на MacBook од 2018 година и понови ја имплементира работата на VHCI (работа со допир/тастатура/итн.), како и работа со звук.
BCE (Buffer Copy Engine) - го воспоставува главниот канал за комуникација со T2. VHCI и Audio ја бараат оваа компонента.
VHCI е USB виртуелен контролер на домаќинот; тастатурата, глувчето и другите компоненти на системот се обезбедени од оваа компонента (другите драјвери го користат овој контролер на домаќинот за да обезбедат поголема функционалност.
Аудио - драјвер за аудио интерфејсот T2, моментално поддржува аудио излез само преку вградените звучници на MacBook
Вториот проект се вика двигател за macbook12-spi, и ја имплементира способноста за ракување со влезен двигател за тастатурата, подлогата за SPI и лентата за допир за MacBook Pro Late 2016 и подоцна. Некои двигатели на тастатурата/подлогата сега се вклучени во кернелот, почнувајќи од верзијата 5.3.
Поддршката за уреди како што се wi-fi, touchpad, итн., исто така беше имплементирана со помош на закрпи на јадрото. Тековна верзија на кернелот5.3.5-1
Што работи во моментов
NVMe
тастатура
USB-C (Thunderbolt не е тестиран; кога модулот се вчита автоматски, го замрзнува системот)
Лента на допир (со можност за вклучување на копчињата Fn, позадинско осветлување, ESC итн.)
Звук (само вградени звучници)
Wi-Fi модул (преку brcmfmac и само преку iw)
DisplayPort преку USB-C
Сензори
Суспендирај/продолжи (делумно)
итн ..
Ова упатство е применливо за macbookpro15,1 и macbookpro15,2. Статијата е земена како основа од Github на англиски јазик. оттука. Не функционираше сè во оваа статија, па морав сам да најдам решение.
Што треба да инсталирате
USB-C адаптер за приклучување на USB (најмалку три USB влезови за поврзување на глувче, тастатура, USB модем или телефон во режим на поврзување). Ова е потребно само во првите фази на инсталацијата
USB тастатура
USB/USB-C флеш диск минимум 4GB
1. Оневозможете ја забраната за подигање од надворешни медиуми
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Додајте го складиштето во pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Го игнорираме оригиналното јадро во pacman.conf:
IgnorePkg = linux linux-headers
Додадете ги потребните пакети, на крајот додајте го кернелот linux-mbp и заглавијата linux-mbp
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Ја менуваме скриптата да работи во интерактивен режим (заменете го pacstrap -C со 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!"
}
Формирање слика:
sudo ./build.sh -v
Притиснете Y за да ги прескокнете игнорираните пакети, а потоа напишете ја изо сликата на USB флеш-уредот:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Прво подигање
Рестартирајте со вметнати флеш-уред и тастатура. Притиснете опции кога ќе се појави јаболкото, изберете EFI BOOT.
Следно, треба да го притиснете копчето „e“ и да внесете на крајот од командната линија module_blacklist=гром. Ако ова не е направено, системот може да не се подигне и ќе се појави Thunderbolt ICM Error.
Користејќи fdisk/cfdisk, ја наоѓаме нашата партиција (за мене е nvme0n1p4), ја форматираме и ја инсталираме архивата. Можеш да користиш официјални упатства или настрана.
Ние не создаваме партиција за подигање, туку ќе го напишеме подигнувачот /dev/nvme0n1p1
Откако опкружувањето во /mnt е целосно формирано и пред да преминете на arch-chroot, напишете:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Додај во /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Инсталирање на кернел модули за тастатурата. Во складиштето anuali1 има готов пакет, се вика јаболко-bce-dkms-git. За да го инсталирате, напишете во конзолата:
pacman -S apple-bce-dkms-git
Во овој случај, ќе се повика модулот на јадрото јаболко-пр.н.е. Во случај на самосклопување, се нарекува пр. Според тоа, ако сакате да регистрирате модул во делот МОДУЛИ во датотеката mkinicpio.conf, тогаш не заборавајте кој модул сте го инсталирале.
Рачно склопување:
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 или apple-bce за стартување: /etc/modules-load.d/bce.conf
bce
Ако сакате стандардно да ги користите копчињата Fn, тогаш напишете во датотеката /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Ажурирање на кернелот и initramfs.
mkinitcpio -p linux-mbp
Инсталирајте iwd:
sudo pacman -S networkmanager iwd
5. Натоварувач
Откако ќе се инсталираат сите главни пакети во chroot, можете да започнете со инсталирање на подигнувачот.
Не успеав да го доведам грубот на работа. Grub се подига од надворешен USB-диск, но кога ќе се обидете да го регистрирате во nvme преку
системот влезе во паника на кернелот и по рестартирањето нова ставка преку опции не се појави. Не најдов јасно решение за овој проблем и затоа решив да се обидам да го имплементирам подигањето користејќи systemd-boot.
Лансира
bootctl --path=/boot install
и влегуваме во паника на кернелот. Исклучете го MacBook, вклучете го повторно, кликнете на опциите (не исклучувајте го USB-C хабот со тастатура)
Проверуваме дали се појави нов запис EFI BOOT како додаток на надворешниот уред
Избираме да се подигне од надворешен USB-диск, како при првата инсталација (не заборавајте да наведете module_blacklist=thunderbolt)
Го монтираме нашиот диск и влегуваме во околината преку arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Ако е неопходно тастатурата да работи додека системот не се вчита целосно (ова е неопходно кога се користи шифрирање luks/dm-crypt), тогаш напишете го во датотеката /etc/mkinicpio.conf во делот МОДУЛИ:
Како што се испостави на крајот, MacOS ги складира датотеките на фирмверот за адаптерот за wi-fi во папката /usr/share/firmware/wifi , и можете да ги земете од таму во форма на blobs и да ги внесете во модулот за јадрото brcmfmac. За да дознаете кои датотеки ги користи вашиот адаптер, отворете терминал во MacOS и напишете:
ioreg -l | grep C-4364
Добиваме долг список. Ни требаат само датотеки од делот RequestedFiles:
Во вашиот случај, имињата на датотеките може да се разликуваат. Копирајте ги од папката /usr/share/firmware/wifi на флеш-уредот и преименувајте ги на следниов начин:
Во овој случај, последната текстуална датотека ги содржи имињата на моделите; ако вашиот модел не е macbookpro15,2, тогаш треба да ја преименувате оваа датотека во согласност со вашиот модел на MacBook.
Рестартирајте во Arch.
Копирајте ги датотеките од флеш-уредот во папката /lib/firmware/brcm/
Во овој момент 16.10.2019 треба да изберете или звук или суспендира/продолжи. Го чекаме авторот на модулот bce да ја заврши функционалноста.
За да изградите модул со прекината/продолжи поддршката, мора да го направите следново:
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
Ако сте го инсталирале готовиот модул Apple-bce од складиштето anuali1, тогаш мора прво да го отстраните и дури потоа да го составите и инсталирате модулот bce со поддршка за режимот за суспендирање.
Исто така, треба да го додадете модулот applesmc на црната листа (ако не сте го направиле ова претходно) и уверете се дека во /boot/loader/entries/arch.conf во линијата опции на крајот параметарот е додаден pcie_ports=компат.
Во моментов, двигателот на лентата за допир паѓа кога влегува во режим на суспендирање, а двигателот на громот понекогаш го замрзнува системот повеќе од 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
Тоа е се за сега. Резултатот е целосно работен систем, со исклучок на некои нијанси со суспендирање/продолжување. Не беа забележани падови или паники на јадрото за време на неколкудневното време на работа. Се надевам дека во блиска иднина авторот на модулот bce ќе го заврши, и ќе добиеме целосна поддршка за суспендирање/продолжување и звук.