= 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 [[https://help.ubuntu.com/community/ATAOverEthernet|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,
{{{
#!/bin/bash
#
# 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
{{{
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
{{{
.....
}}}
==== 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 .pxe (mv pxelinux.O intrepid.pxe)