Ich backe gerade eben für meine Schule eine virtuelle Maschine mit Ubuntu Lucid und ksociograma für die Erstellung von Soziogrammen. Leider wächst der VDI Container aber immer stärker, als er eigentlich müsste, weil Ubuntu ja zuerst die Pakete herunterlädt und dann installiert. Ich kann die Pakete dann in der VM zwar mit
sudo apt-get clean
sudo apt-get autoremove
wieder rauswerfen und damit die VM putzen – das ändert aber an der Größe der VM nichts mehr. Die bleibt auf der Wirtsplatte so dick, wie sie war.
Einige Anleitungen im Netz beschreiben nun, wie man die VDI Datei wieder verkleinert – aber leider stimmt keine der von mir gefundenen zu 100%. Deswegen hier eine Beschreibung des Vorgangs, der bei mir für einen Linux-Gast funktioniert hat:
Zu beachten: Die VM (der Linux-Gast) ist mit EXT3 als Dateisystem anzulegen – sonst klappen die folgenden Schritte nicht!
Nachdem alle Programm installiert sind und die VM geputzt wurde (siehe oben), wird diese herunter gefahren. Dann wird die VM mit einer Ubuntu Desktop-CD gebootet. In dieser wechselt man auf eine Root-Shell
sudo su –
und installiert sich das Programm zerofree, das nur mit EXT3 als Dateisystem klar kommt
apt-get install zerofree
Exkurs: Wenn man sich Platte des Gastes einmal kurz einhängt (mount -t ext3 /dev/sda1 /mnt), dann zeigt ein df -h in der VM an, wie viel Platz noch vorhanden ist und liefert einem außerdem alle Gerätenamen – in meinem Fall ist die Platte des Gastes /dev/sda1. Nicht vergessen: Die Platte muss nach diesem Schritt wieder ausgehängt werden, damit die folgenden Schritte funktionieren: umount /mnt
Dann wird die Platte der VM read-only in die Desktop-Umgebung gemountet
mount -o ro -t ext3 /dev/sda1 /mnt
und zerofree drauf losgelassen
zerofree /dev/sda1
Nachdem das Progrämmchen fertig ist, kann die VM herunter gefahren und die VDI Datei vom Wirt aus geschrumpft werden:
VBoxManage modifyvdi /pfad/zur/vm.vdi compact
Endlich keine device busy Meldungen mehr, wenn man versucht, zerofree aus der VM heraus auf die eigene Platte los zulassen.