ProHoster > Blog > administratë > Bërja që MacBook Pro 2018 T2 të funksionojë me ArchLinux (dualboot)
Bërja që MacBook Pro 2018 T2 të funksionojë me ArchLinux (dualboot)
Ka pasur mjaft zhurmë për faktin se çipi i ri T2 do ta bëjë të pamundur instalimin e Linux në MacBook-ët e rinj 2018 me një shirit prekjeje. Koha kaloi dhe në fund të vitit 2019, zhvilluesit e palëve të treta implementuan një numër drejtuesish dhe arnime të kernelit për ndërveprim me çipin T2. Drejtuesi kryesor për modelet MacBook 2018 dhe më të reja zbaton funksionimin VHCI (operimin me prekje/tastierë/etj.), si dhe funksionimin e zërit.
BCE (Buffer Copy Engine) - vendos kanalin kryesor të komunikimit me T2. VHCI dhe Audio kërkojnë këtë komponent.
VHCI është një kontrollues i hostit virtual USB; tastiera, miu dhe komponentët e tjerë të sistemit sigurohen nga ky komponent (drejtuesit e tjerë përdorin këtë kontrollues pritës për të ofruar më shumë funksionalitet.
Audio - drejtuesi për ndërfaqen audio T2, aktualisht mbështet vetëm daljen audio përmes altoparlantëve të integruar të MacBook
Projekti i dytë quhet macbook12-spi-driver, dhe zbaton aftësinë për të përdorur një drejtues hyrjeje për tastierën, tastierën SPI dhe shiritin e prekjes për MacBook Pro të fundit të vitit 2016 dhe më vonë. Disa drejtues tastierë/trackpad janë përfshirë tani në kernel, duke filluar me versionin 5.3.
Mbështetja për pajisje të tilla si wi-fi, touchpad, etj u zbatua gjithashtu duke përdorur arna të kernelit. Versioni aktual i kernelit5.3.5-1
Çfarë po funksionon për momentin
NVMe
tastierë
USB-C (Thunderbolt nuk është testuar; kur moduli ngarkohet automatikisht, ai ngrin sistemin)
Touchbar (me aftësinë për të ndezur tastet Fn, dritën e prapme, ESC, etj.)
Tingulli (vetëm altoparlantët e integruar)
Moduli Wi-Fi (përmes brcmfmac dhe vetëm përmes iw)
DisplayPort mbi USB-C
Sensorët
Pezulloni/Rifilloni (pjesërisht)
etj ..
Ky tutorial është i zbatueshëm për macbookpro15,1 dhe macbookpro15,2. Artikulli është marrë si bazë nga Github në anglisht. prandaj. Jo gjithçka në këtë artikull funksionoi, kështu që më duhej të gjeja një zgjidhje vetë.
Çfarë ju nevojitet për instalim
Përshtatës lidhës USB-C në USB (të paktën tre hyrje USB për lidhjen e miut, tastierës, modemit USB ose telefonit në modalitetin e lidhjes). Kjo është e nevojshme vetëm në fazat e para të instalimit
Tastierë USB
USB/USB-C flash drive minimalisht 4GB
1. Çaktivizoni ndalimin e nisjes nga media e jashtme
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Shtoni depon në pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Ne e injorojmë kernelin origjinal në pacman.conf:
IgnorePkg = linux linux-headers
Shtoni paketat e nevojshme, në fund shtoni kernelin linux-mbp dhe titujt linux-mbp
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Ne e ndryshojmë skriptin për të punuar në modalitetin interaktiv (zëvendësojmë pacstrap -C me 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!"
}
Formimi i një imazhi:
sudo ./build.sh -v
Shtypni Y për të kapërcyer paketat e shpërfillura, më pas shkruani imazhin iso në USB flash drive:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Boot e parë
Rinisni me flash drive dhe tastierë të futur. Shtypni opsionet kur shfaqet molla, zgjidhni EFI BOOT.
Tjetra, duhet të shtypni tastin "e" dhe të futni në fund të vijës së komandës module_blacklist=rrufeja. Nëse kjo nuk është bërë, sistemi mund të mos niset dhe do të shfaqet një Gabim Thunderbolt ICM.
Duke përdorur fdisk/cfdisk ne gjejmë ndarjen tonë (për mua është nvme0n1p4), e formatojmë dhe instalojmë arkivin. Ju mund të përdorni udhëzimet zyrtare ose anash.
Ne nuk po krijojmë një ndarje boot; ne do të shkruajmë ngarkuesin e nisjes /dev/nvme0n1p1
Pasi mjedisi në /mnt është formuar plotësisht dhe përpara se të kaloni në arch-chroot, shkruani:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Shto në /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Instalimi i moduleve të kernelit për tastierën. Në depo anuali1 ka një paketë të gatshme, quhet mollë-bce-dkms-git. Për ta instaluar, shkruani në tastierë:
pacman -S apple-bce-dkms-git
Në këtë rast, moduli i kernelit do të thirret mollë-p.e.s. Në rastin e vetë-montimit, quhet pes. Prandaj, nëse dëshironi të regjistroni një modul në seksionin MODULES të skedarit mkinicpio.conf, atëherë mos harroni se cilin modul keni instaluar.
Montimi manual:
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
Shtoni modulin bce ose apple-bce në nisje: /etc/modules-load.d/bce.conf
bce
Nëse dëshironi të përdorni butonat Fn si parazgjedhje, atëherë shkruani në skedarin /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Përditësimi i kernelit dhe initramfs.
mkinitcpio -p linux-mbp
Instaloni iwd:
sudo pacman -S networkmanager iwd
5. Ngarkues
Pasi të instalohen të gjitha paketat kryesore brenda chroot, mund të filloni të instaloni bootloader.
Unë nuk kam qenë në gjendje për të marrë grub në punë. Grub niset nga një disk USB i jashtëm, por kur përpiqeni ta regjistroni në nvme nëpërmjet
sistemi hyri në panik të kernelit dhe pas rindezjes, një artikull i ri përmes opsioneve nuk u shfaq. Unë nuk gjeta ndonjë zgjidhje të qartë për këtë problem dhe për këtë arsye vendosa të provoj të zbatoj nisjen duke përdorur systemd-boot.
Nisja
bootctl --path=/boot install
dhe kalojmë në panik të kernelit. Fikni MacBook, ndizeni përsëri, klikoni opsionet (mos e fikni shpërndarësin USB-C me tastierë)
Ne kontrollojmë që një hyrje e re EFI BOOT është shfaqur përveç pajisjes së jashtme
Ne zgjedhim të nisim nga një disk USB i jashtëm, si gjatë instalimit të parë (mos harroni të specifikoni module_blacklist=thunderbolt)
Ne montojmë diskun tonë dhe shkojmë në mjedis nëpërmjet arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Nëse është e nevojshme që tastiera të funksionojë derisa sistemi të ngarkohet plotësisht (kjo është e nevojshme kur përdorni enkriptimin luks/dm-crypt), atëherë shkruani atë në skedarin /etc/mkinicpio.conf në seksionin MODULES:
Siç doli në fund, MacOS ruan skedarët e firmuerit për përshtatësin wi-fi në dosje /usr/share/firmware/wifi , dhe mund t'i merrni prej andej në formë blobs dhe t'i futni në modulin e kernelit brcmfmac. Për të zbuluar se cilët skedarë përdor përshtatësi juaj, hapni një terminal në MacOS dhe shkruani:
ioreg -l | grep C-4364
Ne kemi një listë të gjatë. Na duhen vetëm skedarë nga seksioni Skedarët e kërkuar:
Në këtë rast, skedari i fundit i tekstit përmban emrat e modeleve; nëse modeli juaj nuk është macbookpro15,2, atëherë duhet ta riemërtoni këtë skedar në përputhje me modelin tuaj MacBook.
Rinisni në Arch.
Kopjoni skedarët nga flash drive në dosjen /lib/firmware/brcm/
Ne kete moment 16.10.2019 ju duhet të zgjidhni ose të shëndoshë ose të pezullojë / rifillojë. Ne presim që autori i modulit bce të përfundojë funksionalitetin.
Për të ndërtuar një modul me mbështetje të pezulluar/rifilluar, duhet të bëni sa më poshtë:
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
Nëse keni instaluar modulin e gatshëm të Apple-bce nga depoja anuali1, atëherë së pari duhet ta hiqni atë dhe vetëm më pas të montoni dhe instaloni modulin bce me mbështetjen e modalitetit të pezullimit.
Gjithashtu, duhet të shtoni modulin applesmc në listën e zezë (nëse nuk e keni bërë këtë më parë) dhe sigurohuni që në /boot/loader/entries/arch.conf në rreshtin e opsioneve në fund parametri të shtohet pcie_ports=kompat.
Aktualisht, drejtuesi i shiritit të prekjes rrëzohet kur hyn në modalitetin e pezullimit dhe drejtuesi i rrufesë ndonjëherë e ngrin sistemin për më shumë se 30 sekonda dhe për disa minuta kur rifillon. Kjo mund të rregullohet duke shkarkuar automatikisht modulet problematike.
Krijo një skenar /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
Bëjeni atë të ekzekutueshëm:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Kjo është e gjitha për tani. Rezultati është një sistem plotësisht i zbatueshëm, me përjashtim të disa nuancave me pezullim/rifillim. Asnjë përplasje ose panik i bërthamës nuk u vërejt gjatë disa ditëve të funksionimit. Shpresoj që në një të ardhme të afërt autori i modulit bce do ta përfundojë atë dhe ne do të marrim mbështetje të plotë për pezullimin/rifillimin dhe tingullin.