QEMU 是一个通用且开源的全机器模拟器及用户态模拟器与虚拟化器。
QEMU 能够完全通过软件模拟一台完整的机器,无需任何硬件虚拟化支持。通过使用动态翻译技术,它可以实现非常出色的性能。QEMU 也可以与 Xen 和 KVM 虚拟机监控程序集成,以提供模拟硬件,同时让虚拟机监控程序管理 CPU。借助虚拟机监控程序支持,QEMU 能够使 CPU 达到接近原生的性能。当 QEMU 直接模拟 CPU 时,它能够在一台机器(例如 x86_64 PC 主板)上运行为另一台机器(例如 ARMv7 主板)设计的操作系统。
QEMU 还能够为 Linux 和 BSD 内核接口提供用户态 API 虚拟化。这使得针对一种架构 ABI(例如 Linux PPC64 ABI)编译的二进制文件,能够在使用不同架构 ABI(例如 Linux x86_64 ABI)的主机上运行。这并不涉及任何硬件模拟,仅仅进行 CPU 和系统调用模拟。
QEMU 旨在适应多种使用场景。它可以直接由希望完全控制其行为和设置的用户调用。它也旨在通过提供稳定的命令行界面和监视器 API,促进与更高级管理层集成。在使用开源应用程序(如 oVirt、OpenStack 和 virt-manager)时,它通常通过 libvirt 库间接调用。
QEMU 整体根据 GNU 通用公共许可证第 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
提交补丁时,一种常见的方法是使用 '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 $ # 在新提交上工作,为每个提交添加你的 'Signed-off-by' 行 $ 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,建议先向供应商自己的 Bug 追踪器报告。如果该 bug 也被知晓会影响最新的上游代码,也可以通过 GitLab 报告。
关于 Bug 报告的额外信息,请参阅:
<https://wiki.qemu.org/Contribute/ReportABug>_关于版本历史和发布说明,请访问 <https://wiki.qemu.org/ChangeLog/>_ 或查看 git 历史以获取更详细的信息。
可以通过多种方式联系 QEMU 社区,两种主要方式是电子邮件和 IRC:
<mailto:[email protected]>_<https://lists.nongnu.org/mailman/listinfo/qemu-devel>_关于联系社区的其他方式的信息,可通过 QEMU 网站在线找到:
<https://wiki.qemu.org/Contribute/StartHere>_