MetallibSupportPkg
15.2-24C5073e
특히 레거시 하드웨어(예: macOS Sequoia의 Metal 3802 기반 GPU)에 대한 지원 복원을 목표로 하는 macOS의 Metal 라이브러리( .metallib
) 패치와 관련된 유틸리티 모음입니다.
MetallibSupportPkg에는 다음을 통해 Metal Library 패치를 간소화하기 위해 개발된 metal_libraries
Python 라이브러리가 포함되어 있습니다.
aastuff
사용하여 암호를 해독합니다..metallib
파일을 추출합니다..metallib
파일을 패치합니다. 개별 .metallib
파일 패치에 관한 참고 사항:
.metallib
파일은 실제로 .air
파일의 모음입니다. zhouwei 형식을 사용하여 추출해야 합니다._unpack_metallib_to_air()
.metallib
파일은 실제로 FAT Mach-O 파일입니다. 따라서 수동으로 얇아져야 합니다(Apple의 lipo
유틸리티는 우리에게 필요한 AIR64 아키텍처를 지원하지 않습니다)._thin_file()
.air
파일은 다음으로 Apple의 metal-objdump
유틸리티를 사용하여 .ll
(LLVM IR)로 디컴파일되어야 합니다._decompile_air_to_ll()
_patch_ll()
.air
로 컴파일하기 위해 Apple의 metal
유틸리티를 사용합니다._recompile_ll_to_air()
.air
.metallib
컬렉션으로 묶기 위해 Apple의 metallib
유틸리티를 사용합니다._pack_air_to_metallib()
완료되면 결과 .metallib
파일은 macOS Sequoia의 Metal 3802 기반 GPU에서 작동해야 합니다.
MetallibSupportPkg는 일반 사용자가 사용하기 위한 것이 아니며, 다음은 개발자를 위한 것입니다.
필요한 종속성을 설치합니다.
python3 -m pip install -r requirements.txt
# Note Xcode is required to be installed for the `metal` and `metal-objdump` utilities
IPSW URL 가져오기:
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
시스템 볼륨에서 Metal 라이브러리를 가져오면 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 >
Metal 라이브러리를 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.