MacBook Pro 2018 T2 کو ArchLinux (dualboot) کے ساتھ کام کرنا

اس حقیقت کے بارے میں کافی حد تک تشہیر کی گئی ہے کہ نئی T2 چپ ٹچ بار کے ساتھ نئے 2018 MacBooks پر لینکس کو انسٹال کرنا ناممکن بنا دے گی۔ وقت گزرتا گیا، اور 2019 کے آخر میں، فریق ثالث کے ڈویلپرز نے T2 چپ کے ساتھ تعامل کے لیے متعدد ڈرائیورز اور کرنل پیچ کو نافذ کیا۔ MacBook ماڈلز 2018 کے لیے مرکزی ڈرائیور اور جدید تر VHCI آپریشن (ٹچ/کی بورڈ/وغیرہ آپریشن) کے ساتھ ساتھ ساؤنڈ آپریشن کو لاگو کرتا ہے۔

پروجیکٹ mbp2018-bridge-drv 3 اہم اجزاء میں تقسیم:

  • BCE (Buffer Copy Engine) - T2 کے ساتھ مرکزی مواصلاتی چینل قائم کرتا ہے۔ VHCI اور آڈیو کو اس جزو کی ضرورت ہے۔
  • VHCI ایک USB ورچوئل ہوسٹ کنٹرولر ہے۔ کی بورڈ، ماؤس اور سسٹم کے دیگر اجزاء اس جزو کے ذریعے فراہم کیے جاتے ہیں (دوسرے ڈرائیور اس میزبان کنٹرولر کو مزید فعالیت فراہم کرنے کے لیے استعمال کرتے ہیں۔
  • آڈیو - T2 آڈیو انٹرفیس کے لیے ڈرائیور، فی الحال صرف MacBook کے بلٹ ان اسپیکر کے ذریعے آڈیو آؤٹ پٹ کو سپورٹ کرتا ہے۔


دوسرا پروجیکٹ کہا جاتا ہے۔ macbook12-spi-driver، اور یہ کی بورڈ، SPI ٹریک پیڈ، اور MacBook Pro لیٹ 2016 اور بعد کے لیے ٹچ بار کے لیے ایک ان پٹ ڈرائیور کو چلانے کی صلاحیت کو نافذ کرتا ہے۔ کچھ کی بورڈ/ٹریک پیڈ ڈرائیور اب کرنل میں شامل ہیں، ورژن 5.3 سے شروع ہوتے ہیں۔

وائی ​​فائی، ٹچ پیڈ وغیرہ جیسے آلات کے لیے سپورٹ بھی کرنل پیچ کا استعمال کرتے ہوئے لاگو کیا گیا تھا۔ کرنل کا موجودہ ورژن 5.3.5-1

اس وقت کیا کام کر رہا ہے۔

  1. NVMe
  2. کی بورڈ
  3. USB-C (تھنڈربولٹ کا تجربہ نہیں کیا گیا ہے؛ جب ماڈیول خود بخود لوڈ ہوتا ہے، تو یہ سسٹم کو منجمد کر دیتا ہے)
  4. ٹچ بار (Fn کیز، بیک لائٹ، ESC، وغیرہ کو آن کرنے کی صلاحیت کے ساتھ)
  5. آواز (صرف بلٹ ان اسپیکر)
  6. Wi-Fi ماڈیول (brcmfmac کے ذریعے اور صرف iw کے ذریعے)
  7. USB-C پر ڈسپلے پورٹ
  8. سینسر
  9. معطل/دوبارہ شروع کریں (جزوی طور پر)
  10. وغیرہ.

یہ ٹیوٹوریل macbookpro15,1 اور macbookpro15,2 کے لیے لاگو ہے۔ مضمون انگریزی میں Github سے ایک بنیاد کے طور پر لیا گیا تھا۔ اس وجہ سے. اس مضمون میں ہر چیز نے کام نہیں کیا، لہذا مجھے خود ہی ایک حل تلاش کرنا پڑا۔

آپ کو انسٹالیشن کے لیے کیا ضرورت ہے۔

  • USB سے USB-C ڈاکنگ اڈاپٹر (ٹیتھرنگ موڈ میں ماؤس، کی بورڈ، USB موڈیم یا فون کو جوڑنے کے لیے کم از کم تین USB ان پٹ)۔ یہ صرف تنصیب کے پہلے مراحل کے دوران ضروری ہے۔
  • USB کی بورڈ
  • USB/USB-C فلیش ڈرائیو کم از کم 4GB

1. بیرونی میڈیا سے بوٹنگ پر پابندی کو غیر فعال کریں۔

https://support.apple.com/en-us/HT208330
https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/

2. ڈسک یوٹیلیٹی کا استعمال کرتے ہوئے خالی جگہ مختص کریں۔

سہولت کے لیے، میں نے فوری طور پر 30GB کو ڈسک کے لیے مختص کیا، اسے ڈسک یوٹیلیٹی میں ہی exfat میں فارمیٹ کیا۔ فزیکل ڈسک ڈسک یوٹیلیٹی کو تقسیم کرنا.

3. ایک ISO امیج بنائیں

اختیارات:

  1. آپ سادہ راستے پر جا سکتے ہیں اور کرنل 5.3.5-1 کے ساتھ ایک ریڈی میڈ امیج ڈاؤن لوڈ کر سکتے ہیں اور اس سے پیچ آنالی 1 مکمل تصویر کا لنک
  2. آرکائیو کے ذریعے خود ایک تصویر بنائیں (آرکا کی تقسیم کے ساتھ ایک نظام درکار ہے)

    انسٹال کریں۔ archiso

    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-ہیڈر شامل کریں

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

دانا انسٹال کریں:


sudo pacman -S linux-mbp linux-mbp-headers
sudo mkinitcpio -p linux-mbp

ہم thunderbolt اور applesmc کو /etc/modprobe.d/blacklist.conf میں رجسٹر کرتے ہیں

blacklist thunderbolt
blacklist applesmc

کی بورڈ، ٹچ بار، وغیرہ

yey انسٹال کریں:


sudo pacman -S git gcc make fakeroot binutils
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

ٹچ بار کے کام کرنے کے لیے ماڈیولز انسٹال کرنا:


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

اس صورت میں، کرنل ماڈیول کو بلایا جائے گا۔ 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 میں رجسٹر کرنے کی کوشش کرتے ہیں

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 انکرپشن استعمال کرتے وقت ضروری ہے)، تو اسے MODULES سیکشن میں /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. وائی فائی سیٹ اپ

