iPhone 11のQEMUエミュレーション実装
(github.com/ChefKissInc)- QEMUは多様なアーキテクチャのマシンとユーザースペースをソフトウェアでエミュレーションする
- 最近、QEMUベースのApple SiliconおよびiPhone 11エミュレーションプロジェクトが公開された
- QEMUは動的変換を用いた優れた性能と、KVMやXenなどのハイパーバイザー連携機能をサポートする
- Linux、OS-X、Windowsなど複数のシステムで利用でき、オープンソースの貢献プロセスがよく整備されている
- ドキュメント化とコミュニティの支援が活発で、バグトラッキングとパッチ提出が効率的に管理されている
オープンソースQEMUとApple Siliconエミュレーションプロジェクトの紹介
QEMUは汎用のオープンソースのマシンおよびユーザースペースエミュレーターであり、仮想化ツールでもある。Apple SiliconおよびiPhone 11のエミュレーション向けプロジェクトがQEMUベースで進められており、他の仮想化ソリューションと比べて拡張性、コミュニティ支援、アーキテクチャ間の互換性など、さまざまな利点を提供する。
QEMU概要
- QEMUはフルシステムエミュレーション機能により、ハードウェア仮想化なしで多様なマシンをソフトウェア的に動作させる
- **動的変換(dynamic translation)**技術を活用してエミュレーション性能を高める
- Xen、KVMとの統合により、ハイパーバイザーレベルのハードウェア支援が可能
- 直接的なCPUエミュレーションにより、デバイス間でのOS移植性やテストが可能(例: ARMv7 → x86_64環境)
- ユーザースペースAPI仮想化により、異種アーキテクチャ環境間でバイナリを直接実行できる
主な活用例と特徴
- ユーザーがコマンドラインオプションを通じて詳細な設定や動作方式を直接制御できる
- oVirt、OpenStack、virt-manager、libvirtなどの高水準オープンソース管理レイヤーとの統合用途にも活用される
- 安定したコマンドラインインターフェースおよびモニターAPIを提供する
- ソースコード全体はGNU GPL v2ライセンスで配布されている
ドキュメント
- 公式ドキュメントはWebサイト(https://www.qemu.org/documentation/)でオンライン提供されている
- 最新の開発版に関するドキュメントはソース内の docs/ フォルダーおよびSphinxツールで生成される
ビルド環境
- QEMUは最新のLinux、OS-X、Win32(Mingw64 toolchain)、その他のUNIX環境でマルチプラットフォームビルドをサポートする
- 中核となるビルドフローは configure と make の段階で構成される
- 各プラットフォーム別のビルド方法はQEMU Wiki(https://wiki.qemu.org/Hosts/Linux など)を参照できる
パッチ投稿ガイド
- QEMUのソースはGitバージョン管理システムで運用されている
- パッチ投稿時には git format-patch と git send-email の使用が推奨される
- すべてのパッチにはSigned-off-by行を必ず含める必要があり、開発者スタイルガイド(https://www.qemu.org/docs/master/devel/style.html)に従う必要がある
- git-publish ユーティリティにより、反復的かつ大規模なパッチ投稿手順を簡素化できる
- パッチごとのバージョン(v1, v2)管理とあわせて、シリーズの追跡も容易に行える
バグ報告
- GitLabのイシュートラッカーによる公式バグ報告窓口を運用(https://gitlab.com/qemu-project/qemu/-/issues)
- パッケージベースのディストリビューションを利用している場合は、そのOSベンダーのトラッカーへ先に報告することが推奨される
- QEMU Wikiでは、バグレポートの書き方など追加資料も提供されている
変更履歴
- QEMUの履歴や変更内容は公式Wiki(https://wiki.qemu.org/ChangeLog/)またはGit履歴から確認できる
コミュニティ連絡先
- メーリングリスト(qemu-devel@nongnu.org)、IRC(#qemu, irc.oftc.net)など多様なコミュニティチャネルを提供
- コミュニティ参加や初心者向け案内などの追加情報はQEMU Wikiで確認できる
結論
QEMUは多様なアーキテクチャおよびOSのエミュレーション、仮想化、開発/テスト自動化に幅広く活用でき、Apple Silicon(iPhone 11など)もQEMUプロジェクトに含まれる。強力なドキュメント、貢献プロセス、活発なバグ管理、コミュニティ支援が主な長所である。
1件のコメント
Hacker Newsの意見
関連する議論として、upstream リポジトリに関する Hacker News スレッドのリンクと、このプロジェクトに言及した「Emulating an iPhone in QEMU」のリンクが共有されている
きちんと起動して少なくとも Springboard まで到達するという事実は、本当に驚くべきレベルの成果だと思う
最高のエミュレーションハックであり、まさに真の最終ボス級と呼びたい。すべての貢献者に祝意を伝えたい。この達成は Hackintosh プロジェクトにとっても前向きなシグナルだ。今はまだ道のりが長いが、ARM PC が広く普及すれば、効率的なエミュレーションを現実的に期待できる雰囲気がある
trollstore と IPA の復号機能までサポートしているのか気になる
少なくとも一部でも upstream に取り込もうとする試みは必要だと思う。そうでなければ、過去の試みのように結局消えてしまうかもしれないという懸念がある
iPhone 11 を QEMU で最後まで起動させたことに深く感動した。ChefKissInc チームと、ここまで導いてきたすべての貢献者に賛辞を送りたい
初心者として気になるのは、この方法で iOS アプリをインストールできるのかどうかという点
まだ Windows 環境では、qemu の使い方やオプション、引数などの公式ドキュメントが不十分で不便さがある。インターネット上に散らばったさまざまな記事を参照したり、Linux ベースの例を持ってきたりして、ようやく解決している
実際に iOS 全体をエミュレートしているのか、それとも iOS バイナリだけを実行しているのか気になる。そして、なぜよりによって iPhone 11 なのかも疑問
Qemu m68k でクラシック Mac OS はどのように動くのかという質問