VirtualBox Ubuntu pour SARAH
Suite à mes essais ratés avec VMware ESXi :
- Tous mes disques ne remontent pas (ceux sur une carte d’extension PCI)
- Impossible de faire remonter mon modem GSM dans la VM (aucun soucis pour le RFXcom)
- Et surtout impossible d’arrêter les disques locaux (ça c’est vraiment gênant usure des disques, consommation augmentée et augmentation de la température du serveur)
- Et en plus la maintenance était plus complexe
J’ai décidé de partir autrement avec une VM Windows dans Ubuntu (j’ai juste besoin d’une VM Windows pour SARAH). Ayant déjà essayé KVM et le trouvant un peu complexe à installer j’ai décidé de partir sur virtual box (tout en n’installant pas de serveur X). Voici comment l’installer (Ubuntu 13.10 x64 serveur édition) :
Installation de virtual box
wget http://download.virtualbox.org/virtualbox/4.3.8/virtualbox-4.3_4.3.8-92456~Ubuntu~raring_amd64.deb
dpkg -i virtualbox-4.3_4.3.8-92456\~Ubuntu\~raring_amd64.deb
apt-get -f install
wget http://download.virtualbox.org/virtualbox/4.3.8/Oracle_VM_VirtualBox_Extension_Pack-4.3.8-92456.vbox-extpack
VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.8-92456.vbox-extpack
Installation de la VM
Liste des OS supportées par VirtualBox (ça permet de récupérer l’ID)
VBoxManage list ostypes
Création de la VM + définition des paramètres
VBoxManage createvm –name sarah –ostype Windows7_64 –registe
VBoxManage modifyvm sarah –memory 2048 –acpi on –boot1 dvd –nic1 bridged –bridgeadapter1 eth0 –vram 64 –floppy disabled –audio pulse –usb on –usbehci on
Ajout du disque système (taille en Mo donc la 20 Go)
VBoxManage createhd –filename « virtualsarah.vdi » –size 20000
VBoxManage storagectl sarah –name « sata » –add sata –controller « IntelAhci »
VBoxManage storageattach sarah –storagectl « sata » –port 1 –device 0 –type hdd –medium virtualsarah.vdi
VBoxManage storageattach sarah –storagectl « sata » –port 0 –device 0 –type dvddrive –medium #PATH_TO_ISO#
Pas d’authentification pour le moment
VBoxManage modifyvm sarah –vrdeauthtype external
VBoxManage modifyvm sarah –vrdeauthtype null
Définition du port pour le rdp + lancement de la VM
VBoxManage modifyvm sarah –vrdemulticon on –vrdeport 3389
VBoxHeadless -s sarah &
Ensuite il faut installer dans l’hôte les outils virtual box (sinon la souris est décalée et l’affichage tout petit) :
wget http://download.virtualbox.org/virtualbox/4.3.8/VBoxGuestAdditions_4.3.8.iso
VBoxManage storageattach sarah –storagectl « sata » –port 0 –device 0 –type dvddrive –medium /#PATH_DOWNLOAD#/VBoxGuestAdditions_4.3.8.iso
Alors là pour l’installer dans la VM j’ai galéré, j’ai dû tout faire au clavier mais après un redémarrage plus de problème de décalage de souris ou autre.
Pour optimiser un peu les performances d’affichage du bureau à distance :
VBoxManage modifyvm sarah --vrdevideochannel on
VBoxManage modifyvmsarah--vrdevideochannelquality 60
Sécuriser l’accès au RDP de virtual box (remplacer secret par le mot de passe)
VBoxManage setproperty vrdeauthlibrary « VBoxAuthSimple »
VBoxManage modifyvm sarah –vrdeauthtype external
VBoxManage internalcommands passwordhash « secret »
Récupérer le hash précédemment généré et remplacer par l’utilisateur de connexion voulu
VBoxManage setextradata « sarah » « VBoxAuthSimple/users/user » #hash#
Après pour se connecter à partir de Windows il y a une petite subtilité il faut bien cocher la case « Me permettre d’enregistrer les informations d’identification » :
Poste opération
Démarrage de la VM en tant que service (je me suis basé sur : http://sisco.laf.free.fr/memento/?p=56 en enlevant --vrdp off ) à mettre dans /etc/init.d/vm-sarah (ne pas oublier le chmod +x /etc/init.d/vm-sarah) :
#! /bin/bash
### BEGIN INIT INFO
# Provides: MyVM
# Required-Start: $local_fs $remote_fs vboxdrv vboxnet
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: virtual machine
# Description: virtual machine hosted by VirtualBox
### END INIT INFO
#
# Author: Francois Lafont
# Pour faire un tracage du script
#set -x
PATH=/usr/sbin:/usr/bin:/sbin:/bin
#!!# NAME sera le nom du fichier de script. Ici, c'est MyVM. Si vous
#!!# souhaitez mettre un nom different, alors il faudra remplacer
#!!# MyVM dans la ligne 3 par le nom que vous avez choisi.
NAME="MyVM"
SCRIPTNAME="/etc/init.d/$NAME"
MANAGE_CMD="VBoxManage"
START_CMD="VBoxHeadless"
#!!# VM_OWNER sera le nom de login du proprietaire de la VM.
VM_OWNER="root"
#!!# VM_NAME sera le nom exact de la VM tel qu'il apparait
#!!# sur l'interface graphique. Il vaut mieux que ce nom
#!!# ait ni accent ni espace (encore que les espaces, ca
#!!# devrait passer).
VM_NAME="sarah"
#!!# Message envoye a la VM via le reseau avant son shutdown
#!!# (evitez les accents).
MESSAGE="Arret du systeme..."
#!!# Temps en secondes durant lequel le message s'affiche avant
#!!# l'execution du shutdown.
TEMPS="25"
#!!# Login et mot de passe d'un compte administrateur de la VM.
LOGIN="admin"
PWD="local"
#!!# IP de la VM a eteindre via le reseau. Il faut donc une IP fixe.
IP="192.168.0.??"
SHUTDOWN_CMD="net rpc shutdown -t \"$TEMPS\" -C \"$MESSAGE\" -U \"$LOGIN%$PWD\" -I \"$IP\""
#!!# 720 secondes = 12 minutes pour laisser a la VM le temps de s'éteindre
#!!# proprement, au dela la VM est mise sur poweroff brutalement. Vous pouvez
#!!# changer cette valeur comme il vous plait. C'est pour etre sur que le
#!!# demon s'arrete au bout d'un temps fini.
MAX_TEMPS="120"
# Pour lancer le demon
do_start()
{
# Return
# 0 --> le demon a demarre
# 1 --> le demon etait deja demarre
# 2 --> le demon n'a pas pu demarrer
# On verifie si la VM est deja en train de tourner
running=$(su $VM_OWNER -c "$MANAGE_CMD showvminfo \"$VM_NAME\"" | grep "^State:.*running" | wc -l)
if [ $running -eq 1 ]
then
echo " * $VM_NAME is already running .................................... [ OK ]"
return 1
fi
# Si elle n'est pas encore allumee, on la lance.
su $VM_OWNER -c "nohup $START_CMD --startvm \"$VM_NAME\" > /dev/null 2>&1 &"
# On verifie que la VM est bien lancee.
sleep 2
running=$(su $VM_OWNER -c "$MANAGE_CMD showvminfo \"$VM_NAME\"" | grep "^State:.*running" | wc -l)
if [ $running -eq 0 ]
then
echo " * Failed to start $VM_NAME .................................... [ ERROR ]"
return 2
else
echo " * $VM_NAME started .................................... [ OK ]"
return 0
fi
}
# Pour arreter le demon
do_stop()
{
# Return
# 0 --> le demon a ete stoppe
# 1 --> le demon etait deja stoppe
# 2 --> le demon ne peut pas etre stoppe
# On teste si la MV est deja stoppee
running=$(su $VM_OWNER -c "$MANAGE_CMD showvminfo \"$VM_NAME\"" | grep "^State:.*running" | wc -l)
if [ $running -eq 0 ]
then
echo "$VM_NAME is already stopped."
return 1
fi
# Si elle n'est pas stoppee, on lance l'extinction de la MV via le reseau
su $VM_OWNER -c "$SHUTDOWN_CMD"
echo "Please wait..."
compteur=0
while [ $running -eq 1 ]
do
if [ $compteur -gt $MAX_TEMPS ]
then
su $VM_OWNER -c "$MANAGE_CMD controlvm \"$VM_NAME\" poweroff"
echo "Failed to stop correctly $VM_NAME which is directly turned off."
return 2
else
sleep 10
echo "Please wait..."
running=$(su $VM_OWNER -c "$MANAGE_CMD showvminfo \"$VM_NAME\"" | grep "^State:.*running" | wc -l)
compteur=`expr $compteur + 10`
fi
done
echo "$VM_NAME shutdown."
return 0
}
# Pour obtenir les statuts du demon
do_status()
{
su $VM_OWNER -c "$MANAGE_CMD showvminfo \"$VM_NAME\"" | grep "^State:"
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
status)
do_status
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status}" >&2
exit 3
;;
esac
Pour l’ajouter en démarrage auto : sudo update-rc.d vm-sarah defaults
Pour l’arrêt à distance de la machine depuis Linux il faut activer le service de registre à distance dans Windows (services.msc).
Il faut aussi rajouter la clef de registre : LocalAccountTokenFilterPolicy à 1 dans HKLocalMachine/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System
Étendre un disque
Créer un disque de la taille voulue (ici 30 Go) :
VBoxManage createhd –filename « nouveau.vdi » –size 30000
Arrêter la machine dont vous voulez étendre le disque (remplacer ancien et nouveau par les noms des disques)
VBoxManage clonehd ancien.vdi –existing nouveau.vdi
Dans un prochain tuto : installation de php-virtualBox et mise en place de S.A.R.A.H
