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 modifyvm sarah --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

 

 

 

Vous aimerez aussi...