Membuat MacBook Pro 2018 T2 berfungsi dengan ArchLinux (dualboot)
Ada cukup banyak hype tentang fakta bahwa chip T2 baru akan membuat instalasi Linux di MacBook 2018 baru dengan touchbar tidak mungkin dilakukan. Waktu berlalu, dan pada akhir tahun 2019, pengembang pihak ketiga menerapkan sejumlah driver dan patch kernel untuk interaksi dengan chip T2. Driver utama untuk model MacBook 2018 dan yang lebih baru mengimplementasikan operasi VHCI (operasi sentuh/keyboard/dll.), serta pengoperasian suara.
BCE (Buffer Copy Engine) - menetapkan saluran komunikasi utama dengan T2. VHCI dan Audio memerlukan komponen ini.
VHCI adalah Pengontrol Host Virtual USB; keyboard, mouse, dan komponen sistem lainnya disediakan oleh komponen ini (driver lain menggunakan pengontrol host ini untuk menyediakan lebih banyak fungsionalitas.
Audio - driver untuk antarmuka audio T2, saat ini hanya mendukung output audio melalui speaker internal MacBook
Proyek kedua disebut macbook12-spi-driver, dan mengimplementasikan kemampuan untuk mengoperasikan driver input untuk keyboard, trackpad SPI, dan touchbar untuk MacBook Pro Akhir 2016 dan lebih baru. Beberapa driver keyboard/trackpad kini disertakan dalam kernel, dimulai dengan versi 5.3.
Dukungan untuk perangkat seperti wi-fi, touchpad, dll juga diimplementasikan menggunakan patch kernel. Versi kernel saat ini5.3.5-1
Apa yang berhasil saat ini
NVMe
Keyboard
USB-C (Thunderbolt belum diuji; ketika modul dimuat secara otomatis, sistem akan terhenti)
Touchbar (dengan kemampuan untuk menyalakan tombol Fn, lampu latar, ESC, dll.)
Suara (hanya speaker internal)
Modul Wi-Fi (melalui brcmfmac dan hanya melalui iw)
DisplayPort melalui USB-C
Sensor
Tangguhkan/Lanjutkan (sebagian)
dll ..
Tutorial ini berlaku untuk macbookpro15,1 dan macbookpro15,2. Artikel ini diambil sebagai dasar dari Github dalam bahasa Inggris. karenanya. Tidak semua yang ada di artikel ini berhasil, jadi saya harus mencari solusinya sendiri.
Apa yang Anda perlukan untuk instalasi
Adaptor docking USB-C ke USB (setidaknya tiga input USB untuk menyambungkan mouse, keyboard, modem USB, atau telepon dalam mode tethering). Ini hanya diperlukan pada tahap pertama instalasi
papan ketik USB
Flashdisk USB/USB-C minimal 4GB
1. Nonaktifkan larangan booting dari media eksternal
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Tambahkan repositori ke pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Kami mengabaikan kernel asli di pacman.conf:
IgnorePkg = linux linux-headers
Tambahkan paket yang diperlukan, pada akhirnya tambahkan kernel linux-mbp dan header linux-mbp
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Kami mengubah 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!"
}
Membentuk gambar:
sudo ./build.sh -v
Tekan Y untuk melewati paket yang diabaikan, lalu tulis image iso ke usb flash drive:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Booting pertama
Reboot dengan flash drive dan keyboard dimasukkan. Tekan opsi saat apel muncul, pilih EFI BOOT.
Selanjutnya, Anda perlu menekan tombol βeβ dan enter di akhir baris perintah module_blacklist=petir. Jika ini tidak dilakukan, sistem mungkin tidak bisa boot dan Kesalahan ICM Thunderbolt akan muncul.
Menggunakan fdisk/cfdisk kami menemukan partisi kami (bagi saya ini nvme0n1p4), memformatnya dan menginstal arsip. Anda dapat gunakan instruksi resmi ΠΈΠ»ΠΈ ke samping.
Kami tidak membuat partisi boot; kami akan menulis bootloader /dev/nvme0n1p1
Setelah lingkungan di /mnt terbentuk sempurna dan sebelum berpindah ke arch-chroot, tulis:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Tambahkan ke /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Menginstal modul kernel untuk keyboard. Di repositori tahunan1 ada paket yang sudah jadi, namanya apple-bce-dkms-git. Untuk menginstalnya, tulis di konsol:
pacman -S apple-bce-dkms-git
Dalam hal ini, modul kernel akan dipanggil apel-SM. Dalam hal perakitan sendiri, ini disebut sM. Oleh karena itu, jika Anda ingin mendaftarkan modul di bagian MODULES pada file mkinicpio.conf, jangan lupa modul mana yang Anda instal.
Perakitan tangan:
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 bce atau apple-bce ke startup: /etc/modules-load.d/bce.conf
bce
Jika Anda ingin menggunakan tombol Fn secara default, tulis di file /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Memperbarui kernel dan initramfs.
mkinitcpio -p linux-mbp
Instal iwd:
sudo pacman -S networkmanager iwd
5. Pemuat
Setelah semua paket utama terinstal di dalam chroot, Anda dapat mulai menginstal bootloader.
Saya belum bisa mendapatkan grub untuk bekerja. Grub melakukan booting dari drive USB eksternal, tetapi ketika Anda mencoba mendaftarkannya di nvme via
sistem menjadi panik kernel, dan setelah reboot item baru melalui opsi tidak muncul. Saya tidak menemukan solusi yang jelas untuk masalah ini dan oleh karena itu memutuskan untuk mencoba mengimplementasikan booting menggunakan systemd-boot.
Meluncurkan
bootctl --path=/boot install
dan kita menjadi panik kernel. Matikan MacBook, hidupkan kembali, klik options (jangan matikan hub USB-C dengan keyboard)
Kami memeriksa apakah entri EFI BOOT baru telah muncul di samping perangkat eksternal
Kami memilih untuk boot dari drive USB eksternal, seperti pada instalasi pertama (jangan lupa tentukan module_blacklist=thunderbolt)
Kami memasang disk kami dan masuk ke lingkungan melalui arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Jika keyboard perlu berfungsi hingga sistem terisi penuh (ini diperlukan saat menggunakan enkripsi luks/dm-crypt), tuliskan di file /etc/mkinicpio.conf di bagian MODUL:
Ternyata pada akhirnya, MacOS menyimpan file firmware untuk adaptor wi-fi di dalam folder /usr/share/firmware/wifi , dan Anda dapat mengambilnya dari sana dalam bentuk blob dan memasukkannya ke modul kernel brcmfmac. Untuk mengetahui file mana yang digunakan adaptor Anda, buka terminal di MacOS dan tulis:
ioreg -l | grep C-4364
Kami mendapat daftar panjang. Kami hanya membutuhkan file dari bagian tersebut File yang Diminta:
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.
Nyalakan ulang ke Arch.
Salin file dari flash drive ke folder /lib/firmware/brcm/
Saat ini 16.10.2019 Anda harus memilih suara atau menangguhkan/melanjutkan. Kami menunggu pembuat modul bce menyelesaikan fungsinya.
Untuk membangun modul dengan dukungan yang ditangguhkan/dilanjutkan, 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 menginstal modul apple-bce yang sudah jadi dari repositori anuali1, maka Anda harus menghapusnya terlebih dahulu dan baru kemudian merakit dan menginstal modul bce dengan dukungan mode penangguhan.
Selain itu, Anda perlu menambahkan modul applemc ke daftar hitam (jika Anda belum pernah melakukan ini sebelumnya) dan pastikan bahwa di /boot/loader/entries/arch.conf di baris opsi di akhir parameter ditambahkan pcie_ports=kompatibel.
Saat ini, driver touchbar mogok saat memasuki mode penangguhan, dan driver thunderbolt terkadang membekukan sistem selama lebih dari 30 detik, dan selama beberapa menit saat melanjutkan. Hal ini dapat diperbaiki dengan membongkar modul yang bermasalah secara otomatis.
Buat skrip /lib/systemd/system-sleep/rmmod.sh:
#!/bin/sh
if [ "" == "pre" ]; then
rmmod thunderbolt
rmmod apple_ib_tb
elif [ "" == "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 sepenuhnya bisa diterapkan, dengan pengecualian beberapa nuansa dengan penangguhan/lanjutan. Tidak ada kerusakan atau kepanikan kernel yang diamati selama beberapa hari waktu aktif. Saya berharap dalam waktu dekat pembuat modul bce dapat menyelesaikannya, dan kami akan mendapatkan dukungan penuh untuk suspend/resume dan sound.