| =========== | |
| QEMU README | |
| =========== | |
| QEMU is a generic and open source machine & userspace emulator and | |
| virtualizer. | |
| QEMU is capable of emulating a complete machine in software without any | |
| need for hardware virtualization support. By using dynamic translation, | |
| it achieves very good performance. QEMU can also integrate with the Xen | |
| and KVM hypervisors to provide emulated hardware while allowing the | |
| hypervisor to manage the CPU. With hypervisor support, QEMU can achieve | |
| near native performance for CPUs. When QEMU emulates CPUs directly it is | |
| capable of running operating systems made for one machine (e.g. an ARMv7 | |
| board) on a different machine (e.g. an x86_64 PC board). | |
| QEMU is also capable of providing userspace API virtualization for Linux | |
| and BSD kernel interfaces. This allows binaries compiled against one | |
| architecture ABI (e.g. the Linux PPC64 ABI) to be run on a host using a | |
| different architecture ABI (e.g. the Linux x86_64 ABI). This does not | |
| involve any hardware emulation, simply CPU and syscall emulation. | |
| QEMU aims to fit into a variety of use cases. It can be invoked directly | |
| by users wishing to have full control over its behaviour and settings. | |
| It also aims to facilitate integration into higher level management | |
| layers, by providing a stable command line interface and monitor API. | |
| It is commonly invoked indirectly via the libvirt library when using | |
| open source applications such as oVirt, OpenStack and virt-manager. | |
| QEMU as a whole is released under the GNU General Public License, | |
| version 2. For full licensing details, consult the LICENSE file. | |
| Documentation | |
| ============= | |
| Documentation can be found hosted online at | |
| `<https://www.qemu.org/documentation/>`_. The documentation for the | |
| current development version that is available at | |
| `<https://www.qemu.org/docs/master/>`_ is generated from the ``docs/`` | |
| folder in the source tree, and is built by `Sphinx | |
| <https://www.sphinx-doc.org/en/master/>`_. | |
| Building | |
| ======== | |
| QEMU is multi-platform software intended to be buildable on all modern | |
| Linux platforms, OS-X, Win32 (via the Mingw64 toolchain) and a variety | |
| of other UNIX targets. The simple steps to build QEMU are: | |
| .. code-block:: shell | |
| mkdir build | |
| cd build | |
| ../configure | |
| make | |
| Additional information can also be found online via the QEMU website: | |
| * `<https://wiki.qemu.org/Hosts/Linux>`_ | |
| * `<https://wiki.qemu.org/Hosts/Mac>`_ | |
| * `<https://wiki.qemu.org/Hosts/W32>`_ | |
| Submitting patches | |
| ================== | |
| The QEMU source code is maintained under the GIT version control system. | |
| .. code-block:: shell | |
| git clone https://gitlab.com/qemu-project/qemu.git | |
| When submitting patches, one common approach is to use 'git | |
| format-patch' and/or 'git send-email' to format & send the mail to the | |
| qemu-devel@nongnu.org mailing list. All patches submitted must contain | |
| a 'Signed-off-by' line from the author. Patches should follow the | |
| guidelines set out in the `style section | |
| <https://www.qemu.org/docs/master/devel/style.html>`_ of | |
| the Developers Guide. | |
| Additional information on submitting patches can be found online via | |
| the QEMU website: | |
| * `<https://wiki.qemu.org/Contribute/SubmitAPatch>`_ | |
| * `<https://wiki.qemu.org/Contribute/TrivialPatches>`_ | |
| The QEMU website is also maintained under source control. | |
| .. 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/>`_ | |
| A 'git-publish' utility was created to make above process less | |
| cumbersome, and is highly recommended for making regular contributions, | |
| or even just for sending consecutive patch series revisions. It also | |
| requires a working 'git send-email' setup, and by default doesn't | |
| automate everything, so you may want to go through the above steps | |
| manually for once. | |
| For installation instructions, please go to: | |
| * `<https://github.com/stefanha/git-publish>`_ | |
| The workflow with 'git-publish' is: | |
| .. code-block:: shell | |
| $ git checkout master -b my-feature | |
| $ # work on new commits, add your 'Signed-off-by' lines to each | |
| $ git publish | |
| Your patch series will be sent and tagged as my-feature-v1 if you need to refer | |
| back to it in the future. | |
| Sending v2: | |
| .. code-block:: shell | |
| $ git checkout my-feature # same topic branch | |
| $ # making changes to the commits (using 'git rebase', for example) | |
| $ git publish | |
| Your patch series will be sent with 'v2' tag in the subject and the git tip | |
| will be tagged as my-feature-v2. | |
| Bug reporting | |
| ============= | |
| The QEMU project uses GitLab issues to track bugs. Bugs | |
| found when running code built from QEMU git or upstream released sources | |
| should be reported via: | |
| * `<https://gitlab.com/qemu-project/qemu/-/issues>`_ | |
| If using QEMU via an operating system vendor pre-built binary package, it | |
| is preferable to report bugs to the vendor's own bug tracker first. If | |
| the bug is also known to affect latest upstream code, it can also be | |
| reported via GitLab. | |
| For additional information on bug reporting consult: | |
| * `<https://wiki.qemu.org/Contribute/ReportABug>`_ | |
| ChangeLog | |
| ========= | |
| For version history and release notes, please visit | |
| `<https://wiki.qemu.org/ChangeLog/>`_ or look at the git history for | |
| more detailed information. | |
| Contact | |
| ======= | |
| The QEMU community can be contacted in a number of ways, with the two | |
| main methods being email and IRC: | |
| * `<mailto:qemu-devel@nongnu.org>`_ | |
| * `<https://lists.nongnu.org/mailman/listinfo/qemu-devel>`_ | |
| * #qemu on irc.oftc.net | |
| Information on additional methods of contacting the community can be | |
| found online via the QEMU website: | |
| * `<https://wiki.qemu.org/Contribute/StartHere>`_ |