ProHoster > Blog > Ma'muriyat > MacBook Pro 2018 T2-ni ArchLinux (dualboot) bilan ishlashga aylantirish
MacBook Pro 2018 T2-ni ArchLinux (dualboot) bilan ishlashga aylantirish
Yangi T2 chipi sensorli panelli yangi 2018 MacBook'larga Linuxni o'rnatishni imkonsiz qilishi haqida juda ko'p shov-shuv bo'ldi. Vaqt o'tdi va 2019 yil oxirida uchinchi tomon ishlab chiquvchilari T2 chipi bilan o'zaro ishlash uchun bir qator drayverlar va yadro yamoqlarini joriy qildilar. 2018 va undan keyingi MacBook modellari uchun asosiy drayver VHCI operatsiyasini (sensorli/klaviatura/va hokazo) hamda ovozli ishlashini amalga oshiradi.
BCE (Buffer Copy Engine) - T2 bilan asosiy aloqa kanalini o'rnatadi. VHCI va Audio ushbu komponentni talab qiladi.
VHCI - bu USB virtual xost boshqaruvchisi; klaviatura, sichqoncha va boshqa tizim komponentlari ushbu komponent tomonidan ta'minlangan (boshqa drayverlar ko'proq funksionallikni ta'minlash uchun ushbu xost boshqaruvchisidan foydalanadilar.
Audio - T2 audio interfeysi uchun drayver, hozirda faqat MacBook-ning o'rnatilgan dinamiklari orqali audio chiqishini qo'llab-quvvatlaydi
Ikkinchi loyiha chaqiriladi macbook12-spi-drayveri, va u 2016-yil oxiri va undan keyingi MacBook Pro-lar uchun klaviatura, SPI trek paneli va sensorli panel uchun kiritish drayverini ishlatish qobiliyatini amalga oshiradi. Ba'zi klaviatura/trekpad drayverlari endi 5.3 versiyasidan boshlab yadroga kiritilgan.
Wi-Fi, sensorli panel va boshqalar kabi qurilmalarni qo'llab-quvvatlash yadro yamoqlari yordamida ham amalga oshirildi. Joriy yadro versiyasi5.3.5-1
Ayni paytda nima ishlayapti
NVMe
Klaviatura
USB-C (Thunderbolt sinovdan o'tkazilmagan; modul avtomatik ravishda yuklanganda, u tizimni muzlatib qo'yadi)
Sensor paneli (Fn tugmalari, orqa yorug'lik, ESC va boshqalarni yoqish imkoniyati bilan)
Ovoz (faqat o'rnatilgan dinamiklar)
Wi-Fi moduli (brcmfmac orqali va faqat iw orqali)
USB-C orqali DisplayPort
Sensorlar
To'xtatib turish/davom etish (qisman)
va boshqalar.
Ushbu qo'llanma macbookpro15,1 va macbookpro15,2 uchun amal qiladi. Maqola ingliz tilidagi Github-dan asos qilib olingan. shu yerda. Ushbu maqolada hamma narsa ishlamadi, shuning uchun men o'zim yechim topishim kerak edi.
O'rnatish uchun nima kerak
USB-C docking adapteri USB ga (sichqonchani, klaviaturani, USB modemni yoki telefonni ulash rejimida ulash uchun kamida uchta USB kirish). Bu faqat o'rnatishning birinchi bosqichlarida kerak
USB klaviatura
USB/USB-C flesh-diski kamida 4 GB
1. Tashqi muhitdan yuklashni taqiqlashni o'chirib qo'ying
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Pacman.conf ga omborni qo'shing:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Biz pacman.conf da asl yadroga e'tibor bermaymiz:
IgnorePkg = linux linux-headers
Kerakli paketlarni qo'shing, oxirida linux-mbp yadrosi va linux-mbp-sarlavhalarini qo'shing.
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Biz skriptni interaktiv rejimda ishlash uchun o'zgartiramiz (pacstrap -C ni pacstrap -i -C bilan almashtiring):
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!"
}
Tasvirni shakllantirish:
sudo ./build.sh -v
E'tibor berilmagan paketlarni o'tkazib yuborish uchun Y tugmasini bosing, so'ngra iso tasvirini usb flesh-diskiga yozing:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Birinchi yuklash
Fleshli disk va klaviatura o'rnatilgan holda qayta ishga tushiring. Olma paydo bo'lganda variantlarni bosing, EFI BOOT ni tanlang.
Keyinchalik, "e" tugmasini bosishingiz va buyruq satrining oxiriga kirishingiz kerak module_blacklist=momaqaldiroq. Agar bu bajarilmasa, tizim ochilmasligi mumkin va Thunderbolt ICM xatosi paydo bo'ladi.
Fdisk/cfdisk-dan foydalanib, biz bo'limimizni topamiz (men uchun bu nvme0n1p4), uni formatlash va arxivni o'rnatish. foydalanishingiz mumkin rasmiy ko'rsatmalar yoki yon tomonga.
Biz yuklash bo'limini yaratmayapmiz; biz yuklovchini yozamiz /dev/nvme0n1p1
/mnt muhiti to'liq shakllangandan so'ng va arch-chrootga o'tishdan oldin quyidagilarni yozing:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
/etc/pacman.conf ga qo'shing:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Klaviatura uchun yadro modullarini o'rnatish. Omborda anual1 tayyor paket bor, u deyiladi apple-bce-dkms-git. Uni o'rnatish uchun konsolga yozing:
pacman -S apple-bce-dkms-git
Bunday holda, yadro moduli chaqiriladi olma-bce. O'z-o'zini yig'ish holatida u deyiladi miloddan avvalgi. Shunga ko'ra, agar siz mkinicpio.conf faylining MODULLAR bo'limida modulni ro'yxatdan o'tkazmoqchi bo'lsangiz, qaysi modulni o'rnatganingizni unutmang.
Qo'lda yig'ish:
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
Ishga tushirish uchun bce yoki apple-bce modulini qo'shing: /etc/modules-load.d/bce.conf
bce
Agar siz Fn tugmalaridan sukut bo'yicha foydalanmoqchi bo'lsangiz, /etc/modprobe.d/apple-tb.conf fayliga yozing:
options apple-ib-tb fnmode=2
Yadro va initramflarni yangilash.
mkinitcpio -p linux-mbp
Iwd ni o'rnating:
sudo pacman -S networkmanager iwd
5. Yuklagich
Barcha asosiy paketlar chroot ichiga o'rnatilgandan so'ng, siz bootloaderni o'rnatishni boshlashingiz mumkin.
Men grubni ishga olib kelolmadim. Grub tashqi USB diskidan yuklanadi, lekin siz uni nvme orqali ro'yxatdan o'tkazmoqchi bo'lganingizda
tizim yadro vahimasiga tushdi va qayta ishga tushirilgandan so'ng variantlar orqali yangi element paydo bo'lmadi. Men bu muammoning aniq echimini topmadim va shuning uchun systemd-boot yordamida yuklashni amalga oshirishga qaror qildim.
Ishga tushirish
bootctl --path=/boot install
va biz yadro vahimasiga tushamiz. MacBook-ni o'chiring, uni qayta yoqing, variantlarni bosing (klaviatura bilan USB-C hubni o'chirmang)
Biz tashqi qurilmaga qo'shimcha ravishda yangi EFI BOOT yozuvi paydo bo'lganligini tekshiramiz
Biz tashqi USB drayvdan yuklashni tanlaymiz, xuddi birinchi o'rnatish paytida (modul_blacklist=thunderbolt belgilashni unutmang)
Biz diskimizni o'rnatamiz va arch-chroot orqali atrof-muhitga o'tamiz
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Agar tizim to'liq yuklanmaguncha klaviatura ishlashi kerak bo'lsa (bu luks/dm-crypt shifrlashdan foydalanganda kerak), uni MODULLAR bo'limidagi /etc/mkinicpio.conf fayliga yozing:
Oxir-oqibat ma'lum bo'lishicha, MacOS papkada Wi-Fi adapteri uchun dasturiy ta'minot fayllarini saqlaydi /usr/share/proshivka/wifi , va siz ularni u yerdan bloblar shaklida olib, brcmfmac yadro moduliga yuborishingiz mumkin. Adapteringiz qaysi fayllardan foydalanishini bilish uchun MacOS-da terminalni oching va quyidagilarni yozing:
ioreg -l | grep C-4364
Biz uzoq ro'yxatni olamiz. Bizga faqat bo'limdagi fayllar kerak RequestedFiles:
Sizning holatingizda fayl nomlari farq qilishi mumkin. Ularni /usr/share/firmware/wifi jildidan flesh-diskga nusxa ko'chiring va ularni quyidagicha nomlang:
Bunday holda, oxirgi matn fayli model nomlarini o'z ichiga oladi; agar sizning modelingiz macbookpro15,2 bo'lmasa, ushbu fayl nomini MacBook modelingizga mos ravishda o'zgartirishingiz kerak.
Tarmoq interfeysi ifconfig/ip orqali paydo bo'lishiga ishonch hosil qilamiz.
Wi-Fi orqali sozlash iwctl
Diqqat. Netctl, nmcli va boshqalar orqali. Interfeys ishlamaydi, faqat iwd orqali.
Biz NetworkManager-ni iwd-dan foydalanishga majbur qilamiz. Buning uchun /etc/NetworkManager/NetworkManager.conf faylini yarating va quyidagilarni yozing:
Ayni damda 16.10.2019 siz ovoz yoki to'xtatib turish/davom etishni tanlashingiz kerak. Biz bce moduli muallifining funksiyani bajarishini kutamiz.
To'xtatilgan/davom etish qo'llab-quvvatlanadigan modul yaratish uchun siz quyidagilarni bajarishingiz kerak:
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
Agar siz anuali1 omboridan tayyor apple-bce modulini o'rnatgan bo'lsangiz, avval uni olib tashlashingiz va shundan keyingina to'xtatib turish rejimini qo'llab-quvvatlovchi bce modulini yig'ishingiz va o'rnatishingiz kerak.
Bundan tashqari, siz applesmc modulini qora ro'yxatga qo'shishingiz kerak (agar buni ilgari qilmagan bo'lsangiz) va oxirida parametrlar qatoridagi /boot/loader/entries/arch.conf da parametr qo'shilganligiga ishonch hosil qiling. pcie_ports=mos.
Hozirgi vaqtda sensorli panel drayveri to'xtatib turish rejimiga kirishda ishlamay qoladi va momaqaldiroq drayveri ba'zan tizimni 30 soniyadan ko'proq vaqt davomida va qayta ishga tushirilganda bir necha daqiqa davomida muzlatib qo'yadi. Bu muammoli modullarni avtomatik ravishda tushirish orqali tuzatilishi mumkin.
#!/bin/sh
if [ "" == "pre" ]; then
rmmod thunderbolt
rmmod apple_ib_tb
elif [ "" == "post" ]; then
modprobe apple_ib_tb
modprobe thunderbolt
fi
Uni bajariladigan qilib qo'ying:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Hozircha hammasi shu. Natijada, to'xtatib turish/rezyume bilan ba'zi nuanslar bundan mustasno, butunlay ishlaydigan tizim. Bir necha kunlik ish vaqtida hech qanday nosozliklar yoki yadro vahimalari kuzatilmadi. Umid qilamanki, yaqin kelajakda bce moduli muallifi uni tugatadi va biz to'xtatib turish/davom etish va ovozni to'liq qo'llab-quvvatlaymiz.