ProHoster > blog > Utawala > Kufanya MacBook Pro 2018 T2 kufanya kazi na ArchLinux (dualboot)
Kufanya MacBook Pro 2018 T2 kufanya kazi na ArchLinux (dualboot)
Kumekuwa na hype kidogo juu ya ukweli kwamba chip mpya ya T2 itafanya kuwa haiwezekani kusakinisha Linux kwenye MacBooks mpya za 2018 na upau wa kugusa. Muda ulipita, na mwisho wa 2019, watengenezaji wa wahusika wengine walitekeleza idadi ya viendeshi na viraka vya kernel kwa mwingiliano na chip ya T2. Dereva kuu ya mifano ya MacBook 2018 na mpya zaidi hutumia uendeshaji wa VHCI (operesheni ya kugusa / kibodi / nk), pamoja na uendeshaji wa sauti.
BCE (Injini ya Nakala ya Buffer) - huanzisha njia kuu ya mawasiliano na T2. VHCI na Sauti zinahitaji sehemu hii.
VHCI ni USB Virtual Host Controller; kibodi, kipanya na vipengele vingine vya mfumo hutolewa na sehemu hii (viendeshi vingine hutumia kidhibiti hiki cha mwenyeji ili kutoa utendaji zaidi.
Sauti - kiendeshi cha kiolesura cha sauti cha T2, kwa sasa kinaauni pato la sauti kupitia spika zilizojengewa ndani za MacBook
Mradi wa pili unaitwa macbook12-spi-dereva, na hutekelezea uwezo wa kuendesha kiendeshi cha ingizo kwa kibodi, padi ya kufuatilia ya SPI, na upau wa mguso wa MacBook Pro Late 2016 na baadaye. Baadhi ya viendeshi vya kibodi/padi ya kufuatilia sasa vimejumuishwa kwenye kernel, kuanzia toleo la 5.3.
Usaidizi wa vifaa kama vile wi-fi, touchpad, n.k pia ulitekelezwa kwa kutumia viraka vya kernel. Toleo la sasa la kernel5.3.5-1
Upau wa kugusa (wenye uwezo wa kuwasha funguo za Fn, taa ya nyuma, ESC, n.k.)
Sauti (spika zilizojengewa ndani pekee)
Moduli ya Wi-Fi (kupitia bcmfmac na kupitia iw pekee)
DisplayPort juu ya USB-C
Sensorer
Sitisha/Rejesha (sehemu)
nk ..
Mafunzo haya yanatumika kwa macbookpro15,1 na macbookpro15,2. Nakala hiyo ilichukuliwa kama msingi kutoka kwa Github kwa Kiingereza. hivyo. Sio kila kitu katika nakala hii kilifanya kazi, kwa hivyo nililazimika kutafuta suluhisho mwenyewe.
Nini unahitaji kufunga
Adapta ya kuunganisha ya USB-C kwa USB (angalau pembejeo tatu za USB za kuunganisha kipanya, kibodi, modemu ya USB au simu katika hali ya kuunganisha). Hii ni muhimu tu katika hatua za kwanza za ufungaji
Kibodi ya USB
USB/USB-C flash drive kima cha chini cha 4GB
1. Zima marufuku ya uanzishaji kutoka kwa media ya nje
cp -r /usr/share/archiso/configs/releng/ archlive
cd archlive
Ongeza hazina kwa pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Tunapuuza kernel asili katika pacman.conf:
IgnorePkg = linux linux-headers
Ongeza vifurushi muhimu, mwisho ongeza kernel ya linux-mbp na vichwa vya linux-mbp.
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
Tunabadilisha hati kufanya kazi katika hali ya maingiliano (badilisha pacstrap -C na 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!"
}
Kuunda picha:
sudo ./build.sh -v
Bonyeza Y kuruka vifurushi vilivyopuuzwa, kisha uandike picha ya iso kwenye kiendeshi cha usb flash:
sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M
4. Boot ya kwanza
Fungua upya na gari la flash na keyboard iliyoingizwa. Bonyeza chaguzi wakati apple inaonekana, chagua EFI BOOT.
Ifuatayo, unahitaji kushinikiza kitufe cha "e" na uingie mwisho wa mstari wa amri module_blacklist=ngurumo. Hili lisipofanyika, mfumo hauwezi kuwasha na Hitilafu ya ICM ya Thunderbolt itaonekana.
Kwa kutumia fdisk/cfdisk tunapata kizigeu chetu (kwangu ni nvme0n1p4), kiumbize na usakinishe kumbukumbu. Unaweza kutumia maagizo rasmi au kando.
Hatutengenezi kizigeu cha buti; tutaandika bootloader ndani /dev/nvme0n1p1
Baada ya mazingira katika /mnt kuunda kabisa na kabla ya kuhamia arch-chroot, andika:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
Ongeza kwa /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
Inasakinisha moduli za kernel kwa kibodi. Katika hazina anuali1 kuna kifurushi kilichopangwa tayari, kinaitwa apple-bce-dkms-git. Ili kuiweka, andika kwenye koni:
pacman -S apple-bce-dkms-git
Katika kesi hii, moduli ya kernel itaitwa apple-bce. Katika kesi ya kujitegemea, inaitwa ecb. Ipasavyo, ikiwa unataka kusajili moduli katika sehemu ya MODULES ya faili ya mkinicpio.conf, basi usisahau ni moduli gani uliyosakinisha.
Mkusanyiko wa mwongozo:
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
Ongeza moduli ya bce au apple-bce ili kuanza: /etc/modules-load.d/bce.conf
bce
Ikiwa ungependa kutumia vitufe vya Fn kwa chaguo-msingi, basi andika kwenye /etc/modprobe.d/apple-tb.conf faili:
options apple-ib-tb fnmode=2
Kusasisha kernel na initramfs.
mkinitcpio -p linux-mbp
Sakinisha iwd:
sudo pacman -S networkmanager iwd
5. Kipakiaji
Mara tu vifurushi vyote kuu vimewekwa ndani ya chroot, unaweza kuanza kusakinisha bootloader.
Sijaweza kupata grub kufanya kazi. Boti za grub kutoka kwa kiendeshi cha nje cha USB, lakini unapojaribu kusajili katika nvme kupitia
mfumo uliingia kwenye hofu ya kernel, na baada ya kuwasha tena kipengee kipya kupitia chaguzi hazikuonekana. Sikupata suluhisho lolote wazi la shida hii na kwa hivyo niliamua kujaribu kutekeleza uanzishaji kwa kutumia systemd-boot.
Uzinduzi
bootctl --path=/boot install
na tunaingia kwenye hofu ya kernel. Zima MacBook, iwashe tena, bonyeza chaguo (usizima kitovu cha USB-C na kibodi)
Tunaangalia kuwa kiingilio kipya cha EFI BOOT kimeonekana pamoja na kifaa cha nje
Tunachagua boot kutoka kwa gari la nje la USB, kama wakati wa usakinishaji wa kwanza (usisahau kutaja module_blacklist=thunderbolt)
Tunapanda diski yetu na kwenda kwenye mazingira kupitia arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
Ikiwa ni muhimu kwa kibodi kufanya kazi hadi mfumo upakie kikamilifu (hii ni muhimu unapotumia usimbaji fiche wa luks/dm-crypt), kisha uandike kwenye faili ya /etc/mkinicpio.conf katika sehemu ya MODULES:
Kama ilivyotokea mwishoni, MacOS huhifadhi faili za firmware kwa adapta ya wi-fi kwenye folda /usr/share/firmware/wifi , na unaweza kuzichukua kutoka hapo kwa namna ya matone na kuzilisha kwa moduli ya kernel ya bcmfmac. Ili kujua ni faili gani adapta yako hutumia, fungua terminal katika MacOS na uandike:
ioreg -l | grep C-4364
Tunapata orodha ndefu. Tunahitaji faili kutoka kwa sehemu tu Files zilizoombwa:
Kwa upande wako, majina ya faili yanaweza kutofautiana. Nakili kutoka /usr/share/firmware/wifi folda hadi kwenye kiendeshi cha flash na uzipe jina jipya kama ifuatavyo:
Katika kesi hii, faili ya maandishi ya mwisho ina majina ya mfano; ikiwa mfano wako sio macbookpro15,2, basi unahitaji kubadilisha jina la faili hii kwa mujibu wa mtindo wako wa MacBook.
Anzisha tena kwenye Arch.
Nakili faili kutoka kwa kiendeshi cha flash hadi /lib/firmware/brcm/ folda
Kwa wakati huu 16.10.2019 inabidi uchague ama sauti au kusimamisha/kuendelea. Tunasubiri mwandishi wa moduli ya bce kukamilisha utendakazi.
Ili kuunda moduli na usaidizi uliosimamishwa / kuanza tena, lazima ufanye yafuatayo:
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
Ikiwa umesakinisha moduli iliyotengenezwa tayari ya apple-bce kutoka kwenye hifadhi ya anuali1, basi lazima kwanza uiondoe na kisha tu kukusanya na kusakinisha moduli ya bce na usaidizi wa modi ya kusimamisha.
Pia, unahitaji kuongeza moduli ya applesmc kwenye orodha nyeusi (ikiwa haujafanya hivi hapo awali) na uhakikishe kuwa katika /boot/loader/entries/arch.conf kwenye mstari wa chaguzi mwishoni parameta imeongezwa. pcie_bandari=compati.
Hivi sasa, dereva wa upau wa kugusa huanguka wakati wa kuingia katika hali ya kusimamisha, na dereva wa radi wakati mwingine hufungia mfumo kwa sekunde zaidi ya 30, na kwa dakika kadhaa wakati wa kuanza tena. Hili linaweza kurekebishwa kwa kupakua kiotomatiki moduli zenye matatizo.
Unda hati /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
Ifanye iweze kutekelezwa:
sudo chmod +x /lib/systemd/system-sleep/rmmod.sh
Ni hayo tu kwa sasa. Matokeo yake ni mfumo unaoweza kufanya kazi kabisa, isipokuwa nuances kadhaa na kusimamisha / kuanza tena. Hakuna ajali au hofu ya kernel ilizingatiwa wakati wa siku kadhaa za uptime. Natumai kuwa katika siku za usoni mwandishi wa moduli ya bce ataimaliza, na tutapata usaidizi kamili wa kusimamisha / kuanza tena na sauti.