MacBook Pro 2018 T2ని ArchLinux (dualboot)తో పని చేయడం
కొత్త T2 చిప్ కొత్త 2018 మ్యాక్బుక్స్లో టచ్బార్తో Linuxని ఇన్స్టాల్ చేయడం అసాధ్యం అనే వాస్తవం గురించి కొంచెం ప్రచారం జరిగింది. సమయం గడిచిపోయింది మరియు 2019 చివరిలో, థర్డ్-పార్టీ డెవలపర్లు T2 చిప్తో పరస్పర చర్య కోసం అనేక డ్రైవర్లు మరియు కెర్నల్ ప్యాచ్లను అమలు చేశారు. MacBook మోడల్స్ 2018 మరియు కొత్త ఇంప్లిమెంట్స్ VHCI ఆపరేషన్ (టచ్/కీబోర్డ్/మొదలైన ఆపరేషన్), అలాగే సౌండ్ ఆపరేషన్ కోసం ప్రధాన డ్రైవర్.
BCE (బఫర్ కాపీ ఇంజిన్) - T2తో ప్రధాన కమ్యూనికేషన్ ఛానెల్ని ఏర్పాటు చేస్తుంది. VHCI మరియు ఆడియోకి ఈ భాగం అవసరం.
VHCI అనేది USB వర్చువల్ హోస్ట్ కంట్రోలర్; కీబోర్డ్, మౌస్ మరియు ఇతర సిస్టమ్ భాగాలు ఈ భాగం ద్వారా అందించబడతాయి (ఇతర డ్రైవర్లు మరింత కార్యాచరణను అందించడానికి ఈ హోస్ట్ కంట్రోలర్ను ఉపయోగిస్తారు.
ఆడియో - T2 ఆడియో ఇంటర్ఫేస్ కోసం డ్రైవర్, ప్రస్తుతం MacBook యొక్క అంతర్నిర్మిత స్పీకర్ల ద్వారా ఆడియో అవుట్పుట్కు మాత్రమే మద్దతు ఇస్తుంది
రెండవ ప్రాజెక్ట్ అంటారు macbook12-spi-డ్రైవర్, మరియు ఇది MacBook Pro లేట్ 2016 మరియు తదుపరి కోసం కీబోర్డ్, SPI ట్రాక్ప్యాడ్ మరియు టచ్బార్ కోసం ఇన్పుట్ డ్రైవర్ను ఆపరేట్ చేయగల సామర్థ్యాన్ని అమలు చేస్తుంది. కొన్ని కీబోర్డ్/ట్రాక్ప్యాడ్ డ్రైవర్లు ఇప్పుడు వెర్షన్ 5.3తో ప్రారంభమయ్యే కెర్నల్లో చేర్చబడ్డాయి.
Wi-Fi, టచ్ప్యాడ్ మొదలైన పరికరాలకు మద్దతు కూడా కెర్నల్ ప్యాచ్లను ఉపయోగించి అమలు చేయబడింది. ప్రస్తుత కెర్నల్ వెర్షన్5.3.5-1
ప్రస్తుతం ఏమి పని చేస్తోంది
NVMe
కీబోర్డ్
USB-C (థండర్ బోల్ట్ పరీక్షించబడలేదు; మాడ్యూల్ స్వయంచాలకంగా లోడ్ అయినప్పుడు, అది సిస్టమ్ను స్తంభింపజేస్తుంది)
టచ్బార్ (Fn కీలు, బ్యాక్లైట్, ESC మొదలైనవాటిని ఆన్ చేయగల సామర్థ్యంతో)
ధ్వని (అంతర్నిర్మిత స్పీకర్లు మాత్రమే)
Wi-Fi మాడ్యూల్ (brcmfmac ద్వారా మరియు iw ద్వారా మాత్రమే)
USB-C ద్వారా డిస్ప్లేపోర్ట్
సెన్సార్లు
సస్పెండ్/రెస్యూమ్ (పాక్షికంగా)
etc ..
ఈ ట్యుటోరియల్ macbookpro15,1 మరియు macbookpro15,2 కోసం వర్తిస్తుంది. వ్యాసం ఆంగ్లంలో గితుబ్ నుండి తీసుకోబడింది. ఇక్కడ నుండి. ఈ వ్యాసంలోని ప్రతిదీ పని చేయలేదు, కాబట్టి నేను స్వయంగా ఒక పరిష్కారాన్ని కనుగొనవలసి వచ్చింది.
మీరు ఏమి ఇన్స్టాల్ చేయాలి
USBకి USB-C డాకింగ్ అడాప్టర్ (టెథరింగ్ మోడ్లో మౌస్, కీబోర్డ్, USB మోడెమ్ లేదా ఫోన్ని కనెక్ట్ చేయడానికి కనీసం మూడు USB ఇన్పుట్లు). ఇది సంస్థాపన యొక్క మొదటి దశలలో మాత్రమే అవసరం
USB కీబోర్డ్
USB/USB-C ఫ్లాష్ డ్రైవ్ కనీసం 4GB
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-హెడర్లను జోడించండి
...
wvdial
xl2tpd
linux-mbp
linux-mbp-headers
మేము ఇంటరాక్టివ్ మోడ్లో పని చేయడానికి స్క్రిప్ట్ను మారుస్తాము (pacstrap -Cని ప్యాక్స్ట్రాప్ -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 లోపం కనిపిస్తుంది.
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
కీబోర్డ్ కోసం కెర్నల్ మాడ్యూల్లను ఇన్స్టాల్ చేస్తోంది. రిపోజిటరీలో వార్షిక 1 రెడీమేడ్ ప్యాకేజీ ఉంది, దీనిని పిలుస్తారు apple-bce-dkms-git. దీన్ని ఇన్స్టాల్ చేయడానికి, కన్సోల్లో వ్రాయండి:
pacman -S apple-bce-dkms-git
ఈ సందర్భంలో, కెర్నల్ మాడ్యూల్ కాల్ చేయబడుతుంది ఆపిల్-bce. స్వీయ-అసెంబ్లీ విషయంలో, దీనిని పిలుస్తారు 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
కెర్నల్ మరియు initramf లను నవీకరిస్తోంది.
mkinitcpio -p linux-mbp
iwdని ఇన్స్టాల్ చేయండి:
sudo pacman -S networkmanager iwd
5. లోడర్
chroot లోపల అన్ని ప్రధాన ప్యాకేజీలు ఇన్స్టాల్ చేయబడిన తర్వాత, మీరు బూట్లోడర్ను ఇన్స్టాల్ చేయడం ప్రారంభించవచ్చు.
నేను పని చేయడానికి గ్రబ్ని పొందలేకపోయాను. బాహ్య USB డ్రైవ్ నుండి బూట్లను గ్రబ్ చేయండి, కానీ మీరు దీన్ని nvmeలో నమోదు చేయడానికి ప్రయత్నించినప్పుడు
సిస్టమ్ కెర్నల్ భయాందోళనకు గురైంది మరియు ఎంపికల ద్వారా కొత్త ఐటెమ్ను రీబూట్ చేసిన తర్వాత కనిపించలేదు. నేను ఈ సమస్యకు స్పష్టమైన పరిష్కారం కనుగొనలేదు మరియు కనుక systemd-boot ఉపయోగించి బూటింగ్ని అమలు చేయడానికి ప్రయత్నించాలని నిర్ణయించుకున్నాను.
ప్రారంభించండి
bootctl --path=/boot install
మరియు మేము కెర్నల్ పానిక్ లోకి వెళ్తాము. మ్యాక్బుక్ను ఆఫ్ చేయండి, దాన్ని మళ్లీ ఆన్ చేయండి, ఎంపికలను క్లిక్ చేయండి (కీబోర్డ్తో USB-C హబ్ను ఆఫ్ చేయవద్దు)
బాహ్య పరికరానికి అదనంగా కొత్త EFI BOOT ఎంట్రీ కనిపించిందని మేము తనిఖీ చేస్తాము
మేము మొదటి ఇన్స్టాలేషన్ సమయంలో (module_blacklist=thunderboltని పేర్కొనడం మర్చిపోవద్దు) వంటి బాహ్య USB డ్రైవ్ నుండి బూట్ చేయడాన్ని ఎంచుకుంటాము.
మేము మా డిస్క్ను మౌంట్ చేసి, ఆర్చ్-క్రోట్ ద్వారా పర్యావరణంలోకి వెళ్తాము
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
సిస్టమ్ పూర్తిగా లోడ్ అయ్యే వరకు కీబోర్డ్ పనిచేయడం అవసరమైతే (luks/dm-crypt ఎన్క్రిప్షన్ని ఉపయోగిస్తున్నప్పుడు ఇది అవసరం), ఆపై దానిని MODULES విభాగంలోని /etc/mkinicpio.conf ఫైల్లో వ్రాయండి:
చివరికి తేలినట్లుగా, MacOS ఫోల్డర్లో wi-fi అడాప్టర్ కోసం ఫర్మ్వేర్ ఫైల్లను నిల్వ చేస్తుంది /usr/share/firmware/wifi , మరియు మీరు వాటిని అక్కడ నుండి బొబ్బల రూపంలో తీసుకోవచ్చు మరియు వాటిని brcmfmac కెర్నల్ మాడ్యూల్కు అందించవచ్చు. మీ అడాప్టర్ ఏ ఫైల్లను ఉపయోగిస్తుందో తెలుసుకోవడానికి, MacOSలో టెర్మినల్ని తెరిచి, వ్రాయండి:
ioreg -l | grep C-4364
మేము సుదీర్ఘ జాబితాను పొందుతాము. మాకు విభాగం నుండి ఫైల్లు మాత్రమే అవసరం అభ్యర్థించిన ఫైల్లు:
మీ విషయంలో, ఫైల్ పేర్లు భిన్నంగా ఉండవచ్చు. వాటిని /usr/share/firmware/wifi ఫోల్డర్ నుండి ఫ్లాష్ డ్రైవ్కి కాపీ చేసి, వాటిని ఈ క్రింది విధంగా పేరు మార్చండి:
ఈ సందర్భంలో, చివరి టెక్స్ట్ ఫైల్ మోడల్ పేర్లను కలిగి ఉంటుంది; మీ మోడల్ macbookpro15,2 కాకపోతే, మీరు మీ మ్యాక్బుక్ మోడల్కు అనుగుణంగా ఈ ఫైల్కు పేరు మార్చాలి.
ఆర్చ్లోకి రీబూట్ చేయండి.
ఫైల్లను ఫ్లాష్ డ్రైవ్ నుండి /lib/firmware/brcm/ ఫోల్డర్కు కాపీ చేయండి
ఈ క్షణం లో 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
మీరు anual1 రిపోజిటరీ నుండి రెడీమేడ్ apple-bce మాడ్యూల్ని ఇన్స్టాల్ చేసి ఉంటే, మీరు ముందుగా దాన్ని తీసివేయాలి మరియు సస్పెండ్ మోడ్ సపోర్ట్తో bce మాడ్యూల్ను సమీకరించి, ఇన్స్టాల్ చేయాలి.
అలాగే, మీరు applesmc మాడ్యూల్ను బ్లాక్లిస్ట్కు జోడించాలి (మీరు ఇంతకు ముందు దీన్ని చేయకుంటే) మరియు చివరిలో ఎంపికల లైన్లోని /boot/loader/entries/arch.confలో పరామితి జోడించబడిందని నిర్ధారించుకోండి. pcie_ports=compat.
ప్రస్తుతం, సస్పెండ్ మోడ్లోకి ప్రవేశించేటప్పుడు టచ్బార్ డ్రైవర్ క్రాష్ అవుతుంది మరియు థండర్ బోల్ట్ డ్రైవర్ కొన్నిసార్లు సిస్టమ్ను 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 మాడ్యూల్ రచయిత దీన్ని పూర్తి చేస్తారని మరియు సస్పెండ్/రెస్యూమ్ మరియు సౌండ్కి మేము పూర్తి మద్దతుని పొందుతామని నేను ఆశిస్తున్నాను.