Snapintosh là một EL2 hypervisor viết bằng Python, kèm toolchain, cho phép boot macOS 27 trên chiếc ASUS Zenbook A16 dùng Qualcomm Snapdragon X2 Elite (X2E-96-100). Nói cách khác: nó chạy kernelcache gốc của Apple (J700/T8140) mà không sửa gì, rồi giả lập đủ các “hợp đồng nền tảng” mà kernel đó đòi hỏi để nghĩ rằng nó đang chạy trên Apple silicon.
Nó làm gì, cụ thể
Kernel macOS khi boot sẽ gọi vào SPTM và TXM, hai thành phần monitor của Apple. Snapintosh đứng ở EL2 để trả lời các call đó. Nó cũng dịch page table 16 KiB của kernel sang 4 KiB cho phần cứng thật (thư mục shadow/), và mô hình hoá các thiết bị Apple mà kernel tìm kiếm: AIC, ANS2 NVMe, DART, cùng ring GPU và SMMU.
Phần đồ hoạ là chỗ đáng nói nhất. Không có đường render bằng phần mềm, CPU hay paravirtual. GPU Adreno X2-90 của chính chiếc laptop chạy thật, qua ba mảnh:
- AdrenoMetal.bundle: plug-in driver Metal.
- AdrenoX2: IOGPU kernel extension, kèm AdrenoDisplay điều khiển panel trong máy.
- air2ir3: compiler dịch shader từ AIR (IR của Metal) sang ir3 của Mesa cho Adreno.
Ngoài ra còn có SnapI2CHID (driver bàn phím và touchpad I2C-HID), phần Wi-Fi QCC2072 đang làm, và NVMe qua một controller lưu trữ Apple được emulate. Snapintosh chạy cặp với q1n1, một proxy UEFI EL2 fork từ m1n1 của Asahi Linux: q1n1 nhận máy ở EL2 sau UEFI, mở link USB-C NCM sang một máy Mac host, và mọi thao tác boot, upload, thu log đều đi qua sợi cáp đó.
Vì sao 593 sao trong ngày đầu
Repo tạo ngày 22/10/2026 và cập nhật cùng ngày, tức là mới toanh. Con số 593 sao đến rất nhanh, và lý do dễ hiểu: đây là một trong số ít nỗ lực chạy macOS trên ARM khác Apple mà đi tới mức có desktop với GPU acceleration thật, không phải chỉ boot tới console.
Bối cảnh đáng để ý: Asahi Linux đã làm việc tương tự với Apple silicon theo hướng ngược lại (Linux trên Mac). Snapintosh làm macOS trên Qualcomm. Về mặt kỹ thuật, việc thuyết phục kernel Apple chấp nhận một nền tảng lạ khó hơn nhiều so với việc viết driver Linux, vì kernel đó không có ý định chạy ở nơi khác. Cái hay là tác giả không patch kernel, mà dựng lại đúng các contract ở EL2.
Thêm một điểm khiến dân dev chú ý: toàn bộ monitor viết bằng Python, language chính của repo. Một hypervisor Python nghe lạ, nhưng với mục đích thử nghiệm và debug thì hợp lý.
Cài và chạy thử
Không có bản cài một phát. Bạn cần đúng phần cứng trước đã. Theo README, yêu cầu là:
- ASUS Zenbook A16 với Snapdragon X2 Elite X2E-96-100 (UX3607OA). Không hỗ trợ máy khác, vì bảng thiết bị, clock và địa chỉ register đều gắn với model này.
- Một máy Mac chạy macOS 27, nối với A16 qua USB-C.
- Nên cắm điện. Tool sẽ từ chối boot hoặc ghi SSD nếu pin dưới ngưỡng.
Về môi trường build, README liệt kê: Mac có Xcode với macOS 27 SDK, Kernel Debug Kit cho build 26A428 đặt tại /Library/Developer/KDKs/KDK_27.0_26A428.kdk, Python 3, Homebrew LLVM, Meson và Ninja cho shader compiler, cùng một checkout q1n1 nằm cạnh repo (../q1n1).

