Это старая версия документа!


QEMU

В общем случае запуск с подготовленным образом выглядит следующим образом.

#!/bin/bash 
/sbin/modprobe tun
/sbin/modprobe kvm_intel
/usr/bin/chmod 666 /dev/kvm
/usr/sbin/tunctl -g qemu -t tap0

su -s /bin/sh -c "/usr/bin/qemu-system-i386 \
      -hda /var/vm/ranok_vm.img \
      -hdb /var/vm/ranok_var.img \
      -m 256 -boot c \
      -cdrom /home/ftp/iso_images/slackware13_37/slackware-13.37-install-dvd.iso \
      -enable-kvm -net nic -net tap,ifname=tap0 -monitor telnet:localhost:7101,server,nowait,nodelay \
      -localtime -daemonize -nographic " nobody

Коментарии

Подготовка запуска

/sbin/modprobe tun → Загрузить модуль псевдо-устройств TUN/TAP
/sbin/modprobe kvm_intel → Загрузить модуль поддержки виртуализации на процессоре Intel автоматически загружает подуль kvm
/usr/bin/chmod 666 /dev/kvm → Устанавливаем права позволяющие использовать виртуализацию всем пользователям
/usr/sbin/tunctl -g qemu -t tap0 → устанавливаем группу для псевдо-устройства для возможности доступа пользователям (в данном случае группы qemu)


Запуск

su -s /bin/sh -c «/usr/bin/qemu-system-i386 \

  1. hda /var/vm/ranok_vm.img \
  2. hdb /var/vm/ranok_var.img \
  3. m 256 -boot c \
  4. cdrom /home/ftp/iso_images/slackware13_37/slackware-13.37-install-dvd.iso \
  5. enable-kvm -net nic -net tap,ifname=tap0 -monitor telnet:localhost:7101,server,nowait,nodelay \
  6. localtime -daemonize -nographic » nobody

В данном примере запуск осуществляется от пользователя nobody.

# su -s /bin/sh -c «…….» nobody → обертка

Собственно сам запуск

/usr/bin/qemu-system-i386 → qemu эмулятор
-hda /var/vm/img1.img → образ для hda
-hdb /var/vm/img2.img → образ для hdb
-m 256 → Памяти 256Мб
-boot c → Загружаемся с hda
-cdrom /home/ftp/slackware13_37/slackware-13.37-install-dvd.iso → подключаем образ CD
-enable-kvm → Включить эмуляцию ядра
-net nic -net tap,ifname=tap0 → Подключить сетевую подсистему.
-monitor telnet:localhost:7101,server,nowait,nodelay → Разрешить использования монитора управления VM
-localtime → Системные часы показывают локальное время
-daemonize → Следует из названия
-nographic → Нет монитора

Дополнительные скрипты

qemu-ifup
#!/bin/sh
sudo /etc/qemu-ifup-sudo $@
qemu-ifup-sudo
#!/bin/sh
echo "Binding interface  $1 "
/sbin/ip link set $1 up
/usr/sbin/brctl addif br0 $1
qemu-ifdown
#!/bin/sh
sudo /etc/qemu-ifdown-sudo $@
qemu-ifdown-sudo
#!/bin/sh
echo "Unbinding interface  $1 "
/usr/sbin/brctl delif br0 $1
/sbin/ip link set $1 down
Выдержка из /etc/sudoers (Не забывая о необходимости использовать visudo)
%qemu  ALL=(ALL) NOPASSWD: /etc/qemu-ifup-sudo *
%qemu  ALL=(ALL) NOPASSWD: /etc/qemu-ifup *
%qemu  ALL=(ALL) NOPASSWD: /etc/qemu-ifdown-sudo *
%qemu  ALL=(ALL) NOPASSWD: /etc/qemu-ifdown *
При иннициализации системы создаем некоторые настройки
/usr/sbin/brctl addbr br0
/sbin/ip link set br0 up
/sbin/ip addr add <ip.add.res.s/su> dev br0

При этом сетевая подсистема выглядит как бридж в который подключена хост машина интерфейсом br0
и виртуальные машины интерфейсами tun/tap.
Cкрипты qemu-ifup и qemu-ifdown обеспечивают подключение и отключение от этого бриджа.

Монитор состояния может использоваться для

Выключения виртуальной машины и других функций контроля и управления.
«Нажать кнопку питания» на виртуальной машине можно так

echo "system_powerdown" | /usr/bin/nc localhost 7101 

QR Code
QR Code wiki:qemu (generated for current page)