On ollut melkoista hypeä siitä, että uusi T2-siru tekee mahdottomaksi Linuxin asentamisen uusiin 2018 MacBookeihin, joissa on kosketuspalkki. Aikaa kului, ja vuoden 2019 lopussa kolmannen osapuolen kehittäjät ottivat käyttöön useita ohjaimia ja ytimen korjaustiedostoja vuorovaikutukseen T2-sirun kanssa. MacBook-mallien 2018 ja uudempien pääohjain toteuttaa VHCI-toiminnan (kosketus/näppäimistö/jne. käyttö) sekä äänitoiminnan.
Hanke jaettu 3 pääkomponenttiin:
- BCE (Buffer Copy Engine) - muodostaa pääviestintäkanavan T2:n kanssa. VHCI ja Audio vaativat tämän komponentin.
- VHCI on USB Virtual Host Controller; tämä komponentti tarjoaa näppäimistön, hiiren ja muut järjestelmäkomponentit (muut ohjaimet käyttävät tätä isäntäohjainta tarjotakseen enemmän toimintoja.
- Audio - T2-ääniliittymän ohjain, tukee tällä hetkellä vain äänen ulostuloa MacBookin sisäänrakennettujen kaiuttimien kautta
Toinen projekti on ns , ja se toteuttaa mahdollisuuden käyttää syöttöohjainta näppäimistölle, SPI-ohjauslevylle ja kosketuspalkin loppuvuodelle 2016 ja uudemmille MacBook Proille. Jotkut näppäimistön/ohjauslevyn ajurit sisältyvät nyt ytimeen versiosta 5.3 alkaen.
Tuki laitteille, kuten wi-fi, kosketuslevy jne., toteutettiin myös ytimen korjaustiedostoilla. Nykyinen ytimen versio
Mikä toimii tällä hetkellä
- NVMe
- näppäimistö
- USB-C (Thunderboltia ei ole testattu; kun moduuli ladataan automaattisesti, se jäädyttää järjestelmän)
- Kosketuspalkki (mahdollisuudella kytkeä päälle Fn-näppäimet, taustavalo, ESC jne.)
- Ääni (vain sisäänrakennetut kaiuttimet)
- Wi-Fi-moduuli (brcmfmacin kautta ja vain iw:n kautta)
- DisplayPort USB-C:n kautta
- Anturit
- Keskeytä/Jatka (osittain)
- jne..
Tämä opetusohjelma soveltuu macbookpro15,1:lle ja macbookpro15,2:lle. Artikkeli on otettu pohjaksi Githubista englanniksi. . Kaikki tässä artikkelissa ei toiminut, joten minun piti löytää ratkaisu itse.
Mitä tarvitset asennukseen
- USB-C-telakointisovitin USB:hen (vähintään kolme USB-tuloa hiiren, näppäimistön, USB-modeemin tai puhelimen liittämiseen jakamistilassa). Tämä on tarpeen vain asennuksen ensimmäisissä vaiheissa
- USB-näppäimistö
- USB/USB-C-muistitikku vähintään 4 Gt
1. Poista käytöstä ulkoiselta tietovälineeltä käynnistämisen esto
2. Varaa vapaata tilaa Levytyökalulla
Mukavuussyistä varasin heti 30 Gt levylle, alustaen sen exfatissa itse Levytyökalussa. .
3. Luo ISO-kuva
vaihtoehdoista:
- Voit siirtyä yksinkertaista reittiä ja ladata valmiin kuvan kernel 5.3.5-1 ja korjaustiedostot osoitteesta
- Luo kuva itse arkiston kautta (tarvitaan järjestelmä Archa-jakelulla)
Asettaa
pacman -S archisocp -r /usr/share/archiso/configs/releng/ archlive cd archliveLisää arkisto tiedostoon pacman.conf:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$archJätämme huomioimatta alkuperäisen ytimen pacman.conf:ssa:
IgnorePkg = linux linux-headersLisää tarvittavat paketit, lisää lopuksi linux-mbp-ydin ja linux-mbp-headers
... wvdial xl2tpd linux-mbp linux-mbp-headersMuutamme skriptin toimimaan interaktiivisessa tilassa (korvaa pacstrap -C merkillä 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!" }Kuvan muodostaminen:
sudo ./build.sh -vOhita ohitetut paketit painamalla Y ja kirjoita sitten iso-kuva USB-muistitikulle:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Ensimmäinen käynnistys
Käynnistä uudelleen, kun flash-asema ja näppäimistö on asetettu. Paina vaihtoehtoja, kun omena tulee näkyviin, valitse EFI BOOT.
Seuraavaksi sinun on painettava "e"-näppäintä ja kirjoitettava komentorivin lopussa module_blacklist=ukkonen. Jos näin ei tehdä, järjestelmä ei välttämättä käynnisty ja näyttöön tulee Thunderbolt ICM Error.
Käyttämällä fdisk / cfdisk löydämme osiomme (minulle se on nvme0n1p4), alustamme sen ja asennamme arkiston. Voit käyttää tai .
Emme luo käynnistysosiota; kirjoitamme käynnistyslataimen sisään / dev / nvme0n1p1
Kun ympäristö /mnt:ssä on muodostunut kokonaan ja ennen siirtymistä arch-chrootiin, kirjoita:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Lisää tiedostoon /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Asenna ydin:
sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp
Rekisteröimme thunderbolt ja applesmc tiedostossa /etc/modprobe.d/blacklist.conf
blacklist thunderbolt
blacklist applesmc
Näppäimistö, kosketuspalkki jne
Asenna joo:
sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
Moduulien asentaminen kosketuspalkin toimintaa varten:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install
Lisää moduuleja käynnistykseen: /etc/modules-load.d/apple.conf
industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als
Ydinmoduulien asennus näppäimistölle. Arkistossa on valmis paketti, se on ns apple-bce-dkms-git. Asenna se kirjoittamalla konsoliin:
pacman -S apple-bce-dkms-gitTässä tapauksessa ydinmoduulia kutsutaan omena-bce. Itsekokoonpanon tapauksessa sitä kutsutaan BCE. Jos siis haluat rekisteröidä moduulin mkinicpio.conf-tiedoston MODULES-osioon, älä unohda, minkä moduulin asensit.
Manuaalinen kokoonpano:
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
Lisää bce- tai apple-bce-moduuli käynnistykseen: /etc/modules-load.d/bce.conf
bceJos haluat käyttää Fn-painikkeita oletuksena, kirjoita /etc/modprobe.d/apple-tb.conf-tiedostoon:
options apple-ib-tb fnmode=2Päivitetään ydin ja initramfs.
mkinitcpio -p linux-mbp
Asenna iwd:
sudo pacman -S networkmanager iwd5. Kuormaaja
Kun kaikki pääpaketit on asennettu chrootin sisään, voit aloittaa käynnistyslataimen asennuksen.
En ole päässyt töihin. Grub käynnistyy ulkoisesta USB-asemasta, mutta kun yrität rekisteröidä sen nvme:n kautta
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
järjestelmä joutui ytimen paniikkiin, ja uudelleenkäynnistyksen jälkeen uutta kohdetta vaihtoehtojen kautta ei ilmestynyt. En löytänyt selkeää ratkaisua tähän ongelmaan, ja siksi päätin yrittää käynnistää systemd-bootin avulla.
- Tuoda markkinoille
bootctl --path=/boot installja menemme ytimen paniikkiin. Sammuta MacBook, käynnistä se uudelleen, napsauta vaihtoehtoja (älä sammuta USB-C-keskitintä näppäimistöllä)
- Tarkistamme, että ulkoisen laitteen lisäksi on ilmestynyt uusi EFI BOOT -merkintä
- Valitsemme käynnistyksen ulkoiselta USB-asemalta, kuten ensimmäisen asennuksen yhteydessä (älä unohda määrittää module_blacklist=thunderbolt)
- Asennamme levymme ja menemme ympäristöön arch-chrootin kautta
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Jos näppäimistön on toimittava, kunnes järjestelmä on ladattu täyteen (tämä on tarpeen luks/dm-crypt-salausta käytettäessä), kirjoita se /etc/mkinicpio.conf-tiedostoon MODULES-osiossa:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
Päivitetään ydin ja initramfs.
mkinicpio -p linux-mbp
Asetetaan systemd-boot
Muokkaamme /boot/loader/loader.conf-tiedostoa, poistamme kaiken sisältä ja lisäämme seuraavat:
default arch
timeout 5
editor 1
Mene /boot/loader/entries-kansioon, luo arch.conf-tiedosto ja kirjoita:
title arch
linux /vmlinuz-linux-mbp
initrd /initramfs-linux-mbp.img
options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat
Jos käytit luksia ja lvm:ää, niin
options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat
Käynnistä MacOS uudelleen.
6. Wi-Fi-asetukset
Kuten lopulta kävi ilmi, MacOS tallentaa Wi-Fi-sovittimen laiteohjelmistotiedostot kansioon /usr/share/firmware/wifi , ja voit ottaa ne sieltä blob-muodossa ja syöttää ne brcmfmac-ydinmoduuliin. Saadaksesi selville, mitä tiedostoja sovittimesi käyttää, avaa pääte MacOS:ssa ja kirjoita:
ioreg -l | grep C-4364Saamme pitkän listan. Tarvitsemme vain tiedostoja osiosta Pyydetyt tiedostot:
"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>"})
Sinun tapauksessasi tiedostojen nimet voivat olla erilaisia. Kopioi ne /usr/share/firmware/wifi-kansiosta flash-asemaan ja nimeä ne uudelleen seuraavasti:
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>
Tässä tapauksessa viimeinen tekstitiedosto sisältää mallien nimet; jos mallisi ei ole macbookpro15,2, sinun on nimettävä tämä tiedosto uudelleen MacBook-mallisi mukaisesti.
Käynnistä Archiin uudelleen.
Kopioi tiedostot flash-asemasta /lib/firmware/brcm/-kansioon
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/
Moduulin toimivuuden tarkistaminen:
rmmod brcmfmac
modprobe brcmfmac
Varmistamme, että verkkoliitäntä näkyy ifconfig/ip:n kautta.
Asetetaan wifi:n kautta
Huomio. Netctl:n, nmclin jne. kautta. Käyttöliittymä ei toimi, vain iwd:n kautta.
Pakotamme NetworkManagerin käyttämään iwd:tä. Tee tämä luomalla tiedosto /etc/NetworkManager/NetworkManager.conf ja kirjoittamalla:
[device]
wifi.backend=iwd
Käynnistä NetworkManager-palvelu
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
7. Ääni
Jotta ääni toimisi, sinun on asennettava pulseaudio:
sudo pacman -S pulseaudio
Lataa kolme tiedostoa:
Siirretään niitä:
/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. Keskeytä/Jatka
Tällä hetkellä 16.10.2019 sinun on valittava joko ääni tai keskeytys/jatka. Odotamme bce-moduulin kirjoittajan suorittavan toiminnon valmiiksi.
Jos haluat rakentaa keskeytetyn/jatkamisen tuen sisältävän moduulin, sinun on toimittava seuraavasti:
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
Jos asensit valmiin apple-bce-moduulin anuali1-varastosta, sinun on ensin poistettava se ja vasta sitten koottava ja asennettava bce-moduuli keskeytystilan tuella.
Lisäksi sinun on lisättävä applesmc-moduuli mustalle listalle (jos et ole tehnyt tätä aiemmin) ja varmista, että parametri on lisätty parametririville /boot/loader/entries/arch.conf lopussa olevalle optioriville. pcie_ports=compat.
Tällä hetkellä kosketuspalkin ohjain kaatuu siirtyessään keskeytystilaan, ja ukkosen ohjain joskus jumittaa järjestelmän yli 30 sekunniksi ja useiksi minuuteiksi, kun se jatkaa. Tämä voidaan korjata poistamalla ongelmalliset moduulit automaattisesti.
Luo käsikirjoitus /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
Tee siitä suoritettava:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh Tässä kaikki tältä erää. Tuloksena on täysin toimiva järjestelmä, lukuun ottamatta joitain keskeytyksen/jatkamisen vivahteita. Ei havaittu kaatumisia tai ytimen paniikkia useiden käyttöpäivien aikana. Toivon, että lähitulevaisuudessa bce-moduulin kirjoittaja saa sen valmiiksi ja saamme täyden tuen keskeytyksestä/jatkamisesta ja äänestä.
Lähde: will.com
