MacBook Pro 2018 T2-ն աշխատելու ArchLinux-ի հետ (dualboot)

Բավականին մեծ աղմուկ բարձրացավ այն փաստի շուրջ, որ նոր T2 չիպը անհնարին կդարձնի Linux-ի տեղադրումը 2018 թվականի նոր MacBooks-ի վրա հպիչ գծով: Ժամանակն անցավ, և 2019-ի վերջին երրորդ կողմի մշակողները ներդրեցին մի շարք դրայվերներ և միջուկի կարկատաններ՝ T2 չիպի հետ փոխգործակցության համար: 2018 և ավելի նոր MacBook մոդելների հիմնական դրայվերն իրականացնում է VHCI-ի աշխատանքը (հպում/ստեղնաշար/և այլն), ինչպես նաև ձայնային աշխատանք:

Ծրագիր mbp2018-bridge-drv բաժանված է 3 հիմնական բաղադրիչների.

  • BCE (Buffer Copy Engine) - հաստատում է T2-ի հետ կապի հիմնական ալիքը: VHCI-ն և Audio-ն պահանջում են այս բաղադրիչը:
  • VHCI-ն USB վիրտուալ հոսթի վերահսկիչ է; ստեղնաշարը, մկնիկը և համակարգի այլ բաղադրիչները տրամադրվում են այս բաղադրիչի կողմից (այլ վարորդներն օգտագործում են այս հոսթ կարգավորիչը՝ ավելի շատ ֆունկցիոնալություն ապահովելու համար։
  • Աուդիո - վարորդ T2 աուդիո ինտերֆեյսի համար, ներկայումս աջակցում է միայն ձայնային ելքը MacBook-ի ներկառուցված բարձրախոսների միջոցով


Երկրորդ նախագիծը կոչվում է macbook12-spi-driver, և այն ներդնում է ստեղնաշարի, SPI trackpad-ի և սենսորային վահանակի գործարկման հնարավորություն MacBook Pro Late 2016 և ավելի ուշ համար: Ստեղնաշարի/թեքպադերի որոշ դրայվերներ այժմ ներառված են միջուկում՝ սկսած 5.3 տարբերակից:

Աջակցություն սարքերին, ինչպիսիք են wi-fi-ը, touchpad-ը և այլն, նույնպես իրականացվել է միջուկի patches-ի միջոցով: Միջուկի ընթացիկ տարբերակը 5.3.5-1

Ինչ է աշխատում այս պահին

  1. NVMe
  2. Ստեղնաշար
  3. USB-C (Thunderbolt-ը չի փորձարկվել, երբ մոդուլը ավտոմատ կերպով բեռնվում է, այն սառեցնում է համակարգը)
  4. Touchbar (Fn ստեղները, հետին լույսը, ESC և այլն միացնելու ունակությամբ)
  5. Ձայն (միայն ներկառուցված բարձրախոսներ)
  6. Wi-Fi մոդուլ (brcmfmac-ի միջոցով և միայն iw-ի միջոցով)
  7. DisplayPort USB-C-ով
  8. Սենսորներ
  9. Կասեցնել/Վերսկսել (մասնակի)
  10. եւ այլն ..

Այս ձեռնարկը կիրառելի է macbookpro15,1 և macbookpro15,2-ի համար: Հոդվածը հիմք է ընդունվել Github-ից անգլերենով: ուստի. Այս հոդվածում ամեն ինչ չէ, որ ստացվեց, ուստի ես ինքս պետք է լուծում գտնեի:

Այն, ինչ ձեզ անհրաժեշտ է տեղադրման համար

  • USB-C միացման ադապտեր USB-ին (առնվազն երեք 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 ԳԲ հատկացրեցի սկավառակին՝ այն ֆորմատավորելով exfat-ով հենց Disk Utility-ում։ Ֆիզիկական սկավառակի սկավառակի կոմունալ ծրագիրը բաժանում.

3. Ստեղծեք ISO պատկեր

Ընտրանքներ:

  1. Դուք կարող եք գնալ պարզ ճանապարհով և ներբեռնել պատրաստի պատկեր միջուկ 5.3.5-1-ով և patches-ից: աունալի1 հղում դեպի պատրաստի պատկերը
  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-headers-ը

    ...
    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 Error:

Օգտագործելով fdisk/cfdisk մենք գտնում ենք մեր բաժանումը (ինձ համար դա nvme0n1p4 է), ձևաչափում ենք այն և տեղադրում արխիվը։ Դուք կարող եք օգտագործել պաշտոնական հրահանգներ կամ կողք.

Մենք չենք ստեղծում boot partition, մենք կգրենք bootloader-ը /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

Մենք գրանցում ենք կայծակը և 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

Touchbar-ի աշխատանքի համար մոդուլների տեղադրում.


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

Այս դեպքում կկանչվի միջուկի մոդուլը խնձոր-մ.թ.ա. Ինքնահավաքի դեպքում կոչվում է մ.թ.ա.. Համապատասխանաբար, եթե ցանկանում եք մոդուլ գրանցել mkinicpio.conf ֆայլի ՄՈԴՈՒԼՆԵՐ բաժնում, ապա մի մոռացեք, թե որ մոդուլն եք տեղադրել։

Ձեռնարկի հավաքում.


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-ի ներսում, կարող եք սկսել bootloader-ի տեղադրումը:

Ես չեմ կարողացել գրաբը բերել աշխատանքի: 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 կրիչից, ինչպես առաջին տեղադրման ժամանակ (մի մոռացեք նշել module_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-ի կարգավորում

Մենք խմբագրում ենք /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

Եթե ​​դուք տեղադրել եք պատրաստի apple-bce մոդուլը anuali1 պահոցից, ապա նախ պետք է հեռացնել այն և միայն դրանից հետո հավաքել և տեղադրել 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 մոդուլի հեղինակը կավարտի այն, և մենք կստանանք ամբողջական աջակցություն suspend/resume-ի և ձայնի համար։

Source: www.habr.com

Добавить комментарий