HackiOSがAndroidデバイスとQEMUで完全なiOS 16.5ファームウェアを実行
HackiOSがAndroidとQEMUでiOS 16.5を起動
要点: HackiOSプロジェクトは、AppleのオープンソースXNUカーネル(バージョンxnu-8796.121.2、iOS 16.5)をSnapdragon 778G搭載のAndroidスマートフォンとaarch64 QEMU上で正常に実行し、デバイスをフラッシュすることなく完全に機能するiOS 16.5ユーザースペースを提供します。
プロジェクトが達成すること
- 完全なiOS 16.5スタック: XNUカーネルがlaunchd → backboardd → SpringBoard → アプリを起動し、完全なiOSエクスペリエンスを再現します。
- リポジトリにAppleファイルは含まれません: すべてのiOSバイナリはビルド時にAppleのCDNから取得されます(
ios165/fetch.sh)。 - 2つの展開モード:
- POCO X5 Pro 5G(redwood、Snapdragon 778G) –
fastboot bootで起動。すべてRAM上で実行され、再起動するとAndroidに戻ります。 - QEMU virt aarch64 – 任意のLinuxホストで実行可能、スマートフォンは不要です。
- POCO X5 Pro 5G(redwood、Snapdragon 778G) –
- 研究用であり、ROMではありません: セッションは時間制限があり、カーネルは設定可能な期間後にローダーに制御を返します。
機能のハイライト
| 動作する機能 | まだ機能しない機能 |
|---|---|
| ロック画面、スワイプでロック解除、アイコン付きホーム画面、iOS 16壁紙 | セルラー、Bluetooth |
| システムジェスチャー(ホーム、アプリスイッチャー、戻る)、コントロールセンター | カスタムカーネルでの充電(スマートフォンが放電する) |
| コアアプリ(設定、Safari、写真など)とウィジェット | ほとんどのアプリでのMetalレンダリング(293/456シェーダーが動作) |
| タッチスクリーン(Goodix GT9916)、マルチタッチ、電源/音量キー | App Storeコンテンツ、Apple IDサインイン(Secure Enclaveが欠落) |
| 最大8つのCPUコア、ロック画面まで約20秒 | ビデオ/Live Photoキャプチャ |
| Mesa/freedreno経由のAdreno 642L GPU(CoreAnimation用のOpenGL ES) | – |
| Wi-Fi(WCN6750、ath11k)– 55–90 Mbit/s | – |
| オーディオ、マイク、フロント/リアカメラ(HEIC写真) | – |
永続的なiOSデータ(var_store=1 ufs_write=1) |
– |
| Sileo + Procursusパッケージマネージャー、SSH、tweaks | – |
QEMUでのクイックスタート(カーネルビルド不要)
# 依存関係のインストール(Archの例)
sudo pacman -S --needed git python 7zip lz4 gcc qemu-system-aarch64 qemu-ui-gtk edk2-aarch64
# リポジトリのクローンとワークスペースのセットアップ
git clone https://github.com/oosexgang/hackios-xnu-kernel.git hackios
cd hackios
common/setup.sh # hackios-xnu-userlandを取得、ホストをチェック
ios165/fetch.sh # 約7.4 GBのIPSWをダウンロード、必要な部分を抽出
common/build.sh qemu-virt # APFSイメージをビルド(カーネルはプリビルドを使用)
common/run.sh qemu-virt # 約20分のQEMUセッションを起動
- ロック画面は2〜3分後に表示されます。
- マウスの左ボタンを押し続けると指をシミュレートします。
H= ホーム、L= ロック、矢印キー = 音量、F11(長押し) = 5本指ジェスチャー。 - スクリプト入力の例:
qemu/touch.py swipe 0.5 0.985 0.5 0.3 250 qemu/touch.py tap 0.615 0.71 qemu/touch.py key home qemu/screendump.sh shot.png - ホストのUEFIファームウェアを使用:
QEMU_EFI=/usr/share/AAVMF/AAVMF_CODE.fd QEMU_VARS=/usr/share/AAVMF/AAVMF_VARS.fd。
POCO X5 Pro 5G(redwood)での実行
- ブートローダーのロックを解除し、
adb/fastbootをインストールします。 - READMEの説明に従って、スマートフォンからベンダーファームウェア(GPU、Wi-Fi、オーディオ、ハプティクス)を取得し、
fw-*ディレクトリをワークスペースの隣に配置します。 - ブートイメージをビルドして実行:
common/build.sh redwood GL=1 # out/redwood-boot.imgを生成 common/run.sh redwood 900 # 15分のセッション - または、
xlヘルパーを使用して細かい制御を行う:
ローダーは完全にRAM上で実行され、スマートフォンのストレージに永続的な変更は加えられません。./xl enter # カスタムUEFIローダーをfastboot boot ./xl ramdisk # 2.5 GBのiOSシステムイメージをRAMにアップロード XL_SECS=900 XL_CMDLINE="touchscreen=1 cpufreq=1 bootcpu=7 cpus=8 gpu=1 wifi=1 adsp=1" ./xl run ./xl screenshot shot.png ./xl reboot # Androidに戻る
プリビルドブートイメージ
各リリースにはhackios-redwood-boot.imgが同梱されており、カスタムローダーを含むすぐに起動可能なUEFIイメージです。Appleバイナリは含まれていません。ios165/fetch.shでローカルにiOSシステムイメージを生成する必要があります。
カーネルとローダーをソースからビルド
- カーネル: theos(
~/theos)、cctools、iPhoneOS16.5.sdk、clang、lld、python、perlが必要です。xnu/README.mdに従い、xnu-build.shを実行します。 - ローダー:
xnuloader/build.shでビルド(通常のclang + lld-link、EDK2不要)。 - UEFI: Project Siliciumから移植。プリビルドバイナリは
prebuilt/uefiにあります。 - イメージ:
REST=1 userland/build.shでAPFSコンテナとrootfsを作成します。 - 再ビルド後は、
tools/update-prebuilt.shを実行してprebuilt/ディレクトリを更新します。
他のAndroidデバイスへの移植
- デバイスプロファイルを生成:
common/new-device.sh <codename> path/to/device.dtb。 - 生成された
common/devices/<codename>.confを編集して、UEFIプラットフォーム、ローダーパラメータ、ドライバの置き換えを記述します。 docs/PORTING.mdの詳細な手順に従います(UEFIポート、カーネルドライバパッチ、ファームウェア抽出)。
HackiOSの内部動作
fastboot boot → UEFI (Mu-Silicium) → xnuloader (EFIアプリ)
│ 常駐し、USBリンク、ウォッチドッグ、カーネルログを提供
▼
XNU (BCM2837設定に基づく、redwood/QEMU用にパッチ適用)
├─ GICv3、タイマー、ビデオコンソール、ローダーへの復帰パス
├─ RAM内のAPFSイメージ、/private/varと/tmp用のramfs
├─ Mini-crypto、AMFI & Sandboxスタブ(MACポリシー)
├─ ドライバ置き換え: IOSurface、IOMobileFramebuffer、AppleKeyStore、ネットワークスタック
├─ 入力: /dev/redwood-touch (Goodix GT9916) または virtio-input
├─ GPU: Mesa/freedreno経由のAdreno 642L、Wi-Fi: ath11k (LinuxKPI)、サウンド: ADSP/virtio-sound
▼
launchd → logd、notifyd、cfprefsd、runningboardd、backboardd、SpringBoard、アプリ
└─ DYLD_INSERT_LIBRARIESで注入されたライブラリが仮想HIDサービスとObjCメソッドスワップを提供
iOSバイナリは変更されません。欠落している機能は、カーネルドライバのシムまたは注入されたユーザースペースライブラリによって提供されます。
デバッグと開発ワークフロー
- セッションログ: QEMUのstdoutまたはスマートフォンでは
logs/HHMMSS-run.log。 - 自動アプリ起動:
RC_JOBS=rc.jobs.tour REST=1 userland/build.shで、最初のページのすべてのアプリを開くイメージをビルドします。 - クラッシュ診断:
userabort:(プロセスがabort()を呼び出した)またはusertrap:(systrace=1付き)を探します。 - ライブスタックトレース(QEMU):
qemu/touch.py stacks NAME、次にqemu/symstack.py LOG NAME(ipswツールが必要)。 - 信頼性の確認:
docs/checks.mdで既知の誤検出を確認します。
コミュニティの反応(Hacker Newsのコメント)
"ウェブサイトは見ていてかなり吐き気がするので、GitHubリンクを使うことにしました。しかし、QEMU、POCO X5 Pro 5G、そしていくつかのXiaomiデバイスでも動作するのはかなり印象的です。" – aghuang
"任意のAndroidスマートフォンで実行できるGSIを作れますか?" – Velocifyer
"ついに誰かがこれをやった、すごい!2026年はますますクレイジーになっていく。" – pmkary
"なぜこれらのデモはすべてiOS 16で止まっているのですか?iOS 17で何が変わったのですか?" – bigwheels
"素晴らしい仕事です。これはmacOSの古いHackintoshのようなもので、素晴らしいです。これでApp Storeにアクセスできますか?Androidにはそれに必要な一意の識別子がないと思います。" – dj_io
コメントは、興奮、より広いデバイスサポートへの好奇心、App Storeアクセスと将来のiOSバージョンに関する質問を強調しています。
ライセンス
- リポジトリ自体はApple Public Source License 2.0(APSL 2.0)の下にあります。XNUの派生作業を含むためです。
- サードパーティコンポーネントは元のライセンスを保持します(ath11kはBSD-3-Clause-Clear、FreeBSD LinuxKPIはBSD-2-Clause、libzbitmapとlibdeflateはMIT、AOSP UEFIヘルパーはApache-2.0)。
- iOSバイナリは配布されません。
ios165/fetch.shはAppleのCDNから直接ダウンロードします。
詳細情報の入手先
- ソースコード: https://github.com/oosexgang/hackios-xnu-kernel
- ユーザースペースリポジトリ: https://github.com/oosexgang/hackios-xnu-userland
- ドキュメント:
docs/フォルダにスクリーンショット、移植ガイド、詳細なチェックが含まれています。 - コミュニティチャンネル: Telegramグループ https://t.me/oosexgangdevs
結論
HackiOSは、クローズドソースのドライバをオープンソースの同等品に置き換え、カスタムUEFIローダーで起動することで、iOS 16.5のカーネルとユーザースペースを非Appleハードウェアで実行できることを実証しています。まだ研究プロトタイプであり、セルラー、Bluetooth、完全なMetalサポート、App Store機能が欠けていますが、iOSの実験、クロスプラットフォームテスト、セキュリティ研究の新たなフロンティアを開きます。