Gérer les disques windows virtuels (virtualbox)

Lorsqu’on utilise windows, certaines opérations de maintenances sont obligatoires, en particulier la gestion de l’espace libre dans les machines virtuelles.vbox_logo2_gradient

En effet, Windows  (au moins sur XP, j’ignore ce qu’il en est exactement sur les autres versions, mais à l’usage, cela semble identique) préfère utiliser l’espace libre qui n’a pas déjà été utilisé. Si vous supprimez un fichier, l’espace disque qui lui était alloué est déclaré disponible, mais tant qu’il reste des zones du disque où rien n’a été précédemment écrit, Windows préférera utiliser celles ci. On peut voir ça comme un avantage permettant la récupération de fichiers effacés, mais dans une machine virtuelle, le disque virtuel enflera jusqu’à la taille maximum qui lui a été allouée en peu de temps sans que son contenu n’ait augmenté.

Ça n’est pas forcément gênant en soi, sauf quand on veut faire des sauvegardes du fichier vdi ou transférer le disque sur un autre ordinateur, puisque l’on va inutilement transférer des informations sensées être supprimées.

Cet article servira de pense bête afin de centraliser les commandes utiles. Pensez à effectuer toutes les sauvegardes nécessaires avant d’agir sur votre système, je ne suis pas responsable des problèmes que vous pourriez rencontrer! Les commandes sont données pour linux, mais ce sont les mêmes pour Windows, à vous d’adapter les chemins et de lancer celles ci depuis un terminal de commande.

1 – Vider le disque

Première chose à faire, dans la machine virtuelle, supprimer les cookies et les fichiers temporaires. Et en particulier les téléchargements d’installateurs de logiciels (qui peuvent être conséquents) et les dossiers temporaires qu’ils créent. Les moteurs de recherche vous indiqueront les dossiers concernés en fonction de vos logiciels.

Pensez aussi à vider la corbeille, en particulier de tous les utilisateurs. En effet, certains ne le font jamais et on retrouve parfois des gigas entiers de données inutiles dans celles ci.

2 – Défragmenter le disque

Une fois les fichiers inutiles supprimés, il faut défragmenter le disque pour récupérer encore un peu d’espace, mais surtout pour rassembler les fichiers. J’aime bien utiliser Auslogic disk defrag parce qu’il a une option pour optimiser les fichiers du disque et pour éteindre l’ordinateur une fois qu’il a fini, mais n’importe quel défragmenteur (y compris celui intégré à windows) peut faire l’affaire.

3 – Vider l’espace libre

L’espace libéré n’est pas encore complètement vide. Pour le vider complètement pour l’étape suivante, il faut remplir de zéros tous les emplacement libres. Vous pouvez utiliser nullfile ou les utilitaires de microsoft avec sdelete de la suite des sysinternals. J’utilise soit l’un, soit l’autre, indifféremment.

Avec sdelete, téléchargez le, extrayez le et copiez le dans C:\windows. Ouvrez ensuite un terminal, puis entrez la commande sdelete -z C:\ (l’option -z indiquant de mettre à zéro les blocs libres). Arrêtez ensuite la machine virtuelle.

4 – Compacter le disque virtuel

Pour compacter le disque virtuel, entrez la commande suivante:

vboxmanage modifyhd /chemin/vers/disque/disque.vdi --compact

C’est relativement rapide, selon la taille initiale du disque. Sur certains systèmes, le gain se compte en gigaoctets, donc c’est intéressant à faire avant de transférer le disque image lorsque le besoin se fait sentir. Cette opération ne laisse dans le disque que les blocs ne contenant pas que des zéros, d’où l’utilité de l’étape précédente.

5 – Augmenter la taille du disque

Si malgré les opérations précédentes vous êtes quand même à l’étroit dans votre windows, c’est sans doute quze vous aviez prévu un peu juste lors du choix de la taille du disque. Il est possible d’augmenter la taille du disque sans devoir tout réinstaller. Utilisez la commande suivante, par exemple pour augmenter le disque à la taille de 20Go:

vboxmanage modifyhd /chemin/vers/disque/disque.vdi --resize 20000

Adaptez bien sûr le chemin vers votre image disque et la taille désirée.

Il faut ensuite lancer votre machine virtuelle avec un live CD pour utiliser gparted afin d’agrandir la partition Windows à tout l’espace disponible pour qu’il puisse prendre en compte l’espace que vous venez d’ajouter. Le live CD gparted fonctionne bien.

Pensez que lorsque vous démarrerez votre windows, il fera une vérification du système de fichiers.

C’est fini, ou presque.

Deux dernières commandes pratiques que je saurais où retrouver.

Pour voir les machines virtuelles lancées, en ligne de commande (par exemple en SSH), et connaitre leur nom:

vboxmanage list runningvms

Pour arrêter une machine virtuelle en ligne de commande:

vboxmanage controlvm winxp2 poweroff (où winxp2 est le nom de la machine obtenue avec la commande précédente)

Voila, rien de bien original ou nouveau, mais toutes les commandes de bases dans un seul endroit me facilitera la vie.

Problème démarrage windows XP sur Virtualbox (intelppm)

virtualbox

virtualbox

