QEMU Host und Gast im selben Netz

Dany

Well-Known Member
Hallo Leute,

seit einigen Tagen versuche ich ein Virtuelles Windows XP auf FreeBSD im selben Netzwerk zu starten. Alle Versuche, die ich bei google und hier im forum gefunden habe sind gescheitert.

Ich hoffe das es möglich ist, meine Vorstellungen umzusetzen.

Was ist mir wichtig:
1. Der Host Rechner (FreeBSD) hat eine feste IP Adresse (In meinen Bsp.: 10.0.0.10)
2. Das Gast System (WinXP) hat eine feste IP Adresse (In meinen Bsp.: 10.0.0.11)
3. Ich sollte von meinen Gastsystem aus im Netzwerk arbeiten können
4. Das Gastsystem muß nicht vom Netzwerk aus erreichbar sein

Zu meinen Host System:
FreeBSD 5.4-RELEASE-p8 mit einer Netzwerkkarte (xl0). QEMU mit Kernelmodul installiert und über kldload geladen, ohne Fehler. Die Installation vom Gast hat fehlerfrei geklappt.

Das Gastsystem:
Als Gast soll ein Windows XP SP2 laufen mit 256 MB Speicher. Man kann schon jetzt mit den Gast arbeiten nur bekommt dieser immer die falsche IP-Adresse oder ich erhalte im XP einen IP-Adressen konflikt.

Über folgende Befehle habe ich versucht QEMU zu starten, um später im XP die Netzwerkeinstellungen selber vornehmen zu können.


1. qemu -pci -n winxp_net.sh -hda img/xpsp2.img -boot c -m 256

Script winxp_net.sh
Code:
#!/bin/sh
/sbin/ifconfig xl0 inet 10.0.0.11 netmask 255.255.255.255 alias 10.0.0.10
Der Start vom XP hat ohne Fehler geklappt, beim vergeben der IP 10.0.0.11 bekomme ich dann ein IP-Adressen Konflikt.


2. qemu -pci -n winxp_net.sh -hda img/xpsp2.img -boot c -m 256 (Selber aufruf nur mit geänderten Script, nicht mehr xl0 sondern tap0.)

Script winxp_net.sh
Code:
#!/bin/sh
/sbin/ifconfig tap0 inet 10.0.0.11 netmask 255.255.255.255 alias 10.0.0.10
Der Start vom XP hat ohne Fehler geklappt, beim vergeben der IP 10.0.0.11 bekomme ich schon wider einen IP-Adressen Konflikt.


3. qemu -pci -user-net -hda img/xpsp2.img -boot c -m 256 (Starten ohne Netzwerkscript und Manuelle Konfiguration vom Netzwerk im XP)

Starten vom XP funktioniert Problemlos aber das Netzwerk kann ich jetzt nicht mehr nutzen, kann aus dem Windows auf keinen Server mehr zugreifen.


Jetzt zu meiner frage. Ist das was ich möchte eigentlich möglich?
Wenn ja, wie kann ich das umsetzen alle meine Versuche das zu erreichen sind gescheitert und ich habe nicht nur die aufgezählten Tests durchgeführt.


Danke für Eure vorschläge würde micht echt freuen wenn wir das Problem lösen könnten.


Bis dann Daniel
 
Das ist schon mal gelöst, nur noch eine kleine Frage!

Hallo,

so das mit den Host und dem Gast im selben Netz habe ich jetzt und das klappt.

Mein Lösungsansatz, der mir nach langen Überlegen gekommen ist. Wenn qemu mit den Parameter -n SCRIPT gestartet wird, dann wird jeder Traffic von tap0 auf die echte Netzwerkkarte umgelegt.
Das passt ja schon mal. Jetzt ist nur die Frage was schreiben wir in das Script, das ist eigentlich ganz einfach ich habe folgendes Script verwendet.

Code:
#!/bin/sh
/sbin/ifconfig $1
Das Ergebnis ist genau das was ich wollte, dem Gast kann man jetzt das Netzwerk (bei Win XP) ganz normal konfigurieren (IP - DNS - Gateway) und der ganze Traffic wird über die echte Netzwerkkarte ins Netz versendet. Wenn ein DHCP Server im Netzwerk vorhanden ist, dann kann man von diesen eine IP bekommen.

Das funktioniert aber nur, wenn ich KDE als root User gestartet habe, da nur dann QEMU das tap0 Interface starten kann.

Jetzt zu meiner Frage, den KDE möchte ich nicht unter root laufen lassen sondern ich melde mich als User an und starte als normaler User den KDE.

