ማክቡክ ፕሮ 2018 T2 ከአርክሊኑክስ (ባለሁለት ቡት) ጋር እንዲሰራ ማድረግ

አዲሱ T2 ቺፕ ሊኑክስን በአዲሱ 2018 ማክቡኮች በንክኪ ባር መጫን እንደማይችል ስለሚያደርገው ትንሽ ወሬ ነበር። ጊዜው አልፏል፣ እና በ2019 መገባደጃ ላይ፣ የሶስተኛ ወገን ገንቢዎች ከT2 ቺፕ ጋር ለመግባባት በርካታ ሾፌሮችን እና የከርነል መጠገኛዎችን ተግባራዊ አድርገዋል። የ 2018 የማክቡክ ሞዴሎች ዋና አሽከርካሪ እና አዲሱ የ VHCI አሠራር (ንክኪ/የቁልፍ ሰሌዳ/ወዘተ ኦፕሬሽን) እንዲሁም የድምጽ አሠራርን ተግባራዊ ያደርጋል።

ፕሮጀክቱ mbp2018-ድልድይ-ዶርቭ በ 3 ዋና ዋና ክፍሎች ተከፍሏል-

  • BCE (Buffer Copy Engine) - ዋናውን የመገናኛ ቻናል ከ T2 ጋር ያቋቁማል። ቪኤችሲአይ እና ኦዲዮ ይህን አካል ይፈልጋሉ።
  • VHCI የዩኤስቢ ምናባዊ አስተናጋጅ መቆጣጠሪያ ነው; የቁልፍ ሰሌዳ, አይጥ እና ሌሎች የስርዓት ክፍሎች በዚህ አካል ይሰጣሉ (ሌሎች አሽከርካሪዎች ተጨማሪ ተግባራትን ለማቅረብ ይህንን የአስተናጋጅ መቆጣጠሪያ ይጠቀማሉ.
  • ኦዲዮ - ለT2 ኦዲዮ በይነገጽ ሹፌር፣ በአሁኑ ጊዜ የድምጽ ውፅዓትን የሚደግፈው በማክቡክ አብሮ በተሰራው ስፒከሮች ነው።


ሁለተኛው ፕሮጀክት ይባላል macbook12-ስፓይ-ሾፌር, እና የግብዓት ሾፌርን ለቁልፍ ሰሌዳ ፣ ለ SPI ትራክፓድ እና ለመዳሰሻ 2016 መጨረሻ እና ከዚያ በኋላ ለማክቡክ ፕሮስ የመሥራት ችሎታን ተግባራዊ ያደርጋል። ከስሪት 5.3 ጀምሮ አንዳንድ የቁልፍ ሰሌዳ/የትራክፓድ ነጂዎች አሁን በከርነል ውስጥ ተካትተዋል።

እንደ ዋይ ፋይ፣ የመዳሰሻ ሰሌዳ፣ ወዘተ የመሳሰሉ መሳሪያዎች ድጋፍ የከርነል መጠገኛዎችን በመጠቀም ተተግብሯል። የአሁኑ የከርነል ስሪት 5.3.5-1

በአሁኑ ጊዜ ምን እየሰራ ነው።

  1. NVMe
  2. የቁልፍ ሰሌዳ
  3. ዩኤስቢ-ሲ (ተንደርበርት አልተሞከረም ፣ ሞጁሉ በራስ-ሰር ሲጫን ስርዓቱን ያቀዘቅዘዋል)
  4. የመዳሰሻ አሞሌ (የ Fn ቁልፎችን ፣ የኋላ መብራትን ፣ ESCን ፣ ወዘተ የማብራት ችሎታ)
  5. ድምጽ (አብሮገነብ ድምጽ ማጉያዎች ብቻ)
  6. የWi-Fi ሞጁል (በbrcmfmac በኩል እና በ iw በኩል ብቻ)
  7. ማሳያ ወደብ በዩኤስቢ-ሲ
  8. ዳሳሾች
  9. ማገድ/ከቆመበት መቀጠል (በከፊል)
  10. ወዘተ ..

ይህ አጋዥ ስልጠና ለ macbookpro15,1 እና macbookpro15,2 ተፈጻሚ ይሆናል። ጽሑፉ የተወሰደው ከ Github በእንግሊዝኛ ነው። እዚህ. በዚህ ጽሑፍ ውስጥ ያለው ሁሉም ነገር አልሰራም, ስለዚህ እኔ ራሴ መፍትሄ መፈለግ ነበረብኝ.

ለመጫን የሚያስፈልግዎት

  • የዩኤስቢ-ሲ መትከያ አስማሚ ወደ ዩኤስቢ (ቢያንስ ሶስት የዩኤስቢ ግብዓቶች መዳፊትን፣ የቁልፍ ሰሌዳን፣ የዩኤስቢ ሞደምን ወይም ስልክን በማያያዝ ሁነታ ለማገናኘት)። ይህ በመጀመሪያዎቹ የመጫኛ ደረጃዎች ውስጥ ብቻ አስፈላጊ ነው
  • የዩኤስቢ ቁልፍ ሰሌዳ
  • ዩኤስቢ/ዩኤስቢ-ሲ ፍላሽ አንፃፊ ቢያንስ 4ጂቢ

1. ከውጪ ሚዲያ የመነሳት እገዳን አሰናክል

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

2. Disk Utilityን በመጠቀም ነፃ ቦታ ይመድቡ

ለመመቻቸት, ወዲያውኑ 30 ጂቢ ለዲስክ መደብኩኝ, በራሱ በዲስክ መገልገያ ውስጥ በ exfat ውስጥ ቀረጸው. የአካላዊ ዲስክ ዲስክ መገልገያ መከፋፈል.

3. የ ISO ምስል ይፍጠሩ

አማራጮች:

  1. ቀላሉ መንገድ ሄዳችሁ ዝግጁ የሆነ ምስል ከከርነል 5.3.5-1 እና ከ patches ጋር ማውረድ ይችላሉ። 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 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 የሚለውን ይምረጡ.

በመቀጠል "e" የሚለውን ቁልፍ መጫን እና በትእዛዝ መስመሩ መጨረሻ ላይ ማስገባት ያስፈልግዎታል module_blacklist=ነጎድጓድ. ይህ ካልተደረገ፣ ስርዓቱ ላይነሳ ይችላል እና የ Thunderbolt ICM ስህተት ይመጣል።

fdisk/cfdisk ን በመጠቀም ክፍላችንን እናገኛለን (ለእኔ nvme0n1p4 ነው) ፣ ቅርጸቱን እና ማህደሩን ጫን። መጠቀም ትችላለህ ኦፊሴላዊ መመሪያዎች ወይም ወደ ጎን.

እኛ የቡት ክፍልፋይ እየፈጠርን አይደለም፤ የቡት ጫኚውን ወደ ውስጥ እንጽፋለን። /dev/nvme0n1p1
በ / mnt ውስጥ ያለው አካባቢ ሙሉ በሙሉ ከተፈጠረ በኋላ እና ወደ አርክ-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

የቁልፍ ሰሌዳ፣ የመዳሰሻ አሞሌ፣ ወዘተ

ዋይ ጫን፡


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

በዚህ አጋጣሚ የከርነል ሞጁል ይጠራል አፕል-ቢሲ. ራስን መሰብሰብን በተመለከተ, ይባላል ቢት. በዚህ መሠረት ሞጁሉን በMOULES ክፍል 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

ለመጀመር የቢሲ ወይም የፖም-ቢሲ ሞጁሉን ያክሉ፡ /etc/modules-load.d/bce.conf

bce

በነባሪ የFn ቁልፎችን ለመጠቀም ከፈለጉ በ /etc/modprobe.d/apple-tb.conf ፋይል ውስጥ ይፃፉ፡-

options apple-ib-tb fnmode=2

ከርነል እና intramfs በማዘመን ላይ።


mkinitcpio -p linux-mbp

iwd ን ጫን፡

sudo pacman -S networkmanager iwd

5. ጫኝ

አንዴ ሁሉም ዋና ፓኬጆች በ chroot ውስጥ ከተጫኑ የቡት ጫኚውን መጫን መጀመር ይችላሉ።

ወደ ሥራ መሄድ አልቻልኩም። Grub ቡትስ ከውጫዊ የዩኤስቢ አንፃፊ ፣ ግን በ nvme በኩል ለመመዝገብ ሲሞክሩ

grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=grub

ስርዓቱ ወደ ከርነል ድንጋጤ ገባ ፣ እና አዲስ ንጥል በአማራጮች በኩል እንደገና ከጀመረ በኋላ አልታየም። ለዚህ ችግር ምንም ግልጽ መፍትሄ አላገኘሁም እና ስለዚህ systemd-boot ን በመጠቀም ማስነሳትን ለመተግበር ወሰንኩ.

  1. አስጀምር
    bootctl --path=/boot install

    እና ወደ ከርነል ድንጋጤ ውስጥ እንገባለን. ማክቡክን ያጥፉ፣ እንደገና ያብሩት፣ አማራጮችን ጠቅ ያድርጉ (የዩኤስቢ-ሲ መገናኛን በቁልፍ ሰሌዳ አያጥፉት)

  2. ከውጫዊው መሳሪያ በተጨማሪ አዲስ የEFI BOOT ግቤት መታየቱን እናረጋግጣለን።
  3. ልክ እንደ መጀመሪያው ጭነት ከውጫዊ የዩኤስቢ አንፃፊ ለመነሳት እንመርጣለን (module_blacklist=thunderbolt መግለፅን አይርሱ)
  4. ዲስኩን እንጭነዋለን እና በአርኪ-chroot ወደ አካባቢው እንገባለን።


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

ስርዓቱ ሙሉ በሙሉ እስኪጫን ድረስ ለቁልፍ ሰሌዳው እንዲሰራ አስፈላጊ ከሆነ (ይህ ሉክስ/ዲም-ክሪፕት ኢንክሪፕት ሲጠቀሙ አስፈላጊ ነው) ከዚያ በMOULES ክፍል ውስጥ /etc/mkinicpio.conf ፋይል ውስጥ ይፃፉ።

MODULES=(ext4 applespi intel_lpss_pci spi_pxa2xx_platform bce)

ከርነል እና intramfs በማዘመን ላይ።


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

ሉክስ እና lvm ን ከተጠቀሙ

options cryptdevice=/dev/<b>nvme0n1p4</b>:luks root=/dev/mapper/vz0-root rw pcie_ports=compat

ወደ MacOS እንደገና አስነሳ።

6. የ Wi-Fi ማዋቀር

መጨረሻ ላይ እንደታየው፣ MacOS በአቃፊው ውስጥ ለ wi-fi አስማሚ የጽኑዌር ፋይሎችን ያከማቻል /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 በኩል እንደሚታይ እናረጋግጣለን።
በ በኩል wifi በማዋቀር ላይ iwctl

ትኩረት. በ netctl ፣ nmcli ፣ ወዘተ. በይነገጹ አይሰራም፣ በ iwd በኩል ብቻ።

NetworkManager iwd እንዲጠቀም እናስገድደዋለን። ይህንን ለማድረግ ፋይሉን /etc/NetworkManager/NetworkManager.conf ይፍጠሩ እና ይፃፉ፡-

[device]
wifi.backend=iwd

የ NetworkManager አገልግሎትን ይጀምሩ


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 ድምጽን መምረጥ ወይም ማቆም / መቀጠል አለብህ የቢሲ ሞጁሉን ፀሃፊ ተግባሩን እንዲያጠናቅቅ እየጠበቅን ነው።

ከተንጠለጠለ/ከቆመበት ድጋፍ ጋር አንድ ሞጁል ለመገንባት የሚከተሉትን ማድረግ አለብዎት።


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 ማከማቻ ውስጥ ከጫኑት በመጀመሪያ እሱን ማስወገድ እና ከዚያ ብቻ የቢሲ ሞጁሉን በተንጠለጠለ ሁነታ ድጋፍ መሰብሰብ እና መጫን አለብዎት።

እንዲሁም የ 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

ለጊዜው ይሄው ነው. ውጤቱ ሙሉ በሙሉ ሊሠራ የሚችል ስርዓት ነው ፣ ከአንዳንድ ልዩነቶች በስተቀር መታገድ / መቀጠል። በበርካታ ቀናት የስራ ሰዓት ምንም አይነት ብልሽቶች ወይም የከርነል ድንጋጤዎች አልታዩም። በቅርብ ጊዜ ውስጥ የቢሲ ሞጁል ደራሲው እንደሚጨርሰው ተስፋ አደርጋለሁ, እና ለማቋረጥ / ለመቀጠል እና ለድምጽ ሙሉ ድጋፍ እናገኛለን.

ምንጭ: hab.com

አስተያየት ያክሉ