Это старая версия документа!
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 <ip.add.res.s/su> dev br0
При этом сетевая подсистема выглядит как бридж в который подключена хост машина интерфейсом br0
и виртуальные машины интерфейсами tun/tap.
Cкрипты qemu-ifup и qemu-ifdown обеспечивают подключение и отключение от этого бриджа.