Jetzt kann ich mir eine Shell öffnen und mit su zu root wechseln. Wenn ich jetzt aber versuche qemu zu starten, dann funktioniert dieses nicht. Mir kommte es so vor als ob die X-Session nicht gefunden werden kann, also das QEMU nicht erkennt welches Ausgabefenster verwendet werden soll.
Kann ich dieses beim starten mit angeben?

Unter man qemu findet man einen Schalter "-monitor dev" ich denke das dieser der richtige ist aber welches Device soll ich hier angeben?


Danke Daniel
 
root hat einfach keine Berechtigung auf dein X-Display zuzugreifen, einfach als normaler user
Code:
xhost +
ausführen, dann darf jeder drauf zugreifen.

/dev/urandom
 
Danke es funktioniert!

Hallo,

danke für die Antwort.

Jetzt funktioniert es, so wie ich mir das für den Anfang vorstelle. Jetzt werde ich erst einmal den Arbeitsplatz umbauen und den Testrechner mit QEMU als Produktivrechner verwenden. Mal testen wie lange ich mit diesen zurechtkommen bis die ersten Probleme auftretten.


Nochmals Danke und bis bald Daniel :)
 
Ich frage mich wie du das geschafft hast ohne Bridging...
Dein Skript macht auch nicht wirklich etwas
qemu -n /usr/bin/true ...
geht ebenfalls :)
 
Zuletzt bearbeitet:
Hallo Maledictus,

im Kerneld habe ich das BRIDGE mit aufgenommen, ist auch konfiguriert um die beiden Interface zusammenzufassen. Nur beim starten vom Rechner ist ja das virtuelle Interface noch nicht vorhaden und somit bekomme ich einen Fehler.

Wie ich den Fehler aufheben könnte würde mich auch noch Interessieren? :rolleyes:

Aber ich denke es mir einfach so, wenn ein Script mit den Parameter -n angegeben wird, dann wird jeder Traffic automatisch auf die Netzwerkkarte umgeleitet. Wobei es schon witzig ist, den man kann ein VM starten ohne das auf tap0 überhaupt ein IP gebunden ist und man kann mit dieser trotzdem im Netzwerk arbeiten.


Bis bald Daniel
 
@marzl:
statt am kernel rumzufummeln kannst du ab 6.x auch
sysctl net.link.tap.user_open
benutzen.
Und /etc/qemu-ifup braucht man immernoch nicht :)
 
Super, es läuft!

Hallo Leute,

ich habe QEMU am laufen, habe jetzt auch das mit der BRIDGE am laufen und funktioniert bestens. :)

Folgendes Script benutze ich um mein Windows XP unter QEMU auf BSD zu starten. Ist natürlich nur dann auszuführen, wenn man QEMU als root startet. (Das Rad muß ja nicht jeder neu erfinden).

Code:
#!/bin/sh

vpath="/home/daniel/qemu"
bootv="c"
mem="256"
key="de"
dev="bge0"
vmname="winxp2"

checkxhost=`/usr/X11R6/bin/xhost | grep enabled | wc -l`

if [ $checkxhost = 1 ]; then
	echo "Erst das aktuelle X als nicht root User mit 'xhost +' freigeben!"
	exit 255
fi

kldstat -v | grep kqemu >/dev/null || kldload /boot/kernel/kqemu.ko

kldstat -v | grep if_tap >/dev/null || kldload /boot/kernel/if_tap.ko

kldstat -v | grep bridge >/dev/null || kldload /boot/kernel/bridge.ko

sysctl net.link.ether.bridge.enable=1

sysctl net.link.ether.bridge.config=$dev,tap0

befehl="/usr/local/bin/qemu -pci -n /etc/qemu-ifup -hda $vpath/img/$vmname.img -boot $bootv -m $mem -k $key -localtime"

echo "###"
echo "### Starte Windows XP Script"
echo "###"
echo "### $befehl"
echo "###"

$befehl

echo "###"
echo "### Ende Windows XP Script"
echo "###"
echo ""

Danke an alle für die Mitarbeit an der jetzigen Lösung.


Bis bald Daniel
 
Hi,

ich bin durch das Verfolgen dieses Threads auf QEmu aufmerksam geworden und finde das Teil ziemlich genial. Die XP-Installation klappte nach ein bisschen Fummeln auch ganz gut.

