پرو ہوسٹر > بلاگ > انتظامیہ > MacBook Pro 2018 T2 کو ArchLinux (dualboot) کے ساتھ کام کرنا
MacBook Pro 2018 T2 کو ArchLinux (dualboot) کے ساتھ کام کرنا
اس حقیقت کے بارے میں کافی حد تک تشہیر کی گئی ہے کہ نئی T2 چپ ٹچ بار کے ساتھ نئے 2018 MacBooks پر لینکس کو انسٹال کرنا ناممکن بنا دے گی۔ وقت گزرتا گیا، اور 2019 کے آخر میں، فریق ثالث کے ڈویلپرز نے T2 چپ کے ساتھ تعامل کے لیے متعدد ڈرائیورز اور کرنل پیچ کو نافذ کیا۔ MacBook ماڈلز 2018 کے لیے مرکزی ڈرائیور اور جدید تر VHCI آپریشن (ٹچ/کی بورڈ/وغیرہ آپریشن) کے ساتھ ساتھ ساؤنڈ آپریشن کو لاگو کرتا ہے۔
BCE (Buffer Copy Engine) - T2 کے ساتھ مرکزی مواصلاتی چینل قائم کرتا ہے۔ VHCI اور آڈیو کو اس جزو کی ضرورت ہے۔
VHCI ایک USB ورچوئل ہوسٹ کنٹرولر ہے۔ کی بورڈ، ماؤس اور سسٹم کے دیگر اجزاء اس جزو کے ذریعے فراہم کیے جاتے ہیں (دوسرے ڈرائیور اس میزبان کنٹرولر کو مزید فعالیت فراہم کرنے کے لیے استعمال کرتے ہیں۔
آڈیو - T2 آڈیو انٹرفیس کے لیے ڈرائیور، فی الحال صرف MacBook کے بلٹ ان اسپیکر کے ذریعے آڈیو آؤٹ پٹ کو سپورٹ کرتا ہے۔
دوسرا پروجیکٹ کہا جاتا ہے۔ macbook12-spi-driver، اور یہ کی بورڈ، SPI ٹریک پیڈ، اور MacBook Pro لیٹ 2016 اور بعد کے لیے ٹچ بار کے لیے ایک ان پٹ ڈرائیور کو چلانے کی صلاحیت کو نافذ کرتا ہے۔ کچھ کی بورڈ/ٹریک پیڈ ڈرائیور اب کرنل میں شامل ہیں، ورژن 5.3 سے شروع ہوتے ہیں۔
وائی فائی، ٹچ پیڈ وغیرہ جیسے آلات کے لیے سپورٹ بھی کرنل پیچ کا استعمال کرتے ہوئے لاگو کیا گیا تھا۔ کرنل کا موجودہ ورژن5.3.5-1
اس وقت کیا کام کر رہا ہے۔
NVMe
کی بورڈ
USB-C (تھنڈربولٹ کا تجربہ نہیں کیا گیا ہے؛ جب ماڈیول خود بخود لوڈ ہوتا ہے، تو یہ سسٹم کو منجمد کر دیتا ہے)
ٹچ بار (Fn کیز، بیک لائٹ، ESC، وغیرہ کو آن کرنے کی صلاحیت کے ساتھ)
آواز (صرف بلٹ ان اسپیکر)
Wi-Fi ماڈیول (brcmfmac کے ذریعے اور صرف iw کے ذریعے)
USB-C پر ڈسپلے پورٹ
سینسر
معطل/دوبارہ شروع کریں (جزوی طور پر)
وغیرہ.
یہ ٹیوٹوریل macbookpro15,1 اور macbookpro15,2 کے لیے لاگو ہے۔ مضمون انگریزی میں Github سے ایک بنیاد کے طور پر لیا گیا تھا۔ اس وجہ سے. اس مضمون میں ہر چیز نے کام نہیں کیا، لہذا مجھے خود ہی ایک حل تلاش کرنا پڑا۔
آپ کو انسٹالیشن کے لیے کیا ضرورت ہے۔
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 کو 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 دبائیں، پھر 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
کی بورڈ کے لیے کرنل ماڈیولز انسٹال کرنا۔ مخزن میں anuali1 ایک ریڈی میڈ پیکج ہے، اسے کہتے ہیں۔ apple-bce-dkms-git. اسے انسٹال کرنے کے لیے کنسول میں لکھیں:
pacman -S apple-bce-dkms-git
اس صورت میں، کرنل ماڈیول کو بلایا جائے گا۔ apple-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. لوڈر
ایک بار جب تمام اہم پیکجز کروٹ کے اندر انسٹال ہو جائیں، آپ بوٹ لوڈر کو انسٹال کرنا شروع کر سکتے ہیں۔
میں کام کرنے کے لئے گرب حاصل کرنے کے قابل نہیں رہا ہوں۔ بیرونی 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 انکرپشن استعمال کرتے وقت ضروری ہے)، تو اسے MODULES سیکشن میں /etc/mkinicpio.conf فائل میں لکھیں:
جیسا کہ آخر میں یہ نکلا، MacOS فولڈر میں وائی فائی اڈاپٹر کے لیے فرم ویئر فائلوں کو اسٹور کرتا ہے۔ /usr/share/firmware/wifi ، اور آپ انہیں وہاں سے بلاب کی شکل میں لے جا سکتے ہیں اور انہیں brcmfmac کرنل ماڈیول میں کھلا سکتے ہیں۔ یہ جاننے کے لیے کہ آپ کا اڈاپٹر کون سی فائلیں استعمال کرتا ہے، MacOS میں ٹرمینل کھولیں اور لکھیں:
ioreg -l | grep C-4364
ہمیں ایک لمبی فہرست ملتی ہے۔ ہمیں صرف سیکشن سے فائلوں کی ضرورت ہے۔ Requested Files:
اس صورت میں، آخری ٹیکسٹ فائل میں ماڈل کے نام شامل ہیں؛ اگر آپ کا ماڈل macbookpro15,2 نہیں ہے، تو آپ کو اپنے MacBook ماڈل کے مطابق اس فائل کا نام تبدیل کرنا ہوگا۔
آرک میں ریبوٹ کریں۔
فائلوں کو فلیش ڈرائیو سے /lib/firmware/brcm/ فولڈر میں کاپی کریں۔
اس وقت 16.10.2019 آپ کو آواز کا انتخاب کرنا ہوگا یا معطل/دوبارہ شروع کرنا ہوگا۔ ہم بی سی ای ماڈیول کے مصنف کا فعالیت مکمل کرنے کا انتظار کر رہے ہیں۔
معطل/ریزیوم سپورٹ کے ساتھ ماڈیول بنانے کے لیے، آپ کو درج ذیل کام کرنا ہوں گے۔
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=compat.
فی الحال، سسپنڈ موڈ میں داخل ہونے پر ٹچ بار ڈرائیور کریش ہو جاتا ہے، اور تھنڈربولٹ ڈرائیور بعض اوقات سسٹم کو 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 ماڈیول کا مصنف اسے ختم کر دے گا، اور ہمیں معطل/دوبارہ شروع اور آواز کے لیے مکمل تعاون حاصل ہوگا۔