Ada banyak hype tentang fakta bahwa karena chip T2 baru, tidak mungkin untuk menginstal linux pada MacBook 2018 baru dengan touchbar. Seiring berjalannya waktu, dan pada akhir 2019, pengembang pihak ketiga menerapkan sejumlah driver dan patch kernel untuk berinteraksi dengan chip T2. Driver utama untuk model MacBook 2018 dan yang lebih baru mengimplementasikan pekerjaan VHCI (pengoperasian sentuh / keyboard / dll.), Serta fungsi suara.
Proyek
mbp2018-bridge-drv dibagi menjadi 3 komponen utama:
- BCE (Buffer Copy Engine) - menetapkan saluran komunikasi utama dengan T2. VHCI dan Audio memerlukan komponen ini.
- VHCI adalah pengendali host virtual USB; keyboard, mouse, dan komponen sistem lainnya disediakan oleh komponen ini (driver lain menggunakan pengontrol host ini untuk menyediakan lebih banyak fungsi.
- Audio - driver untuk antarmuka audio T2, saat ini hanya output audio melalui speaker internal MacBook yang didukung
Proyek kedua disebut
macbook12-spi-driver , dan mengimplementasikan kemungkinan input driver untuk keyboard, trackpad SPI, touchbar untuk MacBook Pro akhir 2016 dan versi yang lebih baru. Beberapa driver untuk keyboard / trackpad sekarang termasuk dalam kernel, dimulai dengan versi 5.3.
Dukungan juga diterapkan untuk perangkat seperti wi-fi, touchpad, dll, menggunakan patch kernel. Saat ini versi kernel adalah
5.3.5-1Apa yang berhasil saat ini
- NVMe
- Keyboard
- USB-C (Thunderbolt tidak diuji, ketika modul dimuat secara otomatis, ia menangguhkan sistem dengan erat)
- Panel Sentuh (dengan kemampuan untuk mengaktifkan tombol Fn, lampu latar, ESC, dll.)
- Suara (hanya speaker internal)
- Modul Wi-Fi (melalui brcmfmac dan hanya melalui iw)
- DisplayPort via USB-C
- Sensor
- Tangguhkan / Lanjutkan (sebagian)
- dll ..
Tutorial ini berlaku untuk macbookpro15.1 dan macbookpro15.2. Artikel ini diambil dari github dalam bahasa Inggris
dari sini . Tidak semua artikel ini berfungsi, jadi saya harus mencari solusi sendiri.
Apa yang perlu Anda instal
- USB-C USB dock adapter (setidaknya tiga input USB untuk menghubungkan mouse, keyboard, modem USB atau telepon dalam mode tethering). Ini hanya diperlukan pada tahap awal instalasi.
- Keyboard USB
- USB / USB-C flash drive minimal 4GB
1. Nonaktifkan larangan mengunduh dari media eksternal
https://support.apple.com/en-us/HT208330https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/2. Alokasikan ruang kosong menggunakan Disk Utility
Untuk kenyamanan, saya segera mengalokasikan 30GB ke disk, memformatnya untuk melakukan exfat di Disk Utility itu sendiri.
Mempartisi disk fisik menjadi partisi Disk Utility .
3. Bentuk gambar iso
Opsi:- Anda dapat pergi dengan cara sederhana dan mengunduh gambar yang sudah jadi dengan kernel 5.3.5-1 dan tambalan dari tautan aunali1 ke gambar yang sudah selesai
- Buat gambar sendiri melalui arsip (Anda memerlukan sistem dengan distribusi archa)
Instal archiso
pacman -S archiso
cp -r /usr/share/archiso/configs/releng/ archlive cd archlive
Tambahkan repositori ke pacman.conf:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch
Abaikan kernel asli di pacman.conf:
IgnorePkg = linux linux-headers
Tambahkan paket yang diperlukan, pada akhirnya kita tambahkan kernel linux-mbp dan linux-mbp-header
... wvdial xl2tpd linux-mbp linux-mbp-headers
Ubah skrip agar berfungsi dalam mode interaktif (ganti pacstrap -C dengan 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!" }
Kami membentuk gambar:
sudo ./build.sh -v
Tekan Y untuk melewati paket yang diabaikan, lalu tulis gambar iso ke usb flash drive:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Boot pertama
Reboot dengan flash drive dan keyboard yang dimasukkan. Tekan opsi saat apel muncul, pilih EFI BOOT.
Selanjutnya, Anda perlu menekan tombol "e" dan menulis
module_blacklist = thunderbolt di akhir baris perintah. Jika ini tidak dilakukan, maka sistem mungkin tidak bisa boot, dan Kesalahan ICM Thunderbolt akan macet.
Menggunakan fdisk / cfdisk, kami menemukan partisi kami (saya memilikinya nvme0n1p4), memformat dan menginstal lengkungan. Anda dapat menggunakan
instruksi resmi atau
pihak ketiga .
Kami tidak membuat partisi boot, kami akan menulis bootloader di
/ dev / nvme0n1p1Setelah lingkungan di / mnt sepenuhnya terbentuk dan sebelum beralih ke arch-chroot, kita menulis:
mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt /bin/bash
Tambahkan ke /etc/pacman.conf:
[mbp] Server = https://packages.aunali1.com/archlinux/$repo/$arch
Instal kernel:
sudo pacman -S linux-mbp linux-mbp-headers sudo mkinitcpio -p linux-mbp
Masukkan thunderbolt dan applesmc di /etc/modprobe.d/blacklist.conf
blacklist thunderbolt blacklist applesmc
Keyboard, panel sentuh, dll
Instal yay:
sudo pacman -S git gcc make fakeroot binutils git clone https://aur.archlinux.org/yay.git cd yay makepkg -si
Pasang modul untuk panel sentuh:
git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git cd macbook12-spi-driver make install
Tambahkan modul ke pengisian otomatis: /etc/modules-load.d/apple.conf
industrialio_triggered_buffer apple-ibridge apple-ib-tb apple-ib-als
Instal modul kernel untuk keyboard. Repositori
anuali1 memiliki paket yang sudah jadi, disebut
apple-bce-dkms-git . Untuk menginstalnya, tulis di konsol:
pacman -S apple-bce-dkms-git
Dalam hal ini, modul kernel akan disebut
apple-bce . Dalam hal perakitan diri, itu disebut
SM . Dengan demikian, jika Anda ingin mendaftarkan modul di bagian MODUL dalam file mkinicpio.conf, maka jangan lupa modul mana yang Anda instal.
Perakitan 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
Tambahkan modul SM atau apple-SM untuk memuat secara otomatis: /etc/modules-load.d/bce.conf
bce
Jika Anda ingin menggunakan tombol Fn secara default, maka dalam file /etc/modprobe.d/apple-tb.conf kita menulis:
options apple-ib-tb fnmode=2
Memperbarui kernel dan initramfs.
mkinitcpio -p linux-mbp
Instal iwd:
sudo pacman -S networkmanager iwd
5. Bootloader
Setelah di dalam chroot, semua paket utama diinstal, Anda dapat melanjutkan untuk menginstal bootloader.
Saya tidak pernah berhasil membuat grub bekerja. Dari drive usb eksternal, grub boot, tetapi ketika Anda mencoba mendaftarkannya di nvme via
grub-install --target = x86_64-efi --efi-directory = / boot --bootloader-id = grub
sistem menabrak panik kernel, dan setelah me-reboot item baru melalui opsi tidak muncul. Saya tidak menemukan solusi yang dapat dipahami untuk masalah ini dan karena itu memutuskan untuk mencoba mengimplementasikan boot menggunakan systemd-boot.
- Kami meluncurkan
bootctl --path=/boot install
dan terbang ke kernel panik. Matikan MacBook, hidupkan lagi, klik opsi (jangan nonaktifkan hub usb-c dengan keyboard) - Periksa apakah catatan EFI BOOT baru telah muncul di samping perangkat eksternal
- Kami memilih boot dari USB-drive eksternal, seperti saat instalasi pertama (jangan lupa menulis module_blacklist = thunderbolt)
- Kami memasang cakram kami dan masuk ke lingkungan melalui arch-chroot
mount /dev/nvme0n1p4 /mnt mount /dev/nvme0n1p1 /mnt/boot arch-chroot /mnt
Jika perlu agar keyboard berfungsi hingga sistem terisi penuh (ini diperlukan jika enkripsi luks / dm-crypt digunakan), maka kami menulisnya di file /etc/mkinicpio.conf di bagian MODULES:
MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)
Memperbarui kernel dan initramfs.
mkinicpio -p linux-mbp
Konfigurasikan systemd-boot
Kami mengedit file /boot/loader/loader.conf, menghapus semua yang ada di dalamnya, dan menambahkan yang berikut:
default arch timeout 5 editor 1
Buka folder / boot / loader / entri, buat file arch.conf dan tulis:
title arch linux /vmlinuz-linux-mbp initrd /initramfs-linux-mbp.img options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat
Jika Anda menggunakan luks dan lvm, maka
options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat
Reboot di MacOS.
6. Pengaturan Wi-fi
Ternyata, MacOS menyimpan file firmware untuk adaptor wi-fi di folder
/ usr / share / firmware / wifi , dan Anda dapat membawanya dari sana dalam bentuk gumpalan dan memberi mereka ke modul kernel brcmfmac. Untuk mengetahui file mana yang digunakan adaptor Anda, buka terminal di MacOS dan tulis:
ioreg -l | grep C-4364
Kami mendapatkan daftar panjang. Kami hanya perlu file dari bagian
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>"})
Dalam kasus Anda, nama file mungkin berbeda. Salin dari folder / usr / share / firmware / wifi ke USB flash drive dan ganti namanya ke tampilan berikut:
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>
Dalam hal ini, file teks terakhir berisi nama model, jika model Anda bukan macbookpro15,2, maka Anda perlu mengganti nama file ini sesuai dengan model macbook Anda.
Reboot ke lengkungan.
Salin file dari USB flash drive ke 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/
Periksa kesehatan modul:
rmmod brcmfmac modprobe brcmfmac
Kami memastikan bahwa antarmuka jaringan muncul melalui ifconfig / ip.
Konfigurasikan wifi melalui
iwctlPerhatian Melalui netctl, nmcli, dll. antarmuka tidak berfungsi, hanya melalui iwd.Membuat NetworkManager menggunakan iwd. Untuk melakukan ini, buat file /etc/NetworkManager/NetworkManager.conf dan tulis:
[device] wifi.backend=iwd
Memulai layanan NetworkManager
sudo systemctl start NetworkManager.service sudo systemctl enable NetworkManager.service
7. Suara
Untuk membuat suara, Anda harus menginstal pulseaudio:
sudo pacman -S pulseaudio
Unduh tiga file:
Pindahkan mereka:
/usr/share/alsa/cards/AppleT2.conf /usr/share/pulseaudio/alsa-mixer/profile-sets/apple-t2.conf /usr/lib/udev/rules.d/91-pulseaudio-custom.rules
8. Tangguhkan / Lanjutkan
Saat ini,
10/16/2019 Anda harus memilih suara atau menangguhkan / melanjutkan. Kami sedang menunggu pembuat modul SM untuk menyelesaikan fungsionalitasnya.
Untuk membangun modul dengan dukungan untuk susped / resume, Anda harus melakukan hal berikut:
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
Jika Anda memasang modul apple-bce yang sudah jadi dari repositori anuali1, Anda harus menghapusnya dan baru kemudian mengumpulkan dan menginstal modul SM dengan dukungan untuk mode penundaan.
Juga, Anda perlu menambahkan modul applesmc ke daftar hitam (jika Anda belum pernah melakukan ini sebelumnya) dan pastikan bahwa
pcie_ports = compat ditambahkan ke /boot/loader/entries/arch.conf pada baris opsi di bagian akhir.
Saat ini, driver panel sentuh macet ketika Anda memasuki mode tunda, dan driver thunderbolt kadang-kadang menangguhkan sistem selama lebih dari 30 detik, dan ketika melanjutkan, selama beberapa menit. Ini dapat diperbaiki dengan mengunduh modul masalah secara otomatis.
Buat skrip
/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
Jadikan itu dapat dieksekusi:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Itu saja untuk saat ini. Hasilnya adalah sistem yang berfungsi penuh, dengan pengecualian beberapa nuansa dengan menangguhkan / melanjutkan. Tidak ada crash dan panik kernel telah diamati selama beberapa hari uptime. Saya berharap bahwa dalam waktu dekat penulis modul SM akan menyelesaikannya, dan kami akan mendapatkan dukungan penuh untuk penangguhan / resume dan suara.