Virtualisation

De Wiki de Nelly & Richard
Sauter à la navigation Sauter à la recherche

Virtualisation

RAW to VDI, VDI to RAW, ...

  • Il est parfois nécessaire de faire ces quelques manipulations pas toujours évidentes,

RAW to VDI

  • Après avoir testé les vditool (un peu lent, et plus trop maintenu depuis le fork de Sun) VirtualBox l'intègre en partie dans VBoxManage convertdd
$ VBoxManage convertdd disk.raw disk.vdi

VDI to RAW

  • Là, tu peux toujours faire des recherches avant de choper une info tu vas te coucher tard, ou sinon utilises vditool.
  • Bon, le plus rapide reste le bon vieux dd :
1. Démarrage de la vbox avec un systemrescuecd et le dur.vdi à convertir.
2. Montage via sshfs de /tmp par exemple de la machine locale (histoire d'avoir de la place)
     % sshfs toto@local:/tmp /mnt/custom
3. copie bit à bit
     % dd if=/dev/sda of=/mnt/custom/sda.raw
  • Un petit lien vers une méthode similaire customizé.

le reste

  • Bon, ben man qemu-img

Virtualbox

installation

  • Ajout de votre utilisateur au groupe vboxusers
$ sudo usermod -a vboxusers <votre_username>
  • si besoin : installation de kernel-headers et compilation des drivers
$ sudo apt-get install linux-headers
$ sudo /etc/init.d/vboxdrv setup

bridge

/!\ Cette partie n'est plus nécessaire à partir de la version 2.1 /!\

  • Installation de bridge-utils
$ sudo apt-get -y install bridge-utils
  • Si jamais vous installez inutilement tunctl ou uml-utilities et/ou network-manager désinstallez-les :
$ sudo apt-get --purge remove uml-utilities network-manager
  • Créer le fichier /etc/vbox/interfaces :
# <vboxN> <utilisateur> <nom-du-bridge>
vbox0 votre_username br0
# ajouter ici toutes les interfaces dont vous avez besoin
  • Modifiez votre fichier /etc/network/interfaces
# fichier /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

iface br0 inet dhcp
  bridge_ports eth0
  • Redémarrez les interfaces :
$ sudo ifdown eth0 && sudo ifup br0
$ sudo /etc/init.d/vboxnet restart
  • Le petit script qui va bien :
#!/bin/bash

# démarrage de VirtualBox et de ses interfaces
# remplacer <votre_user> par ...
# un raccourcis gksudo './script.sh -s'

ipaddr=$(ifconfig | grep -c br0)
arg1=$1

fncUsage() {
 echo
 echo "  usage :"
 echo "    virtualbox.sh -s : démarrage des interfaces VirtualBox"
 echo "    virtualbox.sh -h : ce message"
 echo
}

if [ $ipaddr -eq 0 ] && [ "$arg1" = "-s" ] ; then
 echo
 echo "Démarrage des interfaces VirtualBox"
 ifup br0
 /etc/init.d/vboxnet restart
 echo
 echo "Démarrage des interfaces VirtualBox"
 su <votre_user> -c /usr/bin/VirtualBox
elif [ $ipaddr -gt 0 ] && [ "$arg1" = "-s" ] ; then
 echo
 echo "Démarrage des interfaces VirtualBox : [OK]"
 echo
 su <votre_user> -c /usr/bin/VirtualBox
elif [ "$arg1" = "-h" ] ; then
 fncUsage
else
 fncUsage
fi
  • Vous pouvez lancer ou créer une machine virtuelle en spécifiant :
réseau : attaché à > Adaptateur réseau hôte
  • Cette configuration vous permet d'utiliser vos machines virtuelles de manière ponctuelle en lancant :
$ sudo ifdown eth0 && sudo ifup br0
  • Suivant votre utilisation il sera peut-être judicieux d'inverser la ligne auto entre br0 et eth0
  • Si vous utilisez simplement iptables ou ufw
iptables :
$ sudo iptables -A FORWARD -i br0 -o br0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
ufw : /var/lib/ufw/user.rules
### personal rules ###
-A ufw-user-forward -i br0 -o br0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
/etc/sysctl.conf ou /etc/ufw/sysctl.conf
Passez évidemment la valeur de net/ipv4/ip_forward à 1

Port série

Machine virtuelle

Il peut-être utile de pouvoir se servir du port série pour simuler certaines configurations

  • dans la configuration des interfaces série de la VM
    • Mode du port : Tuyau hôte
    • Chemin : /tmp/ttyS0
  • en CLI
computer:~% VBoxManage modifyvm vm_livecd --uartmode1 server '/tmp/ttyS0'

Machine hôte

Dans un terminal un simple socat

computer:~% socat - /tmp/ttyS0

qemu

installation

  • Pour la plupart des distributions vous le trouverez dans les dépôts :
$ sudo apt-get -y install qemu linux-headers build-essential kqemu-source
  • Mais bon, faut quand même bosser ;)
$ cd /usr/src
$ sudo tar -xjf kqemu.tar.bz2 ; cd /usr/src/modules/kqemu/
$ sudo ./configure
$ sudo make
$ sudo ./install.sh
$ cd ../.. ; rm -fr /usr/src/modules
# créez et ajoutez vous au groupe kqemu
$ sudo modprobe kqemu ; sudo chown :kqemu /dev/kqemu
  • Chargement du module au démarrage :
# echo "kqemu" >> /etc/modules
et changement du group du fichier /dev/kqemu
dans /etc/rc.local par exemple

Utilisation

  • lancement d'une machine virtuelle avec kqemu
$ qemu -boot d -cdrom ISO/systemrescuecd-x86-1.0.3.iso -hda DUR/hdd1.raw -m 512 -kernel-kqemu

NetBSD

  • Bon, pas évident, mais voilà le driver net à charger :
qemu -hda netbsd.raw -net nic,macaddr=01:AB:CD:EF:23:00,model=ne2k_pci \
-net tap,ifname=vbox0,script=/etc/qemu-ifup -m 256 -no-acpi -localtime \
-daemonize -no-kqemu -nographic

kvm

  • Bon peut de chose l'installation est simpliste :
$ sudo apt-get install kvm
  • après on change la commande qemu par kvm