Inhalt
Inhaltsverzeichnis
- Inhalt
- Vorwort
- UEFI Bios und VT-x/AMD-v Virtualisierungs Technologie
- Hyper V
-
Tipps & Tricks
- Virtualbox Client Linux - One or Multiple Display Heads (Bildschirmauflösung) und Gasterweiterungen
- Lahmes Netzwerk?
- USB Device Zugriff
- Host I/O-Cache verwenden
- DOS in VirtualBox 3.2
- USB Stick Boot
- Virtuelle Serielle Com Ports HOST-PIPE
- Geklonte Debian Lenny Images melden eth0 error
- Festplattenimage kopieren
- Appliance exportieren
- Mini-Howto
- Virtualbox .ovf export -> VMware ESX 3.5?
Vorwort
VirtualBox ist eine Software um virituelle Maschinen aufzusetzen und zu betreiben. Sie ist also eine weitere Spielart der Virtualisierungsoftware wie VmWare, KVM oder QEMU.
Homepage: http://www.virtualbox.org/
Forum :http://forums.virtualbox.org/
Lizenz: GPL (Es gibt auch eine Non-GPL Ausgabe der Software so ähnlich wie bei VmWare
Es lohnt sich, das Extension Pack nach der Installation auch als Erweiterung zu installieren. Man erhält USB2 Geschwindigkeit. (Über den Download von der Virtualbox Homepage und öffnen lassen mit Virtualbox, auch in Linux)
Begriffserklärung: Das Hauptprogramm Virtualbox läuft im HOST System (einige Leute sagen dann Virtualbox Host Windows 7, Client Debian Jessie, bei Anfragen in Foren), der Client ist dann der künstliche Computer in einem Fenster.
UEFI Bios und VT-x/AMD-v Virtualisierungs Technologie
Beim Hauptrechner / Laptop sollte man diese Option einschalten im Bios. Bevor man beginnt mit Clienten Installationen. Das ist die Virtualisierungs Erlaubniss. So können dann Clienten von Virtualbox direkt auf die CPU zugreifen.
Win 8.x OEM Computer
Klären Sie das vor dem Kauf ab, ob Sie die VT-x/AMD-v Einstellungen ändern können im UEFI.
Leider ist es so, das Win8.x OEM vorinstallierte Computer dieses meistens nicht mehr zulassen. Auch wenn die CPU es kann. Es ist in den Lizenzbestimmungen von Microsoft an die Hersteller die Erweiterten Einstellungen im UEFI Bios zu unterdrücken. Mit etwas Glück ist es noch erlaubt.
Entweder ruft man das UEFI Bios direkt beim Einschalten mit Funktions Tasten oder ähnlichem (variert je nach Gerät), auf. Oder versucht es über die Windows Problembehandlung.
In Win8.x wäre es:
Shift gedürckt halten und Neustart klicken Problembehandlung Erweiterte Optionen UEFI Firmware Einstellungen (ist nicht immer vorhanden)
https://www.youtube.com/watch?v=3irpIFya_lk
Hyper V
Hyper V kann man in Win8.x über Systemsteuerung -> Programme -> Programme & Features -> (dann links am Rand) Windows Features aktivieren oder deaktivieren , einschalten. Benötigt man aber eher in vmware.
Tipps & Tricks
Es sind APT-Quellen für Debian basierte Distributuionen auf der Webseite verfügbar, man muss nur die Keys importieren.
Virtualbox Client Linux - One or Multiple Display Heads (Bildschirmauflösung) und Gasterweiterungen
Also die Gasterweiterungen sind im Link der folgt gezeigt. Freigebene Ordner vom Hauptprogramm Virtualbox und HostSystem, findet man im Clienten dann in /media Ordner.
Gasterweiterungen Linux Client findet man hier. xrander
Lahmes Netzwerk?
In /etc/rc.local des Hosts hinzufügen (o.ä., so dass es beim Booten ausgeführt wird):
ethtool -K eth0 sg off rx off tx off tso off
Hinter -K muss man das Interface angeben, das gebridged wird.
USB Device Zugriff
Wer die PUEL Version von Virtualbox nimmt, kann auf die USB Geeräte zugreifen. Jedoch benötigt das ein vboxusers Group und sich selber eintragen in dieser. Das muss man sowieso machen eigentlich in jeder Virtualbox Version.
Nach der Installation von Virtualbox als root:
- addgroup vboxusers
- adduser Benutzer vboxusers
In neueren Versionen nicht nötig, früher war es immer nötig. (Ich glaube es macht es automatisch), oder im Terminal als normal Benützer: id Enter und gucken ob man dabei ist in der Gruppe.
Das ist ein wichtiger Punkt der nicht genug hervorgehoben werden kann
Abmelden, wieder Anmelden.
Host I/O-Cache verwenden
Bei einem Client kann man unter Ändern die Einstellungen verändern. Bei Massenspeicher kann man auf den Controller der für die Harddisk zuständig klicken. Dann kann man dort beruhigt das Host I/O-Cache aktivieren. In der Log von virtualbox wird man etwas darauf hingewiesen. Im grafischen Interface nicht spezielle. (Virutalbox laufe nicht optimal, so in dem Sinn in der log )
DOS in VirtualBox 3.2
In VirtualBox in der DOS Konfiguration unbedingt VT-X/AMD-V deaktivieren, für display.sys laden.
Um die CPU Auslastung etwas zu reduzieren, in DOS dosidle v2.1 laden in der autoexec.bat lh dosidle.exe -Fm2 , funktioniert aber nur in DOS6.22. In Win98 DOS leider kein Effekt.
Eine Alternative ist DosBox
USB-Stick
Da USB-Stick meistens grösser sind als was DOS6.22 verwalten kann, sollte man das nur in DOS 7.1 aus Win98 verwenden. USB 2.0 muss man ausschalten in der VirtualBox Konfiguration für DOS, sonst ist kein Zugriff. Dann sollte man in DOS die Treiber laden uspaspi.sys (Panasonic v2.0 oder v2.7 davon) und di1000dd.sys (Novac v2.0).
config.sys in DOS: (der nächst freie Laufwerksbuchstaben wird verwendet.)
device=himem.sys devicehigh=usbaspi.sys /v devicehigh=di1000dd.sys
Disketten Abbildern
Man kann sich auch behelfen mit Diskettenabbilder, künstlich kann man die so erzeugen:
dd if=/dev/zero of=FloppyA.img bs=1024 count=1440 (erstellt eine 1.44MByte Floppy Abbild) oder... dd if=/dev/zero of=FloppyA.img bs=1024 count=2880 (erstellt eine 2.88MByte Floppy Abbild) mkdosfs -F 12 FloppyA.img (formatiert diese) mount -o loop FloppyA.img tmp (würde jetzt in linux das Abbild auf tmp mounten, und man kann Daten übertragen in linux) umount tmp (hängt es wieder aus)
FloppyA.img kann man nun mit Daten drin an VirtualBox geben für DOS.
Siehe auch DiskettenImage
USB Stick Boot
Naja Perfekt ist es nicht so, ein MS-DOS Win98 muss man mit F8 abfangen etc. , vielleicht wird es noch besser.
{{{#!/bin/bash #scriptname: usbvboxboot Datum: 6 jan 2010 #copy it to /usr/local/bin/usbvboxboot #chmod +xs /usr/local/bin/usbvboxboot
clear echo "USB-Stick booten in Virtualbox" echo "
" echo echo "Leider ist diese Funktion nur möglich, wenn Virtualbox als root läuft." echo "Ich erstelle eine vmdk Zugrifssdatei für Ihren USB-Stick" echo "!!!! Sie müssen usbboot.vmdk als SCSI Festplatte einbinden in Virtualbox !!!!" echo echo "Sie müssen mir sagen, wie Ihr USB stick heisst, sdb? sdc?" echo "Ich zeig Ihnen die die gemounteten Geräte:" echo mount | grep media mount | grep mnt mount | grep mount echo echo "Wie heisst Ihr USB Stick?" echo -n "Keine Nummer eingeben, nur sdb, sdf, oder ähnlich: ";read devusb
#sudo rm /root/.VirtualBox/usbboot.vmdk
sudo mkdir -p /root/.VirtualBox sudo VBoxManage internalcommands createrawvmdk -filename /root/.VirtualBox/usbboot.vmdk -rawdisk /dev/$devusb -relative sudo chmod 666 /dev/$devusb* sudo VirtualBox }}}
Virtuelle Serielle Com Ports HOST-PIPE
Viele Computer haben keine seriellen Ports mehr. Aber dennoch kann man etwas testen. Wenn das Gast System ein Windows ist, könnte man auch com0com (Nullmodem-Simulation 2 com Ports, Freeware Windows) im Gast installieren. Jedoch kriegt man diese Ports nicht nach draussen. Man kann es aber auch so machen wenn Linux Host ist.
Virtualbox: Hardwarekonfiguration Gastsystem, Serielle Anschlüsse
- Port1
- [X] Serielle Schnittstelle aktivieren
- COM1
- Host-Pipe
- [X] Erzeuge Pipe
- Port/Dateipfad: com1
- Port2
- [X] Serielle Schnittstelle aktivieren
- COM2
- Host-Pipe
- [X] Erzeuge Pipe
- Port/Dateipfad: com2
So, das erzeugt zwei Socket Dateien im Home Verzeichnis, com1 und com2. Diese Sockets werden erst aktiv wenn der Gast läuft. Erst dann können Befehle auf die Sockets losgelassen werden.
Com-Schnittstellen anmelden in Gast WindowsXP unter Virtualbox
Aber zuerst etwas Hilfe zum Gast System z.b WindowsXP (muss hier schnell beschrieben werden )
folgend Vorgehen jeweils für com1/com2:
- Systemsteuerung
- Hardware
- Hardware ist bereits angeschlossen
- Zu unterst in der Liste "Neue Hardware hinzufügen"
- Hardware manuell wählen
- Anschlüsse COM und LPT
- Kommunikationsanschlüsse
Com3 wird aus versehen installiert, aber noch stehen lassen, dann nochmals:
- Systemsteuerung
- Hardware
- Hardware ist bereits angeschlossen
- Zu unterst in der Liste "Neue Hardware hinzufügen"
- Hardwarekomponente automatisch
Dann sollte Com1 im Gerätemanager ersichtlich sein, da gleich Com3 deinstallieren. Für Com2 das gleiche Spiel nochmals.
Zugriff auf Sockets com1/com2 in Linux mit socat
socat installieren. Ist in den meisten Distros enthalten.
Um es zu testen startet man Hyperterminal im Gast WindowsXP oder man installiert Putty (auf Serial klicken). Bei diesen Programmen gleich zwei Instanzen starten, einmal auf Com1 einmal auf Com2.
Ich zeige drei Möglichkeiten mit socat: (zum Test einzelne Terminals starten)
Zwischen den Beispielen muss man mit CTRL+C die socat's killen.
1. Beispiel
- neues Terminal
socat UNIX-CONNECT:com1 TCP-LISTEN:8040 (kann auch com2 sein)
- neues Terminal
- telnet localhost 8040 -e q (-e q , q ist für quit)
So kann man mit Telnet nach Hyperterminal im Gast kommunizieren.
2. Beispiel
- neues Terminal
socat UNIX-CONNECT:com1 PTY,link=compty (kann auch com2 sein)
- neues Terminal
- screen compty
So kann man im screen nach Hyperterminal im Gast kommunizieren.
3. Beispiel
- neues Terminal
socat UNIX-CONNECT:com1 UNIX-CONNECT:com2
So kann man innerhalb des Gast-OS von com1 nach com2 geschlauft mit zwei Hyperterminal arbeiten. Oder andere zwei Software gegeneinander testen. Eine Software auf com1 die andere auf com2. Das simuliert ein Nullmodemkabel an einem PC mit zwei Com Schnittstellen.
Wichtig
Diese socat Befehle funktionieren erst, wenn man das Gast System gestartet hat. Man sollte sich also ein starter-script bauen. Etwas Debug Informationen erhält man mit socat -d -d .
Startscript com2tcp
{{{#!/bin/sh #scriptname Com2TCP #oben muss das erste leerzeichen weg, geht hier nicht anserst im wiki
VirtualBox --startvm "Windows XP" & sleep 10 socat -d -d UNIX-CONNECT:com1 TCP-LISTEN:8040 & socat -d -d UNIX-CONNECT:com1 TCP-LISTEN:8041 &
#xterm -e 'telnet localhost 8040 -e q' #xterm -e 'telnet localhost 8041 -e q' }}} Startscript Nullmodem-Simulation
{{{#!/bin/sh #scriptname: com2com #oben muss das erste leerzeichen weg, geht hier nicht anserst im wiki
VirtualBox --startvm "Windows XP" & sleep 10 socat -d -d UNIX-CONNECT:com1 UNIX-CONNECT:com2 }}}
Geklonte Debian Lenny Images melden eth0 error
In der Shell der Gast-Lenny als root:
echo -e '#!/bin/sh\nrm /etc/udev/rules.d/70-persistent-net.rules\nsync\nreboot' > /usr/local/bin/repairnet chmod 700 /usr/local/bin/repairnet chown root.root /usr/local/bin/repairnet
Dann kann root:
repairnet [ENTER]
Das System rebootet automatisch.
Festplattenimage kopieren
Normales Kopieren reicht nicht, da Vbox keine 2 Festplatten mit gleicher UUID zulässt.
In der Konsole:
VBoxManage clonevdi debian.vdi debian-dev.vdi
doch das klappt bei großen Dateien nicht immer: Fehler VDISK_FULL, obwohl genügend Platz auf einem ext3-System vorhanden war.
Abhilfe bietet:
cp -a debian.vdi debian-dev.vdi VBoxManage internalcommands setvdiuuid debian-dev.vdi
Appliance exportieren
Die vermutlich bessere Metode ist das Exportieren und anschließende Importieren einer Appliance. Diese geht über den "VM VirtualBox Manager".
Zum Exportieren einer VM aus dem Menü "Datei" => "Appliance exportieren" auswählen, zum Importieren entsprechend.
Um die Appliance so klein wie möglich zu halten, ist es oft sinnvoll, die leeren Bereiche der virtuellen Festplatte vor dem Export mit Nullen zu überschreiben.
Unter Linux geht das so:
sudo dd if=/dev/zero of=/zerofile; sudo rm /zerofile
Für eine Windows-VM kann sdelete genutzt werden:
sdelete.exe -c c:
Mini-Howto
Internes Netz
Ein internes Netz ist ein IP-Netz, das nur den Gästen zugänglich ist. Damit lassen sich wunderbar komplexere Netzwerklandschaften simulieren/gestalten. Die Gui erlaubt zwar, den Gast-Netzwerkkarten ein internes Netz zuzuordnen, aber ohne Eingriff funktioniert das (mit Version 2.2.4) nicht:
Es soll ein internes Netz 192.168.10.0 mit dem Namen debiannet eingerichtet werden:
Entweder per Kommandozeile:
VBoxManage dhcpserver add --netname debiannet -ip 192.168.10.1 --netmask 255.255.255.0 --lowerip 192.168.10.50 --upperip 192.168.10.100
Hinweis: Das Kommando nicht als root eingeben, sonst landen die Daten in der falschen Konfiguration!
Oder direkt in der Konfiguration ~/.VirtualBox/VirtualBox.xml:
... <NetserviceRegistry> <DHCPServers> <DHCPServer networkName="HostInterfaceNetworking-vboxnet0" IPAddress="192.168.9.3" networkMask="255.255.255.0" lowerIP="192.168.9.100" upperIP="192.168.9.255" enabled="1"/> <DHCPServer networkName="debiannet" IPAddress="192.168.10.3" networkMask="255.255.255.0" lowerIP="192.168.10.50" upperIP="192.168.10.100" enabled="1"/> </DHCPServers> </NetserviceRegistry> ...
Hinweis: der erste Eintrag definiert das voreingestellte Host-Only-Netzwerk.
Virtualbox .ovf export -> VMware ESX 3.5?
Hat das schon jemand zum Laufen gebracht?