Un ensemble d'utilitaires liés à l'application de correctifs aux bibliothèques Metal ( .metallib
) dans macOS, spécifiquement dans le but de restaurer la prise en charge du matériel existant (à savoir les GPU basés sur Metal 3802 sur macOS Sequoia).
MetallibSupportPkg héberge la bibliothèque python metal_libraries
, qui a été développée pour rationaliser l'application des correctifs de la bibliothèque Metal à travers les éléments suivants :
aastuff
..metallib
pris en charge..metallib
pour prendre en charge les GPU Metal 3802. Notes concernant la mise à jour des fichiers .metallib
individuels :
.metallib
est en fait une collection de fichiers .air
. Besoin de les extraire en utilisant le format de Zhouwei._unpack_metallib_to_air()
.metallib
sont en réalité des fichiers FAT Mach-O. Ils doivent donc être affinés manuellement (l'utilitaire lipo
d'Apple ne prend pas en charge l'architecture AIR64 dont nous avons besoin)._thin_file()
.air
doivent ensuite être décompilés en .ll
(LLVM IR) à l'aide de l'utilitaire metal-objdump
d'Apple._decompile_air_to_ll()
_patch_ll()
.air
, nous utilisons l'utilitaire metal
d'Apple._recompile_ll_to_air()
.air
dans une collection .metallib
, nous utilisons l'utilitaire metallib
d'Apple._pack_air_to_metallib()
Une fois terminé, les fichiers .metallib
résultants devraient fonctionner avec les GPU basés sur Metal 3802 dans macOS Sequoia.
MetallibSupportPkg n'est pas destiné à être utilisé par les utilisateurs généraux, ce qui suit est destiné aux développeurs.
Installez les dépendances requises :
python3 -m pip install -r requirements.txt
# Note Xcode is required to be installed for the `metal` and `metal-objdump` utilities
Récupérer l'URL IPSW :
python3 metallib.py -d
# Example result: UniversalMac_15.0_24A5279h_Restore.ipsw
Extraire le volume système d'IPSW :
python3 metallib.py -e < path_to_ipsw >
# Example result: 090-49684-056.dmg
Récupérer les bibliothèques Metal du volume système, les extraire vers 15.x-
:
python3 metallib.py -f < path_to_system_volume >
# Example result: 15.0-24A5279h
Bibliothèques Patch Metal :
# Directory containing the Metal libraries
python3 metallib.py -p < path_to_metallib_dir >
# Individual Metal library
python3 metallib.py -p < path_to_metallib >
Convertir les bibliothèques Metal en package 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.