TAF pour pouvoir virtualiser correctement

Idée principale

* Mettre l'image disque-winxp sur un serveur

* Mettre le snapshot sur le disque dur local pour le traitement des diffèrences

* Ceux qui restent sur le serveur nfs, de préférence sur une partition lvm

I. Configuration de la machine type/modele

* Configurer virtualbox en mode graphique :), l'essentiel est d'avoir une "bonne" config de Windows XP

* Installer le VBOXGuestAdditions_Tools_1.5.x_OSE.iso qui est un correctif, essentiel pour le partage de dossier, graphisme etc...que du bien

* Configuration de Windows avec un disque en mode normal. Droits: (rwx)

II. Configuration sur les machines foad

* Créer une partition (en lvm c'est mieux) de 10Go pour mettre le snapshot

     sudo chmod 666 /dev/vboxdrv
     sudo adduser $LOGNAME vboxusers
     sudo groupadd vboxusers
     sudo chown -R .vboxusers /var/tmp/vbox
     sudo chmod 770 /usr/local/vbox 

* Essai de ATAoverEThernet ... impossible en multiaccess de disque-winxp.vdi

* Mettre le disque-winxp.vdi sur le serveur NFS avec les droits 440, appartenant au groupe vbox. Il sera automatiquement monté par auto-fs

* Faire un script qui automatise le management et le démarrage de vbox,

# 
# Script qui permet aux uilisateurs d'installer une image windows sous virtualbox
# VDI contient l'image du disque winxp mis sur le serveur nfs
# TMP contient l'image de diffèrence. Il est préfèrable de monter une partition sur TMP

VBOXMANAGE=$(which vboxmanage)
ZENITY=$(which zenity)

#Prend comme argument le nom de la nouvelle machine 
VBOXVMUUID=$1

# fichier exporter du serveur
BASENAME=/net/nfs.refer.sn
VDI=$BASENAME/srv/nfs/vbox/
MAPAGE=$BASENAME/$USER/Documents
FLASH=$BASENAME/$USER/.FlashDisk
# partition lvm /dev/scsi-0/temp-vbox
TMP=/var/tmp/vbox
#Nom du disk
DISKFILE=XP-AIGEME.vdi

# Tips pour les usb, dans VBOX ose
 if [ ! -d $FLASH ] ; then
        mkdir $FLASH
        ln -s /media/disk/ $FLASH/
 fi

# Test de Zenity
 if [ ! -x ${ZENITY} ]; then
        echo "Erreur: l'outil Zenity n'est pas installé."
        exit 1
 fi

if [ ! $# = 1 ]; then
        ${ZENITY} --error --title "Argument nécessaire" --text "Ce script doit faire appel à un argument: l'UUID/nom de la machine virtuel doit être mis en argument."
        exit 2
fi

# Nettoyer le répertoire home/.Virtualbox/defaults
  if [ -f $HOME/.VirtualBox//.nfs* ]; then
        sleep 3
        ${ZENITY} --error --title "Erreur suppression nfs*** " --text " Ressource occupée, redémarrer l'application"
        exit 2
  fi

 # Re-nettoyage
 rm -rf $HOME/.VirtualBox/


 # Nettoyage des disques de diffèrences
 if [ ! -d $TMP ] ; then
                ${ZENITY} --error --title " Erreur d'accès disque temp." --text "La partition temporaire est innaccessible "
                exit 1
         elif [ -n "$TMP" -a -e $TMP/* ] ; then                 
                rm -rf $TMP/{*
  fi 


# repertoires des images sources des machines sur le serveur nfs
 ${VBOXMANAGE} setproperty hdfolder $VDI/

# conf des machines restent dans le homedir
 ${VBOXMANAGE} setproperty machinefolder defaults


# faire reconnaitre notre image modele
 if [ ! -e $VDI/$DISKFILE ] ; then
        ${ZENITY} --error --title " Erreur d'accès disque " --text "L'image disque ${DISK} ne peut être trouver "

 fi 
# rendre le disque immutable
${VBOXMANAGE} registerimage disk $DISKFILE -type immutable

                
# creer la machine du nom de "WinXP"
${VBOXMANAGE} createvm -name ${VBOXVMUUID} -register

# lui attacher l'image disque avec les options audio et nat
${VBOXMANAGE} modifyvm ${VBOXVMUUID} -hda $DISKFILE -nic1 nat -snapshotfolder $TMP -audio alsa


if ${VBOXMANAGE} showvminfo ${VBOXVMUUID} | grep ^Primary\ master > /dev/null; then
        DISKFILE=$(${VBOXMANAGE} showvminfo ${VBOXVMUUID} | grep ^Primary\ master | sed -e "s/Primary\ master:\ *//" -e 's/\ *(UUID.*$//')
        if [ ! -r ${DISKFILE} ]; then
                ${ZENITY} --error --title "Disque primaire non trouvé" --text "L'image disque pour le disque primaire, ${DISKFILE}, ne peut être trouvé."
                        exit 1
        fi
fi
                

# supprimer les extradatas
${VBOXMANAGE} setextradata global "GUI/SuppressMessages" "remindAboutAutoCapture,remindAboutInputCapture,remindAboutMouseIntegrationOn"
${VBOXMANAGE} setextradata global "GUI/Customizations noMenuBar,noStatusBar"

# Partage des dossiers entre XP et Ubuntu
vboxmanage sharedfolder add ${VBOXVMUUID} -name Documents -hostpath $MAPAGE/
vboxmanage sharedfolder add ${VBOXVMUUID} -name FlashDisk -hostpath $FLASH/

 
# lancement de vbox

VBOXOUT=$(${VBOXMANAGE} startvm ${VBOXVMUUID})
VBOXCODE=$?

   if [ ! ${VBOXCODE} = 0 ]; then
           echo -e ${VBOXOUT}
           VBOXERROR=$(echo ${VBOXOUT} | grep "\[\!\]\ Text" | sed "s/.*\[\!\]\ Text\ *=\ *//")
           VBOXERROR=$(echo ${VBOXERROR} | sed "s/\ \[\!\].*//")
           ${ZENITY} --error --title "Erreur lors du lancement de la machine virtuelle" --text " Une erreur s'est produite lors du lancement de la machine virtuelle: ${VBOXERROR} 
           tapez \"${VBOXMANAGE} startvm ${VBOXVMUUID}\" pour plus de détails."
        exit 4
   fi
        


Remarques

/!\ Avant de copier l'image modele faire un petit

Reste à faire

Misc

Templates de distros en VDI http://veedee-eyes.com:82/veedeeeyes/book

Réseautage

* Installation par réseau via nat

NdimbyAndriantsoavina/VirtualBox (dernière édition le 2009-06-24 10:57:55 par NdimbyAndriantsoavina)