الحصول على MacBook Pro 2018 T2 للعمل مع ArchLinux (ثنائي التشغيل)

كان هناك الكثير من الضجيج حول حقيقة أنه بسبب شريحة T2 الجديدة ، من المستحيل تثبيت linux على جهاز MacBook الجديد 2018 باستخدام شريط اللمس. مع مرور الوقت ، وبنهاية عام 2019 ، قام مطورو الطرف الثالث بتنفيذ عدد من برامج التشغيل وتصحيحات kernel للتفاعل مع شريحة T2. يقوم برنامج التشغيل الرئيسي لطرز MacBook 2018 وأحدث بتنفيذ VHCI (تشغيل اللمس / لوحة المفاتيح / وما إلى ذلك) ، وكذلك أداء الصوت.

ينقسم مشروع mbp2018-bridge-drv إلى 3 مكونات رئيسية:

  • BCE (محرك النسخ الاحتياطي) - يؤسس قناة الاتصال الرئيسية مع T2. VHCI والصوت تتطلب هذا المكون.
  • VHCI هو وحدة تحكم مضيف ظاهري USB ؛ يتم توفير لوحة المفاتيح والماوس ومكونات النظام الأخرى بواسطة هذا المكون (تستخدم برامج التشغيل الأخرى وحدة تحكم المضيف هذه لتوفير المزيد من الوظائف.
  • الصوت - برنامج تشغيل لواجهة الصوت T2 ، حاليًا يتم دعم إخراج الصوت فقط من خلال مكبرات الصوت المدمجة في MacBook

يُطلق على المشروع الثاني اسم macbook12-spi-driver ، وينفذ إمكانية تشغيل برنامج تشغيل لوحة المفاتيح ولوحة التتبع SPI وشريط اللمس لـ MacBook Pro أواخر عام 2016 والإصدارات الأحدث. يتم الآن تضمين بعض برامج تشغيل لوحة المفاتيح / لوحة التتبع في النواة ، بدءًا من الإصدار 5.3.

تم تنفيذ الدعم أيضًا لأجهزة مثل wi-fi ، و touchpad ، إلخ ، باستخدام تصحيحات kernel. حاليًا إصدار kernel هو 5.3.5-1

ما يعمل في الوقت الراهن


  1. NVMe
  2. لوحة المفاتيح
  3. USB-C (لم يتم اختبار Thunderbolt ، عندما يتم تحميل الوحدة تلقائيًا ، يتم تعليق النظام بإحكام)
  4. شريط اللمس (مع القدرة على تشغيل مفاتيح Fn والإضاءة الخلفية و ESC وما إلى ذلك)
  5. صوت (مكبرات صوت مدمجة فقط)
  6. وحدة Wi-Fi (عبر brcmfmac وفقط من خلال iw)
  7. ديسبلايبورت عبر USB-C
  8. أجهزة الاستشعار
  9. تعليق / استئناف (جزئيا)
  10. الخ

ينطبق هذا البرنامج التعليمي على macbookpro15.1 و macbookpro15.2. تم أخذ المقال من جيثب باللغة الإنجليزية من هنا . لم تنجح كل هذه المقالة ، لذلك كان علي البحث عن حل بمفردي.

ما تحتاج إلى تثبيت


  • مهايئ USB-C USB (على الأقل ثلاثة مدخلات USB لتوصيل الماوس أو لوحة المفاتيح أو مودم USB أو الهاتف في وضع الربط). هذا ضروري فقط في المراحل المبكرة من التثبيت.
  • لوحة مفاتيح USB
  • محرك أقراص فلاش USB / USB-C سعة 4 جيجابايت على الأقل

1. تعطيل حظر التنزيل من الوسائط الخارجية


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

2. تخصيص مساحة حرة باستخدام القرص المرافق


للراحة ، قمت على الفور بتخصيص 30 غيغابايت للقرص ، حيث قمت بتهيئته لتكبيره في Disk Utility نفسها. تقسيم القرص الفعلي إلى أقسام القرص المساعدة .

3. تشكيل صورة ISO


خيارات:

  1. يمكنك اتباع الطريقة البسيطة وتنزيل الصورة النهائية باستخدام kernel 5.3.5-1 والبقع من رابط aunali1 إلى الصورة النهائية
  2. قم بإنشاء صورة لنفسك من خلال archlive (تحتاج إلى نظام مع توزيع archa)

    تثبيت 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 BOOT.

بعد ذلك ، تحتاج إلى الضغط على المفتاح "e" وكتابة module_blacklist = الصاعقة في نهاية سطر الأوامر. إذا لم يتم ذلك ، فقد لا يقوم النظام بالتمهيد ، وسوف يتعطل خطأ 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 

ضع الصاعقة و applesmc في /etc/modprobe.d/blacklist.conf

 blacklist thunderbolt blacklist applesmc 

لوحة المفاتيح ، touchbar ، الخ


تثبيت 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 

تثبيت وحدات kernel للوحة المفاتيح. يحتوي مستودع anuali1 على حزمة جاهزة ، يطلق عليها apple-bce-dkms-git . لتثبيته ، اكتب في وحدة التحكم:

 pacman -S apple-bce-dkms-git 

في هذه الحالة ، سيتم استدعاء الوحدة النمطية kernel apple-bce . في حالة التجميع الذاتي ، يطلق عليه bce . وفقًا لذلك ، إذا كنت ترغب في تسجيل وحدة نمطية في قسم MODULES في ملف 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 - دليل - = = boot - bootloader-id = grub
تحطمت النظام في نواة الفزع ، وبعد إعادة تشغيل عنصر جديد من خلال خيارات لم تظهر. لم أجد أي حل واضح لهذه المشكلة ، وبالتالي قررت محاولة تنفيذ التمهيد باستخدام systemd-boot.

  1. نطلق

     bootctl --path=/boot install 

    وتطير إلى نواة الذعر. قم بإيقاف تشغيل MacBook ، وقم بتشغيله مرة أخرى ، وانقر فوق خيارات (لا تقم بتعطيل لوحة وصل USB-c بلوحة المفاتيح)
  2. تحقق من ظهور سجل EFI BOOT جديد بالإضافة إلى الجهاز الخارجي
  3. نختار التمهيد من محرك أقراص USB خارجي ، كما هو الحال أثناء التثبيت الأول (لا تنس أن تكتب module_blacklist = الصاعقة)
  4. نقوم بتركيب القرص لدينا والدخول في البيئة من خلال chroot اللدود

 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 

تكوين systemd التمهيد


نقوم بتحرير الملف /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 ملفات البرامج الثابتة لمحول wi-fi في المجلد / usr / share / firmware / wifi ، ويمكنك أخذها من هناك في شكل نقاط النقط وإدخالها في وحدة brcmfmac kernel. لمعرفة بالضبط الملفات التي يستخدمها المهايئ ، افتح الجهاز في نظام التشغيل MacOS واكتب:

 ioreg -l | grep C-4364 

لدينا قائمة طويلة. نحن بحاجة فقط إلى ملفات من قسم RequestedFiles :

 "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 إلى محرك أقراص فلاش USB وأعد تسميتها في العرض التالي:

  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 الخاص بك.

إعادة تشغيل في القوس.

انسخ الملفات من محرك أقراص فلاش USB إلى المجلد / 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.

جعل 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. تعليق / استئناف


في الوقت الحالي ، 10/16/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 

إذا قمت بتثبيت وحدة apple-bce الجاهزة من مستودع anuali1 ، فيجب عليك أولاً إزالتها ثم فقط تجميع وتثبيت وحدة bce مع دعم لوضع الإيقاف المرحلي.

تحتاج أيضًا إلى إضافة وحدة applesmc إلى القائمة السوداء (إذا لم تكن قد قمت بذلك من قبل) وتأكد من إضافة pcie_ports = compat إلى /boot/loader/entries/arch.conf في سطر الخيارات في النهاية.

في الوقت الحالي ، يتعطل برنامج تشغيل touchbar عند إدخال وضع التوقف المرحلي ، ويقوم برنامج الصاعقة أحيانًا بتعليق النظام لأكثر من 30 ثانية ، وعند الاستئناف ، لعدة دقائق. يمكن إصلاح ذلك عن طريق تنزيل الوحدات النمطية للمشكلات تلقائيًا.

قم بإنشاء البرنامج النصي /lib/systemd/system-sleep/rmmod.sh :

 #!/bin/sh if [ "${1}" == "pre" ]; then rmmod thunderbolt rmmod apple_ib_tb elif [ "${1}" == "post" ]; then modprobe apple_ib_tb modprobe thunderbolt fi 

اجعلها قابلة للتنفيذ:

 sudo chmod +x /lib/systemd/system-sleep/rmmod.sh 

هذا كل شيء الآن. والنتيجة هي نظام يعمل بكامل طاقته ، باستثناء بعض الفروق الدقيقة مع تعليق / استئناف. لم يلاحظ أي تعطل ونواة الذعر لعدة أيام الجهوزية. آمل أن ينهي مؤلف وحدة bce في المستقبل القريب ذلك ، وسوف نحصل على الدعم الكامل للتعليق / الاستئناف والصوت.

Source: https://habr.com/ru/post/ar472106/


All Articles