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)
- * Mappage de "mes documents" avec /$HOME/Documents, et mettre le chemin unc: \\VBOXSVR\Documents 
- * Création d'un lecteur logique pour simuler le lecteur usb dans le poste de travail du guest: net use z: \\VBOXSVR\FlashDisk 
- * Logiciels dépendant de la formation
II. Configuration sur les machines foad
* Créer une partition (en lvm c'est mieux) de 10Go pour mettre le snapshot
- ex: /dev/mapper/scsi--0-temp--vbox on /var/tmp/vbox type ext3 (rw,noatime) Donner les droits aux dossiers /usr/local/temp-vbox à tous les vboxusers.
     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
- * Lorsqu'on modifie, supprime, ou on déplace des fichiers dans "Mes documents" sous WinXP, il faut rafraichir la fenêtre   
- *  Pour modifier le type de l'image pour la maintenance, sachant qu'on a disque-winxp.vdi, avec un chmod rwx  vboxmanage modifyvm WinXP -hda none vboxmanage unregisterimage disk disque-winxp.vdi vboxmanage registerimage disk disque-winxp.vdi -type normal vboxmanage modifyvm WinXP -hda disque-winxp.vdi vboxmanage startvm WinXP -gui 
- et c'est reparti en n'oubliant pas de remettre le mod en read-only
 Avant de copier l'image modele faire un petit
 Avant de copier l'image modele faire un petit 
- vboxmanage modifyvm WinXP -hda none vboxmanage unregisterimage disk disque-winxp.vdi 
- * Pour les fichiers de configurations, on a 3 types de uuid:  - 1. Celui qui spécifie le nom de la machine virtuelle: WinXp 
- 2. L'uuid qui spécifie le "disque dur", qu'il soit immutable ou non
- 3. Et enfin un dernier qui est spécifié quand le type est immutable
 <MachineRegistry> <MachineEntry src="Machines/WinXP/WinXP.xml" uuid="{f4270d7d-2c5f-4776-46af-e43f34e655dd}"/> </MachineRegistry> ..... <HardDisk type="immutable" uuid="{85330e70-3e98-488c-0586-f01e5685fec3}"> <VirtualDiskImage filePath="/mnt/e1.1/disque-winxp.vdi"/> <DiffHardDisk uuid="{db7c4e20-7a9c-4d72-ecbb-96a07249f8c5}"> <VirtualDiskImage filePath="/mnt/VBOX/{db7c4e20-7a9c-4d72-ecbb-96a07249f8c5}.vdi"/> </DiffHardDisk> </HardDisk> </HardDisks>
Reste à faire
- Implementer en vrai
- -- Créer un petit script qui permet à chaque nouvelle version du noyau, de faire apt-get install virtualbox-ose-modules-generic et reajouter les utilisateurs dans vboxusers !! -- voir dkms
Misc
Templates de distros en VDI http://veedee-eyes.com:82/veedeeeyes/book
Réseautage
* Installation par réseau via nat
- Mettre l’adaptateur réseau en NAT
- Créer ~/.VirtualBox/TFTP
- Créer une arborescence de /tftpboot classique dans ce dossier
- Renommer le fichier sur lequel la machine doit booter en <nomdelavm>.pxe (mv pxelinux.O intrepid.pxe)