مجموعة من الأدوات المساعدة المتعلقة بتصحيح المكتبات المعدنية ( .metallib
) في نظام التشغيل macOS، وتحديدًا بهدف استعادة الدعم للأجهزة القديمة (تحديدًا وحدات معالجة الرسوميات المستندة إلى Metal 3802 على نظام التشغيل macOS Sequoia).
يضم MetallibSupportPkg مكتبة metal_libraries
python، والتي تم تطويرها لتبسيط عملية تصحيح Metal Library من خلال ما يلي:
aastuff
..metallib
المدعومة..metallib
لدعم وحدات معالجة الرسوميات Metal 3802. ملاحظات بخصوص تصحيح ملفات .metallib
الفردية:
.metallib
هو في الواقع مجموعة من ملفات .air
. تحتاج إلى استخراجها باستخدام تنسيق zhouwei._unpack_metallib_to_air()
.metallib
هي في الواقع ملفات FAT Mach-O. وبالتالي، يجب تخفيفها يدويًا (لا تدعم أداة lipo
من Apple بنية AIR64 التي نحتاجها)._thin_file()
.air
إلى أن يتم فك ترجمتها بعد ذلك إلى .ll
(LLVM IR) باستخدام الأداة المساعدة metal-objdump
من Apple._decompile_air_to_ll()
_patch_ll()
.air
، نستخدم الأداة metal
من Apple._recompile_ll_to_air()
.air
في مجموعة .metallib
، نستخدم الأداة المساعدة metallib
من Apple._pack_air_to_metallib()
بمجرد الانتهاء، يجب أن تعمل ملفات .metallib
الناتجة مع وحدات معالجة الرسوميات المستندة إلى Metal 3802 في نظام التشغيل macOS Sequoia.
MetallibSupportPkg ليس مخصصًا للاستخدام من قبل المستخدمين العاديين، ما يلي مخصص للمطورين.
تثبيت التبعيات المطلوبة:
python3 -m pip install -r requirements.txt
# Note Xcode is required to be installed for the `metal` and `metal-objdump` utilities
جلب عنوان URL الخاص بـ IPSW:
python3 metallib.py -d
# Example result: UniversalMac_15.0_24A5279h_Restore.ipsw
استخراج حجم النظام من IPSW:
python3 metallib.py -e < path_to_ipsw >
# Example result: 090-49684-056.dmg
سيتم استخراج مكتبات جلب المعادن من وحدة تخزين النظام إلى 15.x-
:
python3 metallib.py -f < path_to_system_volume >
# Example result: 15.0-24A5279h
مكتبات باتش ميتال:
# Directory containing the Metal libraries
python3 metallib.py -p < path_to_metallib_dir >
# Individual Metal library
python3 metallib.py -p < path_to_metallib >
تحويل المكتبات المعدنية إلى حزمة macOS:
python3 metallib.py -z < path_to_metallib_dir >
# Example result: MetallibSupportPkg-15.0-24A5279h.pkg
usage: metallib.py [-h] [-d] [-e EXTRACT] [-f FETCH] [-p PATCH] [-b BUILD_SYS_PATCH] [-z BUILD_PKG] [-c]
Download, extract, fetch, and patch Metal libraries.
options:
-h, --help show this help message and exit
-d, --download Download the latest IPSW.
-e EXTRACT, --extract EXTRACT
Extract the system volume from an IPSW.
-f FETCH, --fetch FETCH
Fetch Metal libraries from the system volume.
-p PATCH, --patch PATCH
Patch Metal libraries.
-b BUILD_SYS_PATCH, --build-sys-patch BUILD_SYS_PATCH
Build a system patch dictionary.
-z BUILD_PKG, --build-pkg BUILD_PKG
Build a macOS package.
-c, --continuous-integration
Run in continuous integration mode.