ProHoster > Blog > yönetim > MacBook Pro 2018 T2'nin ArchLinux (çift önyükleme) ile çalışmasını sağlama
MacBook Pro 2018 T2'nin ArchLinux (çift önyükleme) ile çalışmasını sağlama
Yeni T2 yongasının, dokunmatik çubuklu yeni 2018 MacBook'lara Linux yüklemeyi imkansız hale getireceği konusunda epey bir abartı var. Zaman geçti ve 2019'un sonunda üçüncü taraf geliştiriciler, T2 çipiyle etkileşim için bir dizi sürücü ve çekirdek yamasını uygulamaya koydu. 2018 ve daha yeni MacBook modelleri için ana sürücü, ses işleminin yanı sıra VHCI işlemini (dokunmatik/klavye/vb. işlemi) uygular.
BCE (Arabellek Kopyalama Motoru) - T2 ile ana iletişim kanalını oluşturur. VHCI ve Ses bu bileşeni gerektirir.
VHCI bir USB Sanal Ana Bilgisayar Denetleyicisidir; klavye, fare ve diğer sistem bileşenleri bu bileşen tarafından sağlanır (diğer sürücüler daha fazla işlevsellik sağlamak için bu ana bilgisayar denetleyicisini kullanır.
Ses - T2 ses arabirimi sürücüsü, şu anda yalnızca MacBook'un yerleşik hoparlörlerinden ses çıkışını desteklemektedir
İkinci projenin adı macbook12-spi sürücüsüve MacBook Pro 2016 Sonu ve sonrası için klavye, SPI trackpad ve dokunmatik çubuk için bir giriş sürücüsünü çalıştırma yeteneğini uygular. Sürüm 5.3'ten itibaren bazı klavye/trackpad sürücüleri artık çekirdeğe dahil edilmiştir.
Çekirdek yamaları kullanılarak wi-fi, dokunmatik yüzey vb. cihazlara yönelik destek de uygulandı. Geçerli çekirdek sürümü5.3.5-1
Şu anda ne çalışıyor?
NVMe
klavye
USB-C (Thunderbolt test edilmedi; modül otomatik olarak yüklendiğinde sistemi donduruyor)
Dokunmatik çubuk (Fn tuşlarını, arka ışığı, ESC'yi vb. açma özelliğine sahip)
Ses (yalnızca yerleşik hoparlörler)
Wi-Fi modülü (brcmfmac aracılığıyla ve yalnızca iw aracılığıyla)
USB-C üzerinden DisplayPort
sensörler
Askıya Al/Devam Ettir (kısmen)
v.b..
Bu eğitim macbookpro15,1 ve macbookpro15,2 için geçerlidir. Makale İngilizce Github'dan alınmıştır. bundan dolayı. Bu makaledeki her şey işe yaramadı, bu yüzden kendim bir çözüm bulmam gerekiyordu.
Yüklemeniz gerekenler
USB-C bağlantı adaptörü - USB (bir fareyi, klavyeyi, USB modemi veya telefonu bağlantı modunda bağlamak için en az üç USB girişi). Bu yalnızca kurulumun ilk aşamalarında gereklidir
USB klavye
USB/USB-C flash sürücü minimum 4 GB
1. Harici ortamdan önyükleme yasağını devre dışı bırakın
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Depoyu pacman.conf'a ekleyin:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Pacman.conf'taki orijinal çekirdeği göz ardı ediyoruz:
IgnorePkg = linux linux-headers
Gerekli paketleri ekleyin, sonunda linux-mbp çekirdeğini ve linux-mbp-başlıklarını ekleyin
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Komut dosyasını etkileşimli modda çalışacak şekilde değiştiriyoruz (pacstrap -C'yi pacstrap -i -C ile değiştirin):
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!"
}
Bir görüntü oluşturmak:
sudo ./build.sh -v
Yok sayılan paketleri atlamak için Y tuşuna basın, ardından iso görüntüsünü usb flash sürücüye yazın:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. İlk açılış
Flash sürücü ve klavye takılıyken yeniden başlatın. Elma göründüğünde seçeneklere basın, EFI BOOT'u seçin.
Daha sonra “e” tuşuna basmanız ve komut satırının sonuna girmeniz gerekir. module_blacklist=yıldırım. Bu yapılmazsa sistem önyükleme yapmayabilir ve Thunderbolt ICM Hatası görünecektir.
Fdisk/cfdisk'i kullanarak bölümümüzü buluyoruz (benim için nvme0n1p4), biçimlendiriyoruz ve arşivi yüklüyoruz. Kullanabilirsiniz resmi talimatlar veya yan yan.
Bir önyükleme bölümü oluşturmuyoruz; önyükleyiciyi buraya yazacağız. /dev/nvme0n1p1
/mnt içindeki ortam tamamen oluşturulduktan sonra ve arch-chroot'a geçmeden önce şunu yazın:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
/etc/pacman.conf'a ekleyin:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Klavye için çekirdek modüllerinin kurulması. Depoda yıllık1 hazır bir paket var, buna denir apple-bce-dkms-git. Yüklemek için konsola şunu yazın:
pacman -S apple-bce-dkms-git
Bu durumda çekirdek modülü çağrılacaktır. elma-bce. Kendi kendine montaj durumunda buna denir bce. Buna göre mkinicpio.conf dosyasının MODÜLLER kısmına bir modül kaydetmek istiyorsanız hangi modülü kurduğunuzu unutmayın.
Manuel montaj:
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
bce veya apple-bce modülünü başlangıca ekleyin: /etc/modules-load.d/bce.conf
bce
Varsayılan olarak Fn düğmelerini kullanmak istiyorsanız /etc/modprobe.d/apple-tb.conf dosyasına şunu yazın:
options apple-ib-tb fnmode=2
Çekirdek ve initramfs güncelleniyor.
mkinitcpio -p linux-mbp
iwd'yi yükleyin:
sudo pacman -S networkmanager iwd
5. Yükleyici
Tüm ana paketler chroot'a yüklendikten sonra önyükleyiciyi kurmaya başlayabilirsiniz.
İşe gücüm yetmedi. Grub harici bir USB sürücüsünden önyükleme yapıyor, ancak bunu nvme aracılığıyla kaydetmeye çalıştığınızda
sistem çekirdek paniğine girdi ve yeniden başlattıktan sonra seçenekler aracılığıyla yeni bir öğe görünmedi. Bu soruna net bir çözüm bulamadım ve bu nedenle systemd-boot kullanarak önyükleme yapmayı denemeye karar verdim.
koşmak
bootctl --path=/boot install
ve çekirdek paniğine giriyoruz. MacBook'u kapatın, tekrar açın, seçeneklere tıklayın (klavyeli USB-C hub'ını kapatmayın)
Harici cihaza ek olarak yeni bir EFI BOOT girişinin görünüp görünmediğini kontrol ediyoruz
İlk kurulumda olduğu gibi harici bir USB sürücüden önyükleme yapmayı seçiyoruz (module_blacklist=thunderbolt belirtmeyi unutmayın)
Diskimizi takıyoruz ve arch-chroot aracılığıyla ortama giriyoruz
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Sistem tamamen yüklenene kadar klavyenin çalışması gerekiyorsa (luks/dm-crypt şifreleme kullanılırken bu gereklidir), bunu MODÜLLER bölümündeki /etc/mkinicpio.conf dosyasına yazın:
Sonunda ortaya çıktığı gibi, MacOS, wi-fi bağdaştırıcısının ürün yazılımı dosyalarını klasörde saklar /usr/paylaşım/ürün yazılımı/wifi , ve bunları oradan bloblar halinde alıp brcmfmac çekirdek modülüne besleyebilirsiniz. Bağdaştırıcınızın hangi dosyaları kullandığını öğrenmek için MacOS'ta bir terminal açın ve şunu yazın:
ioreg -l | grep C-4364
Uzun bir liste alıyoruz. Yalnızca bölümdeki dosyalara ihtiyacımız var İstenen Dosyalar:
Sizin durumunuzda dosya adları farklı olabilir. Bunları /usr/share/firmware/wifi klasöründen flash sürücüye kopyalayın ve aşağıdaki gibi yeniden adlandırın:
Bu durumda son metin dosyasında model adları yer alıyor; eğer modeliniz macbookpro15,2 değilse bu durumda bu dosyayı MacBook modelinize uygun olarak yeniden adlandırmanız gerekir.
Şu anda, 16.10.2019 sesi veya askıya almayı/devam ettirmeyi seçmeniz gerekir. bce modülünün yazarının işlevselliği tamamlamasını bekliyoruz.
Askıya alma/devam ettirme desteğine sahip bir modül oluşturmak için aşağıdakileri yapmanız gerekir:
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
Hazır apple-bce modülünü anuali1 deposundan kurduysanız, önce onu kaldırmanız ve ancak daha sonra bce modülünü askıya alma modu desteğiyle birleştirip kurmanız gerekir.
Ayrıca applesmc modülünü kara listeye eklemeniz (bunu daha önce yapmadıysanız) ve sondaki seçenekler satırındaki /boot/loader/entries/arch.conf dosyasına parametrenin eklendiğinden emin olmanız gerekir. pcie_ports=uyumluluk.
Şu anda, dokunmatik çubuk sürücüsü askıya alma moduna girerken çöküyor ve yıldırım sürücüsü bazen sistemi 30 saniyeden fazla ve devam ederken birkaç dakika boyunca donduruyor. Bu, sorunlu modüllerin otomatik olarak boşaltılmasıyla düzeltilebilir.
Bir komut dosyası oluşturun /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
Çalıştırılabilir hale getirin:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Şimdilik bu kadar. Sonuç, askıya alma/devam ettirme ile ilgili bazı nüanslar dışında, tamamen uygulanabilir bir sistemdir. Birkaç günlük çalışma süresi boyunca herhangi bir çökme veya çekirdek paniği gözlemlenmedi. Yakın gelecekte bce modülünün yazarının bunu tamamlayacağını ve askıya alma/devam ettirme ve ses için tam destek alacağımızı umuyorum.