MacBook Pro 2018 T2 کي آرڪ لينڪس (ڊبل بوٽ) سان ڪم ڪرڻ

هن حقيقت جي باري ۾ ڪافي حد تائين هائپ ٿي چڪي آهي ته نئين T2 چپ هڪ ٽچ بار سان نئين 2018 ميڪ بڪس تي لينڪس کي انسٽال ڪرڻ ناممڪن بڻائيندو. وقت گذري ويو، ۽ 2019 جي آخر ۾، ٽئين پارٽي ڊولپرز T2 چپ سان رابطي لاءِ ڪيترن ئي ڊرائيورن ۽ ڪرنل پيچ کي لاڳو ڪيو. MacBook ماڊلز 2018 لاءِ مکيه ڊرائيور ۽ نئون VHCI آپريشن (touch/keyboard/etc. آپريشن)، ۽ گڏوگڏ آواز آپريشن.

پروجيڪٽ mbp2018-bridge-drv 3 مکيه حصن ۾ ورهايل:

  • BCE (بفر ڪاپي انجڻ) - T2 سان مکيه مواصلاتي چينل قائم ڪري ٿو. VHCI ۽ آڊيو هن جزو جي ضرورت آهي.
  • VHCI هڪ USB ورچوئل هوسٽ ڪنٽرولر آهي. ڪيبورڊ، مائوس ۽ سسٽم جا ٻيا حصا هن جزو طرفان مهيا ڪيا ويا آهن (ٻيا ڊرائيور هن ميزبان ڪنٽرولر کي وڌيڪ ڪارڪردگي مهيا ڪرڻ لاء استعمال ڪندا آهن.
  • آڊيو - ڊرائيور T2 آڊيو انٽرفيس لاءِ، في الحال صرف MacBook جي بلٽ ان اسپيڪر ذريعي آڊيو آئوٽ کي سپورٽ ڪري ٿو


ٻيو منصوبو سڏيو ويندو آهي macbook12-spi-driver، ۽ اهو ڪيبورڊ، SPI ٽريڪ پيڊ، ۽ MacBook Pro Late 2016 ۽ بعد ۾ ٽچ بار لاءِ ان پٽ ڊرائيور هلائڻ جي صلاحيت کي لاڳو ڪري ٿو. ڪجھ ڪيبورڊ/ٽريڪ پيڊ ڊرائيور ھاڻي ڪنييل ۾ شامل آھن، ورجن 5.3 سان شروع ٿي.

ڊوائيسز لاء سپورٽ جهڙوڪ وائي فائي، ٽچ پيڊ، وغيره پڻ ڪرنل پيچ استعمال ڪندي لاڳو ڪيو ويو. ڪرنل جو موجوده نسخو 5.3.5-1

هن وقت ڇا ڪم ڪري رهيو آهي

  1. NVMe
  2. ڪي بورڊ
  3. USB-C (ٿنڊربولٽ جي آزمائش نه ڪئي وئي آهي؛ جڏهن ماڊل خودڪار طور تي لوڊ ڪيو ويندو آهي، اهو سسٽم کي منجمد ڪري ٿو)
  4. ٽچبار (Fn چابيون، بيڪ لائٽ، ESC، وغيره کي چالو ڪرڻ جي صلاحيت سان)
  5. آواز (صرف بلٽ ان اسپيڪر)
  6. وائي فائي ماڊل (brcmfmac ذريعي ۽ صرف iw ذريعي)
  7. USB-C مٿان ڊسپلي پورٽ
  8. سينسر
  9. معطل / ٻيهر شروع ڪريو (جزوي طور تي)
  10. وغيره ..

هي سبق macbookpro15,1 ۽ macbookpro15,2 لاءِ لاڳو آهي. مضمون انگريزيءَ ۾ Github مان هڪ بنياد طور ورتو ويو. هتي کان. هن آرٽيڪل ۾ سڀ ڪجهه ڪم نه ڪيو، تنهنڪري مون کي پنهنجو پاڻ کي حل ڪرڻو پيو.

جيڪو توهان کي انسٽال ڪرڻ جي ضرورت آهي

  • USB-C ڊاکنگ اڊاپٽر USB ڏانهن (گهٽ ۾ گهٽ ٽي 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 تصوير ٺاهيو

Options

  1. توھان سادو رستو وٺي سگھوٿا ۽ ڪرنل 5.3.5-1 سان تيار ٿيل تصوير ڊائون لوڊ ڪري سگھوٿا آنالي1 مڪمل تصوير سان ڳنڍيو
  2. آرڪائيو ذريعي پنهنجو پاڻ کي هڪ تصوير ٺاهيو (آرڪا جي تقسيم سان هڪ سسٽم گهربل آهي)

    انسٽال ڪريو آرڪيسو

    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 kernel ۽ 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 تصوير لکو:

    sudo dd if=out/archlinux*.iso of=/dev/sdb bs=1M

4. پهريون بوٽ

فليش ڊرائيو ۽ ڪيبورڊ داخل ڪرڻ سان ريبوٽ ڪريو. اختيارن کي دٻايو جڏهن ايپل ظاهر ٿئي ٿي، چونڊيو EFI BOOT.

اڳيون، توهان کي "اي" کي دٻائڻ جي ضرورت آهي ۽ ڪمانڊ لائن جي آخر ۾ داخل ڪريو module_blacklist=thunderbolt. جيڪڏهن اهو نه ڪيو ويو آهي، سسٽم بوٽ نه ٿي سگھي ۽ هڪ Thunderbolt ICM غلطي ظاهر ٿيندي.

fdisk/cfdisk استعمال ڪندي اسان پنهنجو ورهاڱو ڳوليندا آهيون (منهنجي لاءِ اهو آهي nvme0n1p4)، ان کي فارميٽ ڪريو ۽ آرڪائيو انسٽال ڪريو. توهان استعمال ڪري سگهو ٿا سرڪاري هدايتون يا پاسي کان.

اسان بوٽ ورهاڱي نه ٺاهي رهيا آهيون؛ اسان ان ۾ بوٽ لوڊ ڪندڙ لکنداسين /dev/nvme0n1p1
/mnt ۾ ماحول مڪمل طور تي ٺھيل آھي ۽ آرڪ-ڪروٽ ڏانھن وڃڻ کان اڳ، لکو:

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

ڪي بورڊ، ٽچ بار، وغيره

انسٽال ڪريو:


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. خود اسيمبليء جي صورت ۾، ان کي سڏيو ويندو آهي bce. ان مطابق، جيڪڏهن توهان 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. لوڊ ڪندڙ

هڪ دفعو سڀئي مکيه پيڪيجز ڪروٽ اندر نصب ٿي ويا آهن، توهان بوٽ لوڊر کي نصب ڪرڻ شروع ڪري سگهو ٿا.

مون کي ڪم ڪرڻ لاء گرب حاصل ڪرڻ جي قابل نه آهي. ٻاھرين 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 ڊرائيو مان بوٽ ڪرڻ لاء چونڊيو، جيئن پهرين انسٽاليشن دوران (ماڊل_blacklist=thunderbolt جي وضاحت ڪرڻ نه وساريو)
  4. اسان اسان جي ڊسڪ کي چڙھيون ٿا ۽ آرڪ-ڪروٽ ذريعي ماحول ۾ وڃون ٿا


mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt

جيڪڏهن ڪيبورڊ لاءِ ڪم ڪرڻ ضروري آهي جيستائين سسٽم مڪمل لوڊ نه ٿئي (اهو ضروري آهي جڏهن luks/dm-crypt انڪريپشن استعمال ڪيو وڃي)، پوءِ ان کي لکو /etc/mkinicpio.conf فائل ۾ MODULES سيڪشن ۾:

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

ڪرنل ۽ initramfs کي اپڊيٽ ڪرڻ.


mkinicpio -p linux-mbp

سسٽم ڊي بوٽ سيٽ ڪرڻ

اسان /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

جيڪڏهن توهان لوڪ ۽ 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 kernel module. اهو معلوم ڪرڻ لاءِ ته ڪهڙن فائلن کي توهان جو اڊاپٽر استعمال ڪري ٿو، MacOS ۾ ٽرمينل کوليو ۽ لکو:

ioreg -l | grep C-4364

اسان کي هڪ ڊگهي لسٽ ملي. اسان کي صرف سيڪشن مان فائلن جي ضرورت آهي درخواست ٿيل فائلون:

"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 ذريعي ظاهر ٿئي ٿو.
وائي فائي ذريعي ترتيب ڏيو iwctl

ڌيان ڏيڻ. netctl، nmcli، وغيره ذريعي. انٽرفيس ڪم نٿو ڪري، صرف iwd ذريعي.

اسان نيٽورڪ مئنيجر کي iwd استعمال ڪرڻ تي مجبور ڪريون ٿا. هن کي ڪرڻ لاء، فائل ٺاهيو /etc/NetworkManager/NetworkManager.conf ۽ لکو:

[device]
wifi.backend=iwd

نيٽ ورڪ مئنيجر سروس شروع ڪريو


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

7. آواز

آواز کي ڪم ڪرڻ لاء، توهان کي pulseaudio انسٽال ڪرڻو پوندو:


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 توهان کي يا ته آواز چونڊڻو آهي يا معطل/ٻيهر شروع ڪريو. اسان انتظار ڪري رهيا آهيون ليکڪ جو 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

جيڪڏهن توهان anuali1 repository مان تيار ٿيل ايپل-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

تبصرو شامل ڪريو