
iPhone 11 emulated on QEMU
QEMU — это универсальный эмулятор и виртуализатор машин и пользовательского пространства с открытым исходным кодом.
QEMU способен эмулировать полную машину программно без необходимости аппаратной поддержки виртуализации. Благодаря динамической трансляции он достигает очень хорошей производительности. QEMU также может интегрироваться с гипервизорами Xen и KVM, предоставляя эмулированное оборудование, позволяя гипервизору управлять CPU. С поддержкой гипервизора QEMU может достичь производительности, близкой к нативной для CPU. Когда QEMU эмулирует CPU напрямую, он способен запускать операционные системы, созданные для одной машины (например, платы ARMv7) на другой машине (например, ПК с x86_64).
QEMU также способен обеспечивать виртуализацию API пользовательского пространства для интерфейсов ядра Linux и BSD. Это позволяет запускать бинарные файлы, скомпилированные под один ABI архитектуры (например, Linux PPC64 ABI), на хост-системе с другим ABI архитектуры (например, Linux x86_64 ABI). Это не включает эмуляцию оборудования, а только эмуляцию CPU и системных вызовов.
QEMU стремится вписаться в различные сценарии использования. Он может быть вызван напрямую пользователями, желающими иметь полный контроль над его поведением и настройками. Он также стремится облегчить интеграцию в слои управления более высокого уровня, предоставляя стабильный интерфейс командной строки и API монитора. Обычно он вызывается косвенно через библиотеку libvirt при использовании приложений с открытым исходным кодом, таких как oVirt, OpenStack и virt-manager.
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
При отправке патчей распространённым подходом является использование '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 использует Issues GitLab для отслеживания ошибок. Ошибки, обнаруженные при запуске кода, собранного из 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:
<mailto:[email protected]>_<https://lists.nongnu.org/mailman/listinfo/qemu-devel>_Информацию о дополнительных способах связи с сообществом можно найти онлайн на веб-сайте QEMU:
<https://wiki.qemu.org/Contribute/StartHere>_