Qemu - это бесплатный инструмент с открытым исходным кодом для эмуляции и виртуализации работы операционных систем на компьютере. Программа может работать в Windows, Linux, MacOS и даже на Android.
Вот основные области, для которых может пригодиться Qemu:
Запуск различных ОС (например, Linux, Windows, BSD) на одном физическом компьютере.
Возможность экспериментировать с различными ОС и системными настройками, не опасаясь повредить основную систему.
Тестирование приложений, предназначенных для разных архитектур и платформ.
Ну и в первую очередь, если вы ОС разработчик, то с помощью именно этого эмулятора вы сможете тестировать свои системы без загрузочной флешки.
Лично я считаю, что Qemu - самый лучший эмулятор на данных момент. Давайте же разберёмся как его установить и эмулировать в нём операционные системы.
Установка
Для Linux:
# Ubuntu/Debian
sudo apt install qemu-kvm qemu
# Или
sudo apt install qemu-system-x86
# Fedora/RHEL
sudo dnf install qemu-kvm qemu-img
# Arch Linux
sudo pacman -S qemu-full
Для Windows:
Скачайте установщик с официального сайта qemu.org и следуйте инструкциям. QEMU будет работать через PowerShell.
Проверка установки:
После установки выполните qemu-system-x86_64 --version для проверки версии.
Если у вас всё получилось, то самое время научиться работать с Qemu.
Запускаем Ubuntu
В качестве самого первого примера я продемонстрирую запуск Ubuntu на Qemu. Всё довольно просто.
QEMU запускается с помощью команды qemu-system-архитектура, например, qemu-system-x86_64.
После архитектуры мы можем указать различные опции эмулятора
Например:
qemu-system-x86_64 -cdrom ubuntu-24.04.2-desktop-amd64.iso -hda disk.img
В данной команде:
-system это архитектура
-cdrom это iso образ
-hda это диск, на который будет установлена Ubuntu
Создать img файл вы можете командой:
qemu-img create -f img disk.img 10G
Вместо 10G вы можете указать необходимый вам размер виртуального диска.
Вместо img, при запуске эмулятора вы можете указать реальный USB накопитель или диск.
После запуска эмулятора вы увидите вё то же самое, что бы вы увидели при запуска Ubuntu с загрузочного носителя.
Вам остается лишь запустить установщик Ubuntu и система установится на img диск.
Когда всё уже установлено, qemu можно запускать без параметра cdrom: qemu-system-x86_64 -hda disk.img
Подробнее про параметры
Сейчас я приведу список всех основных опций, которые вы можете указать для запуска эмулятора
-machine указывает тип компьютера, который вы собрались эмулировать, можно выбрать ubuntu, pc, pc-q35 и другие варианты, смотрите подробнее командой -machine help;
-cpu - тип процессора, можно передать непосредственно тип процессора, а также дополнительные флаги;
-smp - включает симуляцию мультипроцессорной архитектуры;
-boot - позволяет настроить порядок загрузки устройств, a,b - дискета, с - первый жесткий диск, d - CDROM, n-p - загрузка через сеть, по умолчанию виртуальная машина загружается из жесткого диска;
-m - указывает количество оперативной памяти, доступной машине;
-k - раскладка клавиатуры по умолчанию;
-soundhw - подключить звуковую карту к системе;
-device - подключить указанное устройство к машине, нужно указать драйвер и его опции;
-name - имя гостевой системы, будет отображаться в верху окна;
-uuid - установить UUID для системы;
-fda, fdb - подключить дискету из файла;
-hda, hdb - подключить жесткий диск из файла;
-cdrom - подключить оптический диск;
-usb - включить поддержку USB;
-usbdevice - подключить USB устройство;
-display - выбрать тип отображения, доступно sdl, curses, gtk, none, vga и другие;
-full-screen - запустить в полный экран;
-no-acpi - отключить поддержку ACPI;
-net - создать сетевой интерфейс;
-realtime включить режим реального времени, опции mclock нужно передать значение on;
-gdb - ожидать подключения отладчика gdb;
-enable-kvm - включить поддержку kvm;
-loadvm - загрузить сохраненное состояние;
-daemonize - сделать процесс фоновым;
-snapshot - записывать изменения не в файл жесткого диска, а в отдельные файлы;
-nographic - отключить графический вывод.
-kernel - использовать указанный образ ядра linux.
-append - командная строка для ядра;
-initrd - файл initrd для загрузки Linux.
Обратите внимание:
Не указывайте кол-во оперативной памяти или ядер процессора больше, чем у вас есть на компьютере или хосте.
Проверяем работу эмулятора
Давайте же запустим эмулятор с нужными нам параметрами, а после проверим, сработали ли они. Я создам виртуальную машину, и выставлю там определённые параметры процессора. Далее запущу на ней операционную систему x16-PRos
Итак, вот команда для запуска, которую я буду использовать:
qemu-system-x86_64 -smp 4 -m 1 -hda x16pros.img -full-screen
-smp 4 - указываем кол-в ядер процессора
-m 1 - выделяем 1МБ оперативной памяти
-hda x16pros.img - запускаем систему из виртуального диска
-full-screen - запускаем эмулятор в полноэкранном режиме
После запуска x16-PRos в его терминале вводим команду CPU
. Она нам покажет информацию о процессоре

И видим, что процессор у нас действительно на 4 ядра (как мы и прописали в команде), а вот имя процессора у нас отобразилось стандартное (qemu virtual cpu). Но если в команду запуска добавить -cpu n270-v1
, то будет эмулироваться именно тот процессор, который мы указали после -cpu. Ну а если хочется указать такой же процессор, какой стоит у тебя в компьютере, то добавь в команду -enable-kvm -cpu host
Список доступных для эмуляции процессоров будет показан при вводе команды qemu-system-x86_64 -cpu help
Список процессоров (2025 год):
@proxPC:~$ qemu-system-x86_64 -cpu help
Available CPUs:
x86 486 (alias configured by machine type)
x86 486-v1
x86 Broadwell (alias configured by machine type)
x86 Broadwell-IBRS (alias of Broadwell-v3)
x86 Broadwell-noTSX (alias of Broadwell-v2)
x86 Broadwell-noTSX-IBRS (alias of Broadwell-v4)
x86 Broadwell-v1 Intel Core Processor (Broadwell)
x86 Broadwell-v2 Intel Core Processor (Broadwell, no TSX)
x86 Broadwell-v3 Intel Core Processor (Broadwell, IBRS)
x86 Broadwell-v4 Intel Core Processor (Broadwell, no TSX, IBRS)
x86 Cascadelake-Server (alias configured by machine type)
x86 Cascadelake-Server-noTSX (alias of Cascadelake-Server-v3)
x86 Cascadelake-Server-v1 Intel Xeon Processor (Cascadelake)
x86 Cascadelake-Server-v2 Intel Xeon Processor (Cascadelake) [ARCH_CAPABILITIES]
x86 Cascadelake-Server-v3 Intel Xeon Processor (Cascadelake) [ARCH_CAPABILITIES, no TSX]
x86 Cascadelake-Server-v4 Intel Xeon Processor (Cascadelake) [ARCH_CAPABILITIES, no TSX]
x86 Cascadelake-Server-v5 Intel Xeon Processor (Cascadelake) [ARCH_CAPABILITIES, EPT switching, XSAVES, no TSX]
x86 Conroe (alias configured by machine type)
x86 Conroe-v1 Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86 Cooperlake (alias configured by machine type)
x86 Cooperlake-v1 Intel Xeon Processor (Cooperlake)
x86 Cooperlake-v2 Intel Xeon Processor (Cooperlake) [XSAVES]
x86 Denverton (alias configured by machine type)
x86 Denverton-v1 Intel Atom Processor (Denverton)
x86 Denverton-v2 Intel Atom Processor (Denverton) [no MPX, no MONITOR]
x86 Denverton-v3 Intel Atom Processor (Denverton) [XSAVES, no MPX, no MONITOR]
x86 Dhyana (alias configured by machine type)
x86 Dhyana-v1 Hygon Dhyana Processor
x86 Dhyana-v2 Hygon Dhyana Processor [XSAVES]
x86 EPYC (alias configured by machine type)
x86 EPYC-Genoa (alias configured by machine type)
x86 EPYC-Genoa-v1 AMD EPYC-Genoa Processor
x86 EPYC-IBPB (alias of EPYC-v2)
x86 EPYC-Milan (alias configured by machine type)
x86 EPYC-Milan-v1 AMD EPYC-Milan Processor
x86 EPYC-Milan-v2 AMD EPYC-Milan-v2 Processor
x86 EPYC-Rome (alias configured by machine type)
x86 EPYC-Rome-v1 AMD EPYC-Rome Processor
x86 EPYC-Rome-v2 AMD EPYC-Rome Processor
x86 EPYC-Rome-v3 AMD EPYC-Rome-v3 Processor
x86 EPYC-Rome-v4 AMD EPYC-Rome-v4 Processor (no XSAVES)
x86 EPYC-v1 AMD EPYC Processor
x86 EPYC-v2 AMD EPYC Processor (with IBPB)
x86 EPYC-v3 AMD EPYC Processor
x86 EPYC-v4 AMD EPYC-v4 Processor
x86 GraniteRapids (alias configured by machine type)
x86 GraniteRapids-v1 Intel Xeon Processor (GraniteRapids)
x86 Haswell (alias configured by machine type)
x86 Haswell-IBRS (alias of Haswell-v3)
x86 Haswell-noTSX (alias of Haswell-v2)
x86 Haswell-noTSX-IBRS (alias of Haswell-v4)
x86 Haswell-v1 Intel Core Processor (Haswell)
x86 Haswell-v2 Intel Core Processor (Haswell, no TSX)
x86 Haswell-v3 Intel Core Processor (Haswell, IBRS)
x86 Haswell-v4 Intel Core Processor (Haswell, no TSX, IBRS)
x86 Icelake-Server (alias configured by machine type)
x86 Icelake-Server-noTSX (alias of Icelake-Server-v2)
x86 Icelake-Server-v1 Intel Xeon Processor (Icelake)
x86 Icelake-Server-v2 Intel Xeon Processor (Icelake) [no TSX]
x86 Icelake-Server-v3 Intel Xeon Processor (Icelake)
x86 Icelake-Server-v4 Intel Xeon Processor (Icelake)
x86 Icelake-Server-v5 Intel Xeon Processor (Icelake) [XSAVES]
x86 Icelake-Server-v6 Intel Xeon Processor (Icelake) [5-level EPT]
x86 IvyBridge (alias configured by machine type)
x86 IvyBridge-IBRS (alias of IvyBridge-v2)
x86 IvyBridge-v1 Intel Xeon E3-12xx v2 (Ivy Bridge)
x86 IvyBridge-v2 Intel Xeon E3-12xx v2 (Ivy Bridge, IBRS)
x86 KnightsMill (alias configured by machine type)
x86 KnightsMill-v1 Intel Xeon Phi Processor (Knights Mill)
x86 Nehalem (alias configured by machine type)
x86 Nehalem-IBRS (alias of Nehalem-v2)
x86 Nehalem-v1 Intel Core i7 9xx (Nehalem Class Core i7)
x86 Nehalem-v2 Intel Core i7 9xx (Nehalem Core i7, IBRS update)
x86 Opteron_G1 (alias configured by machine type)
x86 Opteron_G1-v1 AMD Opteron 240 (Gen 1 Class Opteron)
x86 Opteron_G2 (alias configured by machine type)
x86 Opteron_G2-v1 AMD Opteron 22xx (Gen 2 Class Opteron)
x86 Opteron_G3 (alias configured by machine type)
x86 Opteron_G3-v1 AMD Opteron 23xx (Gen 3 Class Opteron)
x86 Opteron_G4 (alias configured by machine type)
x86 Opteron_G4-v1 AMD Opteron 62xx class CPU
x86 Opteron_G5 (alias configured by machine type)
x86 Opteron_G5-v1 AMD Opteron 63xx class CPU
x86 Penryn (alias configured by machine type)
x86 Penryn-v1 Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86 SandyBridge (alias configured by machine type)
x86 SandyBridge-IBRS (alias of SandyBridge-v2)
x86 SandyBridge-v1 Intel Xeon E312xx (Sandy Bridge)
x86 SandyBridge-v2 Intel Xeon E312xx (Sandy Bridge, IBRS update)
x86 SapphireRapids (alias configured by machine type)
x86 SapphireRapids-v1 Intel Xeon Processor (SapphireRapids)
x86 SapphireRapids-v2 Intel Xeon Processor (SapphireRapids)
x86 SierraForest (alias configured by machine type)
x86 SierraForest-v1 Intel Xeon Processor (SierraForest)
x86 Skylake-Client (alias configured by machine type)
x86 Skylake-Client-IBRS (alias of Skylake-Client-v2)
x86 Skylake-Client-noTSX-IBRS (alias of Skylake-Client-v3)
x86 Skylake-Client-v1 Intel Core Processor (Skylake)
x86 Skylake-Client-v2 Intel Core Processor (Skylake, IBRS)
x86 Skylake-Client-v3 Intel Core Processor (Skylake, IBRS, no TSX)
x86 Skylake-Client-v4 Intel Core Processor (Skylake, IBRS, no TSX) [IBRS, XSAVES, no TSX]
x86 Skylake-Server (alias configured by machine type)
x86 Skylake-Server-IBRS (alias of Skylake-Server-v2)
x86 Skylake-Server-noTSX-IBRS (alias of Skylake-Server-v3)
x86 Skylake-Server-v1 Intel Xeon Processor (Skylake)
x86 Skylake-Server-v2 Intel Xeon Processor (Skylake, IBRS)
x86 Skylake-Server-v3 Intel Xeon Processor (Skylake, IBRS, no TSX)
x86 Skylake-Server-v4 Intel Xeon Processor (Skylake, IBRS, no TSX)
x86 Skylake-Server-v5 Intel Xeon Processor (Skylake, IBRS, no TSX) [IBRS, XSAVES, EPT switching, no TSX]
x86 Snowridge (alias configured by machine type)
x86 Snowridge-v1 Intel Atom Processor (SnowRidge)
x86 Snowridge-v2 Intel Atom Processor (Snowridge, no MPX)
x86 Snowridge-v3 Intel Atom Processor (Snowridge, no MPX) [XSAVES, no MPX]
x86 Snowridge-v4 Intel Atom Processor (Snowridge, no MPX) [no split lock detect, no core-capability]
x86 Westmere (alias configured by machine type)
x86 Westmere-IBRS (alias of Westmere-v2)
x86 Westmere-v1 Westmere E56xx/L56xx/X56xx (Nehalem-C)
x86 Westmere-v2 Westmere E56xx/L56xx/X56xx (IBRS update)
x86 athlon (alias configured by machine type)
x86 athlon-v1 QEMU Virtual CPU version 2.5+
x86 core2duo (alias configured by machine type)
x86 core2duo-v1 Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
x86 coreduo (alias configured by machine type)
x86 coreduo-v1 Genuine Intel(R) CPU T2600 @ 2.16GHz
x86 kvm32 (alias configured by machine type)
x86 kvm32-v1 Common 32-bit KVM processor
x86 kvm64 (alias configured by machine type)
x86 kvm64-v1 Common KVM processor
x86 n270 (alias configured by machine type)
x86 n270-v1 Intel(R) Atom(TM) CPU N270 @ 1.60GHz
x86 pentium (alias configured by machine type)
x86 pentium-v1
x86 pentium2 (alias configured by machine type)
x86 pentium2-v1
x86 pentium3 (alias configured by machine type)
x86 pentium3-v1
x86 phenom (alias configured by machine type)
x86 phenom-v1 AMD Phenom(tm) 9550 Quad-Core Processor
x86 qemu32 (alias configured by machine type)
x86 qemu32-v1 QEMU Virtual CPU version 2.5+
x86 qemu64 (alias configured by machine type)
x86 qemu64-v1 QEMU Virtual CPU version 2.5+
x86 base base CPU model type with no features enabled
x86 host processor with all supported host features
x86 max Enables all features supported by the accelerator in the current host
Работа с дисковыми образами
Если по каким либо причинам вам надо изменить ваш образ диска, то сделать это можно через qemu-img
Основные операции с qemu-img:
# Создание динамического образа
qemu-img create -f qcow2 disk.qcow2 40G
# Конвертация между форматами
qemu-img convert -f raw -O qcow2 input.img output.qcow2
# Изменение размера
qemu-img resize disk.qcow2 +10G
# Просмотр информации
qemu-img info disk.qcow2
Совет:
Формат qcow2 поддерживает снимки состояния и динамическое выделение места.
Автоматизация
Чтобы каждый раз не вводить длинные команды, создайте bash скрипт на подобии этого:
#!/bin/bash
qemu-system-x86_64 \
-enable-kvm \
-cpu host \
-smp 4 \
-m 4G \
-hda ~/ubuntu.img \
-vga virtio \
-display sdl \
Сохраните данный текст в файл start_qemu.sh
и выдайте ему право на исполнение: chmod +x start_
qemu.sh
Теперь запускать эмулятор можно командной ./start_qemu.sh
Заключение
Qemu — один из лучших эмуляторов, который только существует. И пусть вас не пугает то, что взаимодействие с ним происходит в командной строке. Также я хотел бы сказать, что это не весь функционал данного эмулятора. Подробнее о нём можно узнать на сайте qemu.org/docs