Александр Горбач


программирование, админство

Настройка KVM под Ubuntu Server 10.04 LTS. Часть 6 – Прямая работа с KVM

без комментариев

Использование KWM напрямую

В основном этот мануал фокусируется на использование KVM через libvirt, однако так же возможно работать с KVM напрямую. Это не рекомендуется, так как довольно таки громоздко, но может быть иногда очень полезно.

KVM очень похож на на Qemu и он позволяет запускать машины из командной строки.

Основной синтаксис :
kvm -m 512 -hda disk.img -cdrom ubuntu.iso -boot d -smp 2

  • -m = память(in MB)
  • -hda = первый жесткий диск
    • Вы можете использовать различный форматы образов .img, .cow
    • Вы так же можете загрузиться и с жесткого диска.Будте осторожны с этой опцией,если вы не хотите загрузиться с хостового корневого раздела
      • Синтаксис -hda /dev/sda
      • Это вызовет ваше меню grub из вашей MBR когда вы запустите kvm.
  • -cdrom может быть iso образом или приводом CD/DVD.
  • -boot [a|c|d|n] загрузиться с дисковода (a), жесткого диска (c), CD-ROM (d), или сети (n)
  • -smp = количество процессоров
  • -alt-grab изменить комбинацию Ctrl-Alt захвата мыши на Ctrl-Alt-Shift ( очень полезно, если вы часто используете некоторые быстрые клавиши как Ctrl-Alt-Del или Windows-E)

Вообще, опций гораздо больше. Помощь доступна по команде:
kvm --help

Bridged Networking

Для того, чтобы запустить KVM используя сетевой мост от польователя, нам необходимо сделать некоторую конфигурацию.

1. Для начала сделайте вашу карту сетевым мостом, как описано в Настройка сети в KVM

2. Установите uml-utilities

sudo apt-get install uml-utilities
3. Установите себе разрешение на устройство tun. Используя любой редактор, отредактируйте edit /etc/udev/rules.d/40-permissions.rules, добавьте эти строки в конец файла:
KERNEL=="tun", GROUP="kvm", MODE="0660"
4. Перезагрузитесь (для того, чтобы поднялся ваш мост и устройства tun).

5. Отредактируйте /etc/kvm/kvm-ifup добавив sudo в начало команд ip и brctl

#!/bin/sh

switch=$(ip route ls | awk '/^default / { for(i=0;i '''sudo''' /sbin/ip link set dev "$1" up
'''sudo''' /usr/sbin/brctl addif ${switch} $1
exit 0

6. Нам нужен скрипт-обертка для запуска kvm. Я помещу этот скрипт в ~/bin и назову его kvm-bridge. Если ~/bin в вашей переменной path вы можете вызвать набрать команду в любом месте. Этот скрипт собран из множества источников

#!/usr/bin/env bash
# script to manage tap interface allocation
# for linux kernels >= 2.6.18

# modified by bodhi.zazen from :
# http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/FrequentlyAskedQuestions#head-2511814cb92c14dbe1480089c04f83c281117a86
# http://ubuntuforums.org/showthread.php?t=528046
# http://www.howtoforge.com/using-kvm-on-ubuntu-gutsy-gibbon

# set up a tap interface for qemu
# USERID - uid qemu is being run under.
USERID=`whoami`

# generate a random mac address for the qemu nic
# shell script borrowed from user pheldens @ qemu forum

ranmac=$(echo -n DE:AD:BE:EF ; for i in `seq 1 2` ; \
do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done)

# specify which NIC to use - see qemu.org for others
# model=r8169
# Set model based on this how-to
# http://www.howtoforge.com/using-kvm-on-ubuntu-gutsy-gibbon

model=rtl8139
iface=`sudo tunctl -b -u $USERID`

# start kvm with our parameters
# echo "Bringing up interface $iface with mac address $ranmac"
# nohup added to allow kvm to run independent of the terminal
nohup kvm -net nic,vlan=0,macaddr=$ranmac -net tap,vlan=0,ifname=$iface $@

# kvm has stopped - no longer using tap interface
sudo tunctl -d $iface &> /dev/null

7. Установит бит запуска на ваш новый скрипт:

chmod 0755 ~/bin/kvm-bridge
8. Измените группу суперпользователей для того, чтобы разрешить членам группы kvm запускать скрипт-обертку kvm-bridge и создавать сетевые мосты без запуска KVM от root.

visudo
Добавьте эти строки в конец файла:

# Allow members of the kvm group to configure a bridged virtual network interface
%kvm ALL=(ALL) NOPASSWD: /sbin/ip, /usr/sbin/brctl, /usr/sbin/tunctl

9. Теперь запускайте kvm из командной строки. Вам не нужно прописывать сетевой интерфейс

kvm-bridge -m 512 -hda disk.img -cdrom ubuntu.iso -boot -d -smp 2

iptables

Добавляем эти правила в iptables :

# allow incoming packets for kvm guest
IPTABLES -A FORWARD -d $IPADDR_FROM_GUEST_OS -j ACCEPT
# allow outgoing packets from kvm
IPTABLES -A FORWARD -s $IPADDR_FROM_GUEST_OS -j ACCEPT

Измените "$IPADDR_FROM_GUEST_OS" на реальный ip адрес гостевой kvm машины (Я рассчитываю, что вы сконфигурировали вашу гостевую машину на использование статического IP).

Автор Sash(k)a

Ноябрь 5th, 2011 at 11:47 дп

Опубликовано в Без рубрики

Тэги , , ,

Оставьте комментарий

Яндекс.Метрика