Jump to content

Qemoo

Qemoo - скрипт-обертка для эмулятора qemu.

Просто передайте то, что нужно запустить:
  qemoo Rosa.iso
  qemoo /dev/sda
  qemoo ./Rosa.qcow2
Если EFI:

добавляем ключ -e

  qemoo -e my.img 
  и т.д
Установка ОС на виртуальный диск:

Добавляем ключ -i

  qemoo -i Rosa.iso
  qemoo -i -е /dev/sdb

утилита создаст в текущем каталоге образ qcow2 и подключит его при старте, после инсталляции можно грузиться с образа этим же qemoo

  qemoo _qemoo1_ROS.qcow2 (имена образов генерируются, но можно и задать)
Установка с исо на реальный диск:

Ключ -a позволяет подключать к виртуальной машине дополнительные устройства или образы

  qemoo Rosa.iso -a /dev/sdb
Параметры для qemu:

Можно добавлять свои параметры для qemu в конце строки после --

  qemoo -e -S Rosa.iso -- -smp 4
Хитромудрая загрузка:

Можно грузить с iso так, как загрузка шла бы если исо по-байтово копировать на флешку.

  qemoo -l Rosa.iso
  qemoo -l -e Rosa.iso

Можно пробросить при загрузке usb устройство целиком, например для 4G модемов с sd картой куда установлена ОС или барий на токене

  qemoo -L /dev/sdb
Проброс каталога между хостом и гостем:

При каждой загрузке в гостевую ОС пробрасывается папка ( по умолчанию ./ ), как подключить ее в гостевой ОС линукс будет написано в консоль при старте

Сеть:

Для удобства взаимодействия по сети с виртуальными машинами Virt-Manager'а, виртуальные машины, запущенные с помщью qemoo, получают сетевой адрес из той же подсети, если она существует. Обычно это подсеть 192.168.122.0/24 на интерфейсе virbr0. Если этого интерфейса нет, вероятно не установлена и/или не запущена служба libvirtd. В этом случае для каждой виртуальной машины будет подниматься своя виртуальная подсеть, в которой она будет находиться за NAT, что не всегда подходит. Также сетевой мост можно создать и настроить самостоятельно, назвав его qemoobr0. При его наличии virbr0 игнорируется.

Демон:

Можно запустить виртуальную машину с выводом видео по протоколу SPICE, то есть машина будет запущена демоном, а для подключения к ее экрану вам понадобится сторонее приложение (virt-viewer, remmina).

Запустите с ключом -d. Qemoo вернет номер порта для подключения.

  qemoo -d Rosa.iso
systemd:

Пакет qemoo содержит юниты для создания виртуальных машин управляемых systemd. Можно использовать для запуска виртуальных машин при старте ОС хоста.

При запуске qemoo в режиме установки (ключ -i) рядом с новым qcow2 образом создается одноименный файл - образ.qcow2.conf он содержит настройки которые нужно применять при старте qemoo c этим образом

Выглядит так:

  ACTION=run
  RAM="auto"
  ADD=""
  EFI="-bios /usr/share/OVMF/OVMF_CODE.fd"
  PORT=""
  REDIRUSB=""
  LOSETUP=""
  SPICE=""
  SHARE="/home/betcher/Programming/ISO"
  QEMOOADD="" 
                                      

Для запуска с systemd нужно изменить:

  SPICE=yes  (чтобы виртуальная машина запускалась демоном)
  PORT=6001  (порт для подключения иначе будет назначен автоматически)
                                      

Запуск такого образа от root с systemd:

  systemctl start  qemoo@$(systemd-escape /path/to/your/img.qcow2)

Проверка состояния:

  systemctl status qemoo@$(systemd-escape /path/to/your/img.qcow2)

Включить авто запуск гостя при старте ОС хоста:

  systemctl enable qemoo@$(systemd-escape /path/to/your/img.qcow2)

Отключить запуск гостя при старте хоста:

  systemctl disable qemoo@$(systemd-escape /path/to/your/img.qcow2)
                                      

Те же команды можно использовать для запуска виртуальной машины с правами пользователя, для этого после systemctl добавляем --user

Например:

  systemctl --user enable qemoo@$(systemd-escape /path/to/your/img.qcow2)
                                      

systemd-escape здесь нужен для экранирования слэшей в путях

Конфигурационные файлы:

В порядке увеличения приоритета:

  1. /etc/qemoo.cfg
      или вместо него указанный в переменной окружения $QEMOOCFG
  2. ./qemoo.cfg
  3. имя_загружаемого_образа.conf
      то есть:
      _qemoo1_MOS.qcow2 - образ
      _qemoo1_MOS.qcow2.conf - его личный конфиг
  4. указанный с параметром --config