MacBook Pro 2018 T2-г ArchLinux (dualboot) дээр ажиллуулах

Шинэ T2 чип нь мэдрэгчтэй самбар бүхий 2018 оны шинэ MacBook-ууд дээр Линукс суулгах боломжгүй болно гэсэн шуугиан тарьсан. Цаг хугацаа өнгөрч, 2019 оны сүүлээр гуравдагч талын хөгжүүлэгчид T2 чиптэй харилцах хэд хэдэн драйвер, цөмийн засваруудыг хэрэгжүүлэв. 2018 болон түүнээс хойшхи MacBook загваруудын үндсэн драйвер нь VHCI үйлдлийн систем (мэдрэгч/гар/ гэх мэт), мөн дууны ажиллагааг гүйцэтгэдэг.

Төсөл mbp2018-bridge-drv 3 үндсэн бүрэлдэхүүн хэсэгт хуваагдана:

  • BCE (Buffer Copy Engine) - T2-тэй холбооны үндсэн сувгийг тогтооно. VHCI болон Аудио нь энэ бүрэлдэхүүн хэсгийг шаарддаг.
  • VHCI бол USB Virtual Host Controller юм; гар, хулгана болон бусад системийн бүрэлдэхүүн хэсгүүдийг энэ бүрэлдэхүүн хэсэг хангадаг (бусад драйверууд илүү их ажиллагааг хангахын тулд энэ хост хянагчийг ашигладаг.
  • Аудио - T2 аудио интерфэйсийн драйвер нь одоогоор зөвхөн MacBook-ийн суурилуулсан чанга яригчаар дамжуулан аудио гаралтыг дэмждэг.


Хоёр дахь төсөл гэж нэрлэдэг macbook12-spi-драйвер, мөн энэ нь MacBook Pro Late 2016 болон түүнээс хойшхи хувилбаруудад зориулсан гар, SPI trackpad болон мэдрэгчтэй самбарт зориулсан оролтын драйверийг ажиллуулах чадварыг хэрэгжүүлдэг. Зарим гар/trackpad драйверууд 5.3 хувилбараас эхлэн цөмд багтсан болно.

Wi-fi, мэдрэгчтэй самбар гэх мэт төхөөрөмжүүдийн дэмжлэгийг цөмийн засваруудыг ашиглан хэрэгжүүлсэн. Одоогийн цөмийн хувилбар 5.3.5-1

Яг одоо юу хийж байна

  1. NVMe
  2. Гар
  3. USB-C (Thunderbolt-ыг туршиж үзээгүй; модуль автоматаар ачаалагдах үед энэ нь системийг хөлддөг)
  4. Мэдрэгч самбар (Fn товчлуур, арын гэрэлтүүлэг, ESC гэх мэтийг асаах чадвартай)
  5. Дуу (зөвхөн суурилуулсан чанга яригч)
  6. Wi-Fi модуль (brcmfmac болон зөвхөн iw-ээр дамжуулан)
  7. USB-C дээрх DisplayPort
  8. Мэдрэгч
  9. Түдгэлзүүлэх/Үргэлжлүүлэх (хэсэгчилсэн)
  10. гэх мэт.

Энэ заавар нь macbookpro15,1 болон macbookpro15,2-д зориулагдсан. Уг нийтлэлийг Github-аас англи хэл дээр үндэслэсэн болно. Эндээс. Энэ нийтлэлд дурдсан бүх зүйл үр дүнд хүрээгүй тул би өөрөө шийдлийг олох хэрэгтэй болсон.

Суулгахад юу хэрэгтэй вэ

  • USB-C залгах адаптер (хулгана, гар, USB модем эсвэл утсыг холбох горимд холбох дор хаяж гурван USB оролт). Энэ нь зөвхөн суулгах эхний үе шатанд л шаардлагатай
  • USB гар
  • USB/USB-C флаш диск дор хаяж 4 ГБ

1. Гадны зөөвөрлөгчөөс ачаалах хоригийг идэвхгүй болго

https://support.apple.com/en-us/HT208330
https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/

2. Disk Utility ашиглан сул зай хуваарилах

Тохиромжтой болгохын тулд би тэр даруй дискэнд 30 ГБ-ыг хуваарилж, үүнийг Disk Utility-д exfat хэлбэрээр форматлав. Физик дискний дискний хэрэгслийг хуваах.

3. ISO дүрс үүсгэх

Сонголтууд:

  1. Та энгийн замаар явж, цөм 5.3.5-1 болон засварууд бүхий бэлэн зургийг татаж авах боломжтой. aunali1 Дууссан зураг руу холбоно уу
  2. archlive ашиглан өөрөө зураг үүсгэх (Archa түгээлттэй систем шаардлагатай)

    Суулгах архисо

    pacman -S archiso

    
    cp -r /usr/share/archiso/configs/releng/ archlive
    cd archlive
    

    pacman.conf руу репозитор нэмнэ үү:

    
    [mbp]
    Server = https://packages.aunali1.com/archlinux/$repo/$arch
    

    Бид pacman.conf дээрх анхны цөмийг үл тоомсорлодог:

    IgnorePkg   = linux linux-headers
    

    Шаардлагатай багцуудыг нэмж, төгсгөлд linux-mbp цөм болон linux-mbp-толгойг нэмнэ үү.

    ...
    wvdial
    xl2tpd
    linux-mbp
    linux-mbp-headers
    

    Бид интерактив горимд ажиллахын тулд скриптийг өөрчилдөг (pacstrap -C-г 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!"
    }

    Зураг үүсгэх:

    sudo ./build.sh -v

    Үл тоосон багцуудыг алгасах бол Y товчийг дараад USB флаш диск рүү iso дүрсийг бичнэ үү.

    sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M

4. Эхний ачаалах

Флаш диск болон гарыг суулгаж дахин ачаална уу. Алим гарч ирэх үед сонголтуудыг дарж, EFI BOOT-г сонгоно уу.

Дараа нь та "e" товчийг дараад тушаалын мөрийн төгсгөлд оруулах хэрэгтэй module_blacklist = аянга. Хэрэв энэ нь хийгдээгүй бол систем ачаалахгүй байж магадгүй бөгөөд Thunderbolt ICM Error гарч ирнэ.

fdisk/cfdisk ашиглан бид хуваалтаа (миний хувьд nvme0n1p4) олоод форматлаад архиваа суулгана. Та ашиглаж болно албан ёсны заавар буюу хажуу тийш.

Бид ачаалах хуваалт үүсгэхгүй, бид ачаалагчийг бичих болно /dev/nvme0n1p1
/mnt доторх орчин бүрэн үүссэний дараа arch-chroot руу шилжихийн өмнө дараахыг бичнэ үү.

mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash

/etc/pacman.conf-д нэмэх:


[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch

Цөмийг суулгана уу:


sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp

Бид /etc/modprobe.d/blacklist.conf-д thunderbolt болон applesmc-г бүртгэдэг.

blacklist thunderbolt
blacklist applesmc

Гар, мэдрэгчтэй самбар гэх мэт

суулгана уу:


sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

Мэдрэгч самбарыг ажиллуулахын тулд модулиудыг суулгаж байна:


git clone --branch mbp15 https://github.com/roadrunner2/macbook12-spi-driver.git
cd macbook12-spi-driver
make install

Эхлүүлэхийн тулд модулиудыг нэмнэ үү: /etc/modules-load.d/apple.conf

industrialio_triggered_buffer
apple-ibridge
apple-ib-tb
apple-ib-als

Гарны цөмийн модулиудыг суулгаж байна. Хадгалах газарт anuali1 бэлэн боодол байна, тэр гэж нэрлэдэг apple-bce-dkms-git. Үүнийг суулгахын тулд консол дээр бичнэ үү:

pacman -S apple-bce-dkms-git

Энэ тохиолдолд цөмийн модулийг дуудах болно алим-bce. Өөрөө угсрах тохиолдолд үүнийг нэрлэдэг МЭӨ. Үүний дагуу, хэрэв та mkinicpio.conf файлын MODULES хэсэгт модулийг бүртгүүлэхийг хүсвэл аль модулийг суулгаснаа бүү мартаарай.

Гараар угсрах:


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 эсвэл apple-bce модулийг нэмнэ үү: /etc/modules-load.d/bce.conf

bce

Хэрэв та Fn товчлуурыг анхдагчаар ашиглахыг хүсвэл /etc/modprobe.d/apple-tb.conf файлд дараахыг бичнэ үү:

options apple-ib-tb fnmode=2

Цөм болон initramfs-ийг шинэчилж байна.


mkinitcpio -p linux-mbp

iwd суулгах:

sudo pacman -S networkmanager iwd

5. Ачаалагч

Бүх үндсэн багцуудыг chroot дотор суулгасны дараа та ачаалагчийг суулгаж эхлэх боломжтой.

Би ажилдаа хорхойтой байж чадаагүй. Grub нь гадаад USB дискнээс ачаалагддаг, гэхдээ та үүнийг nvme-д бүртгүүлэх гэж оролдох үед

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

систем цөмийн сандралд орсон бөгөөд дахин ачаалсны дараа сонголтоор дамжуулан шинэ зүйл гарч ирэхгүй. Би энэ асуудлын тодорхой шийдлийг олж чадаагүй тул systemd-boot ашиглан ачаалахыг оролдохоор шийдсэн.

  1. Эхлэх
    bootctl --path=/boot install

    мөн бид цөмийн сандрал руу ордог. MacBook-г унтрааж, дахин асааж, сонголтуудыг товшино уу (гартай USB-C төвийг бүү унтраа)

  2. Бид гадаад төхөөрөмжөөс гадна шинэ EFI BOOT оруулга гарч ирсэн эсэхийг шалгана
  3. Эхний суулгацын нэгэн адил бид гадаад USB дискнээс ачаалахаар сонгосон (modul_blacklist=thunderbolt гэж зааж өгөхөө мартуузай)
  4. Бид дискээ холбож, arch-chroot-ээр дамжуулан хүрээлэн буй орчинд ордог


mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt

Хэрэв систем бүрэн ачаалагдах хүртэл гар ажиллах шаардлагатай бол (энэ нь luks/dm-crypt шифрлэлт ашиглах үед зайлшгүй шаардлагатай), дараа нь MODULES хэсгийн /etc/mkinicpio.conf файлд бичнэ үү.

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Цөм болон initramfs-ийг шинэчилж байна.


mkinicpio -p linux-mbp

systemd-boot-г тохируулж байна

Бид /boot/loader/loader.conf файлыг засварлаж, доторх бүх зүйлийг устгаад дараах зүйлсийг нэмнэ:

default arch
timeout 5
editor 1

/boot/loader/entries хавтас руу орж arch.conf файл үүсгээд дараах зүйлийг бичнэ үү.

title arch
linux /vmlinuz-linux-mbp
initrd /initramfs-linux-mbp.img
options root=/dev/<b>nvme0n1p4</b> rw pcie_ports=compat

Хэрэв та luks болон lvm ашигласан бол

options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat

MacOS руу дахин ачаална уу.

6. Wi-Fi тохиргоо

Эцсийн эцэст MacOS нь wi-fi адаптерийн програм хангамжийн файлуудыг хавтсанд хадгалдаг /usr/share/firmware/wifi , мөн та тэдгээрийг тэндээс бөмбөрцөг хэлбэрээр авч brcmfmac цөмийн модульд оруулах боломжтой. Таны адаптер ямар файлуудыг ашиглаж байгааг мэдэхийн тулд MacOS дээр терминал нээж дараах зүйлийг бичнэ үү.

ioreg -l | grep C-4364

Бид урт жагсаалт авдаг. Бидэнд зөвхөн хэсгээс файлууд хэрэгтэй 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>"})

Таны тохиолдолд файлын нэр өөр байж болно. Тэдгээрийг /usr/share/firmware/wifi фолдероос флаш диск рүү хуулж, дараах байдлаар нэрийг нь өөрчлөөрэй.

    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>

Энэ тохиолдолд сүүлийн текст файл нь загварын нэрийг агуулна; хэрэв таны загвар macbookpro15,2 биш бол та MacBook загварынхаа дагуу энэ файлын нэрийг өөрчлөх шаардлагатай.

Arch руу дахин ачаална уу.

Файлуудыг флаш дискнээс /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/

Модулийн ажиллагааг шалгах:


rmmod brcmfmac
modprobe brcmfmac

Бид сүлжээний интерфейс ifconfig/ip-ээр гарч ирэх эсэхийг шалгана.
Wi-Fi-г дамжуулан тохируулж байна iwctl

Анхаар. Netctl, nmcli гэх мэтээр дамжуулан. Интерфэйс нь ажиллахгүй, зөвхөн iwd-ээр дамжуулан.

Бид NetworkManager-ийг iwd ашиглахыг албаддаг. Үүнийг хийхийн тулд /etc/NetworkManager/NetworkManager.conf файлыг үүсгээд бичнэ үү:

[device]
wifi.backend=iwd

NetworkManager үйлчилгээг эхлүүлнэ үү


sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service

7. Дуу

Дууг ажиллуулахын тулд та pulseaudio-г суулгах хэрэгтэй.


sudo pacman -S pulseaudio

Гурван файл татаж авах:

Тэднийг хөдөлгөцгөөе:

    /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. Түр зогсоох/Үргэлжлүүлэх

Одоогийн байдлаар 16.10.2019 та дуу эсвэл түр зогсоох/үргэлжлүүлэх аль нэгийг сонгох хэрэгтэй. Бид bce модулийн зохиогчийн үйл ажиллагааг дуусгахыг хүлээж байна.

Түдгэлзүүлсэн/үргэлжлүүлэх дэмжлэг бүхий модулийг бүтээхийн тулд та дараахь зүйлийг хийх ёстой.


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

Хэрэв та anuali1 репозитороос бэлэн apple-bce модулийг суулгасан бол эхлээд үүнийг устгаад зөвхөн дараа нь түдгэлзүүлэх горимын дэмжлэгтэйгээр bce модулийг угсарч суулгана.

Мөн та applesmc модулийг хар жагсаалтад нэмж оруулах хэрэгтэй (хэрэв та үүнийг өмнө нь хийж байгаагүй бол) төгсгөлийн сонголтуудын мөрөнд /boot/loader/entries/arch.conf-д параметр нэмэгдсэн эсэхийг шалгаарай. pcie_ports = нийцтэй.

Одоогоор мэдрэгчтэй самбарын драйвер нь түдгэлзүүлэх горимд орох үед гацдаг бөгөөд аянгын драйвер заримдаа системийг 30 секундээс дээш хугацаагаар, үргэлжлүүлэх үед хэдэн минутын турш хөлддөг. Асуудалтай модулиудыг автоматаар буулгах замаар үүнийг засч болно.

Скрипт үүсгэх /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

Үүнийг гүйцэтгэх боломжтой болгох:

sudo chmod +x /lib/systemd/system-sleep/rmmod.sh

Одоохондоо ийм л байна. Үр дүн нь түдгэлзүүлэх / үргэлжлүүлэх зарим нарийн ширийн зүйлийг эс тооцвол бүрэн ажиллах боломжтой систем юм. Хэдэн өдрийн турш ажиллахад ямар ч сүйрэл, цөмийн сандрал ажиглагдаагүй. Ойрын ирээдүйд bce модулийн зохиогч үүнийг дуусгах болно гэж найдаж байна, бид түр зогсоох/үргэлжлүүлэх, дуугарахад бүрэн дэмжлэг авна.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх