ProHoster > بلوق > إدارة > جعل جهاز MacBook Pro 2018 T2 يعمل مع ArchLinux (التشغيل المزدوج)
جعل جهاز MacBook Pro 2018 T2 يعمل مع ArchLinux (التشغيل المزدوج)
كان هناك قدر كبير من الضجيج حول حقيقة أن شريحة T2 الجديدة ستجعل من المستحيل تثبيت Linux على أجهزة MacBooks الجديدة لعام 2018 المزودة بشريط اللمس. مر الوقت، وفي نهاية عام 2019، قام مطورو الطرف الثالث بتنفيذ عدد من برامج التشغيل وتصحيحات kernel للتفاعل مع شريحة T2. يقوم برنامج التشغيل الرئيسي لطرازات MacBook 2018 والأحدث بتنفيذ عملية VHCI (تشغيل اللمس/لوحة المفاتيح/إلخ)، بالإضافة إلى تشغيل الصوت.
BCE (محرك النسخ الاحتياطي) - ينشئ قناة الاتصال الرئيسية مع T2. يتطلب VHCI والصوت هذا المكون.
VHCI هي وحدة تحكم المضيف الظاهري USB؛ يتم توفير لوحة المفاتيح والماوس ومكونات النظام الأخرى بواسطة هذا المكون (تستخدم برامج التشغيل الأخرى وحدة التحكم المضيفة هذه لتوفير المزيد من الوظائف.
الصوت - برنامج تشغيل واجهة الصوت T2، يدعم حاليًا إخراج الصوت فقط من خلال مكبرات الصوت المدمجة في جهاز MacBook
المشروع الثاني اسمه ماك بوك 12-SPI سائق، وينفذ القدرة على تشغيل برنامج تشغيل الإدخال للوحة المفاتيح ولوحة التتبع SPI وشريط اللمس لجهاز MacBook Pro أواخر عام 2016 والإصدارات الأحدث. تم الآن تضمين بعض برامج تشغيل لوحة المفاتيح/لوحة التتبع في kernel، بدءًا من الإصدار 5.3.
تم أيضًا تنفيذ دعم الأجهزة مثل wi-fi ولوحة اللمس وما إلى ذلك باستخدام تصحيحات kernel. نسخة النواة الحالية5.3.5-1
ما العمل في الوقت الراهن
NVMe
لوحة المفاتيح
USB-C (لم يتم اختبار Thunderbolt؛ عندما يتم تحميل الوحدة تلقائيًا، فإنها تجمد النظام)
شريط اللمس (مع القدرة على تشغيل مفاتيح Fn، والإضاءة الخلفية، وESC، وما إلى ذلك)
الصوت (السماعات المدمجة فقط)
وحدة Wi-Fi (عبر brcmfmac وعبر iw فقط)
DisplayPort عبر USB-C
مجسات
تعليق/استئناف (جزئيًا)
إلخ..
ينطبق هذا البرنامج التعليمي على أجهزة macbookpro15,1 وmacbookpro15,2. تم أخذ المقال كأساس من Github باللغة الإنجليزية. من هنا. لم ينجح كل ما ورد في هذه المقالة، لذلك كان علي أن أجد حلاً بنفسي.
ما تحتاجه للتثبيت
محول إرساء USB-C إلى USB (ثلاثة مداخل USB على الأقل لتوصيل الماوس أو لوحة المفاتيح أو مودم USB أو الهاتف في وضع التوصيل). هذا ضروري فقط خلال المراحل الأولى من التثبيت
لوحة مفاتيح USB
محرك أقراص فلاش USB/USB-C بسعة 4 جيجابايت على الأقل
1. قم بتعطيل الحظر المفروض على الإقلاع من الوسائط الخارجية
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
...
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. إذا لم يتم ذلك، فقد لا يتم تشغيل النظام وسيظهر خطأ Thunderbolt ICM.
باستخدام fdisk/cfdisk، نجد القسم الخاص بنا (بالنسبة لي هو nvme0n1p4)، ونقوم بتهيئته وتثبيت الأرشيف. يمكنك استخدام تعليمات رسمية أو جانبية.
نحن لا نقوم بإنشاء قسم تمهيد، بل سنكتب أداة تحميل التشغيل فيه /dev/nvme0n1p1
بعد أن يتم تكوين البيئة في /mnt بالكامل وقبل الانتقال إلى Arch-chroot، اكتب:
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt /bin/bash
أضف إلى /etc/pacman.conf:
[mbp]
Server = https://packages.aunali1.com/archlinux/$repo/$arch
تثبيت وحدات kernel للوحة المفاتيح. في المستودع anuali1 هناك حزمة جاهزة، تسمى apple-bce-dkms-git. لتثبيته، اكتب في وحدة التحكم:
pacman -S apple-bce-dkms-git
في هذه الحالة، سيتم استدعاء وحدة kernel apple-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. محمل
بمجرد تثبيت جميع الحزم الرئيسية داخل chroot، يمكنك البدء في تثبيت أداة تحميل التشغيل.
لم أتمكن من الحصول على اليرقة للعمل. يقوم Grub بالتمهيد من محرك أقراص USB خارجي، ولكن عند محاولة تسجيله في nvme عبر
ذهب النظام إلى حالة من الذعر النواة، وبعد إعادة التشغيل لم يظهر عنصر جديد من خلال الخيارات. لم أجد أي حل واضح لهذه المشكلة ولذلك قررت محاولة تنفيذ التمهيد باستخدام systemd-boot.
نطلق
bootctl --path=/boot install
وندخل في ذعر النواة. قم بإيقاف تشغيل جهاز MacBook، وتشغيله مرة أخرى، وانقر فوق الخيارات (لا تقم بإيقاف تشغيل لوحة وصل USB-C باستخدام لوحة المفاتيح)
نتحقق من ظهور إدخال EFI BOOT جديد بالإضافة إلى الجهاز الخارجي
نختار التمهيد من محرك أقراص USB خارجي، كما حدث أثناء التثبيت الأول (لا تنس تحديد Module_blacklist=thunderbolt)
نقوم بتركيب القرص الخاص بنا وندخل إلى البيئة عبر Arch-chroot
mount /dev/nvme0n1p4 /mnt
mount /dev/nvme0n1p1 /mnt/boot
arch-chroot /mnt
إذا كان من الضروري أن تعمل لوحة المفاتيح حتى يتم تحميل النظام بالكامل (وهذا ضروري عند استخدام تشفير Luks/dm-crypt)، فاكتب ذلك في الملف /etc/mkinicpio.conf في قسم الوحدات النمطية:
كما اتضح في النهاية، يقوم MacOS بتخزين ملفات البرامج الثابتة لمحول Wi-Fi في المجلد /usr/share/firmware/wifi ، ويمكنك أخذها من هناك على شكل نقط وإدخالها إلى وحدة brcmfmac kernel. لمعرفة الملفات التي يستخدمها المحول الخاص بك، افتح محطة طرفية في MacOS واكتب:
ioreg -l | grep C-4364
نحصل على قائمة طويلة. نحن بحاجة فقط إلى الملفات من القسم الملفات المطلوبة:
في هذه الحالة، يحتوي الملف النصي الأخير على أسماء الطرازات؛ إذا لم يكن الطراز الخاص بك هو macbookpro15,2، فستحتاج إلى إعادة تسمية هذا الملف وفقًا لطراز MacBook الخاص بك.
إعادة التشغيل في القوس.
انسخ الملفات من محرك الأقراص المحمول إلى المجلد /lib/firmware/brcm/
بهذه اللحظة 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
إذا قمت بتثبيت وحدة apple-bce الجاهزة من مستودع anuali1، فيجب عليك إزالتها أولاً ثم تجميع وحدة bce وتثبيتها مع دعم وضع التوقف المرحلي.
تحتاج أيضًا إلى إضافة وحدة applesmc إلى القائمة السوداء (إذا لم تكن قد قمت بذلك من قبل) والتأكد من إضافة المعلمة في /boot/loader/entries/arch.conf في سطر الخيارات في النهاية pcie_ports=compat.
حاليًا، يتعطل برنامج تشغيل شريط اللمس عند الدخول في وضع التوقف المرحلي، ويقوم برنامج تشغيل Thunderbolt أحيانًا بتجميد النظام لأكثر من 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
هذا كل شئ حتى الان. والنتيجة هي نظام عملي تمامًا، باستثناء بعض الفروق الدقيقة في التعليق/الاستئناف. لم تتم ملاحظة أي أعطال أو ذعر في kernel خلال عدة أيام من وقت التشغيل. آمل أن ينهي مؤلف وحدة bce هذه الوحدة في المستقبل القريب، وسنحصل على الدعم الكامل للتعليق/الاستئناف والصوت.