Inhaltsverzeichnis
VirtualBox
Kommandozeile
Die Kommandos werden auf dem Host ausgeführt.
VBoxManage list vms VBoxManage list runningvms VBoxManage showvminfo Lenny VBoxManage startvm Lenny --type headless VBoxManage snapshot Lenny take keinCipux
Jetzt erfolgt die Testinstallation, die Sicherung der Ergebnisse, die Verbesserungen etc.
Dann wird die Maschine wieder in den Ausgangszustand zurückgesetzt:
VBoxManage controlvm Lenny savestate VBoxManage snapshot Lenny restore keinCipux VBoxManage controlvm Lenny poweroff
Und wieder von Vorne
Installation
Auf Debian Lenny
siehe auch die kurze Anleitung bei
aptitude install virtualbox-2.0 bridge-utils
Netzwerk einrichten
Netzwerk für einen Hostzugang vorbereiten:
In die etc/network/interfaces eintragen:
auto eth0 iface eth0 inet static address 192.168.200.4 netmask 255.255.255.0 network 192.168.200.0 broadcast 192.168.200.255 iface br0 inet static address 192.168.200.4 network 192.168.200.0 netmask 255.255.255.0 broadcast 192.168.200.255 gateway 192.168.200.1 bridge_ports eth0
Damit wird die Virtualbox via bridge interface in ein lokales Netzwerk eingebunden.
Netzwerk auf dem Gastsystem vorbereiten
Vor dem Start der VirtualBox ist diese Netzwerk vorzubereiten:
Als root:
ifup br0
Es kommt die Meldung:
Waiting for br0 to get ready (MAXWAIT is 32 seconds).
Dann ist das Bridge Device eingerichtet.
/etc/vbox/ifup
Es kommt die Meldung:
tap0
Damit hat die gastgebende Maschine ein neues Interface tap0.
Tipps für das GUI als root
Um Rechteprobleme und nur zum Test im nichtöffentlichen Netzwerk starte ich die Virtualbox indem ich als normaler User als root anmelde:
ssh -X root@localhost
Nach dem Login starte ich die VirtualBox auf der Kommandozeile:
VirtualBox
In der VirtualBox ist nun das Netzwerk so einzustellen:
Nach dem Start ist die Maschine innerhalb der VirtualBox unter der IP 192.168.200.33 erreichbar, wenn dies in der virtuellen Maschine in der /etc/network/interfaces so eingetragen ist.
Beispiel für einen virtuellen Tjener:
Zugriff von außen via SSH
Um nicht in dem kleinen Monitor der VirtualBox arbeiten zu müssen, kann man sich nun von einer Maschine aus dem 192er Netzwerk anmelden.
ssh root@192.168.200.33
Mit scp lassen sich nun beliebige Datentransfers realisieren. Die VirtualBox kann Snapshots anlegen, das eignet sich zum schnellen Testen.
Clonen des VBoximages
Richtiges kopieren der Ergebnisse erledigt man auf der Kommandozeile:
VBoxManage clonevdi /Pfad/zum/Orginal/Quelle-Image.vdi /Pfad/zum/Ziel/Ziel-Image.vdi
Clonen eines Snapshots
Zum Testen eignen sich Snapshots, die sich leicht zurücksetzen lassen. So kann man sich von Erfolg zu Erfolg vorarbeiten. Dann will man einen erreichten Stand als neuen Ausgangspunkt verwenden oder z.B. an andere weitergeben. Dazu muss man den Snapshot clonen:
Dazu finden wir zunächst den letzten Snapshot heraus:
VBoxManage showvminfo <Machine Name>
hier zum Beispiel:
VBoxManage showvminfo PXEClientTjener | less
Wir erhalten dann umfangreiche Angaben zu den gültigen Einstellungen. In der Mitte der Ausgabe kommt eine Info, die ungefähr so aussieht:
Primary master: /home/vb/.VirtualBox/Buildserver/PXEClientTjener/Snapshots/{400adf01-9697-43b0-bc88-dcaf82800e93}.vdi (UUID: 400adf01-9697-43b0-bc88-dcaf82800e93)
Jetzt kennen wir den Namen des Snapshots und können diesen clonen:
VBoxManage clonehd /home/vb/.VirtualBox/Buildserver/PXEClientTjener/Snapshots/{400adf01-9697-43b0-bc88-dcaf82800e93}.vdi ~/.VirtualBox/Buildserver/PXEtjenerCipux100704.vdi
Die Ausgabe sieht dann so aus:
VirtualBox Command Line Management Interface Version 3.0.8 (C) 2005-2009 Sun Microsystems, Inc. All rights reserved. 0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100% Clone hard disk created in format 'VDI'. UUID: a9f2fbfa-94b4-4dd5-af20-e2f6fcdc3c69
Commandline Virtualbox
Welche VirtualBoxen sind vorhanden?
VBoxManage list vms
Welche Virtualbox ist aktiv?
VBoxManage list runningvms
Starten der Testmaschine PXEClientTjener ohne X
VBoxManage startvm PXEClientTjener --type headless
Nach dem Test verwerfen der Ergebnisse:
VBoxManage snapshot PXEClientTjener discardcurrent --state
Und wieder von vorne