Ishte bërë shumë zhurmë rreth faktit se për shkak të çipit të ri T2, nuk është e mundur të instalohet linux në MacBook të rinj 2018 me Touch Bar. Kaloi koha, dhe në fund të vitit 2019, zhvilluesit e jashtëm zbatuan një sërë drejtuese dhe patches për kernelin për t'u lidhur me çipin T2. Drejtuesi kryesor për modelet MacBook 2018 dhe më të reja implementon funksionimin e VHCI (funksionimi i tastierës/touch-it etj.) si dhe funksionimin e tingullit.
Projekt eshte i ndarë në 3 komponente kryesore:
- BCE (Buffer Copy Engine) â krijon kanalin e komunikimit me T2. VHCI dhe Audio kĂ«rkojnĂ« kĂ«tĂ« komponent.
- VHCI â Ă«shtĂ« njĂ« kontrollues virtual i hostit USB; tastiera, mice dhe komponentĂ«t e tjerĂ« tĂ« sistemit ofrohen nga ky komponent (drejtues tĂ« tjerĂ« e pĂ«rdorin kĂ«tĂ« kontrollues hosti pĂ«r tĂ« siguruar funksionalitete tĂ« tjera).
- Audio â drejtuesi pĂ«r ndĂ«rfaqen e audios T2, pĂ«r momentin mbĂ«shtetet vetĂ«m pĂ«r daljen e tingullit pĂ«rmes altoparlantĂ«ve tĂ« integruar tĂ« MacBook.
Projekti i dytë quhet , dhe ai realizon mundësinë e funksionimit të drejtuesit të hyrjes për tastierën, trackpad-in SPI, dhe touchbar për MacBook Pro nga fundi i vitit 2016 dhe më pas. Një pjesë e drejtuesve për tastierën/trackpad-in tani është përfshirë në bërthamën, duke filluar nga versioni 5.3.
Po ashtu, është realizuar mbështetje për pajisje të tilla si wi-fi, trackpad, etj, përmes patch-ev të bërthamës. Versioni aktual i bërthamës
ĂfarĂ« funksionon nĂ« kĂ«tĂ« moment
- NVMe
- Tastiera
- USB-C (Thunderbolt nuk është testuar, kur ngarkohet moduli bërthama ngec sistemin krejtësisht)
- Touchbar (me mundësinë për të aktivizuar çelësat Fn, ndriçimi, ESC, etj.)
- Zëri (vetëm altoparlantët e integruar)
- Moduli Wi-Fi (përmes brcmfmac dhe vetëm përmes iw)
- DisplayPort përmes USB-C
- Sensorët
- Suspendim/Rimëkëmbje (pjesërisht)
- etj..
Ky tutorial është i aplikueshëm për macbookpro15,1 dhe macbookpro15,2. Baza është marrë nga një artikull në GitHub në anglisht . Jo të gjitha nga ky artikull funksionuan, prandaj duhej të kërkoja zgjidhje vetë.
ĂfarĂ« do tĂ« nevojitet pĂ«r instalimin
- USB-C dok adaptor në USB (të paktën tre porta USB për lidhjen e mausit, tastierës, modemit USB ose telefonit në mënyrën e lidhjes). Kjo është e nevojshme vetëm në fazat e para të instalimit
- Tastierë USB
- USB/USB-C flash drive me minimum 4GB
1. Ăaktivizoni ndalimin e ngarkesĂ«s nga pajisjet e jashtme
2. Përzgjedhim hapësirë të lirë me Disk Utility
Për lehtësi, unë kam rezervuar menjëherë 30 GB në disk, duke e formatizuar atë në exfat direkt në Disk Utility. .
3. Krijojmë imazhin iso
Mundësitë:
- Mund të ndjekim rrugën e lehtë dhe të shkarkojmë një imazh të gatshëm me kernel 5.3.5-1 dhe patch-et nga
- Krijoni imazhin vetë përmes archlive (nevojitet një sistem me distribucionin arch)
Instalojmë
pacman -S archisocp -r /usr/share/archiso/configs/releng/ archlive cd archliveShtojmë repositorin në pacman.conf:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$archInjorojmë kernelin origjinal në pacman.conf:
IgnorePkg = linux linux-headersShtojmë paketat e nevojshme, në fund shtojmë kernelin linux-mbp dhe linux-mbp-headers
... wvdial xl2tpd linux-mbp linux-mbp-headersModifikojmë skriptin për të punuar në modin 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!" }Krijojmë imazhin:
sudo ./build.sh -vShtypim Y për të anashkaluar paketat e injoruara, pastaj shkruajmë imazhin iso në memorien USB:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Ngarkesa e parë
Rifillojmë me memorien USB të futur dhe tastierën. Shtypim opsione kur shfaqet logoja e Apple, përzgjedhim EFI BOOT.
Më pas është e nevojshme të shtypni çelësin «e» dhe të shkruani në fund të vijës së komandës module_blacklist=thunderbolt. Nëse nuk e bëni këtë, sistemi mund të mos ngarkohet dhe do të ketë një gabim Thunderbolt ICM.
Me fdisk/cfdisk gjejmë ndarjen tonë (për mua është nvme0n1p4), e formatizojmë dhe kryejmë instalimin e arka. Mund të përdorim ose .
Nuk krijojmë ndarjen boot, sepse do të shkruajmë ngarkuesin në /dev/nvme0n1p1
Pasi të jetë formuar plotësisht ambienti në /mnt dhe para se të kalojmë në arch-chroot, shkruajmë:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Shtojmë në /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Instalojmë bërthamën:
sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp
Shkruajmë thunderbolt dhe applesmc në /etc/modprobe.d/blacklist.conf
blacklist thunderbolt
blacklist applesmc
Tastiera, touch bar, etj.
Instalojmë yay:
sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
Instalojmë modulet për funksionimin e touch bar-it:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install
Shtojmë modulet në ngarkesë automatikisht: /etc/modules-load.d/apple.conf
industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als
Instalojmë modulet e bërthamës për funksionimin e tastierës. Në depozitë ka një paketë të gatshme, e cila quhet apple-bce-dkms-git. Për ta instaluar, shkruajmë në konsol:
pacman -S apple-bce-dkms-gitNë këtë rast, moduli i bërthamës do të quhet apple-bce. Në rastin e ndërtimit në mënyrë të pavarur, ai quhet bce. Prandaj, nëse dëshironi të shkruani modulin në seksionin MODULES në skedarin mkinicpio.conf, mos harro se cili modul e keni instaluar.
Ndërtimi 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ë ngarkesën automatikisht: /etc/modules-load.d/bce.conf
bceNëse dëshironi të përdorni si parazgjedhje butonat Fn, atëherë në skedarin /etc/modprobe.d/apple-tb.conf shkruani:
options apple-ib-tb fnmode=2Përditësoni bërthamën dhe initramfs.
mkinitcpio -p linux-mbp
Do të instalojmë iwd:
sudo pacman -S networkmanager iwd5. Menaxhuesi i ngarkesës
Pas instalimit të të gjitha pakove kryesore brenda chroot, mund të filloni instalimin e menaxhuesit të ngarkesës.
Nuk arrita të bëj grub të funksionojë. Nga një disk usb i jashtëm grub ngarkohet, por kur përpiqem ta shkruaj në nvme përmes
grub-install âtarget=x86_64-efi âefi-directory=/boot âbootloader-id=grub
sistemi e kalonte në panic bërthamor, dhe pas rinisjes nuk shfaqej asnjë opsion i ri përmes opsioneve. Nuk gjetëm ndonjë zgjidhje të qartë për këtë problem dhe vendosa të provoj të realizoj ngarkesën përmes systemd-boot.
- Nisni
bootctl --path=/boot installdhe ne fluturojme ne kernel panic. Fikni MacBook-un, ndizni perseri, shtypni opsionet (mos e çkoni usb-c hub-in me tastierë)
- Kontrollojmë që të ketë një regjistrim të ri EFI BOOT përveç pajisjes së jashtme
- Zgjedhim ngarkimin nga disku USB të jashtëm, ashtu si në instalimin e parë (mos harroni të shkruani module_blacklist=thunderbolt)
- Montojmë diskun tonë dhe kalojmë në mjedis përmes arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Nëse është e nevojshme që tastiera të funksionojë deri në ngarkimin e plotë të sistemit (kjo është e nevojshme në rastin e përdorimit të kriptimit luks/dm-crypt), shkruani në skedarin /etc/mkinicpio.conf në seksionin MODULES:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
Përditësoni bërthamën dhe initramfs.
mkinicpio -p linux-mbp
Konfigurojmë systemd-boot
Redaktoni skedarin /boot/loader/loader.conf, hiqni gjithçka që ka brenda, dhe shtoni këtë:
default arch
timeout 5
editor 1
Shkoni në folderin /boot/loader/entries, krijoni skedarin arch.conf dhe shkruani:
titulli arkiv
linux /vmlinuz-linux-mbp
initrd /initramfs-linux-mbp.img
opcionet root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat
Në rast se keni përdorur luks dhe lvm, atëherë
options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat
Rindizni në MacOS.
6. Konfigurimi i Wi-Fi
Siç doli, skedarët e firmware për adaptorin wi-fi MacOS ruhen në dosje /usr/share/firmware/wifi , dhe mund t'i marrim ato në formën e blob-eve dhe t'i japim modulit të bërthamës brcmfmac. Për të kuptuar se cilët skedarë i përdor adaptori juaj, hapim terminalin në MacOS dhe shkruajmë:
ioreg -l | grep C-4364Marrim një listë të gjatë. Na duhen skedarët vetëm nga seksioni 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>"})
Në rastin tuaj emrat e skedarëve mund të ndryshojnë. I kopjojmë ata nga dosja /usr/share/firmware/wifi në një flash drive dhe i ndryshojmë emrat në këtë formë:
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>
Në këtë rast, skedari i fundit tekstual përmban emrat e modelit, nëse modeli juaj nuk është macbookpro15,2, duhet ta ndryshoni emrin e këtij skedari në përputhje me modelin tuaj të MacBook-ut.
Rifillojmë në arch.
Kopjojmë skedarët nga flash drive në dosjen /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/
Kontrollojmë funksionimin e modulit:
rmmod brcmfmac
modprobe brcmfmac
Sigurohemi që ndërfaqja rrjetare është shfaqur përmes ifconfig/ip.
Konfigurojmë wifi përmes
Kujdes. Përmes netctl, nmcli, etj. ndërfaqja nuk punon, vetëm përmes iwd.
Detyrojmë NetworkManager të përdorë iwd. Për këtë krijojmë një skedar /etc/NetworkManager/NetworkManager.conf dhe shkruajmë:
[device]
wifi.backend=iwd
Nisjmë shërbimin NetworkManager
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
7. Zëri
Për të aktivizuar zërin, duhet të instalohet pulseaudio:
sudo pacman -S pulseaudio
Po shkarkojmë tre skedarë:
I zhvendosim ata:
/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. Suspendim/Rinovim
Aktualisht 16.10.2019 duhet të zgjidhni ose zërin, ose suspendim/rinovim. Presim derisa autori i këtij moduli të përfundojë funksionalitetin.
Për të ndërtuar një modul me mbështetje për suspendim/rinovim, duhet të kryeni këto hapa:
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 modulën e gatshme apple-bce nga repositori anuali1, duhet ta hiqni atë paraprakisht dhe vetëm pas kësaj të ndërtoni dhe instaloni modulën bce me mbështetje për mënyrën suspend.
Gjithashtu, duhet të shtoni në blacklist modulën applesmc (nëse nuk e keni bërë këtë më parë) dhe të siguroheni që në /boot/loader/entries/arch.conf në rreshtin e mundësive në fund të ketë shtuar parametrin pcie_ports=compat.
Aktualisht, drejtuesi i touchbar-it ndalon kur hyn nĂ« mĂ«nyrĂ«n suspend, ndĂ«rsa drejtuesi thunderbolt ndonjĂ«herĂ« ngadalĂ«son sistemin pĂ«r mĂ« shumĂ« se 30 sekonda, dhe kur rinovohet â pĂ«r disa minuta. Kjo mund tĂ« rregullohet duke shkarkuar automatikisht modulet problematike.
Krijoni një skenar /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
Bëjeni atë ekzekutues:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh Këtu përfundojmë për momentin. Në përfundim, rezulton një sistem mjaft funksional, përveç disa detajeve me suspend/resume. Nuk janë vërejtur rrëzime apo kernel panic gjatë disa ditëve të funksionimit. Shpresoj që së shpejti autori i modulit bce të përmirësojë gjithçka dhe ne të marrim mbështetje të plotë për suspend/resume dhe zë.
Burimi: habr.com
