「ROM焼き不要」でAndroid端末上にiOS 16.5を起動——HackiOSが可視化したOSの真の壁

iOSAndroidXNUオープンソースリバースエンジニアリング

データソース:HackiOS プロジェクトリポジトリ + HN 議論

Android端末を起動すると、画面にはiOS 16.5が映る

手元にあるXiaomi POCO X5 Pro 5Gの画面には、見慣れたiOS 16.5のロック画面、ジェスチャー操作、コントロールセンターがそのまま表示されている。「設定」の「一般」を開くと、機種名は「iPhone X」と認識されている。ストレージのパーティションを書き換えたわけでも、ROM焼きを行ったわけでもない。システム全体が fastboot boot を介してRAM上にロードされているため、端末を再起動するだけで元のAndroidに戻る。

これを実現したのがオープンソースプロジェクト「HackiOS」だ。Appleが公開しているXNUカーネル(iOS 16.5に該当する xnu-8796.121.2)をSnapdragon環境へ移植し、公式IPSWから抽出した未変更のiOS 16.5ユーザ空間を起動した。launchd、backboardd、SpringBoard が順次立ち上がり、アプリも起動する。10月22日の公開からわずか1日で489スター、93フォークを獲得した。

このプロジェクトが実際に暴き出した論点は、「iOSが移植できるか否か」よりもはるかに本質的だ。モバイルOS同士を隔てる壁の正体はカーネルではなく、閉鎖的なドライバとファームウェアの階層にある。

Android端末上で動作するiOS 16.5のホーム画面 図:Android端末上で動作するiOSのホーム画面。出典:HackiOSリポジトリ

カーネルは最初からオープンソースだった——壁はそこにはない

XNUカーネルは2000年以来、Appleによってソースコードが公開され続けている。macOSやiOSのカーネルは誰でも閲覧可能であり、Apple Public Source License(APSL)のもとで改変や再配布が認められている。HackiOSのリポジトリにはAppleのコードは1行も含まれておらず、ユーザ空間は利用者が公式ファームウェアパッケージから自ら抽出する形態を取ることで、法的な配布問題を回避している。

もしOS間の壁がカーネルによって築かれていたなら、この試みは20年前に実現していたはずだ。長年誰も成し遂げられなかった理由は極めてシンプルだ。カーネルが起動しても、ハードウェアと対話するにはドライバが必要となる。しかしApple Siliconや独自ペリフェラルのドライバはすべてAppleが独占するプロプライエタリなバイナリであり、公開も利用許諾もされていない。

HackiOSは、この層をまるごと差し替えるアプローチを取った。起動を担う独自のEFIローダーを開発し、独自ドライバでAppleの閉鎖バイナリを代替、UEFIを対象端末に移植した上で、Linux用Wi-Fiドライバを動かす互換層を追加した。LinuxコミュニティがSnapdragon向けに整備したドライバ資産を、互換層を介してiOS環境に貸し出す形だ。ブートチェーンは明確である。fastboot boot からProject Silicium由来のUEFIが立ち上がり、UEFIが xnuloader というEFIアプリを実行、その後自作カーネルへと制御が渡る。

カーネルはオープンソースを流用できるが、ドライバは自力で1層ずつ再構築しなければならない。壁の厚みは、まさにここで可視化された。

「設定」の一般画面で機種名がiPhone Xと表示されている 図:「設定」>「一般」画面。機種名はiPhone Xと表示。出典:HackiOSリポジトリ

動く機能、動かない機能、そして象徴的な1つのディテール

動作する範囲は予想を上回っている。ロック画面、システムジェスチャー、コントロールセンター、設定アプリ、そして設定内の一連のアプリは起動する。READMEのスクリーンショット一覧には、ホーム画面、時計、カレンダー、ミュージック、ウォレット、マップ、メッセージが含まれている。App Storeのタブ描画も行われるが、端末内にSecure Enclaveが存在しないため、コンテンツの取得やApple IDのログインは完了しない。

