世界を動かす技術を、日本語で。

QEMUでのiPhone 11エミュレーション

概要

  • QEMU は汎用的かつオープンソースの エミュレーター/バーチャライザー
  • ハードウェア仮想化サポート不要 で完全なマシンのソフトウェアエミュレーションが可能
  • XenやKVM との連携により、 高パフォーマンス を実現
  • 多様なアーキテクチャ や用途に対応
  • ドキュメント・サポート・開発 体制が充実

QEMUの概要

  • QEMU は、汎用的でオープンソースな マシン&ユーザースペースエミュレーター/バーチャライザー
  • ソフトウェアのみで完全なマシンをエミュレート し、ハードウェア仮想化サポートは不要
  • 動的翻訳 を用い、高いパフォーマンスを実現
  • XenやKVMハイパーバイザー と統合し、エミュレートされたハードウェアを提供
    • ハイパーバイザーサポート時、 CPUパフォーマンスはほぼネイティブ
  • CPU直接エミュレーション により、異なるアーキテクチャ間でのOS実行が可能
    • 例:ARMv7ボード用OSをx86_64 PCボード上で実行
  • ユーザースペースAPI仮想化 により、LinuxやBSDのカーネルインターフェースを仮想化
    • 異なるアーキテクチャABI間でのバイナリ実行が可能
    • ハードウェアエミュレーション不要、CPU・システムコールのエミュレーションのみ
  • 多様なユースケース に対応
    • ユーザーによる直接利用や、高レベル管理レイヤーへの統合
    • libvirt ライブラリ経由での間接利用(oVirt、OpenStack、virt-manager等)
  • GNU General Public License, version 2 でリリース
    • 詳細は LICENSEファイル 参照

ドキュメント

  • オンラインドキュメント: https://www.qemu.org/documentation/
  • 開発版ドキュメント: https://www.qemu.org/docs/master/
    • ソースツリー内 docs/ フォルダーからSphinxで生成
  • 追加情報: QEMU公式ウェブサイト 参照

ビルド方法

  • QEMU はマルチプラットフォーム対応
    • モダンなLinux、OS-X、Win32(Mingw64ツールチェーン)、その他UNIXターゲット
  • 基本的なビルド手順
    • mkdir build
    • cd build
    • ../configure
    • make
  • 詳細・追加情報
    • Linux: https://wiki.qemu.org/Hosts/Linux
    • Mac: https://wiki.qemu.org/Hosts/Mac
    • Win32: https://wiki.qemu.org/Hosts/W32

パッチの提出

  • GITバージョン管理システム でソースコード管理
    • git clone https://gitlab.com/qemu-project/qemu.git
  • パッチ提出手順
    • git format-patchgit send-emailでqemu-devel@nongnu.orgに送信
    • すべてのパッチに 'Signed-off-by'行 が必要
    • Developers Guide のスタイルガイドライン遵守
  • 追加情報
    • https://wiki.qemu.org/Contribute/SubmitAPatch
    • https://wiki.qemu.org/Contribute/TrivialPatches
  • QEMUウェブサイト もソース管理下
    • git clone https://gitlab.com/qemu-project/qemu-web.git
    • https://www.qemu.org/2017/02/04/the-new-qemu-website-is-up/
  • git-publish ユーティリティ推奨
    • インストール: https://github.com/stefanha/git-publish
    • ワークフロー
      • 新規ブランチ作成:git checkout master -b my-feature
      • コミット作成&'Signed-off-by'付与
      • git publishでパッチシリーズ送信(my-feature-v1タグ付与)
      • v2以降:同ブランチで修正後git publish(v2タグ付与)

バグ報告

  • GitLab Issues でバグ管理
    • https://gitlab.com/qemu-project/qemu/-/issues
  • OSベンダー配布のバイナリ利用時は、まずベンダーのバグトラッカーへ報告推奨
  • 最新upstreamにも影響がある場合はGitLabでも報告可
  • 追加情報: https://wiki.qemu.org/Contribute/ReportABug

変更履歴・リリースノート

  • バージョン履歴・リリースノート
    • https://wiki.qemu.org/ChangeLog/
    • 詳細はGIT履歴参照

コミュニティ・連絡先

  • 主な連絡方法
    • メール: qemu-devel@nongnu.org
    • メーリングリスト: https://lists.nongnu.org/mailman/listinfo/qemu-devel
    • IRC: #qemu(irc.oftc.net)
  • 追加連絡方法・情報
    • https://wiki.qemu.org/Contribute/StartHere

Hackerたちの意見

うわ、これって少なくともSpringboardまで起動するってことだよね!めっちゃすごいじゃん!

Trollstoreに対応してて、IPAを解読できるの?

この質問をしに来たんだ。もしそうならめっちゃいいね!

無知な俺に教えて:これはどういう意味?

上流リポジトリの議論(356ポイント、2022年、144コメント) https://news.ycombinator.com/item?id=30545425 関連(このリポジトリに言及):QEMUでiPhoneをエミュレートする(268ポイント、2ヶ月前、64コメント) https://news.ycombinator.com/item?id=43592409

イシュー・トラッカーを見た感じ、あれ以来かなり進展があったみたいだね。

ところで、Qemu m68kはClassic Macでどう動くの?

あんまり良くないよ。Mini vMacを使った方がいい。PPCエミュレーションは問題なく動くけどね。

うまくいってるよ。Qemu m68kを使ってクラシックMacintoshを動かす技術的な議論: Qemu-system-m68kでMac OS 7-8を動かす - https://www.emaculation.com/forum/viewforum.php?f=37&sid=6a9...

これはiOSをエミュレートしてるの?それともiOSのバイナリを動かしてるだけ?なんでiPhone 11って具体的に書いてあるの?

おそらくiPhone 11のバイナリだからじゃない?

これが最高のエミュレーションハックだね、関わったみんなおめでとう!これ、ハッキントッシュプロジェクトにもいい影響がありそう。もしかしたらもう行き止まりじゃないかも(まだまだ遠いけど)、ARM PCが一般に普及すれば、効率的なエミュレーションも見られるかもしれないね。