Repo không ship binary hay firmware của Apple, Qualcomm hay ASUS. Bạn tự lấy:
python3 tools/fetch-ipsw.py [destination]
python3 tools/extract-firmware.py j700ap
Lệnh đầu tải restore image macOS 27 (IPSW) từ Apple, lệnh sau extract bộ boot J700 gồm kernelcache, device tree, SPTM, TXM. Không có nó thì không có gì chạy. Ngoài ra cần Kernel Debug Kit 26A428 từ Apple Developer Downloads, microcode GMU và SQE của Adreno (gen80100_gmu.bin, gen80100_sqe.fw) cùng firmware Wi-Fi QCC2072 từ linux-firmware, và board file Wi-Fi bdwlan_qcc2072_1p0_ncm820A.elf lấy từ gói driver WLAN Windows của ASUS cho đúng model này. Tool kiểm từng file bằng SHA-256 pinned.
Các bước build chi tiết nằm trong docs/BUILDING.md. README không đưa lệnh build đầy đủ, nên đừng mong copy paste một phát là xong.
Ai nên quan tâm
Nếu bạn có đúng chiếc Zenbook A16 kia và thích nghịch, đây là thứ để thử trong một buổi chiều cuối tuần. Nếu bạn làm việc với hypervisor, page table, hay viết driver GPU cho Adreno, repo này là tài liệu tham khảo sống: cách mô hình hoá SPTM/TXM, cách shadow page table 16K sang 4K, cách viết Metal driver plug-in cho phần cứng không phải Apple, cách compiler AIR sang ir3.
Còn nếu bạn chỉ muốn “cài macOS lên laptop Snapdragon” thì khoan. Danh sách hỗ trợ phần cứng rất ngắn: audio, camera, Bluetooth, sleep và màn hình ngoài đều chưa chạy. Wi-Fi QCC2072 mới scan, kết nối WPA2, DHCP và ping được qua harness proxy từ Mac; vào Wi-Fi từ menu macOS thì chưa. Storage thì ổn: macOS cài và boot từ NVMe trong máy.
So với các hướng khác
Hướng quen thuộc nhất để chạy macOS trên phần cứng không phải Apple là Hackintosh, nhưng đó là chuyện của x86. Với ARM, m1n1 và Asahi Linux đi theo chiều ngược lại: đưa Linux lên Apple silicon. Snapintosh đứng ở phía đối diện và khó hơn, vì phải làm kernel Apple hài lòng thay vì viết driver cho kernel mở. Tôi không biết dự án nào khác làm được mức tương đương trên Snapdragon X2, nên không so sánh thêm.
Ưu và nhược
Điểm mạnh rõ: không patch kernel Apple, GPU chạy thật không có đường render phần mềm, tài liệu kiến trúc có vẻ tử tế (docs/ARCHITECTURE.md, docs/STATUS.md, docs/BUILDING.md), và repo chia thư mục gọn gàng theo từng tầng. Việc kiểm SHA-256 cho firmware là chi tiết nhỏ nhưng cho thấy tác giả biết mình đang làm gì.
Điểm yếu thì nhiều và tác giả nói thẳng: phần mềm thử nghiệm, viết cho đúng một model laptop. Interaction dùng được nhưng chưa mượt, mục tiêu trước mắt là 60 Hz ổn định rồi mới tính 120 Hz của panel. License ghi là “không rõ”, đây là vấn đề thật nếu bạn định dùng cho việc gì đó ngoài nghịch cá nhân, vì repo phụ thuộc vào phần mềm Apple mà mỗi người phải tự lấy và tự chịu theo điều khoản của Apple.
Một điểm cần lưu ý về quy trình: bạn cần một máy Mac chạy macOS 27 làm host, cần KDK đúng build, cần checkout q1n1 bên cạnh. Chuỗi phụ thuộc này dài, và bất kỳ mắt nào lệch version là dừng. Đây không phải kiểu repo clone về là chạy.
Với 593 sao trong ngày đầu, Snapintosh nhiều khả năng sẽ được chú ý tiếp vì nó chạm vào một câu hỏi mà nhiều người tò mò: kernel Apple cần tối thiểu những gì để chịu boot trên một SoC khác. Câu trả lời nằm trong compat/, và đó là phần đáng đọc nhất kể cả khi bạn chẳng có chiếc A16 nào. Repo: Acelogic/Snapintosh.
