Membuat MacBook Pro 2018 T2 berfungsi dengan ArchLinux (dualboot)

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-1

Apa yang berhasil saat ini


  1. NVMe
  2. Keyboard
  3. USB-C (Thunderbolt tidak diuji, ketika modul dimuat secara otomatis, ia menangguhkan sistem dengan erat)
  4. Panel Sentuh (dengan kemampuan untuk mengaktifkan tombol Fn, lampu latar, ESC, dll.)
  5. Suara (hanya speaker internal)
  6. Modul Wi-Fi (melalui brcmfmac dan hanya melalui iw)
  7. DisplayPort via USB-C
  8. Sensor
  9. Tangguhkan / Lanjutkan (sebagian)
  10. 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/HT208330
https://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:

  1. 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
  2. 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 / nvme0n1p1
Setelah 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.

  1. Kami meluncurkan

     bootctl --path=/boot install 

    dan terbang ke kernel panik. Matikan MacBook, hidupkan lagi, klik opsi (jangan nonaktifkan hub usb-c dengan keyboard)
  2. Periksa apakah catatan EFI BOOT baru telah muncul di samping perangkat eksternal
  3. Kami memilih boot dari USB-drive eksternal, seperti saat instalasi pertama (jangan lupa menulis module_blacklist = thunderbolt)
  4. 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 iwctl

Perhatian 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.

Source: https://habr.com/ru/post/id472106/


All Articles