Увидел свет эмулятор QEMU 0.15
9 августа 2011 года
Анонсирован релиз системы эмуляции аппаратного обеспечения и виртуализации QEMU 0.15. В подготовке новой версии приняло участие 150 разработчиков, по сравнению с прошлым выпуском внесено 1800 изменений, добавлено около 100 тыс. строк кода.
В качестве эмулятора QEMU позволяет запустить программу собранную для одной аппаратной платформы на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU достигается производительность выполнения кода в изолированном окружении близкая к нативной системе, за счет прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.
Ключевым изменением QEMU 0.15 стала интеграция в состав наработок проекта Xen, что привело к значительному повышению качества поддержки режима виртуализации с задействованием гипервизора Xen. Изначально инструментарий и набор драйверов для обеспечения работы гипервизора Xen базировался на форке кода QEMU. Для того, чтобы собрать все накопленные с момента форка изменения и оформить их для возврата в родительский проект, понадобился год работы. Возврат изменений затрудняло большое число дублирующего кода с реализацией одних и тех же возможностей, созданных как силами QEMU, так и разработчиками Xen. Проделанная работа по слиянию общих кодовых баз пойдет на пользу обоим проектам, за счет прекращения выполнения двойной работы и переходу к более тесному сотрудничеству.
Основные улучшения:
- Синхронизация поддержки KVM с проектом qemu-kvm: Портированы многочисленные исправления, накопленные в рамках проекта qemu-kvm. Синхронизирован код поддержки многопоточной модели. Базовый код поддержки KVM теперь будет совместно использоваться и развиваться одновременно для qemu и qemu-kvm.
- Для использования инструментов для системы виртуализации KVM больше не требуется наличия внешних заголовочных файлов Linux-ядра, все поддерживаемые функции KVM теперь встроены в итоговый исполняемый файл;
- Для архитектуры x86 в KVM обеспечена поддержка процессорных расширений SMEP (Supervisor Mode Execution Protection) и расширенных функций CPU VIA. Обеспечено корректное сохранение счетчика точного времени (TSC, Time Stamp Counter) при проведении миграции гостевых окружений. Переработана поддержка MCE (Machine Check Exception);
- Поддержка новых целевых (эмулируемых) архитектур Lattice Mico32 (LM32) и UniCore32. Добавлена базовая поддержка эмуляции платы LM32 EVR и полная поддержка Milkymist SoC, включая функции отображения видео;
- ARM: Исправлены недоработки в реализации эмуляции используемых в процессорах ARM расширений Neon, инструкций ARMv6 и ARMv7, операций с плавающей запятой. Добавлена поддержка SA-1110/SA-1100. Реализована эмуляция двух машин: ARM Versatile Express ("vexpress-a9") и Sharp Zaurus SL-5500 ("collie");
- SPARC: Улучшения в OpenBIOS сделали возможным загрузку Solaris 8. Исправление ошибок в эмуляторе Sparc32 и Sparc64. Исправление реализации инструкций sdivx и udivx позволило обеспечить загрузку HelenOS в режиме командной строки;
- Обеспечена поддержка сборки кода с реализацией хост-системы в режиме Thumb (сокращенная система команд) процессоров ARM;
- Улучшена работа драйверов virtio-serial и virtio-balloon. Запрещено создавать несколько balloon-устройств, устранена утечка памяти при отсоединении устройства virtio-balloon, исправлена ошибка мешающая миграции после отсоединения устройства virtio-balloon;
- Добавлена поддержка live-снапшотов в QMP (QEMU Monitor Protocol) при помощи команды snapshot-blkdev-sync;
- Устранена проблема с излишним кэшированием размера носителя, что например, могло проявляться в показе размера ранее вставленного CD-ROM после смены диска;
- В утилиту qemu-img для команд "convert" и "rebase" добавлена опция "-p" при указании которой наглядно отображается прогресс выполнения операции. Для команд "commit", "convert" и "rebase" добавлена опция "-t", позволяющая указать режим кэширования, который будет использован при открытии образа. Увеличена производительность выполнения операции преобразования образов.
- Улучшена производительность создания и удаления внутренних снапшотов для блочных устройств qcow2;
- Добавлена возможность увеличения размера уже созданных образов виртуальных машин QED (QEMU Enhanced Disk) при помощи команды "qemu-img resize". Повышена устойчивость образов QED от повреждения в результате аварийного завершения, например, после выключения питания;
- Для образов VMDK обеспечена поддержка субформата monolithicFlat;
- В Sheepdog, распределенном хранилище для инфраструктуры виртуальных серверов на базе QEMU/KVM, добавлена возможность предварительного резервирования места в процессе создания образов виртуальных машин;
- Для поддержки RBD теперь используется высокоуровневая библиотека librbd вместо librados;
- В код эмуляции IDE-подсистемы добавлена поддержка команды TRIM. Вместо одного общего устройства ide-drive, для жестких дисков теперь используется устройство ide-hd, а для CD-ROM - ide-cd. По аналогии для SCSI-устройств вместо scsi-disk для жестких дисков теперь используется scsi-hd, а для CD-ROM - scsi-cd;
- Многочисленные исправления, связанные с обеспечением совместимости эмулятора CDROM со спецификацией ATAPI. Проведен значительный рефакторинг кода;
- Для перенаправления пакетов ICMP ECHO (ping) задействована появившаяся в ядре Linux 3.0 возможность создания непривилегированных ICMP-сокетов. Налажена поддержка DHCP в режиме host-only;
- В QMP (QEMU Monitor Protocol), базирующегося на JSON асинхронного протокола для взаимодействия пользовательских приложений с QEMU, добавлена поддержка команд inject-nmi и snapshot-blkdev-sync, устранены проблемы с работой парсера JSON, добавлен агент выполнения команд в гостевых окружениях;
- В код поддержки операционной системы Linux (linux-user) добавлена поддержка системных вызовов ppoll, sched_{g,s}etaffinity, epoll, pselect6 и prlimit64. Добавлена поддержка целевых платформ s390x и unicore32;
- В список обязательных для сборки зависимостей добавлена библиотека
glib-2.0, а в список опциональных зависимостей добавлены libcurl 7.15.4 и spice 0.6.0.
Источники[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.