===== 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