ProHoster > Blogi > Haldamine > MacBook Pro 2018 T2 töötamine koos ArchLinuxiga (kahekäivitusega)
MacBook Pro 2018 T2 töötamine koos ArchLinuxiga (kahekäivitusega)
Üsna palju on räägitud sellest, et uus T2 kiip muudab Linuxi installimise uutele puuteribaga 2018. aasta MacBookidele võimatuks. Aeg möödus ja 2019. aasta lõpus rakendasid kolmandate osapoolte arendajad T2 kiibiga suhtlemiseks mitmeid draivereid ja kerneli plaastreid. MacBooki 2018. aasta ja uuemate mudelite põhidraiver rakendab VHCI-funktsiooni (puutetundliku/klaviatuuri/jne toimimine), aga ka helijuhtimist.
BCE (Buffer Copy Engine) – loob peamise sidekanali T2-ga. VHCI ja Audio nõuavad seda komponenti.
VHCI on USB virtuaalse hosti kontroller; klaviatuuri, hiirt ja muid süsteemikomponente pakub see komponent (teised draiverid kasutavad seda hostikontrollerit, et pakkuda rohkem funktsioone.
Audio – T2 heliliidese draiver, toetab praegu ainult heliväljundit läbi MacBooki sisseehitatud kõlarite
Teine projekt on nn macbook12-spi-draiver, ja see rakendab võimalust kasutada MacBook Pro 2016. aasta lõpu ja uuemate versioonide klaviatuuri, SPI-puuteplaadi ja puuteriba sisenddraiverit. Mõned klaviatuuri/puuteplaadi draiverid on nüüd kernelisse kaasatud, alates versioonist 5.3.
Tuuma sellistele seadmetele nagu wi-fi, puuteplaat jne rakendati ka tuumaplaastrite abil. Praegune kerneli versioon5.3.5-1
Mis hetkel töötab
NVMe
klaviatuur
USB-C (Thunderbolti pole testitud; kui moodul laaditakse automaatselt, külmub see süsteem)
Puuteriba (võimalusega sisse lülitada Fn-klahvid, taustvalgustus, ESC jne)
Heli (ainult sisseehitatud kõlarid)
Wi-Fi moodul (brcmfmaci kaudu ja ainult iw kaudu)
DisplayPort USB-C kaudu
Andurid
Peata/Jätka (osaliselt)
jne ..
See õpetus on rakendatav Macbookpro15,1 ja macbookpro15,2 jaoks. Artikkel võeti aluseks inglise keeles Githubist. siit. Kõik selles artiklis ei töötanud, seega pidin ise lahenduse leidma.
Mida peate installima
USB-C dokkimisadapter USB-ga (vähemalt kolm USB-sisendit hiire, klaviatuuri, USB-modemi või telefoni ühendamiseks jagamisrežiimis). See on vajalik ainult paigaldamise esimestel etappidel
# 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!"
}
Kujutise moodustamine:
sudo ./build.sh -v
Eiratud pakettide vahelejätmiseks vajutage Y, seejärel kirjutage iso-pilt USB-mälupulgale:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Esimene käivitamine
Taaskäivitage, kui mälupulk ja klaviatuur on sisestatud. Vajutage valikuid, kui ilmub õun, valige EFI BOOT.
Järgmisena peate vajutama klahvi "e" ja sisestama käsurea lõpus module_blacklist=äike. Kui seda ei tehta, ei pruugi süsteem käivituda ja ilmub Thunderbolt ICM Error.
Kasutades fdisk/cfdisk leiame oma partitsiooni (minu jaoks on see nvme0n1p4), vormindame selle ja installime arhiivi. Sa võid kasutada ametlikud juhised või külili.
Me ei loo alglaadija partitsiooni; me kirjutame alglaaduri sisse /dev/nvme0n1p1
Kui /mnt keskkond on täielikult moodustunud ja enne arch-chrootile üleminekut, kirjutage:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Lisa faili /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Kerneli moodulite installimine klaviatuurile. Hoidlas anuali1 on valmis pakend, seda nn apple-bce-dkms-git. Selle installimiseks kirjutage konsooli:
pacman -S apple-bce-dkms-git
Sel juhul kutsutakse välja kerneli moodul õun-bce. Isemonteerimise puhul nimetatakse eKr. Seega, kui soovite registreerida mooduli faili mkinicpio.conf jaotises MOODULID, ärge unustage, millise mooduli installisite.
Käsitsi kokkupanek:
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
Lisage käivitamiseks moodul bce või apple-bce: /etc/modules-load.d/bce.conf
bce
Kui soovite vaikimisi kasutada nuppe Fn, siis kirjutage faili /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Kerneli ja initramfsi värskendamine.
mkinitcpio -p linux-mbp
Installige iwd:
sudo pacman -S networkmanager iwd
5. Laadur
Kui kõik põhipaketid on chrooti sisse installitud, võite alustada alglaaduri installimist.
Mul pole õnnestunud grubi tööle saada. Grub käivitub väliselt USB-draivilt, kuid kui proovite seda nvme-s registreerida
süsteem läks kerneli paanikasse ja pärast taaskäivitamist valikute kaudu uut elementi ei ilmunud. Ma ei leidnud sellele probleemile selget lahendust ja otsustasin seetõttu proovida käivitamist kasutada systemd-boot abil.
Käivitamine
bootctl --path=/boot install
ja me satume kerneli paanikasse. Lülitage MacBook välja, lülitage see uuesti sisse, klõpsake valikutel (ärge lülitage USB-C jaoturit klaviatuuriga välja)
Kontrollime, kas lisaks välisseadmele on ilmunud uus EFI BOOT kirje
Valime käivitamise väliselt USB-draivilt, nagu ka esimese installimise ajal (ärge unustage määrata module_blacklist=thunderbolt)
Kinnitame oma ketta ja läheme arch-chrooti kaudu keskkonda
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Kui on vaja, et klaviatuur töötaks kuni süsteemi täieliku laadimiseni (see on vajalik luks/dm-crypt krüptimise kasutamisel), siis kirjutage see jaotisesse MOODULID faili /etc/mkinicpio.conf:
Nagu lõpuks selgus, salvestab MacOS kausta wi-fi-adapteri püsivara failid /usr/share/firmware/wifi , ja saate need sealt blobide kujul võtta ja brcmfmaci kerneli moodulisse suunata. Selleks et teada saada, milliseid faile teie adapter kasutab, avage MacOS-is terminal ja kirjutage:
ioreg -l | grep C-4364
Saame pika nimekirja. Vajame ainult sektsiooni faile Taotletud failid:
Sel juhul sisaldab viimane tekstifail mudelinimesid; kui teie mudel ei ole macbookpro15,2, peate selle faili ümber nimetama vastavalt oma MacBooki mudelile.
Praegusel hetkel 16.10.2019 tuleb valida kas heli või peatamine/jätkamine. Ootame bce mooduli autorit funktsionaalsuse lõpuleviimiseks.
Peatatud/jätkamise toega mooduli koostamiseks peate tegema järgmist.
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
Kui installisite valmis apple-bce mooduli anuali1 hoidlast, siis peate selle esmalt eemaldama ja alles seejärel kokku panema ja installima peatamisrežiimi toega bce mooduli.
Samuti peate musta nimekirja lisama mooduli applesmc (kui te pole seda varem teinud) ja veenduge, et faili /boot/loader/entries/arch.conf lõpus oleva valikureal oleks parameeter lisatud pcie_ports=compat.
Praegu jookseb puuteriba draiver peatamisrežiimi sisenemisel kokku ja äikesedraiver külmutab süsteemi mõnikord rohkem kui 30 sekundiks ja jätkamisel mitmeks minutiks. Seda saab parandada probleemsete moodulite automaatse mahalaadimisega.
Loo skript /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
Muutke see käivitatavaks:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Praeguseks kõik. Tulemuseks on täiesti toimiv süsteem, kui mõned peatamise/jätkamise nüansid välja arvata. Mitme tööpäeva jooksul ei täheldatud ühtegi krahhi ega kerneli paanikat. Loodan, et lähiajal saab bce mooduli autor selle valmis ja saame peatamise/resume ja heli täieliku toe.