كان هناك الكثير من الضجيج حول حقيقة أنه بسبب شريحة 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ما يعمل في الوقت الراهن
- NVMe
- لوحة المفاتيح
- USB-C (لم يتم اختبار Thunderbolt ، عندما يتم تحميل الوحدة تلقائيًا ، يتم تعليق النظام بإحكام)
- شريط اللمس (مع القدرة على تشغيل مفاتيح Fn والإضاءة الخلفية و ESC وما إلى ذلك)
- صوت (مكبرات صوت مدمجة فقط)
- وحدة Wi-Fi (عبر brcmfmac وفقط من خلال iw)
- ديسبلايبورت عبر USB-C
- أجهزة الاستشعار
- تعليق / استئناف (جزئيا)
- الخ
ينطبق هذا البرنامج التعليمي على macbookpro15.1 و macbookpro15.2. تم أخذ المقال من جيثب باللغة الإنجليزية
من هنا . لم تنجح كل هذه المقالة ، لذلك كان علي البحث عن حل بمفردي.
ما تحتاج إلى تثبيت
- مهايئ USB-C USB (على الأقل ثلاثة مدخلات USB لتوصيل الماوس أو لوحة المفاتيح أو مودم USB أو الهاتف في وضع الربط). هذا ضروري فقط في المراحل المبكرة من التثبيت.
- لوحة مفاتيح USB
- محرك أقراص فلاش USB / USB-C سعة 4 جيجابايت على الأقل
1. تعطيل حظر التنزيل من الوسائط الخارجية
https://support.apple.com/en-us/HT208330https://www.ninjastik.com/support/2018-macbook-pro-boot-from-usb/2. تخصيص مساحة حرة باستخدام القرص المرافق
للراحة ، قمت على الفور بتخصيص 30 غيغابايت للقرص ، حيث قمت بتهيئته لتكبيره في Disk Utility نفسها.
تقسيم القرص الفعلي إلى أقسام القرص المساعدة .
3. تشكيل صورة ISO
خيارات:- يمكنك اتباع الطريقة البسيطة وتنزيل الصورة النهائية باستخدام kernel 5.3.5-1 والبقع من رابط aunali1 إلى الصورة النهائية
- قم بإنشاء صورة لنفسك من خلال 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.
- نطلق
bootctl --path=/boot install
وتطير إلى نواة الذعر. قم بإيقاف تشغيل MacBook ، وقم بتشغيله مرة أخرى ، وانقر فوق خيارات (لا تقم بتعطيل لوحة وصل USB-c بلوحة المفاتيح) - تحقق من ظهور سجل EFI BOOT جديد بالإضافة إلى الجهاز الخارجي
- نختار التمهيد من محرك أقراص USB خارجي ، كما هو الحال أثناء التثبيت الأول (لا تنس أن تكتب module_blacklist = الصاعقة)
- نقوم بتركيب القرص لدينا والدخول في البيئة من خلال 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 في المستقبل القريب ذلك ، وسوف نحصل على الدعم الكامل للتعليق / الاستئناف والصوت.