Palju mĂŒra on olnud selle ĂŒle, et uue T2 kiibi tĂ”ttu ei saa uusi 2018. aasta MacBooke Touchbariga Linuxile installida. Aeg on edasi lĂ€inud ja 2019. aasta lĂ”puks olid kolmandad arendajad vĂ€lja töötanud mitmeid draivereid ja kernelipatch'e T2 kiibiga suhtlemiseks. 2018. aasta ja uuematele MacBooki mudelitele mĂ”eldud peamine draiver viib ellu VHCI (töö touchpad'i/kliendi ja jne) ning ka heli toimimise.
Projekt jagatakse kolme pÔhikomponendi vahel:
- BCE (Buffer Copy Engine) â loob peamise sidekanali T2-ga. VHCI ja Audio vajavad seda komponenti.
- VHCI on virtuaalne USB hostkontroller; klaviatuur, hiir ja muud sĂŒsteemi komponendid on pakutud selle komponendi kaudu (teised draiverid kasutavad seda hostkontrollerit suurema funktsionaalsuse tagamiseks.
- Audio â T2 heliliidese draiver, toetab praegu ainult heli edastamist MacBooki sisseehitatud kĂ”larite kaudu.
Teine projekt kannab nime , ja see rakendab klaviatuuri, puuteplaadi SPI, Touchbari draiveri töötamise vĂ”imalust 2016. aasta lĂ”pu ja hilisema MacBook Pro jaoks. Osa klaviatuuri/puuteplaadi draiveritest on nĂŒĂŒd alates versioonist 5.3 tuumas.
Samuti on rakendatud toimetuslike seadmete nagu Wi-Fi ja puuteplaadi tugi, kasutades kerneli patche. Praegu on kerneliversioon
Mis praegu töötab
- NVMe
- Keyboard
- USB-C (Thunderbolt ei ole testitud, automaatne laadimine hangib sĂŒsteemi tĂ€ielikult)
- Touchbar (Fn klahvi sisselĂŒlitamise vĂ”imalus, valgustus, ESC jne)
- Heli (ainult sisseehitatud kÔlarid)
- Wi-Fi moodul (brcmfmac kaudu ja ainult iw abil)
- DisplayPort USB-C kaudu
- Sensoreid
- Suspend/Resume (osaliselt)
- jne..
See juhend kehtib macbookpro15,1 ja macbookpro15,2. Aluseks oli ingliskeelne artikkel GithHub'is . Mitte kÔik sellest artiklist ei töötanud, seega tuli lahendusi ise otsida.
Mida installimiseks vaja on
- USB-C dokkedadapter USB-le (vĂ€hemalt kolm USB pesa hiire, klaviatuuri, USB modem vĂ”i telefoni ĂŒhendamiseks tethering reĆŸiimis). See on vajalik ainult installatsiooni algsetel etappidel.
- USB-klaviatuur
- USB/USB-C mÀlupulk vÀhemalt 4GB
1. LĂŒlitame vĂ€lja vĂ€listest seadmetest bootimise keelu
2. Eraldame vaba ruumi Disk Utility abil
Mugavuse nimel eraldasin kohe 30GB ketas, vormindades selle Disk Utility's exfat. .
3. Loome iso pildi
Valikud:
- VÔite minna lihtsamat teed ja allalaadida valmis pildi, millel on kernel 5.3.5-1 ja patched versioonid
- Looge pilt iseseisvalt lĂ€bi archlive (vajalik on sĂŒsteem Arch distsiooniga)
Paigaldame
pacman -S archisocp -r /usr/share/archiso/configs/releng/ archlive cd archliveLisame hoidla pacman.conf faili:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$archIgnoreerime originaal kernelit pacman.conf failis:
IgnorePkg = linux linux-headersLisame vajalikud paketid, lÔpus lisame kernel linux-mbp ja linux-mbp-headers
... wvdial xl2tpd linux-mbp linux-mbp-headersMuudame skripti interaktiivses reĆŸiimis töötamiseks (asendame 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!" }Loome pildi:
sudo ./build.sh -vVajutame Y, et vahele jÀtta ignoreeritud paketid, siis kirjutame iso-pildi USB mÀlupulgale:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Esimene kÀivitamine
TaaskĂ€ivitame ĂŒhendatud mĂ€lupulga ja klaviatuuriga. Vajutame valikute nuppu, kui Ă”unapuu kuvatakse, ja valime EFI BOOT.
SeejĂ€rel tuleb vajutada klahvi «e» ja sisestada kĂ€surea lĂ”ppu module_blacklist=thunderbolt. Kui seda ei tee, vĂ”ib sĂŒsteem mitte kĂ€ivituda ja ilmuda viga Thunderbolt ICM Error.
fdisk/cfdisk abil leiame oma partitsiooni (minu puhul on see nvme0n1p4), vormindame selle ja installime Archi. VÔib kasutada vÔi .
KÀivitamispartitsiooni ei loo, kÀivitaja kirjutame /dev/nvme0n1p1
PÀrast seda, kui keskkond on tÀielikult loodud /mnt-s, ja enne arch-chroot'i minemist, kirjutame:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Lisame /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Paigaldame kernel:
sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp
Kandke thunderbolt ja applesmc /etc/modprobe.d/blacklist.conf faili
blacklist thunderbolt
blacklist applesmc
Klaviatuur, Touch Bar jne
Paigaldame yay:
sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
Paigaldame moodulid Touch Bari tööks:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install
Lisame moodulid automaatlaadimiseks: /etc/modules-load.d/apple.conf
industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als
Paigaldame kernelimoodulid klaviatuuri tööks. Repositooriumis on valmis pakett, selle nimi on apple-bce-dkms-git. Selle paigaldamiseks kirjutame terminalis:
pacman -S apple-bce-dkms-gitSel juhul kannab kernelimoodul nime apple-bce. Iseseisva koostamise korral kannab see nime bce. Seega, kui soovite mooduli lisada FILE mkinicpio.conf jaotises MODULES, siis Àrge unustage, millise mooduli olete installinud.
KĂ€sitsi kogumine:
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
Lisame mooduli bce vÔi apple-bce automaatlaadimisse: /etc/modules-load.d/bce.conf
bceKui soovite kasutada vaikimisi klahve Fn, siis kirjutage faili /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2Uuendame kernelit ja initramfs-i.
mkinitcpio -p linux-mbp
Paigaldame iwd:
sudo pacman -S networkmanager iwd5. Laadija
PÀrast seda, kui chroot'is on kÔik pÔhipaketid paigaldatud, saab alustada laadija paigaldamist.
Ma ei suutnud grub'i tööle saada. VÀlistelt usb-diskilt grub kÀivitub, kuid proovides seda nvme-sse lisada lÀbi
grub-install âtarget=x86_64-efi âefi-directory=/boot âbootloader-id=grub
sĂŒsteem lĂ€ks kernel panic'i ja pĂ€rast taaskĂ€ivitamist ei ilmunud uut punkti lĂ€bi options. Ma ei leidnud mingit arusaadavat lahendust sellele probleemile ja otsustasin proovida kĂ€ivitada sĂŒsteemiga systemd-boot.
- KĂ€ivitame
bootctl --path=/boot installja lĂ€heme kernel panic'i. LĂŒlitame MacBook'i vĂ€lja, lĂŒlitame sisse ja vajutame options (usb-c hub klaviatuuri ei lĂŒlita vĂ€lja)
- Kontrollime, et uus EFI BOOT sissekanne ilmus koos vÀlise seadmega
- Valime kÀivitamise vÀliselt usb-diskilt, nagu esmakordsel installimisel (Àrge unustage lisada module_blacklist=thunderbolt)
- Mountime meie ketta ja liigume keskkonda lÀbi arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Kui soovite, et klaviatuur töötaks enne sĂŒsteemi tĂ€ielikku kĂ€ivitamist (see on vajalik luks/dm-crypt krĂŒpteerimise kasutamisel), siis kirjutage faili /etc/mkinicpio.conf jaotises MODULES:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
Uuendame kernelit ja initramfs-i.
mkinicpio -p linux-mbp
Seadistame systemd-boot
Muudame faili /boot/loader/loader.conf, eemaldame sealt kÔik ja lisame jÀrgmise:
default arch
timeout 5
editor 1
Liigume kausta /boot/loader/entries, loome faili arch.conf ja kirjutame:
title arch
linux /vmlinuz-linux-mbp
initrd /initramfs-linux-mbp.img
options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat
Kui olete kasutanud luks ja lvm, siis
valikud cryptdevice=\/dev\/<b>nvme0n1p4</b>:luks root=\/dev\/mapper\/vz0-root rw pcie_ports=compat
TaaskÀivitage MacOS.
6. Wi-Fi seadistamine
Kuidas selgus, salvestab MacOS wi-fi adapteri pĂŒsivara failid kausta /usr/share/firmware/wifi , ja sealt saab neid blobidena vĂ”tta ja sĂŒĂŒa kernel moodulile brcmfmac. Selleks, et teada saada, milliseid faile teie adapter kasutab, avage MacOS-is terminal ja kirjutage:
ioreg -l | grep C-4364Saame pikka nimekirja. Meie jaoks on vajalikud failid ainult jaotusest RequestedFiles:
"RequestedFiles" = ({"Firmware"="<b>C-4364__s-B2/maui.trx</b>","TxCap"="C-4364__s-B2/maui-X3.txcb","Regulatory"="C-4364__s-B2/<b>maui-X3.clmb</b>","NVRAM"="C-4364__s-B2/<b>P-maui-X3_M-HRPN_V-m__m-7.7.txt</b>"})
Teie puhul vĂ”ivad failide nimed erineda. Kopeerime need kaustast /usr/share/firmware/wifi mĂ€lupulgale ja nimetame need ĂŒmber jĂ€rgmisel viisil:
maui.trx -> brcmfmac4364-pcie.bin
maui-X3.clmb -> brcmfmac4364-pcie.clm_blob
P-maui-X3_M-HRPN_V-m__m-7.7.txt -> brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt</b>
Antud juhul sisaldab viimane tekstifail mudeli nimesid. Kui teie mudel ei ole macbookpro15,2, siis tuleb see fail ĂŒmber nimetada vastavalt teie MacBooki mudelile.
TaaskÀivitame Archi.
Kopeerime failid mÀlupulgalt kausta /lib/firmware/brcm/
sudo cp brcmfmac4364-pcie.bin /lib/firmware/brcm/
sudo cp brcmfmac4364-pcie.clm_blob /lib/firmware/brcm/
sudo cp 'brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt' /lib/firmware/brcm/
Kontrollime mooduli toimivust:
rmmod brcmfmac
modprobe brcmfmac
Veenduge, et vÔrguliides oleks ilmnenud kÀsu ifconfig/ip kaudu.
Seame wifi konfiiguratsiooni lÀbi
TĂ€helepanu. Netctl, nmcli jne. kaudu ei toimi liides, ainult iwd kaudu.
KĂ€ivitame NetworkManager'i iwd kasutamiseks. Selleks loome faili /etc/NetworkManager/NetworkManager.conf ja kirjutame:
[device]
wifi.backend=iwd
KĂ€ivitame NetworkManager'i teenuse
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
7. Helis
Heli tööle saamiseks tuleb installida pulseaudio:
sudo pacman -S pulseaudio
Laadime alla kolm faili:
Liigutame need:
/usr/share/alsa/cards/AppleT2.conf
/usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf
/usr/lib/udev/rules.d/91-pulseaudio-custom.rules8. Suspend/resume
Praegusel hetkel 16.10.2019 peame valima kas heli vÔi suspend/resume. Ootame, kuni mooduli autor bce lÔpptöötluse teeb.
Et koguda moodulit susped/resume toetuseks, tuleb teha 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 olete installinud valmis mooduli apple-bce registrist anuali1, tuleb see eelnevalt eemaldada ja alles siis koguda ja installida bce moodul suspendi reĆŸiimi toetamiseks.
Samuti tuleb lisada musta nimekirja moodul applesmc (kui te seda varem ei teinud) ja veenduda, et /boot/loader/entries/arch.conf failis on lÔpus lisatud parameeter pcie_ports=compat.
Praegu katkeb touchbar'i draiver riputamise reĆŸiimi sisenemisel, ja thunderbolti draiver mĂ”nikord hangib sĂŒsteemi rohkem kui 30 sekundiks ning taaskĂ€ivitamisel - mitmeks minutiks. Seda saab parandada probleemsete moodulite automaatse eemaldamisega.
Looge skript /lib/systemd/system-sleep/rmmod.sh:
#!/bin/sh
if [ "${1}" == "pre" ]; then
rmmod thunderbolt
rmmod apple_ib_tb
elif [ "${1}" == "post" ]; then
modprobe apple_ib_tb
modprobe thunderbolt
fi
Tehke see teostatavaks:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh Sellega kĂ”ik. LĂ”ppkokkuvĂ”ttes saame ĂŒsna toimiva sĂŒsteemi, vĂ€lja arvatud mĂ”ned nĂŒansid suspendi/resume osas. Ăkski vĂ€ljalange ja kernel panic ei ole tĂ€heldatud mitme pĂ€eva jooksul, kui sĂŒsteem on töödel. Loodan, et peagi tĂ€iendab mooduli autor bce-d, ja saame tĂ€ieliku toe suspend/resume ja heli jaoks.
Allikas: habr.com
