MacBook Pro 2018 T2 ArchLinux (қос жүктеу) бағдарламасымен жұмыс істеуге мүмкіндік береді.

Жаңа T2 чипі Linux жүйесін сенсорлық тақтасы бар жаңа 2018 MacBook компьютерлеріне орнатуды мүмкін етпейтіні туралы біраз шу болды. Уақыт өтті және 2019 жылдың соңында үшінші тарап әзірлеушілері T2 чипімен өзара әрекеттесу үшін бірқатар драйверлер мен ядро ​​патчтарын енгізді. 2018 және одан кейінгі MacBook үлгілеріне арналған негізгі драйвер VHCI операциясын (сенсорлық/пернетақта/т.б. операция), сондай-ақ дыбыстық жұмысты жүзеге асырады.

Жоба mbp2018-bridge-drv негізгі 3 компонентке бөлінеді:

  • BCE (Buffer Copy Engine) - T2-мен негізгі байланыс арнасын орнатады. VHCI және Audio бұл компонентті қажет етеді.
  • VHCI — USB виртуалды хост контроллері; пернетақтаны, тінтуірді және басқа жүйе құрамдастарын осы құрамдас қамтамасыз етеді (басқа драйверлер көбірек функционалдылықты қамтамасыз ету үшін осы хост контроллерін пайдаланады.
  • Аудио - T2 аудио интерфейсіне арналған драйвер, қазіргі уақытта тек MacBook кірістірілген динамиктері арқылы аудио шығысын қолдайды.


Екінші жоба деп аталады macbook12-spi-драйвер, және ол MacBook Pro Late 2016 және одан кейінгі нұсқасы үшін пернетақта, SPI сенсорлық тақтасы және сенсорлық тақта үшін енгізу драйверін басқару мүмкіндігін жүзеге асырады. Кейбір пернетақта/трекпад драйверлері 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. Архлив арқылы суретті өзіңіз жасаңыз (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 пернесін басыңыз, содан кейін ISO кескінін USB флэш-дискісіне жазыңыз:

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

4. Бірінші жүктеу

Флэш-диск пен пернетақта салынған күйде қайта жүктеңіз. Алма пайда болған кезде опцияларды басыңыз, EFI BOOT таңдаңыз.

Содан кейін «e» пернесін басып, пәрмен жолының соңына енгізу керек module_blacklist=найзағай. Бұл орындалмаса, жүйе жүктелмеуі мүмкін және Thunderbolt ICM қатесі пайда болады.

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

Thunderbolt және applesmc файлдарын /etc/modprobe.d/blacklist.conf ішінде тіркейміз.

blacklist thunderbolt
blacklist applesmc

Пернетақта, сенсорлық тақта және т.б

Yay орнату:


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 шифрлауын пайдаланған кезде қажет), оны МОДУЛЬТЕР бөліміндегі /etc/mkinicpio.conf файлына жазыңыз:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

Ядро мен initramfs жаңарту.


mkinicpio -p linux-mbp

Systemd-жүктеуді орнату

Біз /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/микробағдарлама/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

пікір қалдыру