一方で、動かない機能のほうが示唆に富んでいる。セルラー通信(モバイル通信)とBluetoothは動かない。その理由は前述の通りだ。ベースバンドやBluetoothファームウェアのハンドシェイクは閉鎖チェーンの最深部に位置し、互換レイヤーでは迂回できない。この2つの機能こそが、「スマートフォン」と「UIが動く開発ボード」の分水嶺となっている。

さらに興味深いディテールがある。彼らのカーネル下では充電が機能せず、端末は放電し続ける。USB給電管理は別のクローズドなファームウェアプロトコルに依存しており、自作ドライバがまだその制御に届いていないためだ。給電ケーブルを挿していてもバッテリー残量が減り続けるスマートフォンは、アーキテクチャ図以上に「ドライバ層のギャップ」を如実に物語っている。

コントロールセンター 図:コントロールセンター。出典:HackiOSリポジトリ

カメラ周りの難関もクリア

コメント欄で最も注目を集めた周辺機器の1つがカメラだった。モバイルLinuxのエコシステムにおいて、カメラは長年屈指の難関として知られてきた。しかしREADMEの機能表では、Camera.appのフロント/リアカメラ、プレビュー、オートフォーカス、HEIC写真撮影のすべてが「利用可能」に分類されている。GPUディスプレイまわりのパイプラインを制覇したことで、カメラの統合も突破された。

もう1点、開発者たちの目を引いたのがコミットログの署名だ。コミット履歴には Co-Authored-By: Claude Opus 5.5 の記述がある。READMEにも明記されている通り、このプロジェクトは日常的に使うROMではなく、調査・研究用の「ベンチ」として設計されている。1回のセッションは指定秒数のみ持続し、終了後はカーネルが初期状態にリセットされ、ログもクリーンに保たれるため、自動化AIエージェントが一定の境界内で作業を進めやすい。10月22日の公開前はデモ動画のみでソースコードがなく、コミュニティから検証可能性を巡って懐疑論が寄せられていたが、コードが公開されるや否や批判は止んだ。

開発チーム「OOSEX GANG」は4名で構成されている。@oodze が主導し、@netusd、@wannqn、@hxfuxyyXD が参加した。4人の開発者とAIコーディングツールの組み合わせが、過去には専任のリバースエンジニアリング部隊でも困難だった成果を叩き出した。

ベンダーの語る「OSの壁」を実測した価値

これまで長年にわたり、端末ベンダーはiOSとAndroidが根本から断絶した世界であるかのように語ってきた。しかしHackiOSが提示した実像はこうだ。XNUはオープンソースの成果を使えば動き、ユーザ空間は公式ファームウェアから抽出すれば立ち上がる。本質的な隔離障壁は、ドライバとファームウェアの層にしか存在しない。そしてその障壁を構成しているのは、膨大な工数と法的リスク、すなわち「プロプライエタリ」という囲い込みそのものだ。

この構造は、なぜ本作が「ROM焼きを一切伴わない」のかという理由にも直結している。システム全体が揮発性メモリ上で稼働し、端末のパーティションには一切触れない。ユーザー端末への文鎮化リスクはゼロであり、ベンダーのビジネス上のロックインに対しても直接の脅威にはならない。モバイル通信が使えない端末を常用機にすることはできず、商業的な壁は無傷のままだ。打ち崩されたのは技術的な神話の壁であり、ビジネスモデルの壁は1枚のレンガも崩れていない。

これこそがHackiOSの価値だ。これは製品ではなく、これからも製品を目指すものではない。モバイルOSの主導権争いがカーネルではなく、誰も公開しようとしないドライバとファームウェアの層で決まっていたことを白日の下に晒した。次に待つべき節目はただ1つ、セルラー通信がいつ開通するかだ。その日を迎えたとき、この放電し続けるPOCOは真の意味でiPhoneへと変貌を遂げる。

参考リンク:

  • HackiOS リポジトリ(README、コミットログ、スクリーンショット)
  • Hacker News ディスカッション(item?id=50196718)