Kakehashi - Linux ARM에서 macOS 바이너리를 실행하는 실험적 사용자 공간

1 week ago 15

Kakehashi는 Linux aarch64에서 Darwin Mach-O를 불러와 macOS ARM64 CLI 바이너리를 실행하는 사용자 공간 변환 계층으로, JIT나 명령어 에뮬레이션 없이 동작함 독립형 libSystem을 매핑하고 BSD 시스템 호출을 Linux로 변환하며, clang 프로브와 Darwin용 7zz, curl, 스레드 실행을 지원함 실제 실행은 Linux aarch64와 4KiB·16KiB 페이지 환경이 필요하지만, 바이너리 검사와 dry-load는 macOS를 포함한 모든 호스트에서 가능함 약 8천 파일·240MiB를 압축한 테스트에서 Darwin 7zz는 네이티브 Linux 대비 약 5.2배 느렸지만, 파일 수가 적은 압축 중심 작업에서는 격차가 약 1.1~1.2배였음 목표는 macOS 전체 호환이 아니라 저렴한 Linux ARM CI에서 Darwin CLI 도구를 실행하는 것이며, GUI·코드 서명·공증·Xcode UI 테스트와 Apple 프레임워크 의존 작업은 지원 범위가 아님 작동 방식과 지원 환경 Kakehashi는 macOS ARM64 바이너리를 Linux aarch64에서 실행하는 CLI 중심 변환 계층임 Darwin Mach-O를 파싱·매핑·실행함 독립형 libSystem.B.dylib을 제공함 Darwin BSD 시스템 호출을 Linux 환경에 맞게 처리함 게스트 명령어는 CPU에서 네이티브로 실행하며 JIT를 사용하지 않음 라이브 실행은 베어메탈, VM, Colima·Docker를 포함한 Linux aarch64에서 지원함 dry-load와 바이너리 검사는 macOS를 포함한 모든 호스트에서 가능함 요구 사항은 Rust 1.88 이상이며 4KiB 컨테이너 페이지와 Asahi 계열의 16KiB 페이지를 지원함 kh install 7zip과 kh install curl에는 선택적으로 curl 또는 wget, tar가 필요함 현재 실행 가능한 도구 Docker·Colima와 UTM의 Linux aarch64 환경에서 실제 Darwin용 7-Zip 7zz 와 curl을 검증함 7zz는 다음 작업을 지원함 도움말과 버전 확인 아카이브 생성·검사·목록 조회·압축 해제 -mmt=4를 사용한 멀티스레드 LZMA2 압축 정상 테스트 결과는 Everything is Ok와 종료 코드 0임 curl은 다음 경로를 검증함 버전 출력 HTTP 응답의 파일 저장과 표준 출력 OpenSSL과 bot...

Read Entire Article