Ir bija diezgan daudz troksnis par to, ka jaunais T2 mikroshēma apgrūtina Linux instalēšanu jaunajos 2018. gada MacBook ar tačbāru. Laikam ritot, un līdz 2019. gada beigām trešo pušu izstrādātāji izstrādāja vairākus draiverus un kodu labojumus, lai nodrošinātu mijiedarbību ar T2 mikroshēmu. Galvenais draiveris jaunajiem MacBook modeļiem nodrošina VHCI darbību (tačbāra/kursoru u.c. darbs), kā arī skaņas funkcionalitāti.
Projekts ir sadalīts trīs galvenajos komponentos:
- BCE (Buffer Copy Engine) — nodrošina galveno saziņas kanālu ar T2. VHCI un Audio prasa šo komponentu.
- VHCI ir virtuālais USB hosta kontrolieris; tastatūru, peli un citus sistēmas komponentus nodrošina šis components (citi draiveri izmanto šo hosta kontrolieri, lai nodrošinātu papildu funkcionalitāti).
- Audio — T2 audio interfeisa draiveris, pašlaik atbalsta tikai skaņas izeju caur iebūvētajiem MacBook skaļruņiem.
Otrais projekts saucas , un tas nodrošina iespēju izmantot ieslēgšanas draiveri tastatūrai, SPI skārienpaliktnim, tačbāram MacBook Pro, sākot no 2016. gada beigām un jaunākām versijām. Daļa draiveru tastatūrai/skārienpaliktnim tagad ir iekļauta kodā, sākot no versijas 5.3.
Tika īstenota arī atbalsts tādām ierīcēm kā wi-fi, skārienpaliktnis utt., izmantojot kodu labojumus. Pašreizējā kodu versija
Kas šobrīd darbojas
- NVMe
- Tastatūra
- USB-C (Thunderbolt nav pārbaudīts, automātiskā moduļa ielādēšana var sistēmu pilnībā aizsprostot)
- Tačbārs (ar iespēju ieslēgt Fn taustiņus, apgaismojums, ESC utt.)
- Skaņa (tikai iebūētie skaļruņi)
- Wi-Fi modulis (caur brcmfmac un tikai caur iw)
- DisplayPort caur USB-C
- Sensori
- Suspendēt/Atjaunot (daļēji)
- utt..
Šis pamācība ir piemērojama macbookpro15,1 un macbookpro15,2. Pamats tika ņemts no raksta GitHub angļu valodā . Ne viss šajā rakstā strādāja, tāpēc bija jāmeklē risinājums pašam.
Kas nepieciešams instalācijai
- USB-C doks uz USB (vismaz trīs USB pieslēgvietas, lai pieslēgtu peli, tastatūru, USB modemu vai telefonu tethering režīmā). Tas nepieciešams tikai pirmajos instalācijas posmos.
- USB tastatūra
- USB/USB-C zibatmiņa vismaz 4GB
1. Atspējojiet aizliegumu ielādēt no ārējiem nesējiem
2. Izveidojiet brīvu vietu, izmantojot Disk Utility
Manai ērtībai es nekavējoties izveidoju 30GB vietu diskā, formatējot to exfat Disk Utility. .
3. Izveidojiet iso attēlu
Iespējas:
- Var iet vienkāršo ceļu un lejupielādēt gatavu attēlu ar kodolu 5.3.5-1 un plāksteriem no
- Izveidot attēlu pašiem, izmantojot archlive (nepieciešama sistēma ar arch Linux distribūciju)
Uzstādam
pacman -S archisocp -r /usr/share/archiso/configs/releng/ archlive cd archlivePievienojam repozitoriju pacman.conf:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$archIgnorējam oriģinālo kodolu pacman.conf:
IgnorePkg = linux linux-headersPievienojam nepieciešamos pakotnes, beigās pievienojam kodolu linux-mbp un linux-mbp-headers
... wvdial xl2tpd linux-mbp linux-mbp-headersMainām skriptu darbībai interaktīvajā režīmā (aizvietojam pacstrap -C ar 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!" }Izveidojam attēlu:
sudo ./build.sh -vNospiežam Y, lai ignorētu ignorētās pakotnes, tad rakstām iso-attēlu uz USB zibatmiņas:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Pirmais palaidiens
Pārstartējamies ar ieliktu zibatmiņu un tastatūru. Nospiežam options, kad parādās ābola simbols, izvēlamies EFI BOOT.
Tālāk nepieciešams nospiest taustiņu «e» un ierakstīt komandu rindas beigās module_blacklist=thunderbolt. Ja to neizdarīsiet, sistēma var neielādēties, un parādīsies kļūda Thunderbolt ICM Error.
Izmantojot fdisk/cfdisk, atrodam mūsu nodaļu (man tā ir nvme0n1p4), formatējam un veicam arch uzstādīšanu. Var izmantot vai .
Nekrītam izveidot ielādēšanas nodaļu, ielādētāju rakstīsim /dev/nvme0n1p1
Pēc tam, kad pilnībā izveidota vide /mnt un pirms pāriešanas uz arch-chroot, rakstām:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Pievienojam /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Uzstādam kodolu:
sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp
Ierakstām thunderbolt un applesmc /etc/modprobe.d/blacklist.conf
blacklist thunderbolt
blacklist applesmc
Tastatūra, taču poga, utt.
Uzstādam yay:
sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
Uzstādam moduļus taču poga darbībai:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install
Pievienojam moduļus autostartā: /etc/modules-load.d/apple.conf
industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als
Uzstādam kodolu moduļus tastatūras darbībai. Repozitorijā ir gatava pakotne, tās nosaukums ir apple-bce-dkms-git. Lai to uzstādītu, rakstām konsolē:
pacman -S apple-bce-dkms-gitŠajā gadījumā kodola modulis tiks saukts apple-bce. Pašizveidošanas gadījumā tas tiek saukts bce. Attiecīgi, ja vēlaties ierakstīt moduli sadaļā MODULES failā mkinicpio.conf, neaizmirstiet, kuru moduli esat instalējuši.
Rokasgrāmatas būvniecība:
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
Pievienojam moduli bce vai apple-bce automātiskajā ielādē: /etc/modules-load.d/bce.conf
bceJa vēlaties pēc noklusējuma izmantot Fn taustiņus, tad failā /etc/modprobe.d/apple-tb.conf ierakstām:
options apple-ib-tb fnmode=2Atjauninām kodolu un initramfs.
mkinitcpio -p linux-mbp
Instalējam iwd:
sudo pacman -S networkmanager iwd5. Ielādētājs
Pēc tam, kad iekšā chroot visi galvenie pakotnes ir instalēti, varam pāriet pie ielādētāja instalēšanas.
Man tā arī neizdevās panākt, lai darbotos grub. No ārēja usb diska grub ielādējas, bet mēģinot to ierakstīt nvme caur
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
sistēma krita kernel panic, un pēc pārstartēšanas jauns punkts caur options neparādījās. Kādus skaidrus risinājumus šai problēmai es neatradu, tādēļ nolēmu izmēģināt bootēšanu ar systemd-boot.
- Sāksim
bootctl --path=/boot installun mēs atkal iekrītam kernel panic. Izslēdzam MacBook, ieslēdzam to atpakaļ, nospiežam options (usb-c centrs ar tastatūru netiek atslēgts)
- Pārbaudām, vai ir parādījies jauns EFI BOOT ieraksts papildus ārējam ierīcei
- Izvēlamies bootēšanu no ārējā usb diska, kā pirmajā instalācijā (neaizmirstam ierakstīt module_blacklist=thunderbolt)
- Montējam mūsu disku un pārejam uz vidi caur arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Ja nepieciešams, lai tastatūra darbotos līdz sistēmas pilnīgai ielādei (tas nepieciešams gadījumā, ja tiek izmantota luks/dm-crypt šifrēšana), tad ierakstām failā /etc/mkinicpio.conf sadaļā MODULES:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
Atjauninām kodolu un initramfs.
mkinicpio -p linux-mbp
Konfigurējam systemd-boot
Rediģējam failu /boot/loader/loader.conf, izdzēšam visu, kas tur iekšā, un ievadam sekojošo:
default arch
timeout 5
editor 1
Pārejam uz mapi /boot/loader/entries, izveidojam failu arch.conf un ierakstām:
title arch
linux \/vmlinuz-linux-mbp
initrd \/initramfs-linux-mbp.img
options root=\/dev\<b>nvme0n1p4</b> rw pcie_ports=compat
Ja esat izmantojuši luks un lvm, tad
iespējas cryptdevice=\/dev\/<b>nvme0n1p4</b>:luks sakne=\/dev\/mapper\/vz0-root rw pcie_ports=compat
Pārstartējamies uz MacOS.
6. Wi-Fi iestatīšana
Kā izrādījās, MacOS wi-fi adaptera firmware faili tiek glabāti mapē /usr/share/firmware/wifi , un tos var ņemt kā blob un nodot brcmfmac kodola modulim. Lai noskaidrotu, kuri faili tiek izmantoti ar jūsu adapteri, atveriet termināli MacOS un ierakstiet:
ioreg -l | grep C-4364Saņēmām garu sarakstu. Mums nepieciešami faili tikai no sadaļas 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>"})
Jūsu gadījumā failu nosaukumi var atšķirties. Mēs tos kopējam no mapes /usr/share/firmware/wifi uz zibatmiņu un pārdēvējam šādā veidā:
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>
Šajā gadījumā pēdējais teksta fails satur modeļa nosaukumu; ja jūsu modelis nav macbookpro15,2, tad jāmaina šī faila nosaukums atbilstoši jūsu MacBook modelim.
Pārstartējam uz Arch.
Kopējam failus no zibatmiņas uz mapi /lib/firmware/brcm/
sudo cp brcmfmac4364-pcie.bin \/lib\/firmware\/brcm\/\nsudo cp brcmfmac4364-pcie.clm_blob \/lib\/firmware\/brcm\/\nsudo cp 'brcmfmac4364-pcie.Apple Inc.-<b>MacBookPro15,2.txt' \/lib\/firmware\/brcm\/
Pārbaudām modulis darbību:
rmmod brcmfmac
modprobe brcmfmac
Pārliecināmies, ka tīkla interfeiss parādās, izmantojot ifconfig/ip.
Iestatām wifi, izmantojot
Uzsveram. Izmantojot netctl, nmcli utt., interfeiss nedarbojas, tikai caur iwd.
Piespiežam NetworkManager izmantot iwd. Tādēļ izveidojam failu /etc/NetworkManager/NetworkManager.conf un ierakstām:
[device]
wifi.backend=iwd
Uzsākam NetworkManager pakalpojumu
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
7. Skaņa
Lai skaņa darbotos, ir jāinstalē pulseaudio:
sudo pacman -S pulseaudio
Lejupielādējam trīs failus:
Pārvietojam tos:
/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ēt / Atjaunot
Pašreiz ir jāpiespiež izvēlēties vai nu skaņu, vai suspend/atjaunot. Gaidām, kad moduli bce autors pabeigs funkcionālā uzlabošanu. 16.10.2019 Lai savāktu moduli ar atbalstu suspend/atjaunot, ir jāveic sekojošais:
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
Ja esat uzstādījis pabeigto moduli apple-bce no anuali1 repozitorija, vispirms to jāizdzēš un tikai pēc tam jāsavāc un jāuzstāda bce modulis ar atbalstu suspend režīmam.
Tāpat nepieciešams pievienot apelsīnu moduli apelsīnucekam (ja to iepriekš neesat darījis) un pārliecināties, ka failā /boot/loader/entries/arch.conf rindā options beigās ir pievienots parametrs
pcie_ports=compat Pašreizējais tačpalīgas draiveris izslēdzas, kad iestājas suspend režīms, savukārt thunderbolt draiveris dažkārt iesaldē sistēmu vairāk nekā 30 sekundes, un atjaunošanās laikā — vairākas minūtes. To var labot, automātiski iznākot problemātiskos moduļus..
Izveidojiet skriptu
Padariet to izpildāmu: /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
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Uz šo brīdi viss ir. Rezultātā iegūstam diezgan funkcionējošu sistēmu ar dažiem niansēm, saistībā ar suspend/atjaunot. Daudzu dienu uptime laikā nav novēroti ne izmests, ne kernel panic. Ceru, ka tuvākajā nākotnē bce moduļa autors to pabeigs, un mēs iegūsim pilnīgu atbalstu suspend/atjaunot un skaņai. Uz to pagaidām viss. Rezultātā iznākusi pilnīgi funkcionāla sistēma, izņēmuma gadījumos ar dažiem suspend/resume smalkiem jautājumiem. Nekādas izslēgšanās un kernel panic nav novērotas jau vairākas dienas. Ceru, ka tuvākajā laikā moduļa autora bce veidos uzlabojumus, un mēs iegūsim pilnīgu atbalstu suspend/resume un skaņu.
Avots: habr.com
