= 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)