Ka shumë zhurmë rreth asaj që, për shkak të çipit të ri T2, është e pamundur të instalohet linux në MacBook-ët e rinj 2018 me Touch Bar. Kaloi koha, dhe deri në fund të vitit 2019, zhvillues të tretë realizuan një sërë driverrash dhe patches për bërthamën për të bashkëvepruar me çipin T2. Driveri kryesor për modelet MacBook 2018 dhe më të reja realizon funksionimin e VHCI (funksionimi i tastierës / trackpad-it / etj.), si dhe funksionimin e zërit.
Projekti e ndarë në 3 komponentë kryesorë:
- BCE (Buffer Copy Engine) â krijon kanalin kryesor tĂ« komunikimit me T2. VHCI dhe Audio kĂ«rkojnĂ« kĂ«tĂ« komponent.
- VHCI â Ă«shtĂ« njĂ« kontrollues virtual i hostit USB; tastiera, mice dhe komponentĂ« tĂ« tjerĂ« tĂ« sistemit ofrohen nga ky komponent (driverrat e tjerĂ« pĂ«rdorin kĂ«tĂ« host-kontroller pĂ«r tĂ« siguruar funksionalitet mĂ« tĂ« avancuar).
- Audio â driveri pĂ«r ndĂ«rfaqen audio T2, aktualisht mbĂ«shtetet vetĂ«m dalja e zĂ«rit pĂ«rmes altoparlantĂ«ve tĂ« integruar tĂ« MacBook.
Projektin e dytë quajtur , ai realizon mundësinë e punës së driverit të hyrjes për tastierën, trackpad-in SPI, dhe Touch Bar-in për MacBook Pro-në e fundit të vitit 2016 dhe versionet më të reja. Disa nga driverrat për tastierën / trackpad-in tani janë përfshirë në bërthamë, duke filluar nga versioni 5.3.
Gjithashtu, është realizuar mbështetje për pajisje të tilla si wi-fi, trackpad, etj., me anë të patches për bërthamën. Aktualisht, versioni i bërthamës
ĂfarĂ« funksionon deri tani
- NVMe
- Tastiera
- USB-C (Thunderbolt nuk është provuar, duke bllokuar sistemin gjatë ngarkimit automatik të modulit)
- Touch Bar (me mundësinë e aktivizimit të çelësave 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 / Zgjim (pjesërisht)
- etj..
Ky tutorial është i vlefshëm për macbookpro15,1 dhe macbookpro15,2. Thuajse është marrë si bazë një artikull nga GitHub në anglisht . Nuk të gjitha nga ky artikull funksionuan, prandaj duhej të kërkoja një zgjidhje vetë.
ĂfarĂ« do tĂ« nevojitet pĂ«r instalim
- USB-C dongle në USB (të paktën tre porta USB për lidhjen e një mice, tastiere, modem USB ose telefoni në modin tethering). Kjo është e nevojshme vetëm në fazat e para të instalimit.
- Tastierë USB
- USB / USB-C flash drive të paktën 4GB
1. Ăaktivizoni ndalimin e ngarkesĂ«s nga mediumet e jashtme
2. Ndani hapësirën e lirë me Disk Utility
Për lehtësinë time, unë ndava menjëherë 30GB në disk, duke e formatuar atë në exfat në vetë Disk Utility. .
3. Formojmë imazhin iso
Opsionet:
- Mund të ndjekim rrugën më të thjeshtë dhe të shkarkojmë një imazh të gatshëm me kernel 5.3.5-1 dhe patch-et nga
- Të formojmë 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, dhe në fund shtojmë kernelin linux-mbp dhe linux-mbp-headers
... wvdial xl2tpd linux-mbp linux-mbp-headersNdryshojmë skriptin për të punuar në modalitet 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!" }Formojmë imazhin:
sudo ./build.sh -vShtypim Y për të anashkaluar paketat e injoruara, pastaj shkruajmë imazhin iso në USB:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Ngarkimi i parë
Rikthemi me USB-në dhe tastierën e futur. Shtypim opsionet kur shfaqet logon e mollës, përzgjidhim EFI BOOT.
Pastaj duhet të shtypim çelësin «e» dhe të shkruajmë në fund të linjës së komandës module_blacklist=thunderbolt. Nëse nuk e bëjmë këtë, sistemi mund të mos ngarkohet dhe do të shfaqet gabimi Thunderbolt ICM Error.
Me fdisk/cfdisk gjejmë partition-in tonë (për mua është nvme0n1p4), e formatojmë dhe bëjmë instalimin e Arch. Mund të përdorim ose .
Nuk krijojmë partition për ngarkim, do të shkruajmë ngarkuesin në /dev/nvme0n1p1
Pasi të kemi formuar plotësisht ambientin në /mnt dhe përpara 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ë kernelin:
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, touchbar, 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 punën e touchbar-it:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install
Shtojmë modulet në ngarkimin automatik: /etc/modules-load.d/apple.conf
industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als
Instalojmë modulet e kernelit për funksionimin e tastierës. Në repository ka një paketë të gatshme, quhet apple-bce-dkms-git. Për ta instaluar, shkruajmë në konsolë:
pacman -S apple-bce-dkms-gitNë këtë rast moduli i kernelit do të quhet apple-bce. Në rastin e ndërtimit të vet, quhet bce. Nëse dëshironi të regjistroni modulin në seksionin MODULES në skedarin mkinicpio.conf, mos harroni se cilin modul keni instaluar.
Ndërtesa me dorë:
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
Shtojmë modulin bce ose apple-bce në ngarkimin e automatik: /etc/modules-load.d/bce.conf
bceNëse dëshironi të përdorni butonat Fn si parazgjedhje, shkrim në skedarin /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2Përditësojmë bërthamën dhe initramfs.
mkinitcpio -p linux-mbp
Instalojmë iwd:
sudo pacman -S networkmanager iwd5. Bërthama e ngarkimit
Pasi të kenë përfunduar paketat kryesore brenda chroot, mund të vazhdojmë me instalimin e bërthamës së ngarkimit.
Nuk arrita asnjëherë ta bëj grub të funksionojë. Grub ngarkohet nga një disk usb të jashtëm, por kur përpiqem ta regjistroj atë në nvme përmes
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
sistemi binte në kernel panic, dhe pas ri-ngarkimit, nuk shfaqej një pikë e re përmes options. Nuk gjeta ndonjë zgjidhje të qartë për këtë problem dhe prandaj vendosa të provoj të realizoj ngarkimin duke përdorur systemd-boot.
- Po e nisim
bootctl --path=/boot installdhe binte nĂ« kernel panic. Ă'mbyllim MacBook-un, e ndezim pĂ«rsĂ«ri, shtypim options (mos e çaktivizoni usb-c hub me tastierĂ«)
- Kontrollojmë nëse është shfaqur një regjistrim i ri EFI BOOT përveç pajisjes së jashtme
- Zgjidhni ngarkimin nga disku usb të jashtëm, si në instalimin e parë (mos harroni të regjistroni module_blacklist=thunderbolt)
- Muntë diskun tonë dhe kalojmë në ambientin përmes arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Nëse nevojitet që tastiera të funksionojë deri në ngarkimin e plotë të sistemit (kjo është e nevojshme në rastin e përdorimit të enkriptimit luks/dm-crypt), atëherë shkrim në skedarin /etc/mkinicpio.conf në seksionin MODULES:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
Përditësojmë bërthamën dhe initramfs.
mkinitcpio -p linux-mbp
Konfigurojmë systemd-boot
Redaktojmë skedarin /boot/loader/loader.conf, fshijmë gjithçka që ka brenda, dhe shtojmë si më poshtë:
default arch
timeout 5
editor 1
Kalojmë në dosjen /boot/loader/entries, krijojmë skedarin arch.conf dhe shkruajmë:
titulli arch
linux \/vmlinuz-linux-mbp
initrd \/initramfs-linux-mbp.img
opsionet root=\/dev\/<b>nvme0n1p4</b> rw pcie_ports=compat
Në rast se kemi përdorur luks dhe lvm, atëherë
opsionet cryptdevice=\/dev\/<b>nvme0n1p4</b>:luks root=\/dev\/mapper\/vz0-root rw pcie_ports=compat
Ribashkohesh në MacOS.
6. Konfigurimi i Wi-Fi
Siç doli në pah, skedarët e firmware për adaptorin wi-fi MacOS ruhen në dosjen /usr/share/firmware/wifi , dhe mund t'i marrim nga aty në formë blobësh dhe t'ua jepim modulin e bërthamës brcmfmac. Për të zbuluar se cilët skedarë konkret përdor adaptori juaj, hapni terminalin në MacOS dhe shkruani:
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ë jenë të ndryshëm. Ne i kopjojmë ata nga dosja /usr/share/firmware/wifi në USB dhe i rinomojmë në formatin e mëposhtëm:
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, atëherë duhet ta rinomoni këtë skedar sipas modelit tuaj të MacBook-ut.
Rivendosni në Arch.
Kopjoni skedarët nga USB 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/
Kontrolloni funksionalitetin e modulit:
rmmod brcmfmac
modprobe brcmfmac
Sigurohuni që ndërfaqja rrjetore është shfaqur përmes ifconfig/ip.
Konfiguroni wifi përmes
Kujdes. Përmes netctl, nmcli, etj. ndërfaqja nuk funksionon, vetëm përmes iwd.
Shtyjme NetworkManager të përdorë iwd. Për këtë krijojmë skedarin /etc/NetworkManager/NetworkManager.conf dhe shkruajmë:
[device]
wifi.backend=iwd
Nisni shërbimin NetworkManager
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
7. Zëri
Për të punuar zëri, është e nevojshme të instaloni pulseaudio:
sudo pacman -S pulseaudio
Shkarkoni tre skedarë:
Shkoni me to:
/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/Rikthim
Në këtë moment 16.10.2019 duhet të zgjidhni ose zërin, ose suspendim/rikthim. Po presim që autori i modulit bce të përfundojë funksionalitetin.
Për të ndërtuar një modul me mbështetje për suspendim/rikthim, është e nevojshme të kryeni këtë:
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 modulin e gatshëm apple-bce nga depoja anuali1, duhet ta hiqni atë më parë dhe vetëm pastaj të ndërtoni dhe instaloni modulit bce me mbështetje për modalitetin suspend.
Gjithashtu, është e nevojshme të shtoni në blacklist modulit applesmc (nëse nuk e keni bërë më parë) dhe të siguroheni që në /boot/loader/entries/arch.conf në rreshtin opsione në fund është shtuar parametri pcie_ports=compat.
NĂ« kĂ«tĂ« moment, driver-i i TouchBar-it çon jashtĂ« sistemin kur hyn nĂ« modalitetin suspend, dhe driver-i i Thunderbolt ndonjĂ«herĂ« e ngrin sistemin pĂ«r mĂ« shumĂ« se 30 sekonda, dhe gjatĂ« rikthimit â pĂ«r disa minuta. Kjo mund tĂ« rregullohet duke shkarkuar automatikisht modulet problematike.
Krijoni një 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
Bëjeni atë ekzekutues:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh Këtu është deri tani. Në përfundim, kemi një sistem mjaft funksional, përveç disa nuancave me suspendim/rikthim. Nuk ka çarje dhe panic kernel-i nuk është vërejtur gjatë disa ditëve të besueshmërisë. Shpresojmë se së shpejti autori i modulit bce do ta përmirësojë, dhe do të marrim mbështetje të plotë për suspendim/rikthim dhe zërin.
Burimi: habr.com
