
virtualbox
(für fortgeschrittene)
wieso und warum eigentlich virtualbox ?(für fortgeschrittene)
so ein virtueller computer kann sehr nützlich sein, zb. um andere linux distributionen und betriebssyteme zu testen, um netzwerke auf zu bauen und diese wiederum zu testen. man spart sich mehrere echte computer und das wiederum spart eine menge strom und materielle kosten. dies alles ist sehr effizient und kostensparend und für heutige computer stellt es überhaupt kein problem dar mehre virtuelle systeme auf einmal zu betreiben. rechenkapazität und speicher haben wir ja heut zu tage massig verfügbar.
hier nun werde ich aufzeigen wie einfach es ist so einen virtuellen computer zu erschaffen, wie dieser im netzwerk integriert wird und was es sonst noch an nützliches gibt. genutzt wird hierbei die virtualisierungssoftware von innotek virtualbox. es gibt dort im downloadbereich so ziemlich für jede distribution pakete und auch eine open source edition. demnach dürfte die grundlegende installation kein problem darstellen, deshalb geh ich da auch nicht weiter drauf ein.
nach der installation
damit virtalbox richtig funktionieren kann müssen bestimmte rechte gesetzt werden. diese betreffen das kernelmodul und den usb device. es handelt sich hierbei um systemnahe befehle, also sollte man diese als root (superuser) ausführen.
das hier muss am anfang ausgeführt werden. damit wird das kernel modul installiert und die gruppe vboxusers angelegt. /etc/init.d/vboxdrv setup, habt ihr virtualbox selber kompiliert gestalltet sich das ein wenig anders, dazu bitte die readme der sourcen lesen.
kernelmodul rechte: (modprobe vboxdrv)
die vorgehensweise ist unterschiedlich, zb. so
/etc/udev/rules.d/udev.rules (diese datei bearbeiten)
KERNEL=="vboxdrv", NAME="%k", MODE="0666"
bei ubuntu zb. so
/etc/udev/rules.d/60-vboxdrv.rules (wird vom paket angelegt)
KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660"
der benutzer sollte dann der gruppe vboxusers angehören.
usb rechte:
bei ubuntu ist es nötig die usb rechte für usbfs anzupassen.
/etc/udev/rules.d/40-permissions.rules (nicht nötig bei Ubuntu 8.04 Hardy Heron)
# USB devices (usbfs replacement)
SUBSYSTEM=="usb_device", MODE="0664", GROUP="plugdev"
der benutzer sollte dann der gruppe plugdev angehören.
ab version 1.5.0, muss man damit usb funktioniert in die /etc/fstab folgendes eintragen.
none /proc/bus/usb usbfs devgid=1001,devmode=664 0 0
(1001 = gruppen-id vboxusers)
netzwerk
standardmäßig wird eine nat-netzwerkverbindung für den virtuellen computer zur verfügung gestellt. damit kann man sich zwar mit dem internet verbinden aber leider ist keine direkte netzwerkverbindung zu anderen komponenten im netzwerk möglich.
deshalb hier eine beschreibung wie man ein richtiges netzwerk einrichten kann, in diesem fall eine netzwerkbrücke. schauen wir uns dazu folgende skizze an:
Virtual Machine |---| Linux PC |------------| Router / Firewall / Internet
(192.168.178.4) (192.168.178.2) (192.168.178.1)
|
|
----| computer2 (192.168.178.3)
wenn wir also den virtuellen computer (192.168.178.4) und den linux pc (192.168.178.2) mit einer netzwerkbrücke verbinden, so wird jeder jeden im netzwerk finden.netzwerkbrücke bauen, zb. bei ubuntu braucht man dafür das bridge-utils paket (brctl). also hier jetzt die befehlsliste für unser beispiel, in () eine kleine beschreibung was der jeweilige befehl macht:
modprobe vboxdrv (kernelmodul laden, bei ubuntu nicht nötig)
modprobe tun (tun modul laden, netzwerktunnel)
tunctl -u andi -t tap0 (ein tap interface bereitstellen, benutzername andi)
ifconfig tap0 0.0.0.0 promisc up (tap0 anschalten)
chmod 0666 /dev/net/tun (rechte für den netzwerktunnel setzen)
brctl addbr br0 (ein brücken interface bereitstellen, br0)
brctl addif br0 eth0 (eth0 interface mit dem br0 interface koppeln)
brctl addif br0 tap0 (tap0 interface mit dem br0 interface koppeln)
ifconfig br0 192.168.178.2 netmask 255.255.255.0 broadcast 192.168.178.255 up (br0 an...)
sleep 2 (beim startskript interessant, 2sec. pause)
ifconfig eth0 0.0.0.0 promisc up (bei der netzwerkkarte eth0 die ip adresse löschen)
route add default gw 192.168.178.1 (gateway zum Router aktivieren)
für tunctl kann auch VBoxTunctl benutzt werden. so das wars, damit ist auf dem linux pc nur noch ein interface br0 (die netzwerkbrücke) mit dem netzwerkkabel verbunden. für eine automatisierung der befehle sollte man bei ubuntu das script /etc/rc.local und zb. für slackware /etc/rc.d/rc.M etc. benutzen. da wir hier ja alles manuel machen am besten das entsprechende interface in "/etc/network/interfaces" auskommentieren. in euren virtuellen computer könnt ihr nun eine netzwerkkarte einfügen, normales hostinterface und als interface name tap0.
so ungefähr müsste dann auch eure routing tabelle aussehen, befehl: route
Kernel IP Routentabelle Ziel Router Genmask Flags Metric Ref Use Iface 192.168.178.0 * 255.255.255.0 U 0 0 0 br0 default fritz.fonwlan.b 0.0.0.0 UG 0 0 0 br0sonstiges
für eine übergangslose maus und bessere grafikperformance sollte auf den virtuellen computer Guest Additions installiert werden. wie man das macht steht in der hilfe zu virtualbox. dann ist es auch möglich "gemeinsame ordner" zu benutzen und seit version 1.4.0 eine übergreifende zwischenablage.
Neues ab virtualbox 2.0
die älteren Konfigurationen wurden Konvertiert und ohne Probleme übernommen.
An den Einstellungen für Netzwerk und USB hat sich nichts geändert, funktioniert weiterhin.
Die neue Version bietet jetzt SATA und 64bit Unterstützung für Gastsysteme.
SATA aktivieren:
Hierfür muss man nur bei Festplattenoptionen den SATA-Controler aktivieren. Alles andere erst einmal so lassen. Nun starten wir das Gastsystem und installieren zb. für Windows einen Treiber.
Es handelt sich dabei um ein Intel RAID/AHCI Treiber, Download bei Intel.
Dann schalten wir das Gastsystem ab und stellen bei Festplattenoptionen die jeweiligen Ports der Festplatten ein, zb "SATA Port 0" für die erste Festplatte die gebootet werden soll. So und das wars dann auch schon, Windows sollte ohne Probleme starten.
Bei Linux Gastsytemen hab ich das jetzt nur soweit getestet, dass ich von einem 64bit Ubuntu Live System gebootet hab und dieses automatisch das SATA Laufwerk erkannt hat. Sollte man ein bestehendes Linux Gastsystem auf SATA Laufwerke ändern, muss man sicherlich den Bootmanager anpassen, dazu bitte Wikis zu der verwendeten Distribution lesen.
so das wars, solltet Ihr Vorschläge haben oder sind euch vielleicht sogar Fehler aufgefallen, schreibt einfach in die Comments.
kommentare:
04.01.2009 · snupi
vielen Dank! Deine Anleitung hat mir das Leben gerettet. Einfachspitze dass es fähige Leute gibt, die bei solchen Problemen weiterhelfen können. Danke nochmal!
Danke!!!!
p.s weiter so
Danke!!!!
p.s weiter so
31.10.2008 · andi
mit dem neuen Ubuntu 8.10 (Intrepid Ibex) alles wie gehabt, läuft problemlos.
16.09.2008 · andi
Neues Interessantes zur Version 2.0 hinzugefügt.
27.05.2008 · joschi
Problem ist behoben. Im Gast musste ich in der /etc/network/interfaces den Eintrag "allow-hotplug eth0" durch "auto eth0" ersetzten. Scheint unter Debian Etch ein Bug im Packet ifupdown zu sein.
24.05.2008 · andi
also ich hatte noch nie Probleme auf dem Gastsystemen per dhcp eine IP zu bekommen.
vielleicht liegt es ja daran das der Host seine IP auch per dhcp bezieht?
oder macht der Host einen auf dhcp server? bei mir darf nur die fritzbox IPs verteilen.
vielleicht liegt es ja daran das der Host seine IP auch per dhcp bezieht?
oder macht der Host einen auf dhcp server? bei mir darf nur die fritzbox IPs verteilen.


