MacBook Pro 2018 T2-ն աշխատելու ArchLinux-ի հետ (dualboot)
Բավականին մեծ աղմուկ բարձրացավ այն փաստի շուրջ, որ նոր T2 չիպը անհնարին կդարձնի Linux-ի տեղադրումը 2018 թվականի նոր MacBooks-ի վրա հպիչ գծով: Ժամանակն անցավ, և 2019-ի վերջին երրորդ կողմի մշակողները ներդրեցին մի շարք դրայվերներ և միջուկի կարկատաններ՝ T2 չիպի հետ փոխգործակցության համար: 2018 և ավելի նոր MacBook մոդելների հիմնական դրայվերն իրականացնում է VHCI-ի աշխատանքը (հպում/ստեղնաշար/և այլն), ինչպես նաև ձայնային աշխատանք:
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
Ինչ է աշխատում այս պահին
NVMe
Ստեղնաշար
USB-C (Thunderbolt-ը չի փորձարկվել, երբ մոդուլը ավտոմատ կերպով բեռնվում է, այն սառեցնում է համակարգը)
Touchbar (Fn ստեղները, հետին լույսը, ESC և այլն միացնելու ունակությամբ)
Ձայն (միայն ներկառուցված բարձրախոսներ)
Wi-Fi մոդուլ (brcmfmac-ի միջոցով և միայն iw-ի միջոցով)
DisplayPort USB-C-ով
Սենսորներ
Կասեցնել/Վերսկսել (մասնակի)
եւ այլն ..
Այս ձեռնարկը կիրառելի է macbookpro15,1 և macbookpro15,2-ի համար: Հոդվածը հիմք է ընդունվել Github-ից անգլերենով: ուստի. Այս հոդվածում ամեն ինչ չէ, որ ստացվեց, ուստի ես ինքս պետք է լուծում գտնեի:
Այն, ինչ ձեզ անհրաժեշտ է տեղադրման համար
USB-C միացման ադապտեր USB-ին (առնվազն երեք USB մուտք՝ մկնիկը, ստեղնաշարը, USB մոդեմը կամ հեռախոսը կապելու ռեժիմում միացնելու համար): Սա անհրաժեշտ է միայն տեղադրման առաջին փուլերում
USB ստեղնաշար
USB/USB-C ֆլեշ կրիչ՝ նվազագույնը 4 ԳԲ
1. Անջատեք արտաքին լրատվամիջոցներից բեռնման արգելքը
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
Ստեղնաշարի միջուկի մոդուլների տեղադրում: Պահեստում 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-ում միջոցով
համակարգը մտավ միջուկի խուճապի մեջ, և վերագործարկելուց հետո նոր տարր չհայտնվեց ընտրանքների միջոցով: Ես չգտա այս խնդրի որևէ հստակ լուծում և, հետևաբար, որոշեցի փորձել իրականացնել բեռնում systemd-boot-ի միջոցով:
Մենք մեկնարկում ենք
bootctl --path=/boot install
և մենք գնում ենք միջուկի խուճապի մեջ: Անջատեք MacBook-ը, նորից միացրեք այն, սեղմեք «Ընտրանքներ» (մի անջատեք USB-C հանգույցը ստեղնաշարով)
Մենք ստուգում ենք, որ արտաքին սարքից բացի հայտնվել է նոր EFI BOOT գրառում
Մենք ընտրում ենք բեռնումը արտաքին USB կրիչից, ինչպես առաջին տեղադրման ժամանակ (մի մոռացեք նշել module_blacklist=thunderbolt)
Մենք տեղադրում ենք մեր սկավառակը և arch-chroot-ի միջոցով մտնում ենք միջավայր
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Եթե անհրաժեշտ է, որ ստեղնաշարը աշխատի մինչև համակարգը լիովին բեռնված լինի (սա անհրաժեշտ է luks/dm-crypt կոդավորումն օգտագործելիս), ապա գրեք այն /etc/mkinicpio.conf ֆայլում ՄՈԴՈՒԼՆԵՐ բաժնում.
Ինչպես պարզվեց վերջում, MacOS-ը պահում է թղթապանակում wi-fi ադապտերի որոնվածի ֆայլերը /usr/share/որոնվածը/wifi , և դուք կարող եք դրանք վերցնել այնտեղից բլբերի տեսքով և կերակրել brcmfmac միջուկի մոդուլին։ Որպեսզի պարզեք, թե որ ֆայլերն է օգտագործում ձեր ադապտերը, բացեք տերմինալ MacOS-ում և գրեք.
ioreg -l | grep C-4364
Մենք երկար ցուցակ ենք ստանում: Մեզ անհրաժեշտ են միայն ֆայլեր բաժնից RequestedFiles:
Այս դեպքում վերջին տեքստային ֆայլը պարունակում է մոդելների անունները, եթե ձեր մոդելը macbookpro15,2 չէ, ապա դուք պետք է վերանվանեք այս ֆայլը ձեր MacBook մոդելին համապատասխան:
Այս պահին 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 վայրկյանից ավելի, իսկ վերսկսելիս՝ մի քանի րոպե: Սա կարող է շտկվել՝ ավտոմատ կերպով բեռնաթափելով խնդրահարույց մոդուլները:
#!/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-ի և ձայնի համար։