J’ai eu un problème étrange avec un Windows XP pro lancé dans Virtualbox, et j’ai suffisamment cherché pour mettre la solution ici au cas où d’autres rencontreraient le même souci.

Ce windows fonctionnait très correctement jusqu’à ce que je change la machine physique sur laquelle il tournait dans Virtualbox. Sur le nouvel ordinateur, plus puissant et plus « gonflé » en RAM, windows arrivait à l’écran d’identification puis rebootait immédiatement. Ou se figeait.

Une autre image de windows fonctionnait, elle, correctement. Par contre, celle ci ne demandait pas à l’utilisateur de s’identifier, on arrivait directement sur le bureau.

Après avoir modifié le mode de connexion, le même problème que pour la première image se présentait.

Pour les deux images, le mode sans échec fonctionnait et me permettait d’accéder au système.

J’ai donc essayé de modifier le mode d’identification afin que l’ouverture soit automatique (et profiter d’une définition plus grande permettant d’afficher les fenêtres dans leur totalité), mais impossible. Une fois que l’utilisateur devait s’identifier, le problème apparaissait et impossible de revenir en arrière.

Et trouver des infos sur le net avec ces symptômes, c’est mission impossible, vu que des pannes de windows, il y en a plein qui donnent le même résultat…

J’ai donc été modifier l’option indiquant à windows de ne pas redémarrer en cas d’échec afin d’avoir l’écran bleu permettant d’avoir quelques informations supplémentaires (clic droit sur le poste de travail, Propriétés, Onglet Avancé, Démarrage et récupération -> Paramètres, puis décocher redémarrer automatiquement)

Et le BSOD m’a indiqué un problème avec Intelppm.

BSOD intelppm

BSOD intelppm

Une recherche sur le net m’a conduit sur la page d’un blog msdn qui dit:

Dans certaines circonstances avec un système d’exploitation Windows XP / 2003 – intelppm.sys et processor.sys peuvent bloquer une machine virtuelle fonctionnant sous Virtual PC / Virtual Server (ce qui invite le système d’exploitation Windows invité à redémarrer automatiquement – mais si vous avez modifié ce paramètre, vous verrez un écran bleu). La raison de ce crash est que ces pilotes tentent d’effectuer une opération non gérée à l’intérieur de la machine virtuelle (comme la mise à niveau du microcode des processeurs physiques, en changeant l’état d’alimentation du processeur physique).
Aujourd’hui, ce problème se produit uniquement sur les Centrino et processeurs AMD K8. La plupart des gens voient ce problème quand ils déplacent une machine virtuelle qui a été créé sur un autre type de processeur pour un ordinateur exécutant l’un de ces types de processeurs…

Ça parle de Virtual Server (de Microsoft), mais avec Virtualbox, c’est la même chose. Ça provient donc d’un problème de Windows. Et le problème peut se produire avec Processor, pas seulement Intelppm.

La solution est simple:

Si vous voyez ce problème à plusieurs reprises vous pouvez désactiver manuellement ces pilotes (avec aucun effet secondaire négatif) en allant à l’emplacement suivant dans le Registre:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Processor
Ou
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Intelppm
et changer la valeur de ‘Start’ à 4.

Dans le même temps nous avons fait quelques changements subtils à la façon dont notre matériel expose le processeur dans Virtual Server R2 de sorte que dans les futurs produits, ces pilotes ne devraient jamais être chargés à l’intérieur des machines virtuelles.

Ouf, je suis rassuré! Virtual Server ne sera plus bloqué par ce comportement, mais peut être que Virtualbox continuera à l’être. Donc, ça peut toujours servir de connaitre le truc pour s’en sortir.

Sources:

Ajouter des DLL dans Wine

Lorsque vous installez un programme dans Wine, il est possible que celui ci ne fonctionne pas à cause de DLL manquantes.

Avant tout, n’oubliez pas d’installer la dernière version de wine!

Bien sûr, on peut copier toutes les DLL d’une installation windows ou trouver les DLL nécessaires au fonctionnement d’un programme et les copier dans les répertoires adaptés manuellement, mais…

Il existe un petit programme qui va faire ceci à votre place: winetricks

Téléchargez le programme , rendez le exécutable (chmod +x winetricks) et utilisez le ainsi:

./winetricks gdiplus riched20 riched30 msxml3 msxml4 msxml6 corefonts tahoma vb6run vcrun6 msi2

(l’exemple ci dessus télécharge les DLL nécessaires au fonctionnement d’office 2007)

Le fonctionnement est plus ou moins long, mais soyez indulgents, il faut tout à votre place. Ensuite, installez votre logiciel normallement.

Installer Virtualbox sur ubuntu

Ajouter au sources.list:

deb http://download.virtualbox.org/virtualbox/debian hardy non-free
deb http://download.virtualbox.org/virtualbox/debian gutsy non-free
deb http://download.virtualbox.org/virtualbox/debian dapper non-free
deb http://download.virtualbox.org/virtualbox/debian lenny non-free
deb http://download.virtualbox.org/virtualbox/debian etch non-free
deb http://download.virtualbox.org/virtualbox/debian sarge non-free

Installer la clef du dépôt :

$ wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -