Представлен релиз проекта QEMU 1.2.0. В качестве эмулятора QEMU позволяет запустить программу собранную для одной аппаратной платформы на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU достигается производительность выполнения кода в изолированном окружении близкая к нативной системе, за счет прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.
Изначально проект был создан Фабрисом Беллардом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. В разработке QEMU приняло участие 400 авторов, которые подготовили около 20 тысяч изменений. При подготовке версии 1.2 внесено более 1400 изменений от 180 разработчиков.
Ключевые улучшения, добавленные в QEMU 1.2.0:
- Поддержка проброса в QEMU файловых дескрипторов при помощи QMP-команд add-fd и remove-fd. Указанные файловые дескипторы могут быть использованы в любых частях QEMU, в которых используются имена файлов, например, при манипуляции дисковыми образами. Проброс файловых дескрипторов позволяет реализовать поддержку sVirt (изоляция виртуальных окружений средствами SELinux) для NFS;
- Добавлена команда мониторинга "dump-guest-memory" выполняющая сохранения в ELF-формате дампа памяти гостевой системы;
- Улучшение поддержки архитектуры ARM:
- Добавлена поддержка плат i.MX32;
- Обеспечена возможность использования LPAE для процессоров Cortex-A15, что позволило задействовать более 4 Гб ОЗУ на vexpress-a15;
- Улучшение поддержки архитектуры PowerPC:
- Поддержка эмуляции PCI, IOMMU, VGA и USB, для pSeries;
- Реализация опции dumpdtb для сохранения в файл дампа с динамически сгенерированным деревом устройств;
- Эмуляция ядер e5500;
- Эмуляция чипов ввода/вывода PC87312 и параллельного порта;
- Улучшение поддержки архитектуры x86:
- Для полностью виртуализированных доменов Xen добавлена поддержка проброса PCI-устройств;
- При использовании KVM в реализации APIC на уровне ядра обеспечена поддержка MSI;
- Опция конфигурации "cpudef" объявлена устаревшей и будет удалена в следующем выпуске;
- Улучшение эмуляции устройств:
- Для карт std-vga и QXL ("-vga std" и "-vga qxl") добавлена поддержка 16 Мб VRAM (ранее было 8 Мб);
- Эмуляция SCSI-контроллеров am53c974 (AMD PCI PCscsi), dc390 (Tekram) и megasas (LSI SAS1078 RAID);
- Поддержка SCSI-контроллеров, подключаемых через порт USB;
- Включение по умолчанию звуковой карты PC speaker;
- Для эмулируемых блочных устройств по умолчанию задействован режим обратного кэширования (writeback);
- Для IDE, SCSI и virtio-blk устройств добавлена возможность управления настройками кэша со стороны гостевой системы (переключение режимов writethrough и writeback);
- Для эмулируемых SCSI-устройств обеспечена возможность задания собственного идентификатора вендора, имени продукта и WWN;
- Улучшена поддержка проброса ленточных накопителей и устройств смены носителей с интерфейсом SCSI;
- Добавлена эмулция устройств CD-ROM с интерфейсом AHCI;
- В block-stream улучшена работа с raw-файлами, содержащими пустые области;
- Для образов qcow2 добавлена поддержка опции "lazy_refcounts", при установке которой обеспечивается повышение скорости работы режима кэширования "cache=writethrough", но в случае экстренного завершения работы требуется выполнение fsck для гарантирования целостности;
- В утилиту qemu-img добавлена поддержка восстановления целостности образов в форматах qcow2 и QED при указании опции "-r";
- Улучшены средства Live-миграции:
- Обеспечена поддержка гостевых систем с большим объемом памяти;
- Реализована поддержка сжатия методом XBZRLE при сохранении образа системы;
- В процессе Live-миграции добавлена поддержка проброшенных устройств и устройств хранения с интерфейсом USB;
- По умолчанию активирована многопоточная версия VNC-сервера;
- В агент работы с гостевыми системами (qemu-ga) добавлена команда fstrim;
- Поддержка эмуляции процессоров на базе архитектуры OpenRISC.