1. Инсталиране
- Код за потвърждение: Избери целия код
apt-get install qemu kqemu uml-utilities bridge-utils
2. Зареждане на модула kqemu за да имаме ускорение на работата с виртуалната машина
- Код за потвърждение: Избери целия код
modprobe kqemu
Може да добавите kqemu в /etc/modules, за да се вдига при зареждане на системата
3. Създаване на img файл
- Код за потвърждение: Избери целия код
mkdir $HOME/qemu_imgs
cd $HOME/qemu_imgs
qemu-img create -f qcow deb.img 1G
Така създавам img файл, чиято максимална големина ще е 1G и на него ще инсталирам дебиан
4. Инсталиране на ОС в/у създаденото виртуално у-во
- Код за потвърждение: Избери целия код
qemu -hda deb.img -cdrom debian-iso.img -boot d
5. Конфигуриране на network bridge
- проверяваме за поддръжка на TUN/TAP в ядрото, т.е. трябва да имаме CONFIG_TUN=m или CONFIG_TUN=y в конфига
- Код за потвърждение: Избери целия код
grep CONFIG_TUN= /boot/config-`uname -r`
При мен е като модул, т.е.
- Код за потвърждение: Избери целия код
gaara@debian:~/temp$ grep CONFIG_TUN= /boot/config-`uname -r`
CONFIG_TUN=m
gaara@debian:~/temp$
- добавяме в /etc/network/interface настройката на bridge-а (трябва да сте root)
- Код за потвърждение: Избери целия код
....................................
# The bridge network interface(s)
auto br0
iface br0 inet static
address 192.168.1.2
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
bridge_ports ppp0 #понеже съм на pppoe
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
- редактираме файла /etc/qemu-ifup, като изтриваме всичко и добавямес ледните редове (трябва да сте root)
- Код за потвърждение: Избери целия код
#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 2
- редактираме /etc/sudoers (трябва да сте root), като добавяме
- Код за потвърждение: Избери целия код
# Cmnd alias specification
Cmnd_Alias QEMU=/sbin/ifconfig,/sbin/modprobe,/usr/sbin/brctl,/usr/sbin/tunctl
# User privilege specification
root ALL=(ALL) ALL
gaara ALL=NOPASSWD: QEMU
като вместо gaara, слагате вашият потребител, т.е. изхода от whoami
6. Задаваме права за изпълнение на /dev/net/tun и /etc/qemu-ifup (трябва да сте root)
- Код за потвърждение: Избери целия код
debian:/home/gaara# chmod 755 /dev/net/tun
debian:/home/gaara# chmod 755 /etc/qemu-ifup
7. Отиваме в директорията, в която инсталирахме вируталната ОС и създаваме скрипта qemu-tap
- Код за потвърждение: Избери целия код
cd $HOME/qemu_imgs
touch qemu-tap
gedit/kedit/vim/nano qemu-tap #един от всичките редактори
В скрипта поставяте следните редове
- Код за потвърждение: Избери целия код
#!/bin/sh
# script to manage tap interface allocation
# for linux kernels >= 2.6.18
# set up a tap interface for qemu
# USERID - uid qemu is being run under.
USERID=`whoami`
iface=`sudo tunctl -b -u $USERID`
# 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=ne2k_pci
# model=ne2k_isa
# start qemu with our parameters
qemu $@ -net nic,vlan=0,macaddr=$ranmac,model=$model \
-net tap,vlan=0,ifname=$iface
# qemu has stopped - no longer using tap interface
sudo tunctl -d $iface &> /dev/null
8. Зареждаме tun модула и стартираме скрипта:
- Код за потвърждение: Избери целия код
sudo modprobe tun
sh qemu-tap -hda deb.img -localtime
Настройката на виртуалната мрежа е както следва:
- IP 192.168.1.3 или каквото си пожелаете, стига да е по-голямо от 2 в 4-ят октет
- NETMASK 255.255.255.0
- GW 192.168.1.2
- DNS-те са ви като на реалната машина
Остана само да изпълним:
- Код за потвърждение: Избери целия код
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Източници:
QEMU - Debian - Linux - TUN/TAP - network bridge
FAQ
The Qemu Howto