Шинэ T2 чип нь мэдрэгчтэй самбар бүхий 2018 оны шинэ MacBook-ууд дээр Линукс суулгах боломжгүй болно гэсэн шуугиан тарьсан. Цаг хугацаа өнгөрч, 2019 оны сүүлээр гуравдагч талын хөгжүүлэгчид T2 чиптэй харилцах хэд хэдэн драйвер, цөмийн засваруудыг хэрэгжүүлэв. 2018 болон түүнээс хойшхи MacBook загваруудын үндсэн драйвер нь VHCI үйлдлийн систем (мэдрэгч/гар/ гэх мэт), мөн дууны ажиллагааг гүйцэтгэдэг.
Төсөл
- BCE (Buffer Copy Engine) - T2-тэй холбооны үндсэн сувгийг тогтооно. VHCI болон Аудио нь энэ бүрэлдэхүүн хэсгийг шаарддаг.
- VHCI бол USB Virtual Host Controller юм; гар, хулгана болон бусад системийн бүрэлдэхүүн хэсгүүдийг энэ бүрэлдэхүүн хэсэг хангадаг (бусад драйверууд илүү их ажиллагааг хангахын тулд энэ хост хянагчийг ашигладаг.
- Аудио - T2 аудио интерфэйсийн драйвер нь одоогоор зөвхөн MacBook-ийн суурилуулсан чанга яригчаар дамжуулан аудио гаралтыг дэмждэг.
Хоёр дахь төсөл гэж нэрлэдэг
Wi-fi, мэдрэгчтэй самбар гэх мэт төхөөрөмжүүдийн дэмжлэгийг цөмийн засваруудыг ашиглан хэрэгжүүлсэн. Одоогийн цөмийн хувилбар
Яг одоо юу хийж байна
- NVMe
- Гар
- USB-C (Thunderbolt-ыг туршиж үзээгүй; модуль автоматаар ачаалагдах үед энэ нь системийг хөлддөг)
- Мэдрэгч самбар (Fn товчлуур, арын гэрэлтүүлэг, ESC гэх мэтийг асаах чадвартай)
- Дуу (зөвхөн суурилуулсан чанга яригч)
- Wi-Fi модуль (brcmfmac болон зөвхөн iw-ээр дамжуулан)
- USB-C дээрх DisplayPort
- Мэдрэгч
- Түдгэлзүүлэх/Үргэлжлүүлэх (хэсэгчилсэн)
- гэх мэт.
Энэ заавар нь macbookpro15,1 болон macbookpro15,2-д зориулагдсан. Уг нийтлэлийг Github-аас англи хэл дээр үндэслэсэн болно.
Суулгахад юу хэрэгтэй вэ
- USB-C залгах адаптер (хулгана, гар, USB модем эсвэл утсыг холбох горимд холбох дор хаяж гурван USB оролт). Энэ нь зөвхөн суулгах эхний үе шатанд л шаардлагатай
- USB гар
- USB/USB-C флаш диск дор хаяж 4 ГБ
1. Гадны зөөвөрлөгчөөс ачаалах хоригийг идэвхгүй болго
2. Disk Utility ашиглан сул зай хуваарилах
Тохиромжтой болгохын тулд би тэр даруй дискэнд 30 ГБ-ыг хуваарилж, үүнийг Disk Utility-д exfat хэлбэрээр форматлав.
3. ISO дүрс үүсгэх
Сонголтууд:
- Та энгийн замаар явж, цөм 5.3.5-1 болон засварууд бүхий бэлэн зургийг татаж авах боломжтой.
aunali1 Дууссан зураг руу холбоно уу - 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
Гарны цөмийн модулиудыг суулгаж байна. Хадгалах газарт
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 ашиглан ачаалахыг оролдохоор шийдсэн.
- Эхлэх
bootctl --path=/boot install
мөн бид цөмийн сандрал руу ордог. MacBook-г унтрааж, дахин асааж, сонголтуудыг товшино уу (гартай USB-C төвийг бүү унтраа)
- Бид гадаад төхөөрөмжөөс гадна шинэ EFI BOOT оруулга гарч ирсэн эсэхийг шалгана
- Эхний суулгацын нэгэн адил бид гадаад USB дискнээс ачаалахаар сонгосон (modul_blacklist=thunderbolt гэж зааж өгөхөө мартуузай)
- Бид дискээ холбож, 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-г дамжуулан тохируулж байна
Анхаар. 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