===== 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 \
-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 \\
В данном примере запуск осуществляется от пользователя 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 dev br0
При этом сетевая подсистема выглядит как бридж в который подключена хост машина интерфейсом br0 \\
и виртуальные машины интерфейсами tun/tap. \\
Cкрипты qemu-ifup и qemu-ifdown обеспечивают подключение и отключение от этого бриджа. \\
==== Монитор состояния может использоваться для ====
Выключения виртуальной машины и других функций контроля и управления. \\
//"Нажать кнопку питания" на виртуальной машине можно так//
echo "system_powerdown" | /usr/bin/nc localhost 7101