جیسا کہ آخر میں یہ نکلا، MacOS فولڈر میں وائی فائی اڈاپٹر کے لیے فرم ویئر فائلوں کو اسٹور کرتا ہے۔ /usr/share/firmware/wifi ، اور آپ انہیں وہاں سے بلاب کی شکل میں لے جا سکتے ہیں اور انہیں brcmfmac کرنل ماڈیول میں کھلا سکتے ہیں۔ یہ جاننے کے لیے کہ آپ کا اڈاپٹر کون سی فائلیں استعمال کرتا ہے، MacOS میں ٹرمینل کھولیں اور لکھیں:

ioreg -l | grep C-4364

ہمیں ایک لمبی فہرست ملتی ہے۔ ہمیں صرف سیکشن سے فائلوں کی ضرورت ہے۔ Requested Files:

"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 ماڈل کے مطابق اس فائل کا نام تبدیل کرنا ہوگا۔

آرک میں ریبوٹ کریں۔

فائلوں کو فلیش ڈرائیو سے /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 کے ذریعے ظاہر ہوتا ہے۔
وائی ​​فائی کے ذریعے ترتیب دینا آئی ڈبلیو سی ٹی ایل

توجہ. نیٹ سی ٹی ایل، این ایم سی ایل، وغیرہ کے ذریعے۔ انٹرفیس کام نہیں کرتا، صرف iwd کے ذریعے۔

ہم نیٹ ورک مینجر کو iwd استعمال کرنے پر مجبور کرتے ہیں۔ ایسا کرنے کے لیے، فائل بنائیں /etc/NetworkManager/NetworkManager.conf اور لکھیں:

[device]
wifi.backend=iwd

نیٹ ورک مینجر سروس شروع کریں۔


sudo systemctl start NetworkManager.service
sudo systemctl enable NetworkManager.service

7. آواز

آواز کے کام کرنے کے لیے، آپ کو پلسیوڈیو انسٹال کرنے کی ضرورت ہے:


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 آپ کو آواز کا انتخاب کرنا ہوگا یا معطل/دوبارہ شروع کرنا ہوگا۔ ہم بی سی ای ماڈیول کے مصنف کا فعالیت مکمل کرنے کا انتظار کر رہے ہیں۔

معطل/ریزیوم سپورٹ کے ساتھ ماڈیول بنانے کے لیے، آپ کو درج ذیل کام کرنا ہوں گے۔


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 ماڈیول کا مصنف اسے ختم کر دے گا، اور ہمیں معطل/دوبارہ شروع اور آواز کے لیے مکمل تعاون حاصل ہوگا۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں