Ошибка «task error start failed: QEMU exited with code 1»: причины и решение

Ошибка «task error start failed: QEMU exited with code 1» появляется при запуске виртуальной машины или узла эмулятора, когда процесс QEMU завершается сразу после старта, не успев инициализировать гостевую систему. Код выхода 1 означает общую ошибку запуска, и сам по себе он не указывает причину — её нужно искать в логах гипервизора и параметрах запуска.

Проблема встречается в разных средах: в сетевых эмуляторах GNS3 и EVE-NG, в гипервизоре Proxmox VE, а также при ручном запуске виртуальных машин через qemu-system-x86_64 или libvirt. Ниже разберём типичные причины и безопасные способы диагностики, которые применимы независимо от конкретной платформы.

Что означает код выхода 1 у QEMU

Код возврата 1 — это стандартный сигнал оболочки о том, что программа завершилась с ошибкой. QEMU падает с таким кодом, когда не может выполнить одну из критичных операций на этапе запуска: открыть образ диска, выделить память, получить доступ к устройству виртуализации или распарсить аргументы командной строки.

Важно понимать: сам текст «task error start failed» — это сообщение оболочки-оркестратора (GNS3, EVE-NG, Proxmox), а не QEMU. Реальную причину содержит вывод stderr процесса QEMU или лог виртуальной машины. Именно туда и нужно смотреть в первую очередь.

Основные причины ошибки

Проверки стоит выполнять в порядке от самых частых причин к редким. Большинство случаев связано с образами дисков и виртуализацией, а не с «битым» QEMU.

  • 🔒 Виртуализация отключена в BIOS/UEFI — не работают расширения Intel VT-x или AMD-V, и QEMU не может запуститься с ускорением KVM.
  • 📁 Отсутствует или повреждён образ диска — файл .qcow2 или .img удалён, перемещён или недокачан.
  • 🔐 Недостаточно прав доступа — пользователь не входит в группу kvm или у процесса нет прав на чтение образа.
  • 💾 Нехватка оперативной памяти — хост не может выделить запрошенный объём RAM для виртуальной машины.
  • ⚙️ Конфликт параметров запуска — несовместимые опции CPU, типа машины или устройств в конфигурации узла.

Шаг 1: Проверка поддержки виртуализации

Первая проверка — доступность аппаратной виртуализации. На хосте с Linux выполните команду:

ls /dev/kvm && egrep -c '(vmx|svm)' /proc/cpuinfo

Если файл /dev/kvm отсутствует, а счётчик возвращает 0, значит, виртуализация либо отключена в BIOS/UEFI, либо не поддерживается процессором. Вам нужно зайти в настройки прошивки материнской платы и включить опцию Intel VT-x, AMD-V или SVM Mode — точное название и расположение пункта зависят от производителя платы, поэтому сверьтесь с её документацией.

Если хост сам является виртуальной машиной (например, EVE-NG развёрнут внутри VMware или Hyper-V), потребуется включить вложенную виртуализацию (nested virtualization) в настройках родительского гипервизора. Без неё KVM внутри гостя работать не будет.

⚠️ Внимание: если виртуализация недоступна, некоторые образы всё же запускаются в режиме чистой эмуляции (TCG), но очень медленно. Не путайте медленную работу с ошибкой запуска — это разные ситуации.

Шаг 2: Проверка образа диска и путей

Вторая по частоте причина — проблемы с файлом образа. Убедитесь, что файл существует по указанному в конфигурации пути и не повреждён. Проверить целостность образа qcow2 можно командой:

qemu-img check /путь/к/образу.qcow2

Также проверьте права доступа: процессу QEMU нужны права на чтение образа и, при необходимости, на запись. Если вы запускаете узел от обычного пользователя, убедитесь, что он входит в группу kvm — это проверяется командой groups.

☑️ Проверка перед запуском узла

Выполнено: 0 / 5

Шаг 3: Анализ логов

Чтобы увидеть настоящую причину сбоя, откройте лог конкретной виртуальной машины. Расположение зависит от платформы:

ПлатформаГде искать лог
Proxmox VE/var/log/pve/tasks/ и журнал задачи в веб-интерфейсе
GNS3консоль GNS3 и логи сервера в каталоге проекта
EVE-NGвывод в интерфейсе узла и системный журнал journalctl
libvirt/var/log/libvirt/qemu/имя_вм.log

Ищите в логе строки с текстом error, failed или could not — они обычно прямо называют проблемный ресурс: файл, устройство или параметр. Если лог пуст или недоступен, попробуйте запустить QEMU вручную с теми же параметрами из терминала — сообщение об ошибке появится прямо в консоли.

📊 Где вы столкнулись с ошибкой QEMU exited with code 1?
GNS3
EVE-NG
Proxmox VE
Ручной запуск QEMU / libvirt

Шаг 4: Параметры запуска и память

Когда образ и виртуализация в порядке, причина часто кроется в конфигурации узла. Проверьте объём выделяемой памяти: если суммарное потребление всех запущенных ВМ превышает физическую RAM хоста, новая машина не стартует. Свободную память показывает команда free -h.

Также возможны конфликты параметров: например, указанный тип машины (-machine) несовместим с версией QEMU, или образ требует интерфейс, которого нет в конфигурации. Возможная проверка — временно упростить конфигурацию узла до минимальной (один диск, стандартный тип машины, без дополнительных устройств) и посмотреть, запустится ли он.

⚠️ Внимание: не редактируйте конфигурационные файлы ВМ вручную, пока не сделали их резервную копию. Ошибка в синтаксисе конфига сама по себе приводит к падению QEMU с кодом 1.

Специфика разных платформ

В GNS3 дополнительно проверьте, что в настройках шаблона узла выбран корректный бинарный файл QEMU и версия, совместимая с образом. В EVE-NG обратите внимание на права каталога с образами и на то, что образ размещён в правильной подпапке согласно документации эмулятора — EVE-NG строго следит за структурой каталогов.

В Proxmox VE полезно посмотреть конфигурацию ВМ командой qm config <VMID> и сравнить пути к дискам с фактическим содержимым хранилища. Если хранилище недоступно (например, отмонтирован сетевой диск), QEMU упадёт именно с кодом 1 при попытке открыть образ.

Как запустить QEMU вручную для диагностики

Скопируйте команду запуска из лога или конфигурации, подставьте путь к образу и выполните её в терминале от нужного пользователя. QEMU выведет точную причину сбоя в stderr — например, «Could not open image: Permission denied» или «kvm: module not loaded». Это самый быстрый способ локализовать проблему.

Часто задаваемые вопросы

Что значит «QEMU exited with code 1» простыми словами?

Процесс виртуальной машины завершился сразу после запуска из-за ошибки. Код 1 — общий признак сбоя; конкретную причину нужно смотреть в логе QEMU или в выводе команды запуска.

Может ли ошибка появиться из-за нехватки оперативной памяти?

Да. Если хост не может выделить ВМ запрошенный объём RAM, QEMU завершается с ошибкой. Проверьте свободную память командой free -h и уменьшите выделение в настройках узла.

Образ на месте, виртуализация включена, но ошибка остаётся. Что дальше?

Запустите QEMU вручную с теми же параметрами из терминала — сообщение об ошибке в stderr укажет на конкретный проблемный компонент: файл, устройство или опцию командной строки.

Помогает ли переустановка QEMU?

Редко: в подавляющем большинстве случаев причина в конфигурации, правах доступа или виртуализации, а не в самом пакете. Переустановку имеет смысл рассматривать только если повреждены файлы самого пакета, что видно по ошибкам менеджера пакетов.

Ошибка возникает только для одного узла, остальные работают. В чём дело?

Это почти всегда указывает на проблему конкретного узла: повреждённый образ, неверный путь к файлу или несовместимые параметры запуска. Сравните конфигурацию проблемного узла с рабочим и проверьте его образ через qemu-img check.