ProHoster > Blog > Pentadbiran > Menjadikan MacBook Pro 2018 T2 berfungsi dengan ArchLinux (dualboot)
Menjadikan MacBook Pro 2018 T2 berfungsi dengan ArchLinux (dualboot)
Terdapat sedikit gembar-gembur mengenai fakta bahawa cip T2 baharu akan menjadikannya mustahil untuk memasang Linux pada MacBook 2018 baharu dengan bar sentuh. Masa berlalu, dan pada penghujung tahun 2019, pembangun pihak ketiga melaksanakan beberapa pemacu dan patch kernel untuk interaksi dengan cip T2. Pemacu utama untuk model MacBook 2018 dan lebih baharu melaksanakan operasi VHCI (operasi sentuh/papan kekunci/dsb), serta operasi bunyi.
BCE (Buffer Copy Engine) - mewujudkan saluran komunikasi utama dengan T2. VHCI dan Audio memerlukan komponen ini.
VHCI ialah Pengawal Hos Maya USB; papan kekunci, tetikus dan komponen sistem lain disediakan oleh komponen ini (pemacu lain menggunakan pengawal hos ini untuk menyediakan lebih banyak fungsi.
Audio - pemacu untuk antara muka audio T2, pada masa ini hanya menyokong output audio melalui pembesar suara terbina dalam MacBook
Projek kedua dipanggil macbook12-spi-driver, dan ia melaksanakan keupayaan untuk mengendalikan pemacu input untuk papan kekunci, pad jejak SPI dan bar sentuh untuk MacBook Pro Lewat 2016 dan kemudian. Beberapa pemacu papan kekunci/pad jejak kini disertakan dalam kernel, bermula dengan versi 5.3.
Sokongan untuk peranti seperti wi-fi, pad sentuh, dan lain-lain juga dilaksanakan menggunakan tampalan kernel. Versi kernel semasa5.3.5-1
Apa yang berfungsi pada masa ini
NVMe
papan kekunci
USB-C (Thunderbolt belum diuji; apabila modul dimuatkan secara automatik, ia membekukan sistem)
Bar sentuh (dengan keupayaan untuk menghidupkan kekunci Fn, lampu latar, ESC, dll.)
Bunyi (pembesar suara terbina dalam sahaja)
Modul Wi-Fi (melalui brcmfmac dan hanya melalui iw)
DisplayPort melalui USB-C
Sensor
Gantung/Sambung semula (sebahagian)
dan lain-lain ..
Tutorial ini boleh digunakan untuk macbookpro15,1 dan macbookpro15,2. Artikel itu diambil sebagai asas daripada Github dalam bahasa Inggeris. oleh itu. Tidak semua dalam artikel ini berfungsi, jadi saya terpaksa mencari penyelesaian sendiri.
Apa yang anda perlu pasang
Penyesuai dok USB-C ke USB (sekurang-kurangnya tiga input USB untuk menyambungkan tetikus, papan kekunci, modem USB atau telefon dalam mod penambatan). Ini hanya perlu semasa peringkat pertama pemasangan
2. Peruntukkan ruang kosong menggunakan Utiliti Cakera
Untuk kemudahan, saya segera memperuntukkan 30GB ke cakera, memformatnya dalam exfat dalam Utiliti Cakera itu sendiri. Membahagikan Utiliti Cakera Fizikal.
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 asal dalam pacman.conf:
IgnorePkg = linux linux-headers
Tambah pakej yang diperlukan, pada akhirnya tambahkan kernel linux-mbp dan linux-mbp-header
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Kami menukar skrip untuk berfungsi dalam mod 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 imej:
sudo ./build.sh -v
Tekan Y untuk melangkau pakej yang diabaikan, kemudian tulis imej iso ke pemacu denyar usb:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. But pertama
But semula dengan pemacu kilat dan papan kekunci dimasukkan. Tekan pilihan apabila epal muncul, pilih EFI BOOT.
Seterusnya, anda perlu menekan kekunci "e" dan masukkan pada penghujung baris arahan module_blacklist=thunderbolt. Jika ini tidak dilakukan, sistem mungkin tidak but dan Ralat ICM Thunderbolt akan muncul.
Menggunakan fdisk/cfdisk kami mencari partition kami (bagi saya ia nvme0n1p4), format dan pasang arkib. Anda boleh gunakan arahan rasmi atau sisi.
Kami tidak membuat partition but; kami akan menulis pemuat but masuk /dev/nvme0n1p1
Selepas persekitaran dalam /mnt terbentuk sepenuhnya dan sebelum beralih ke arch-chroot, tulis:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Tambahkan pada /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Memasang modul kernel untuk papan kekunci. Dalam repositori anuali1 ada pakej siap, namanya apple-bce-dkms-git. Untuk memasangnya, tulis dalam konsol:
pacman -S apple-bce-dkms-git
Dalam kes ini, modul kernel akan dipanggil epal-bce. Dalam kes perhimpunan sendiri, ia dipanggil bce. Oleh itu, jika anda ingin mendaftar modul dalam bahagian MODUL pada fail mkinicpio.conf, maka jangan lupa modul yang anda pasang.
Pemasangan 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 bce atau apple-bce untuk memulakan: /etc/modules-load.d/bce.conf
bce
Jika anda ingin menggunakan butang Fn secara lalai, kemudian tulis dalam fail /etc/modprobe.d/apple-tb.conf:
options apple-ib-tb fnmode=2
Mengemas kini kernel dan initramfs.
mkinitcpio -p linux-mbp
Pasang iwd:
sudo pacman -S networkmanager iwd
5. Pemuat
Setelah semua pakej utama dipasang di dalam chroot, anda boleh mula memasang pemuat but.
Saya tidak dapat mendapatkan grub untuk bekerja. Grub but daripada pemacu USB luaran, tetapi apabila anda cuba mendaftarkannya dalam nvme melalui
sistem menjadi panik kernel, dan selepas but semula item baru melalui pilihan tidak muncul. Saya tidak menemui sebarang penyelesaian yang jelas untuk masalah ini dan oleh itu memutuskan untuk cuba melaksanakan boot menggunakan systemd-boot.
Kami melancarkan
bootctl --path=/boot install
dan kita menjadi panik kernel. Matikan MacBook, hidupkannya semula, klik pilihan (jangan matikan hab USB-C dengan papan kekunci)
Kami menyemak sama ada kemasukan EFI BOOT baharu telah muncul sebagai tambahan kepada peranti luaran
Kami memilih untuk but dari pemacu USB luaran, seperti semasa pemasangan pertama (jangan lupa untuk menentukan module_blacklist=thunderbolt)
Kami memasang cakera kami dan pergi ke persekitaran melalui arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Jika papan kekunci perlu berfungsi sehingga sistem dimuatkan sepenuhnya (ini perlu apabila menggunakan penyulitan luks/dm-crypt), kemudian tuliskannya dalam fail /etc/mkinicpio.conf dalam bahagian MODUL:
Ternyata pada akhirnya, MacOS menyimpan fail perisian tegar untuk penyesuai wi-fi dalam folder /usr/share/firmware/wifi , dan anda boleh membawanya dari sana dalam bentuk gumpalan dan suapkannya ke modul kernel brcmfmac. Untuk mengetahui fail yang digunakan penyesuai anda, buka terminal dalam MacOS dan tulis:
ioreg -l | grep C-4364
Kami mendapat senarai panjang. Kami hanya memerlukan fail dari bahagian tersebut RequestedFiles:
Dalam kes ini, fail teks terakhir mengandungi nama model; jika model anda bukan macbookpro15,2, maka anda perlu menamakan semula fail ini mengikut model MacBook anda.
But semula ke dalam Arch.
Salin fail dari pemacu kilat ke folder /lib/firmware/brcm/
Pada saat ini 16.10.2019 anda perlu memilih sama ada bunyi atau gantung/sambung semula. Kami sedang menunggu pengarang modul bce untuk melengkapkan fungsi.
Untuk membina modul dengan sokongan yang digantung/sambung semula, anda mesti melakukan perkara 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 siap sedia daripada repositori anuali1, maka anda mesti mengalih keluarnya dahulu dan kemudian memasang dan memasang modul bce dengan sokongan mod gantung.
Selain itu, anda perlu menambah modul applesmc ke senarai hitam (jika anda belum melakukan ini sebelum ini) dan pastikan bahawa dalam /boot/loader/entry/arch.conf dalam baris pilihan pada penghujung parameter ditambahkan pcie_ports=compat.
Pada masa ini, pemandu bar sentuh ranap apabila memasuki mod gantung, dan pemandu petir kadangkala membekukan sistem selama lebih daripada 30 saat, dan selama beberapa minit apabila menyambung semula. Ini boleh diperbaiki dengan memunggah modul bermasalah secara automatik.
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 ia boleh dilaksanakan:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Itu sahaja buat masa ini. Hasilnya ialah sistem yang boleh dilaksanakan sepenuhnya, dengan pengecualian beberapa nuansa dengan penggantungan/sambung semula. Tiada ranap atau panik kernel diperhatikan semasa beberapa hari masa beroperasi. Saya berharap dalam masa terdekat pengarang modul bce akan menyelesaikannya, dan kami akan mendapat sokongan penuh untuk penggantungan/resume dan bunyi.