Farante MacBook Pro 2018 T2 funkcii kun ArchLinux (duobla lanĉo)
Estis sufiĉe da furoraĵo pri la fakto, ke la nova T2-peceto ebligos instali Linukson sur la novaj 2018 MacBooks kun tuŝbreto. La tempo pasis, kaj fine de 2019, triaj programistoj efektivigis kelkajn ŝoforojn kaj kernajn diakilojn por interagado kun la blato T2. La ĉefa pelilo por MacBook-modeloj 2018 kaj pli novaj efektivigas VHCI-operacion (tuŝo/klavaro/ktp. operacio), same kiel sonan operacion.
BCE (Buffer Copy Engine) - establas la ĉefan komunikadkanalon kun T2. VHCI kaj Audio postulas ĉi tiun komponanton.
VHCI estas USB Virtual Host Controller; la klavaro, muso kaj aliaj sistemkomponentoj estas disponigitaj per tiu komponento (aliaj ŝoforoj uzas ĉi tiun gastigan regilon por disponigi pli da funkcieco.
Aŭdio - pelilo por la soninterfaco T2, nuntempe nur subtenas soneligon per la enkonstruitaj laŭtparoliloj de la MacBook
La dua projekto nomiĝas macbook12-spi-driver, kaj ĝi efektivigas la kapablon funkciigi enigŝoforon por la klavaro, SPI-trakpad kaj tuŝbreto por MacBook Pro Late 2016 kaj poste. Kelkaj klavaraj/trakpad-ŝoforoj nun estas inkluditaj en la kerno, komencante kun versio 5.3.
Subteno por aparatoj kiel ekzemple wi-fi, tuŝpadrono, ktp ankaŭ estis efektivigita uzante kernpecetojn. Nuna kernversio5.3.5-1
Kio funkcias nuntempe
NVMe
Klavaro
USB-C (Thunderbolt ne estis provita; kiam la modulo estas ŝarĝita aŭtomate, ĝi frostas la sistemon)
Tuŝbreto (kun la kapablo ŝalti la Fn-klavojn, fonlumon, ESC, ktp.)
Sono (nur enkonstruitaj laŭtparoliloj)
Wifi-modulo (per brcmfmac kaj nur per iw)
DisplayPort tra USB-C
Sensiloj
Nuligi/Rekomenci (parte)
ktp.
Ĉi tiu lernilo aplikeblas por macbookpro15,1 kaj macbookpro15,2. La artikolo estis prenita kiel bazo de Github en la angla. de ĉi tie. Ne ĉio en ĉi tiu artikolo funkciis, do mi devis mem trovi solvon.
Kion vi bezonas instali
USB-C aldokaĵadaptilo al USB (almenaŭ tri USB-enigaĵoj por konekti muson, klavaron, USB-modemon aŭ telefonon en tethering-reĝimo). Ĉi tio estas necesa nur dum la unuaj etapoj de instalado
USB-klavaro
USB/USB-C flash drive minimume 4GB
1. Malebligu la malpermeson de ekfunkciigo de eksteraj amaskomunikiloj
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Aldonu la deponejon al pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Ni ignoras la originan kernon en pacman.conf:
IgnorePkg = linux linux-headers
Aldonu la necesajn pakaĵojn, fine aldonu la linux-mbp-kernon kaj linux-mbp-headers
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Ni ŝanĝas la skripton por labori en interaga reĝimo (anstataŭigi pacstrap -C per 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!"
}
Formado de bildo:
sudo ./build.sh -v
Premu Y por preterlasi ignoritajn pakaĵojn, tiam skribu la iso-bildon al la usb-memoro:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Unua ekkuro
Rekomencu kun la poŝmemoro kaj klavaro enmetitaj. Premu opciojn kiam la pomo aperas, elektu EFI BOOT.
Poste, vi devas premi la klavon "e" kaj eniri ĉe la fino de la komandlinio module_blacklist=tondro. Se ĉi tio ne estas farita, la sistemo eble ne ekfunkciigos kaj aperos Thunderbolt ICM Eraro.
Uzante fdisk/cfdisk ni trovas nian diskparton (por mi ĝi estas nvme0n1p4), formatas ĝin kaj instalas la arkivon. Vi povas uzi oficialaj instrukcioj aŭ flanken.
Ni ne kreas ekŝargilon; ni skribos la ekŝargilon enen /dev/nvme0n1p1
Post kiam la medio en /mnt estas tute formita kaj antaŭ ol moviĝi al arch-chroot, skribu:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Aldonu al /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Instalado de kernaj moduloj por la klavaro. En la deponejo anuali1 estas preta pako, ĝi nomiĝas apple-bce-dkms-git. Por instali ĝin, skribu en la konzolo:
pacman -S apple-bce-dkms-git
En ĉi tiu kazo, la kernomodulo estos vokita pomo-bce. En la kazo de mem-muntado, ĝi nomiĝas ecb. Sekve, se vi volas registri modulon en la sekcio MODULOJ de la dosiero mkinicpio.conf, tiam ne forgesu, kiun modulon vi instalis.
Mana muntado:
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
Aldonu la modulon bce aŭ apple-bce al lanĉo: /etc/modules-load.d/bce.conf
bce
Se vi volas uzi la Fn-butonojn defaŭlte, tiam skribu en la dosieron /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Ĝisdatigante la kernon kaj initramfs.
mkinitcpio -p linux-mbp
Instalu iwd:
sudo pacman -S networkmanager iwd
5. Ŝargilo
Post kiam ĉiuj ĉefaj pakaĵoj estas instalitaj ene de la chroot, vi povas komenci instali la ekŝargilon.
Mi ne povis igi larvon labori. Grub startas de ekstera USB-disko, sed kiam vi provas registri ĝin en nvme per
la sistemo ekpaniko de la kerno, kaj post rekomenco nova ero tra opcioj ne aperis. Mi ne trovis klaran solvon al ĉi tiu problemo kaj tial decidis provi efektivigi lanĉadon per systemd-boot.
Lanĉo
bootctl --path=/boot install
kaj ni iras en kernan panikon. Malŝaltu la MacBook, ŝaltu ĝin denove, alklaku opciojn (ne malŝaltu la USB-C nabon per klavaro)
Ni kontrolas, ke nova EFI BOOT-eniro aperis krom la ekstera aparato
Ni elektas lanĉi de ekstera USB-disko, kiel dum la unua instalado (ne forgesu specifi module_blacklist=thunderbolt)
Ni muntas nian diskon kaj iras en la medion per arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Se necesas, ke la klavaro funkciu ĝis la sistemo estas plene ŝargita (ĉi tio estas necesa kiam vi uzas luks/dm-crypt-ĉifradon), tiam skribu ĝin en la dosieron /etc/mkinicpio.conf en la sekcio MODULOJ:
Kiel finfine, MacOS konservas la firmvardosierojn por la wi-fi-adaptilo en la dosierujo /usr/share/firmware/wifi , kaj vi povas preni ilin de tie en la formo de blobs kaj nutri ilin al la brcmfmac kernomodulo. Por ekscii kiujn dosierojn uzas via adaptilo, malfermu terminalon en MacOS kaj skribu:
ioreg -l | grep C-4364
Ni ricevas longan liston. Ni bezonas nur dosierojn de la sekcio Demanditaj Dosieroj:
En ĉi tiu kazo, la lasta tekstdosiero enhavas la modelnomojn; se via modelo ne estas macbookpro15,2, tiam vi devas renomi ĉi tiun dosieron laŭ via MacBook-modelo.
Rekomencu en Arch.
Kopiu la dosierojn de la poŝmemoro al la dosierujo /lib/firmware/brcm/
En ĉi tiu momento 16.10.2019 vi devas elekti aŭ soni aŭ suspendi/rekomenci. Ni atendas, ke la aŭtoro de la bce-modulo kompletigos la funkcion.
Por konstrui modulon kun suspektita/rekomenca subteno, vi devas fari la jenon:
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
Se vi instalis la pretan apple-bce-modulon el la deponejo anuali1, tiam vi unue devas forigi ĝin kaj nur poste kunmeti kaj instali la bce-modulon kun suspenda reĝimo-subteno.
Ankaŭ, vi devas aldoni la applesmc-modulon al la nigra listo (se vi ne faris tion antaŭe) kaj certigi, ke en /boot/loader/entries/arch.conf en la opciolinio fine la parametro estas aldonita. pcie_ports=kompat.
Nuntempe, la tuŝbreta ŝoforo kraŝas enirante suspendan reĝimon, kaj la fulmotondro ŝoforo foje frostigas la sistemon dum pli ol 30 sekundoj, kaj dum pluraj minutoj kiam rekomencas. Ĉi tio povas esti riparita aŭtomate malŝarĝante problemajn modulojn.
Kreu skripton /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
Faru ĝin efektivigebla:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Tio estas ĉio por nun. La rezulto estas tute realigebla sistemo, escepte de kelkaj nuancoj kun suspendo/rekomenco. Neniuj kraŝoj aŭ kernaj panikoj estis observitaj dum pluraj tagoj da funkciado. Mi esperas, ke baldaŭ la aŭtoro de la bce-modulo finos ĝin, kaj ni ricevos plenan subtenon por suspendo/rekomenco kaj sonado.