„MacBook Pro 2018 T2“ veikimas su „ArchLinux“ (dviguba įkrova)
Buvo daug ažiotažų apie tai, kad dėl naujojo T2 lusto bus neįmanoma įdiegti „Linux“ naujuose 2018 m. „MacBook“ kompiuteriuose su jutikline juosta. Laikas praėjo, o 2019 m. pabaigoje trečiųjų šalių kūrėjai įdiegė daugybę tvarkyklių ir branduolio pataisų, skirtų sąveikai su T2 lustu. Pagrindinė 2018 m. ir naujesnių „MacBook“ modelių tvarkyklė įgyvendina VHCI veikimą (touch/klaviatūros/tt valdymą), taip pat garso valdymą.
BCE (Buffer Copy Engine) – nustato pagrindinį ryšio kanalą su T2. VHCI ir Audio reikalingas šis komponentas.
VHCI yra USB virtualaus pagrindinio kompiuterio valdiklis; klaviatūrą, pelę ir kitus sistemos komponentus teikia šis komponentas (kitos tvarkyklės naudoja šį pagrindinio kompiuterio valdiklį, kad suteiktų daugiau funkcijų.
Garsas – T2 garso sąsajos tvarkyklė, šiuo metu palaiko tik garso išvestį per MacBook integruotus garsiakalbius
Antrasis projektas vadinamas macbook12-spi tvarkyklę, ir įdiegta galimybė valdyti klaviatūros, SPI valdymo pulto ir jutiklinės juostos įvesties tvarkyklę, skirtą „MacBook Pro Late 2016“ ir naujesnėms versijoms. Kai kurios klaviatūros / valdymo pulto tvarkyklės dabar įtrauktos į branduolį, pradedant nuo 5.3 versijos.
Tokių įrenginių kaip „Wi-Fi“, jutiklinė dalis ir kt. palaikymas taip pat buvo įgyvendintas naudojant branduolio pataisas. Dabartinė branduolio versija5.3.5-1
Kas šiuo metu veikia
NVMe
Klaviatūra
USB-C (Thunderbolt nebuvo išbandytas; kai modulis įkeliamas automatiškai, sistema užšąla)
Jutiklinė juosta (su galimybe įjungti Fn klavišus, apšvietimą, ESC ir kt.)
Garsas (tik įmontuoti garsiakalbiai)
Wi-Fi modulis (per brcmfmac ir tik per iw)
„DisplayPort“ per USB-C
Jutikliai
Sustabdyti / atnaujinti (iš dalies)
ir tt ..
Ši pamoka tinka macbookpro15,1 ir macbookpro15,2. Straipsnis buvo paimtas kaip pagrindas iš Github anglų kalba. taigi. Ne viskas šiame straipsnyje pasiteisino, todėl sprendimą teko ieškoti pačiam.
Ką reikia įdiegti
USB-C prijungimo prie USB adapteris (mažiausiai trys USB įėjimai, skirti prijungti pelę, klaviatūrą, USB modemą ar telefoną, veikiantį modemo režimu). Tai būtina tik pirmaisiais montavimo etapais
USB klaviatūra
USB / USB-C atmintinė mažiausiai 4 GB
1. Išjunkite draudimą paleisti iš išorinės laikmenos
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Pridėkite saugyklą prie pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Mes ignoruojame pradinį branduolį pacman.conf:
IgnorePkg = linux linux-headers
Pridėkite reikiamus paketus, pabaigoje pridėkite linux-mbp branduolį ir linux-mbp-headers
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Pakeičiame scenarijų, kad jis veiktų interaktyviuoju režimu (pakeiskite 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!"
}
Vaizdo formavimas:
sudo ./build.sh -v
Paspauskite Y, kad praleistumėte nepaisomus paketus, tada įrašykite iso vaizdą į USB atmintinę:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Pirmas įkrovimas
Paleiskite iš naujo įdėję „flash drive“ ir klaviatūrą. Paspauskite parinktis, kai pasirodys obuolys, pasirinkite EFI BOOT.
Tada turite paspausti klavišą „e“ ir įvesti komandų eilutės pabaigoje module_blacklist=perkūnas. Jei to nepadarysite, sistema gali nepasileisti ir pasirodys Thunderbolt ICM klaida.
Naudodami fdisk / cfdisk randame savo skaidinį (man tai nvme0n1p4), suformatuojame ir įdiegiame archyvą. Tu gali naudoti oficialių nurodymų arba į šoną.
Mes nekuriame įkrovos skaidinio; mes įrašysime įkrovos įkroviklį / dev / nvme0n1p1
Kai aplinka /mnt yra visiškai suformuota ir prieš pereinant prie arch-chroot, parašykite:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Pridėti prie /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Klaviatūros branduolio modulių įdiegimas. Saugykloje anuali1 yra paruošta pakuotė, ji vadinama apple-bce-dkms-git. Norėdami jį įdiegti, konsolėje parašykite:
pacman -S apple-bce-dkms-git
Tokiu atveju bus iškviestas branduolio modulis obuolys-bce. Savarankiško surinkimo atveju jis vadinamas bce. Atitinkamai, jei norite užregistruoti modulį mkinicpio.conf failo skiltyje MODULIAI, nepamirškite, kurį modulį įdiegėte.
Rankinis surinkimas:
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
Pridėkite bce arba apple-bce modulį prie paleisties: /etc/modules-load.d/bce.conf
bce
Jei pagal numatytuosius nustatymus norite naudoti Fn mygtukus, faile /etc/modprobe.d/apple-tb.conf parašykite:
options apple-ib-tb fnmode=2
Branduolio ir initramfs atnaujinimas.
mkinitcpio -p linux-mbp
Įdiegti iwd:
sudo pacman -S networkmanager iwd
5. Krautuvas
Kai visi pagrindiniai paketai yra įdiegti chroot, galite pradėti diegti įkrovos įkroviklį.
Man nepavyko privesti grub į darbą. Grub paleidžiama iš išorinio USB disko, bet kai bandote jį užregistruoti nvme per
sistema pateko į branduolio paniką, o iš naujo paleidus naujas elementas per parinktis nepasirodė. Neradau jokio aiškaus šios problemos sprendimo, todėl nusprendžiau pabandyti įdiegti įkrovą naudojant systemd-boot.
Paleisti
bootctl --path=/boot install
ir mes patenkame į branduolio paniką. Išjunkite „MacBook“, vėl įjunkite, spustelėkite parinktis (neišjunkite USB-C šakotuvo su klaviatūra)
Mes patikriname, ar šalia išorinio įrenginio atsirado naujas EFI BOOT įrašas
Mes pasirenkame paleisti iš išorinio USB disko, kaip ir pirmojo diegimo metu (nepamirškite nurodyti module_blacklist=thunderbolt)
Sumontuojame diską ir pereiname į aplinką per arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Jei reikia, kad klaviatūra veiktų tol, kol sistema bus pilnai įkelta (tai būtina naudojant luks/dm-crypt šifravimą), tada įrašykite tai /etc/mkinicpio.conf faile, esančiame skyriuje MODULIAI:
Kaip paaiškėjo pabaigoje, „MacOS“ aplanke išsaugo „Wi-Fi“ adapterio programinės aparatinės įrangos failus /usr/share/firmware/wifi , ir jūs galite paimti juos iš ten blobų pavidalu ir perkelti į brcmfmac branduolio modulį. Norėdami sužinoti, kuriuos failus naudoja jūsų adapteris, atidarykite terminalą „MacOS“ ir parašykite:
ioreg -l | grep C-4364
Gauname ilgą sąrašą. Mums reikia tik failų iš skyriaus Prašyti failai:
Šiuo atveju paskutiniame tekstiniame faile yra modelių pavadinimai; jei jūsų modelis nėra macbookpro15,2, turite pervardyti šį failą pagal savo MacBook modelį.
Perkraukite į Arch.
Nukopijuokite failus iš „flash drive“ į aplanką /lib/firmware/brcm/
Šiuo momentu 16.10.2019 turite pasirinkti garsą arba sustabdyti / tęsti. Laukiame, kol bce modulio autorius užbaigs funkcionalumą.
Norėdami sukurti modulį su sustabdytu / atnaujintu palaikymu, turite atlikti šiuos veiksmus:
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
Jei įdiegėte paruoštą Apple-bce modulį iš anuali1 saugyklos, pirmiausia turite jį pašalinti ir tik tada surinkti ir įdiegti bce modulį su sustabdymo režimo palaikymu.
Be to, į juodąjį sąrašą turite įtraukti modulį applesmc (jei to dar nepadarėte) ir įsitikinkite, kad failo /boot/loader/entries/arch.conf parinkčių eilutės pabaigoje parametras yra įtrauktas. pcie_ports=compat.
Šiuo metu jutiklinės juostos tvarkyklė sugenda, kai įjungiamas sustabdymo režimas, o „Thunderbolt“ tvarkyklė kartais sustabdo sistemą ilgiau nei 30 sekundžių, o atnaujinant – kelioms minutėms. Tai galima išspręsti automatiškai iškraunant probleminius modulius.
#!/bin/sh
if [ "" == "pre" ]; then
rmmod thunderbolt
rmmod apple_ib_tb
elif [ "" == "post" ]; then
modprobe apple_ib_tb
modprobe thunderbolt
fi
Padarykite jį vykdomą:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Tai kol kas viskas. Rezultatas yra visiškai veikianti sistema, išskyrus kai kuriuos sustabdymo / atnaujinimo niuansus. Per kelias veikimo dienas nebuvo pastebėta jokių gedimų ar branduolio panikos. Tikiuosi, kad artimiausiu metu bce modulio autorius jį užbaigs ir sulauksime visiško sustabdymo/resume ir garso palaikymo.