Meine Frage ist nun, kann man irgendwie durch einen Trick eine vorhandene XP-Installation als Image für QEmu verwenden? Mal abgesehen davon, ein Image davon zu machen und es in FreeBSD abzulegen.

Ich frage dies, da ich eine XP-Installation auf meinem Rechner habe, die ich manchmal anschmeissen muss. Wenn ich XP in einem Image installiere, wird mir irgendwann die Zwangsregistrierung auf die Finger klopfen, die ich bei meinem installierten XP schon gemacht habe.
Außerdem wäre es nett, nicht zwei XPs zu pflegen und es doch auch immer so, das sich benötigte Programme immer in der anderen Installation befinden,

Das es Probleme mit dem Schreiben und dem Netzwerk geben kann, ist mir klar.

Gruß c.
 
statt am kernel rumzufummeln kannst du ab 6.x auch
sysctl net.link.tap.user_open
benutzen.
Und /etc/qemu-ifup braucht man immernoch nicht

ah, gute info :) werd ich gleich mal in den artikel schmeissen. ich benötige kein script? gleich mal fummeln.
 
geht meiner Meinung nach nicht...

crotchmaster schrieb:
....
Meine Frage ist nun, kann man irgendwie durch einen Trick eine vorhandene XP-Installation als Image für QEmu verwenden? Mal abgesehen davon, ein Image davon zu machen und es in FreeBSD abzulegen.
Selbst wenn Du Deine Partition in ein Image schreibst muss es nicht funktionieren, da die simulierte Hardware nicht die gleiche ist, die Du in Deinem Rechner hast! Hast Du z.B. mal versucht in einem bestehenden (älteren Recner) mit installiertem Windoofs NUR das Mainboard mit RAM und CPU zu tauschen? Da bekommst Du die gleichen Probleme...
Hab ich mal vor langer Zeit (aus Bequemlichkeit) gemacht... :D


crotchmaster schrieb:
Ich frage dies, da ich eine XP-Installation auf meinem Rechner habe, die ich manchmal anschmeissen muss. Wenn ich XP in einem Image installiere, wird mir irgendwann die Zwangsregistrierung auf die Finger klopfen, die ich bei meinem installierten XP schon gemacht habe.
Außerdem wäre es nett, nicht zwei XPs zu pflegen und es doch auch immer so, das sich benötigte Programme immer in der anderen Installation befinden,
....
Das Du eine vorhandene Installation in einer Emu verwenden kannst....
dazu habe ich nur unter WINE was gelesen, das sowas gehen soll. QEMU und Co. arbeiten (soweit ich weiss) NUR mit einem Image!
Ich wollte ja auch lieber einen Zugriff aufs Dateisystem, da es schneller ist und Platz spart, aber zu QEMU habe ich da nix gefunden. :grumble:
 
quarzsnoopy schrieb:
Selbst wenn Du Deine Partition in ein Image schreibst muss es nicht funktionieren, da die simulierte Hardware nicht die gleiche ist, die Du in Deinem Rechner hast! Hast Du z.B. mal versucht in einem bestehenden (älteren Recner) mit installiertem Windoofs NUR das Mainboard mit RAM und CPU zu tauschen? Da bekommst Du die gleichen Probleme...
Hab ich mal vor langer Zeit (aus Bequemlichkeit) gemacht... :D
Ja stimmt, daran habe ich garnicht gedacht. Dann kann ich mir das Abschminken ;'(

Gruß c.
 
Selbst wenn Du Deine Partition in ein Image schreibst muss es nicht funktionieren, da die simulierte Hardware nicht die gleiche ist, die Du in Deinem Rechner hast! Hast Du z.B. mal versucht in einem bestehenden (älteren Recner) mit installiertem Windoofs NUR das Mainboard mit RAM und CPU zu tauschen? Da bekommst Du die gleichen Probleme...
Hab ich mal vor langer Zeit (aus Bequemlichkeit) gemacht..
hehe, der normal horror unter windoof :) aber es gibt da eine lösung: hardwareprofile.
das funktioniert super z.b. mit vmware, welches auf eine echte partition zugreifen kann.
 
marzl schrieb:
hehe, der normal horror unter windoof :) aber es gibt da eine lösung: hardwareprofile.
das funktioniert super z.b. mit vmware, welches auf eine echte partition zugreifen kann.

Horch, horch, meine Ohren werden wieder größer! An die Hardware-Profile habe ich gar nicht gedacht.

Aber wie bekommt man das mit dem Image hin?

Gruß c.
 
Zuletzt bearbeitet:
Zurück
Oben