د MacBook Pro 2018 T2 جوړول د ArchLinux (dualboot) سره کار کوي

د دې حقیقت په اړه یو څه ډیر څه شتون لري چې نوی T2 چپ به د ټچ بار سره په نوي 2018 ماک بوکس کې د لینکس نصب کول ناممکن کړي. وخت تیر شو، او د 2019 په پای کې، د دریمې ډلې پراختیا کونکو د T2 چپ سره د تعامل لپاره یو شمیر ډرایورونه او د کرنل پیچ پلي کړل. د MacBook ماډلونو 2018 لپاره اصلي چلوونکی او نوي پلي کوي د VHCI عملیات (ټچ/کیبورډ/وغیر عملیات)، او همدارنګه د غږ عملیات.

پروژه mbp2018-bridge-drv په 3 اصلي برخو ویشل شوي:

  • BCE (د بفر کاپي انجن) - د T2 سره د ارتباط اصلي چینل رامینځته کوي. VHCI او آډیو دې برخې ته اړتیا لري.
  • VHCI د USB مجازی کوربه کنټرولر دی؛ کیبورډ، موږک او د سیسټم نورې برخې د دې برخې لخوا چمتو شوي (نور چلوونکي دا کوربه کنټرولر کاروي ترڅو نور فعالیت چمتو کړي.
  • آډیو - د T2 آډیو انٹرفیس لپاره ډرایور، دا مهال یوازې د MacBook جوړ شوي سپیکرې له لارې د آډیو محصول ملاتړ کوي


دویمه پروژه نومیږي macbook12-spi-ډرایور، او دا د کیبورډ ، SPI ټریک پیډ ، او ټچ بار لپاره د 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 لپاره د تطبیق وړ دی. مقاله په انګلیسي کې د ګیتوب څخه د اساس په توګه اخیستل شوې. له دې ځایه. پدې مقاله کې هرڅه کار نه کوي ، نو ما باید پخپله د حل لاره ومومئ.

هغه څه چې تاسو یې نصبولو ته اړتیا لرئ

  • 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 او پیچونو سره یو چمتو شوی عکس ډاونلوډ کړئ aunali1 بشپړ شوي عکس ته لینک
  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-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 عکس د USB فلش ډرایو ته ولیکئ:

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

4. لومړی بوټ

د فلش ډرایو او کیبورډ داخلولو سره ریبوټ کړئ. اختیارونه فشار کړئ کله چې مڼه ښکاره شي، د EFI بوټ غوره کړئ.

بیا ، تاسو اړتیا لرئ د "e" کیلي فشار ورکړئ او د کمانډ لاین په پای کې دننه شئ module_blacklist= تندربولټ. که دا ترسره نه شي، سیسټم ممکن بوټ ونه کړي او د تندربولټ 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

موږ په /etc/modprobe.d/blacklist.conf کې تندربولټ او ایپل ایم سی راجستر کوو

blacklist thunderbolt
blacklist applesmc

کیبورډ، ټچ بار، او داسې نور

yay نصب کړئ:


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

په دې حالت کې، د کرنل ماډل به ویل کیږي مڼه - 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

سیسټم د کرنل ویره کې لاړ ، او د اختیارونو له لارې د نوي توکي ریبوټ کولو وروسته څرګند نه شو. ما د دې ستونزې لپاره هیڅ روښانه حل ونه موند او له همدې امله پریکړه وکړه چې د سیسټمډ بوټ په کارولو سره د بوټ کولو پلي کولو هڅه وکړم.

  1. لانچ
    bootctl --path=/boot install

    او موږ د کرنل ډار ته ځو. ماک بوک بند کړئ ، بیا یې چالان کړئ ، په اختیارونو کلیک وکړئ (د کیبورډ سره د 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=(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. د Wi-Fi تنظیم کول

لکه څنګه چې دا په پای کې شو، MacOS په فولډر کې د وائی فای اډاپټر لپاره د فرم ویئر فایلونه ذخیره کوي /usr/share/firmware/wifi ، او تاسو کولی شئ له هغه ځای څخه د بلابونو په شکل کې واخلئ او د brcmfmac کرنل ماډل ته یې تغذیه کړئ. د دې موندلو لپاره چې ستاسو اډاپټر کوم فایلونه کاروي، په 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. غږ

د دې لپاره چې غږ کار وکړي، تاسو اړتیا لرئ د پلسیوډیو نصب کړئ:


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 ذخیره څخه چمتو شوي اپل-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

Add a comment