Repo tên hakios-xnu-kernel của tác giả oosexgang đang hút sự chú ý trên GitHub: 1.895 sao. Nội dung khá dị: chạy kernel XNU mã nguồn mở của Apple, kèm boot loader và driver tự viết, trên một chiếc điện thoại Android dùng SoC Qualcomm, rồi boot luôn user space gốc của iOS 16.5 lên trên.
Repo này làm gì, giải quyết vấn đề gì
Cụ thể hơn: HakiOS lấy kernel XNU bản mở (xnu-8796.121.2), vá thêm code riêng, viết boot loader riêng (thư mục xnuloader/) và driver riêng (trong xnu/files/), rồi chạy toàn bộ trên điện thoại Android. Phía trên kernel là user space stock của iOS 16.5: launchd, backboardd, SpringBoard, và các app. Cùng một bộ đó cũng chạy được trong QEMU (máy ảo virt, kiến trúc aarch64) trên PC Linux.
Điểm mấu chốt: không flash gì cả. Loader được đưa vào RAM qua fastboot boot, hệ thống sống trong RAM suốt một phiên, reboot là điện thoại quay về Android của nó. Tác giả gọi đây là “research bench”, không phải ROM.
Chiếc máy đầu tiên là POCO X5 Pro 5G (mã redwood, Snapdragon 778G). Kernel không hardcode gì về máy này: địa chỉ, interrupt, power rail, firmware đều lấy từ device tree và Android của chính máy đó. Nên port sang máy Qualcomm khác chỉ là thêm một thư mục dưới devices/, không phải viết lại từ đầu. Nghe thì đơn giản, nhưng ai từng vật lộn với device tree sẽ biết câu này đáng giá cỡ nào.
Vì sao nó đang hot
1.895 sao cho một repo tạo ngày 2026-10-22 và cập nhật ngày 2026-10-28, tức là chỉ vài ngày. Con số đó nói lên khá nhiều: cộng đồng jailbreak và reverse engineering iOS vẫn rất đông, và đây là thứ họ chờ từ lâu. Chạy user space iOS trên phần cứng không phải Apple là bài toán mà các dự án như checkra1n hay palera1n từng chạm tới ở mức bootrom, còn ở đây là chạy XNU với driver tự viết trên SoC Qualcomm.
Điều khiến người ta bấm sao không chỉ là độ khó. Đó là cách tác giả xử lý phần pháp lý và phân phối. Repo chỉ chứa code và dữ liệu của tác giả: patch lên XNU (APSL 2.0), driver, boot loader, userland, tool, script build, và thư mục prebuilt/. Không có một file nào của iOS: không binary, image, cache, font, ảnh, screenshot. Người dùng tự build system image từ IPSW iOS 16.5, mà sysimage/fetch.sh tải giúp từ server công khai của Apple, không decrypt, không circumvent gì. Firmware của máy (GPU, Wi-Fi, audio DSP, modem, haptics, camera) thì pull từ chính điện thoại của bạn vào fw-*/, và git ignore thư mục đó. Keys, certificate, activation, mọi thứ giúp máy giả làm iPhone với server Apple: không có, và tác giả nói thẳng việc đăng nhập tài khoản Apple ở đây là bất khả thi, cũng không phải mục tiêu.
Cách làm này khác hẳn kiểu phát hành ROM đóng gói sẵn. Nó buộc người dùng phải có máy thật, có IPSW hợp pháp, và chấp nhận rằng đây là bàn thí nghiệm.
Cài đặt và dùng thử nhanh
Đường dễ nhất là QEMU. Yêu cầu: Linux x86-64, khoảng 12 GB dung lượng đĩa, 7-Zip 23 trở lên, lz4, qemu-system-aarch64, edk2-aarch64.
git clone https://github.com/oosexgang/hakios-os.git hakios
cd hakios
sysimage/fetch.sh # the iOS 16.5 IPSW from Apple's servers, the needed parts unpacked (7.4 GB)
REST=1 userland/build.sh # the APFS images: userland/root.apfs and userland/system.apfs
mkdir -p logs
qemu/run-ios.sh 1200 -display gtk > logs/qemu.log # a 20-minute session
Lock screen hiện sau khoảng hai đến ba phút. Chuột giữ nút là ngón tay, H là Home, L là nút nguồn, phím mũi tên lên xuống chỉnh volume.
Trên điện thoại thật (cần máy có port trong devices/poco-x5-pro/, boot loader đã unlock, có adb và fastboot trên PC, cùng firmware của máy):
devices/poco-x5-pro/pull-firmware.sh # GPU, Wi-Fi, audio/battery, haptics, modem, cameras -> fw-*/
./xl enter # Android -> fastboot -> our loader in RAM
./xl ramdisk userland/system.apfs # the system image into the phone's RAM (~80 s), once per loader session
XL_SB_DELAY=8 XL_SECS=600 \
XL_CMDLINE="bootcpu=7 cpus=8 cpufreq=1 ufs=2 touchscreen=1 gpu=1 adsp=1 sound=4 wifi=1 haptic=5 modem=1" \
./xl run # a 10-minute session, the log goes to logs/
./xl reboot # back to Android
Có một lệnh gộp cho tiện: tools/modem-cycle.sh "ARGS" SECS, chạy hết quy trình rồi trả máy về Android. Vài kernel argument nên biết: cpus=8 bootcpu=7 cpufreq=1 bật đủ 8 nhân và xung nhịp, gpu=1 render trên Adreno qua OpenGL ES của Mesa (image phải build với GL=1, firmware trong fw-gpu/), adsp=1 sound=4 mic=4 bật audio DSP kèm loa và micro, var_store=1 ufs_write=1 giữ /private/var qua các lần reboot. Danh sách đầy đủ nằm trong docs/ru/notes.md.
Build từ source thì nặng hơn: kernel cần theos với cctools và iPhoneOS16.5.sdk trên Linux, hoặc Xcode/cctools trên macOS. Lệnh là xnu/apply.sh rồi xnu-deps/setup.sh, sau đó ./xnu-build.sh -j8 -k. Boot loader build bằng xnuloader/build.sh (clang + lld-link, EFI application không cần EDK2). Một chi tiết đáng để ý: file xnuloader/identity.h, chứa các thuộc tính để iOS nhận diện đây là iPhone nào, không nằm trong repo. Nó được sinh lúc build bằng xnuloader/mkidentity.sh từ device tree trong IPSW của chính bạn.
Ai nên dùng, và dùng để làm gì
Đây không phải thứ để cài lên máy hằng ngày. Nó dành cho người làm research về kernel và driver, người muốn thử port một hệ điều hành sang phần cứng mới, hoặc dev muốn có một môi trường để debug user space iOS mà không đụng tới máy iPhone thật. Sinh viên học hệ điều hành cũng có thể dùng nhánh QEMU để nghịch, vì ở đó không có rủi ro gì với phần cứng.
Trạng thái hiện tại, nhìn vào bảng trong README: lock screen, home screen, Control Center, gesture, app stock chạy được; touch và multitouch, nút nguồn và volume hoạt động; đủ 8 nhân CPU với nhân big chạy 2.4 GHz; GPU render trên Adreno; loa và micro; mức pin hiển thị trong UI qua audio DSP; rung; Wi-Fi có radio, driver và kết nối mạng; Camera.app chụp được; /private/var giữ qua reboot; Sileo, package Procursus và SSH vào máy đều chạy. Phần chưa xong: cellular (modem boot được, thấy mạng, SIM bind, IPA data path và en1 đã có, nhưng registration và data session còn đang làm, xem docs/cellular.md), Bluetooth, sạc dưới kernel này, và Metal (có shader compiler nhưng chưa có Metal). Tài khoản Apple thì không, vì không có Secure Enclave.
So sánh ngắn
Nếu bạn từng nghe tới các dự án chạy iOS user space trên phần cứng không phải Apple, điểm khác ở đây là tác giả công khai toàn bộ đường đi: patch XNU, driver, loader, tool, và cách xử lý phần nhạy cảm (identity, firmware) bằng script sinh tại chỗ thay vì đóng gói sẵn. Còn so với việc dùng máy ảo hay simulator của Apple thì đây là kernel thật trên phần cứng thật, nên hành vi driver và interrupt sát với thực tế hơn nhiều.
Ưu điểm và những chỗ cần cân nhắc
Ưu điểm rõ nhất: kiến trúc port sạch. Kernel không biết trước về máy nào, mọi thứ đến từ device tree, nên thêm máy mới là thêm thư mục. Cách phân phối cũng gọn: repo chỉ chứa code của tác giả, phần của Apple và của vendor thì người dùng tự lấy. Có sẵn prebuilt/ cho ai chỉ muốn chạy thử.
Hạn chế thì phải nói thẳng. License ghi là “không rõ” trên GitHub, dù trong README có nhắc patch XNU theo APSL 2.0. Đây là điểm cần kiểm tra kỹ trước khi dùng cho mục đích khác ngoài nghiên cứu cá nhân. Repo mới vài ngày tuổi, tài liệu có nhưng nằm rải rác trong docs/ và một phần bằng tiếng Nga (docs/ru/notes.md), nên đọc sẽ hơi mệt. Việc build cần IPSW 7.4 GB và một đống dependency, không phải kiểu clone về là chạy. Và quan trọng: mỗi phiên chạy là một lần đưa máy vào fastboot, đừng làm trên máy đang là máy chính.
Repo ở đây: oosexgang/hakios-xnu-kernel. Nếu bạn tò mò về cách một kernel không thuộc về phần cứng vẫn boot được trên nó, bảng trạng thái với 8 nhân CPU ở 2.4 GHz và Camera.app chụp được ảnh là lý do đủ để bỏ 20 phút chạy thử trong QEMU.
