Aya rada hype ngeunaan kanyataan yén chip T2 anyar bakal ngajadikeun eta teu mungkin masang Linux Ubuntu dina MacBooks anyar 2018 kalawan touchbar a. Waktos kaliwat, sareng dina ahir taun 2019, pamekar pihak katilu ngalaksanakeun sababaraha supir sareng patch kernel pikeun interaksi sareng chip T2. Supir utama pikeun modél MacBook 2018 sareng anu langkung énggal ngalaksanakeun operasi VHCI (operasi touch / keyboard / jsb), ogé operasi sora.
proyek dibagi kana 3 komponén utama:
- BCE (Buffer Copy Engine) - ngadegkeun saluran komunikasi utama sareng T2. VHCI sareng Audio ngabutuhkeun komponén ieu.
- VHCI mangrupakeun USB Virtual Host Controller; kibor, mouse sareng komponenana sistem anu sanésna disayogikeun ku komponén ieu (driver sanésna nganggo host controller ieu pikeun nyayogikeun langkung seueur fungsionalitas.
- Audio - supir pikeun panganteur audio T2, ayeuna ngan ngarojong kaluaran audio ngaliwatan spiker diwangun-di MacBook urang
Proyék kadua disebut , sarta eta implements kamampuhan pikeun beroperasi supir input pikeun keyboard, trackpad SPI, sarta touchbar pikeun MacBook Pro Ahir 2016 sarta engké. Sababaraha panggerak keyboard/trackpad ayeuna diasupkeun kana kernel, dimimitian ku versi 5.3.
Rojongan pikeun alat sapertos wi-fi, touchpad, jsb ogé dilaksanakeun nganggo patch kernel. Vérsi kernel ayeuna
Naon anu dianggo ayeuna
- NVMe
- keyboard
- USB-C (Thunderbolt teu acan diuji; nalika modul dimuat sacara otomatis, éta beku sistem)
- Touchbar (kalayan kamampuan pikeun ngaktipkeun kenop Fn, lampu tukang, ESC, jsb.)
- Sora (spéker internal wungkul)
- Modul Wi-Fi (via brcmfmac sareng ngan ukur liwat iw)
- DisplayPort ngaliwatan USB-C
- Sénsor
- Tunda / Neruskeun (sabagian)
- jsb ..
Tutorial ieu lumaku pikeun macbookpro15,1 jeung macbookpro15,2. Tulisan ieu dicandak salaku dasar tina Github dina basa Inggris. . Henteu sadayana dina tulisan ieu tiasa dianggo, janten kuring kedah milarian solusi sorangan.
Naon anu anjeun kedah pasang
- USB-C docking adaptor ka USB (sahenteuna tilu input USB pikeun nyambungkeun mouse a, keyboard, modem USB atawa telepon dina modeu Nga-tether). Ieu ngan diperlukeun dina tahap mimiti instalasi
- kibor USB
- USB / USB-C flash drive minimum 4GB
1. Pareuman larangan dina booting ti média éksternal
2. Alokasikeun rohangan bébas nganggo Disk Utility
Pikeun genah, kuring langsung nyayogikeun 30GB kana disk, pormatna dina exfat dina Disk Utility sorangan. .
3. Jieun hiji gambar ISO
Pilihan:
- Anjeun tiasa buka jalur basajan tur ngundeur gambar siap-dijieun kalawan kernel 5.3.5-1 sarta patch ti
- Jieun gambar sorangan via archlive (sistem kalawan distribusi Archa diperlukeun)
Masang
pacman -S archisocp -r /usr/share/archiso/configs/releng/ archlive cd archliveTambahkeun Repository kana pacman.conf:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$archUrang malire kernel aslina dina pacman.conf:
IgnorePkg = linux linux-headersTambahkeun bungkusan anu diperyogikeun, dina tungtungna tambahkeun kernel linux-mbp sareng linux-mbp-headers
... wvdial xl2tpd linux-mbp linux-mbp-headersKami ngarobih naskah pikeun dianggo dina modeu interaktif (ganti pacstrap -C sareng 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!" }Ngabentuk gambar:
sudo ./build.sh -vPencét Y pikeun ngalangkungan bungkusan anu teu dipaliré, teras tuliskeun gambar iso kana USB flash drive:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. boot munggaran
Reboot sareng flash drive sareng keyboard diselapkeun. Pencét pilihan nalika apel muncul, pilih EFI BOOT.
Salajengna, anjeun kedah pencét tombol "e" sareng lebetkeun dina tungtung garis paréntah module_blacklist = guludug. Upami ieu henteu dilakukeun, sistem moal tiasa boot sareng Kasalahan Thunderbolt ICM bakal muncul.
Ngagunakeun fdisk / cfdisk kami manggihan partisi urang (kanggo kuring éta nvme0n1p4), pormat eta tur masang arsip. Anjeun tiasa make atawa .
Kami henteu nyiptakeun partisi boot; kami bakal nyerat bootloader di /dev/nvme0n1p1
Saatos lingkungan di / mnt kabentuk lengkep sareng sateuacan ngalih ka arch-chroot, nyerat:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Tambahkeun ka /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Pasang kernel:
sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp
Urang ngadaptar thunderbolt na applesmc di /etc/modprobe.d/blacklist.conf
blacklist thunderbolt
blacklist applesmc
Kibor, touchbar, jsb
Pasang yeuh:
sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
Masang modul pikeun touchbar pikeun jalan:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install
Tambahkeun modul pikeun ngamimitian: /etc/modules-load.d/apple.conf
industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als
Masang modul kernel pikeun keyboard. Dina gudang aya bungkusan siap-siap, disebutna apel-bce-dkms-git. Pikeun masang éta, tulis dina konsol:
pacman -S apple-bce-dkms-gitDina hal ieu, modul kernel bakal disebut apal-bce. Dina kasus timer assembly, mangka disebut SM. Sasuai, upami anjeun hoyong ngadaptar modul dina bagian MODUL dina file mkinicpio.conf, teras ulah hilap modul anu anjeun pasang.
Majelis 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
Tambahkeun modul bce atanapi apple-bce pikeun ngamimitian: /etc/modules-load.d/bce.conf
bceUpami anjeun hoyong nganggo tombol Fn sacara standar, teras tulis dina file /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2Ngamutahirkeun kernel sareng initramfs.
mkinitcpio -p linux-mbp
Pasang iwd:
sudo pacman -S networkmanager iwd5. Pamuat
Sakali sadaya bungkusan utama dipasang di jero chroot, anjeun tiasa ngamimitian masang bootloader.
Abdi henteu acan tiasa kéngingkeun grub damel. Sapatu Grub tina drive USB éksternal, tapi nalika anjeun nyobian ngadaptar dina nvme via
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub
Sistim indit kana panik kernel, sarta sanggeus rebooting item anyar ngaliwatan pilihan teu muncul. Kuring henteu mendakan solusi anu jelas pikeun masalah ieu sareng ku kituna mutuskeun nyobian ngalaksanakeun booting nganggo systemd-boot.
- Ngaluncurkeun
bootctl --path=/boot installsarta kami balik kana panik kernel. Pareuman MacBook, hurungkeun deui, klik pilihan (ulah mareuman hub USB-C sareng keyboard)
- Kami pariksa yén éntri EFI BOOT énggal parantos muncul salian ti alat éksternal
- Urang milih boot ti USB drive éksternal, sakumaha dina mangsa pamasangan munggaran (tong poho pikeun nangtukeun module_blacklist=thunderbolt)
- Urang Gunung disk urang jeung lebet kana lingkungan via arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Lamun perlu keyboard pikeun digawé nepi ka sistem pinuh dimuat (ieu diperlukeun nalika ngagunakeun enkripsi luks/dm-crypt), lajeng nulis eta dina file /etc/mkinicpio.conf dina bagian MODUL:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
Ngamutahirkeun kernel sareng initramfs.
mkinicpio -p linux-mbp
Nyetél systemd-boot
Kami ngédit file /boot/loader/loader.conf, ngahapus sadayana anu aya di jero, sareng nambihan ieu:
default arch
timeout 5
editor 1
Pindah ka folder /boot/loader/entry, jieun file arch.conf sareng nyerat:
title arch
linux /vmlinuz-linux-mbp
initrd /initramfs-linux-mbp.img
options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat
Lamun dipaké luks na lvm, lajeng
options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat
Reboot kana MacOS.
6. Setélan Wi-Fi
Sapertos tungtungna, MacOS nyimpen file firmware pikeun adaptor wi-fi dina polder /usr/share/firmware/wifi , sareng anjeun tiasa nyandakna ti dinya dina bentuk gumpalan sareng tuang kana modul kernel brcmfmac. Pikeun milarian file mana anu dianggo ku adaptor anjeun, buka terminal dina MacOS sareng nyerat:
ioreg -l | grep C-4364Simkuring meunang daptar panjang. Urang ngan butuh file ti bagian DipéntaFiles:
"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>"})
Dina kasus anjeun, nami file tiasa béda. Tiron ti folder /usr/share/firmware/wifi kana flash drive jeung ganti ngaran jadi kieu:
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>
Dina hal ieu, file téks anu terakhir ngandung nami modél; upami modél anjeun sanés macbookpro15,2, maka anjeun kedah ngaganti nami file ieu saluyu sareng modél MacBook anjeun.
Reboot kana Arch.
Nyalin file tina flash drive kana folder /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/
Mariksa pungsionalitas modul:
rmmod brcmfmac
modprobe brcmfmac
Urang pastikeun yén panganteur jaringan némbongan ngaliwatan ifconfig / ip.
Nyetél wifi via
Perhatian. Ngaliwatan netctl, nmcli, jsb. Antarbeungeutna henteu jalan, ngan ukur ngalangkungan iwd.
Urang maksakeun NetworkManager ngagunakeun iwd. Jang ngalampahkeun ieu, jieun file /etc/NetworkManager/NetworkManager.conf sareng nyerat:
[device]
wifi.backend=iwd
Mimitian jasa NetworkManager
sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service
7. Sora
Supados sora tiasa dianggo, anjeun kedah pasang pulseaudio:
sudo pacman -S pulseaudio
Unduh tilu file:
Hayu urang mindahkeun aranjeunna:
/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. Nunda / neruskeun
Dina momen ieu 16.10.2019 anjeun kedah milih sora atanapi ngagantungkeun / neruskeun. Kami ngantosan panulis modul bce ngalengkepan fungsionalitasna.
Pikeun ngawangun modul kalayan dukungan anu disangka / neruskeun, anjeun kedah ngalakukeun ieu:
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
Lamun dipasang modul apel-bce siap-dijieun ti Repository anuali1, mangka anjeun kudu mimiti nyabut eta na ngan lajeng ngumpul tur masang modul bce kalayan rojongan mode suspend.
Ogé, anjeun kedah nambihan modul applesmc kana daptar hideung (upami anjeun henteu acan ngalakukeun ieu sateuacanna) sareng pastikeun yén dina /boot/loader/entry/arch.conf dina garis pilihan dina tungtung parameter ditambahkeun. pcie_ports=compat.
Ayeuna, supir touchbar nabrak nalika asup kana mode suspend, sarta supir thunderbolt kadang freezes sistem pikeun leuwih ti 30 detik, sarta sababaraha menit nalika resuming. Ieu bisa dibenerkeun ku otomatis unloading modul masalah.
Jieun naskah /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
Jieun eta laksana:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh Sakitu wae kanggo ayeuna. Hasilna mangrupikeun sistem anu tiasa dianggo, iwal sababaraha nuansa kalayan ngagantungkeun / neruskeun. Henteu aya kacilakaan atanapi panik kernel anu dititénan salami sababaraha dinten uptime. Kuring miharep éta dina mangsa nu bakal datang panulis modul bce bakal rengse eta, sarta kami bakal meunang rojongan pinuh pikeun ngagantungkeun / neruskeun jeung sora.
sumber: www.habr.com
