
QEMU上でエミュレートされたiPhone 11
QEMU は汎用的でオープンソースのマシン&ユーザースペースエミュレータであり、 仮想化ソフトウェアです。
QEMU はハードウェア仮想化支援機能を必要とせず、ソフトウェアのみでマシン全体を エミュレートすることができます。動的変換を用いることで、非常に優れた性能を 実現します。また、QEMU は Xen や KVM ハイパーバイザと統合し、ハイパーバイザが CPU を管理する一方でエミュレートされたハードウェアを提供することも可能です。 ハイパーバイザのサポートがある場合、QEMU は CPU に関してネイティブに近い性能を 達成できます。QEMU が CPU を直接エミュレートする場合は、特定のマシン (例:ARMv7 ボード)向けに作られたオペレーティングシステムを、異なるマシン (例:x86_64 PC ボード)上で動作させることができます。
QEMU はまた、Linux および BSD カーネルインターフェースに対するユーザースペース API 仮想化を提供することもできます。これにより、あるアーキテクチャ ABI (例:Linux PPC64 ABI)向けにコンパイルされたバイナリを、別のアーキテクチャ ABI (例:Linux x86_64 ABI)を使用するホスト上で実行できます。これはハードウェア エミュレーションを一切伴わず、単に CPU とシステムコールのエミュレーションを 行います。
QEMU は様々なユースケースに適合することを目指しています。ユーザーがその動作や 設定を完全に制御したい場合に直接起動することもできます。また、安定したコマンド ラインインターフェースとモニター API を提供することで、上位の管理レイヤーへの 統合を容易にすることも目指しています。oVirt、OpenStack、virt-manager などの オープンソースアプリケーションを使用する場合、libvirt ライブラリを介して間接的に 起動されることが一般的です。
QEMU 全体は GNU General Public License バージョン 2 の下で公開されています。 完全なライセンスの詳細については、LICENSE ファイルを参照してください。
ドキュメントはオンラインで
<https://www.qemu.org/documentation/>_ から参照できます。
現在の開発バージョンのドキュメント(<https://www.qemu.org/docs/master/>_ で
利用可能)は、ソースツリー内の docs/ フォルダから生成され、Sphinx <https://www.sphinx-doc.org/en/master/>_ によってビルドされています。
QEMU はマルチプラットフォームソフトウェアであり、最新の Linux プラットフォーム、 OS-X、Win32(Mingw64 ツールチェーン経由)、およびその他の様々な UNIX ターゲット でビルド可能です。QEMU をビルドするための簡単な手順は以下の通りです。
.. code-block:: shell
mkdir build cd build ../configure make
追加情報は QEMU ウェブサイトからオンラインでも入手できます。
<https://wiki.qemu.org/Hosts/Linux>_<https://wiki.qemu.org/Hosts/Mac>_<https://wiki.qemu.org/Hosts/W32>_QEMU のソースコードは GIT バージョン管理システムで管理されています。
.. code-block:: shell
git clone https://gitlab.com/qemu-project/qemu.git
パッチを送信する際の一般的な方法の 1 つは、'git format-patch' や
'git send-email' を使用してメールを整形・送信し、[email protected]
メーリングリストに送信することです。送信されるすべてのパッチには、作者による
'Signed-off-by' 行が含まれていなければなりません。パッチは、開発者ガイドの
スタイルセクション <https://www.qemu.org/docs/master/devel/style.html>_ に定められたガイドラインに
従う必要があります。
パッチ送信に関する追加情報は QEMU ウェブサイトからオンラインで入手できます。
<https://wiki.qemu.org/Contribute/SubmitAPatch>_<https://wiki.qemu.org/Contribute/TrivialPatches>_QEMU ウェブサイトもソース管理下で維持されています。
.. code-block:: shell
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' ユーティリティが作成され、 定期的なコントリビューションや、連続したパッチシリーズの改訂を送信する場合に 強く推奨されます。これには動作する 'git send-email' の設定も必要であり、 デフォルトですべてを自動化するわけではないため、最初は上記の手順を手動で 行いたいかもしれません。
インストール手順については、以下を参照してください。
<https://github.com/stefanha/git-publish>_'git-publish' を用いたワークフローは次の通りです。
.. code-block:: shell
$ git checkout master -b my-feature $ # work on new commits, add your 'Signed-off-by' lines to each $ git publish
パッチシリーズは送信され、将来参照する必要がある場合は my-feature-v1 として タグ付けされます。
v2 の送信:
.. code-block:: shell
$ git checkout my-feature # 同じトピックブランチ $ # コミットに変更を加える (例: 'git rebase' を使用) $ git publish
パッチシリーズは件名に 'v2' タグが付いて送信され、git の先端は my-feature-v2 としてタグ付けされます。
QEMU プロジェクトはバグ追跡に GitLab Issues を使用しています。QEMU git または 上流のリリースソースからビルドされたコードを実行中に見つかったバグは、 以下から報告してください。
<https://gitlab.com/qemu-project/qemu/-/issues>_オペレーティングシステムベンダーが事前にビルドしたバイナリパッケージを介して QEMU を使用している場合は、まずベンダー自身のバグトラッカーに報告することが 推奨されます。そのバグが最新の上流コードにも影響することが判明している場合は、 GitLab 経由で報告することもできます。
バグ報告に関する追加情報については、以下を参照してください。
<https://wiki.qemu.org/Contribute/ReportABug>_バージョン履歴とリリースノートについては、
<https://wiki.qemu.org/ChangeLog/>_ を参照するか、より詳細な情報については
git 履歴を確認してください。
QEMU コミュニティへはいくつかの方法で連絡を取ることができます。主な方法は 電子メールと IRC の 2 つです。
<mailto:[email protected]>_<https://lists.nongnu.org/mailman/listinfo/qemu-devel>_コミュニティへの連絡方法に関する追加情報は、QEMU ウェブサイトからオンラインで 入手できます。
<https://wiki.qemu.org/Contribute/StartHere>_