kvm-qemu verhält sich unerwartet

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

kvm-qemu verhält sich unerwartet

Beitrag von Columbus » 07.08.2007 11:08:30

Hallo zusammen,
ich habe mal wieder ein neues Thema.
Und zwar habe ich die Aufgabe ein WinXP-Disk-Image, mit kvm zum laufen zu bringen. Das ganze lief vorher unter Fedora.
Ich habe dazu zunächst das kvm-source-Packet von Testing installiert und gegen den 2.6.22.1er Kernel kompiliert. Das hat auch wunderbar funktioniert, aber zusammen mit diesem Source-Packet kommt ja eine eigene Version von Qemu, als Kickstart-Tool gewissermaßen. Ich habe keine Ahnung wie weit sich dieses Qemu mit der bloßen Emulation beist.

Auf jeden Fall war auf der Fedore-Installation dieses Skript zu finden, mit dem man dieses WinXP zum laufen bringt:

Code: Alles auswählen

#!/bin/bash

#bridge

if ! lsmod | grep -q kvm_intel
then
  modprobe kvm_intel
fi

# This is required to make the mouse working (SDL-1.2.8 only)
export SDL_VIDEO_X11_DGAMOUSE=0

# Is a non-snapshot qemu instance already running?
if ps axo cmd | grep "qemu.*winxp" | grep -v "grep qemu" | grep -q -v snapshot
then
  snapshot=-snapshot
fi

qemu-system-x86_64 \
  -hda winxp.img -boot c \
  -cdrom winxp.iso -m 384 \
  -usb -usbdevice tablet -serial file:/tmp/serial.log \
  -soundhw all \
  -net nic,model=rtl8139 -net tap $snapshot
Beim starten dieses Skripts bekomme ich die Fehlermeldung
Could not configure '/dev/rtc' to have a 1024 Hz timer. This is not a fatal
error, but for better emulation accuracy either use a 2.6 host Linux kernel or
type 'echo 1024 > /proc/sys/dev/rtc/max-user-freq' as root.
Also mache ich das und gebe als /root ein:

Code: Alles auswählen

echo 1024 > /proc/sys/dev/rtc/max-user-freq
danach rufe ich das Startskript erneut auf und bekomme diese Meldung:
warning: could not open /dev/net/tun: no virtual network emulation
Could not initialize device 'tap'
kommentiere ich diesen Eintrag aus, kann ich nur im abgesicherten Modus Windows hochfahren.

Also ich denke es liegt daran, dass die Einträge in das Startskript von dem Qemu, das im kvm-source beiliegt nicht erkannt wird, denn die Hardware ist die gleiche. Also vorher hat dieses Skript mit einer Fedore-Installation funktioniert aber jetzt geht das so halt nicht mehr.
Meine Netzwerkkarte ist ein Intel 82573E Gigabit Ethernet Controller.

Kennt sich da jemand aus, wie ich das mit dem Qemu, das beim debian kvm-source-Packet beiliegt umbiegen muss?

Dank vorab...

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 07.08.2007 11:27:37

Mach mal:

Code: Alles auswählen

# modprobe tun
Und probier dann nochmal.

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 07.08.2007 12:49:00

Also das Ganze tun und tap sind nicht wirklich notwendig.
Ich würds am Anfang ohne die -net Einträge machen.

Bei mir hat es auch mit den Standardeinstellungen funktioniert. Und ich hatte damit sogar Internetzugriff vom Gastsystem aus.

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 07.08.2007 12:59:54

Das Problem ist, daß ich eine vorgegebene WinXP-Filedisk bekommen habe, also eine fertige Installation. Diese erwartet wohl daß es da eine Netzwerkhardware gibt.

Leider bringt mich das tun-Modul auch nicht weiter.

Kann es mit der RealtimeClock zu tuen haben? Ich bekomme über den Kernel dauern die Meldung
rtc: lost some interrupts at 1024Hz.
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 07.08.2007 13:38:46

Columbus hat geschrieben:Das Problem ist, daß ich eine vorgegebene WinXP-Filedisk bekommen habe, also eine fertige Installation. Diese erwartet wohl daß es da eine Netzwerkhardware gibt.
In der Standardkonfiguration gibt es sehr wohl auch eine Netzwerkhardware. Und die funktioniert auch ohne tun.
tun brauchst du eigentlich nur, wenn du dein Gastsystem in ein bestehendes Netzwerk einbinden willst.

Und bei mir hat ja Internet und der Zugriff auf das Hostsystem auch ohne tun funktioniert.
Ich denke du brauchst das wirklich nur für die Richtung, wenn du von außen auf das Gastsystem zugreifen willst. Und das kannst du dann später immer noch einrichten.


Und noch was ist mir aufgefallen:
Du verwendest bei dir im Skipt qemu-system-x86_64.
Ich kann mich aber erinnern, dass ich bei mir kvm verwendet habe (das ein zusätzlicher Wrapper für qemu ist). Vielleicht macht das ja einen Unterschied.

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 07.08.2007 14:07:14

markus_b hat geschrieben:
Columbus hat geschrieben:Das Problem ist, daß ich eine vorgegebene WinXP-Filedisk bekommen habe, also eine fertige Installation. Diese erwartet wohl daß es da eine Netzwerkhardware gibt.
In der Standardkonfiguration gibt es sehr wohl auch eine Netzwerkhardware. Und die funktioniert auch ohne tun.
tun brauchst du eigentlich nur, wenn du dein Gastsystem in ein bestehendes Netzwerk einbinden willst.

Und bei mir hat ja Internet und der Zugriff auf das Hostsystem auch ohne tun funktioniert.
Ich denke du brauchst das wirklich nur für die Richtung, wenn du von außen auf das Gastsystem zugreifen willst. Und das kannst du dann später immer noch einrichten.


Und noch was ist mir aufgefallen:
Du verwendest bei dir im Skipt qemu-system-x86_64.
Ich kann mich aber erinnern, dass ich bei mir kvm verwendet habe (das ein zusätzlicher Wrapper für qemu ist). Vielleicht macht das ja einen Unterschied.
kvm ist doch nur das Modul, Kernel-Intern. Es gibt keine Anwendung mit diesem Namen.
Wie schon oben beschrieben habe ich das kvm-source-Packet installiert. Damit kann man ein Kernel-Modul erzuegen (das eben genannte kvm) und eine veränderte Version von Qemu (das eben erwähnte qemu-system-x86_64). Mit diesem und nur mit diesem qemu-system-x86_64 kann man nun virtuelle Machinen starten. Mit qemu-img kann man noch Disk-Images anlegen.

Wenn es noch andere Möglichkeiten gäbe, wüsste ich davon nichts


Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 07.08.2007 14:16:43

Was ich noch beschreiben kann ist, daß ich qemu (qemu-system-x86_64) starten kann, das Bios kurz auftaucht und dann ein schwarzer Schirm, danach passiert nichts mehr. Es bleibt mir nur noch die komplette Anwendung zu beenden.
Wenn ich danach Qemu wieder aufrufe bekomme ich zumindest ein Menü, start im abgesicherten Modus, abgesicherten Modus mit Netzwerk usw.
Im abgesicherten Modus kann ich das System hochfahren. Aber wenn ich diese Sitzung beende und neu starte habe ich wieder meinen schwarzen Bildschirm.

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
AK-Palme
Beiträge: 411
Registriert: 25.05.2004 15:38:30
Kontaktdaten:

Beitrag von AK-Palme » 07.08.2007 14:27:27

Ich fand diese Seiten im Bezug auf Qemu immer hilfreich: http://www.linuxforen.de/forums/showthr ... 2&t=141201
vielleicht einfach mal von oben nach unten durchmachen und gucken was passiert

Benutzeravatar
markus_b
Beiträge: 355
Registriert: 26.01.2006 04:57:18
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von markus_b » 07.08.2007 14:49:09

Columbus hat geschrieben: kvm ist doch nur das Modul, Kernel-Intern. Es gibt keine Anwendung mit diesem Namen.
Doch, es gibt auch eine entsprechende Anwendung dafür.
Im Paket kvm gibt es die Anwendung /usr/bin/kvm.

Ich habe mich an das Howto von KVM gehalten, und da wurde auch mit kvm gearbeitet. http://kvm.qumranet.com/kvmwiki/HOWTO (scheint aber zur Zeit irgendwie offline zu sein).
Ist aber wie gesagt nur ein Wrapper für qemu, deswegen weiß ich nicht, ob es einen Unterschied macht. War nur so ein Gedanke...

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 07.08.2007 15:16:20

Okay, ich habe übersehen, daß es noch ein Kvm-Packet gibt. Ich habe hier ein Etch-System und habe kvm-source auch nur mit pinning eingebunden. Also ich installiere jetzt auch mal kvm von Lenny. Die Webseite von kvm ist fast permanent überlastet. Heute Morgen um 10Uhr war sie noch erreichbar, wenn auch seeeehr langsam.

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 08.08.2007 17:52:24

Hallo, hat jemand vielleicht noch eine Idee?
Zur Zeit sieht mein Startskript folgendermaßen aus:

Code: Alles auswählen

#!/bin/bash

/etc/network/if-pre-up.d/bridge

if ! lsmod | grep -q kvm_intel
then
  modprobe kvm_intel
fi

# This is required to make the mouse working (SDL-1.2.8 only)
export SDL_VIDEO_X11_DGAMOUSE=0

# Is a non-snapshot qemu instance already running?
if ps axo cmd | grep "qemu.*winxp" | grep -v "grep qemu" | grep -q -v snapshot
then
  snapshot=-snapshot
fi

qemu-system-x86_64 \
  -hda winxp.img -boot c \
  -cdrom winxp.iso -m 384 \
  -usb -usbdevice tablet -serial file:/tmp/serial.log \
  -soundhw all \
  -net nic,model=rtl8139 -net tap $snapshot

Wenn ich das (als /root) ausführe, wird qemu gestartet, gibt keine Fehlermeldungen aus. Auf dem Fenster erscheint BIOS und auch noch kurz der Win-Loader, danach habe ich nur noch einen schwarzen Bildschirm.
Ich beende dann die Anwendung entweder durch schliessen des Fenster oder mit ctrl-c.
Dann starte ich erneut, und diesmal bekomme ich wieder die Abfrage, ob ich im abgesicherten Modus hochfahren möchte. Und das klappt dann, im abgesichtern Modus, abgesichert mit Netzwerkunterstützung geht auch, aber mit normal hochfahren friert mir das Fenster sofort ein!

Qemu gibt mir zumindest jetzt keine Fehlermeldung mehr aus. Ich bekomme auf der Konsole nur 10 mal die Sekunde die Meldung vom RealTimeClock:
rtc: lost some interrupts at 1024Hz.
So sieht es aus. Jemand noch eine Idee?

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 09.08.2007 17:51:22

push push,
ich bin jetzt ein bischen weiter gekommen. Ich habe eine neue Filedisk angelegt und mit einer WinXP-Installation gefüllt. Starten tue ich das ganze über eine einzige Kommandozeile:

Code: Alles auswählen

 kvm -hda empty2.img -cdrom winxp.iso  -net nic,model=rtl8139   -no-rtc -usb -usbdevice tablet -serial file:/tmp/serial.log -soundhw sb16  -boot c -m 384
Damit kann man richtig hochfahren, kein abgesicherter Modus. Allerdings ist es noch nicht wirklich performant. Es gibt aber keine Fehlermeldung daher nehme ich schon an, daß er mit kvm-Unterstützung hochfährt und nicht nur mit qemu und reiner Emulation!?

Es kann daran liegen, daß ich eine funktionierende Netzwerkkarte im WIndows am laufen habe aber keine funktionierendes Netzwerk nach draussen.

Wenn ich nun die Option "-net tap" hinzufüge, also das ist der Aufruf:

Code: Alles auswählen

 kvm -hda empty2.img -cdrom winxp.iso  -net nic,model=rtl8139 -net tap  -no-rtc -usb -usbdevice tablet -serial file:/tmp/serial.log -soundhw sb16  -boot c -m 384
Bekomme ich folgende Fehlermeldung:
warning: could not configure /dev/net/tun: no virtual network emulation
Could not initialize device 'tap'
Der Device-Node ist aber vorhanden:

Code: Alles auswählen

schnecke:/home/columbus/kvm# ll /dev/net/tun
crw-rw-rw- 1 root root 10, 200 2007-08-09 15:42 /dev/net/tun
Was muss noch hinzugefügt werden um vlan zu bekommen?

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 13.08.2007 12:33:47

Nochmal push,
ich habe das ganze jetzt auch mit dem Netzwerk zum laufen gebracht.
Mit folgenden Parametern wird die Emualtion gestartet:
kvm -hda empty2.img -cdrom winxp.iso -net nic,model=rtl8139 -net tap -no-rtc -usb -usbdevice tablet -serial file:/tmp/serial.log -soundhw sb16 -boot c -m 384
Und mit diesen Werten habe ich /etc/qemu-ifup ausgestattet: (gemäß unserem Wiki)

Code: Alles auswählen

#!/bin/sh

echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 2
Wobei ich noch nicht weis, welchen Parameter er mit $1 überreicht bekommt.

Was mich jetzt noch nicht zufrieden stellt ist die performance. Woran kann man feststellen, daß er auch wirklich das Kernel-Modul verwendet? Also nicht kqemu sondern kvm!

Was könnte die Spassbremse sein? Es gibt übrigens ein OpenGL-Patch für qemu, das man mit "-enable-gl" aktivieren kann. Das brauche ich aber nicht unbedingt. Mir reicht es schon, wenn die Maus sich flüssig bewegt.

Kann mir da jemand weiterhelfen?

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
neuss
Beiträge: 2165
Registriert: 06.11.2004 17:56:02
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von neuss » 13.08.2007 14:06:06

Hallo,
Columbus hat geschrieben:Was mich jetzt noch nicht zufrieden stellt ist die performance. Woran kann man feststellen, daß er auch wirklich das Kernel-Modul verwendet? Also nicht kqemu sondern kvm!
kvm würde dies beim Start melden,

Code: Alles auswählen

#kvm image
Could not initialize KVM, will disable KVM support
Ausserdem steht dann im Titelbalken nur QEMU anstatt QEMU/KVM.

Zur Perfomance, auch mit KVM fühlt sich XP unter Qemu bei mir (Turion TL52) recht zäh an, aber ohne wäre an ein Arbeiten überhaupt nicht zu denken.

gruss neuss
stell dir vor, es geht, und keiner kriegt es hin.

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 13.08.2007 15:05:24

Hallo Wolfgang,
also daß er beim Aufruf nicht gemeckert hat, hat mich auch zunächst optimistisch gestimmt. Auf den Titelbalken habe ich noch gar nicht geachtet, aber da steht auch QEMU/KVM.
Aber ich benutze hier einen core 2duo! Und ich habe das auf diesem Prozessor schon schneller gesehen!

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

Benutzeravatar
Columbus
Beiträge: 1051
Registriert: 30.04.2002 15:25:02
Wohnort: Mainz
Kontaktdaten:

Beitrag von Columbus » 13.08.2007 16:07:49

...und es reist nicht ab.
Was ich vorhin gesagt habe, daß das Netzwerk unter Windows funktioniert stimmt auch nicht mehr. So wie es jetzt ausschaut beist sich das mit dem Routing des Hosts.

Ich habe folgendes in der /etc/network/interfaces:

Code: Alles auswählen

auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

auto br0
iface br0 inet static
       address 192.168.0.2
       network 192.168.0.0
       netmask 255.255.255.0
       broadcast 192.168.0.255
       gateway 192.168.0.1
       bridge_ports eth0
       bridge_fd 1
       bridge_hello 1
       bridge_stp off
Dann habe ich aber weder von Linux (Host) noch von WinXP(Gast) Zugriff auf das Netz. Liegt das am Routing?
schnecke:/home/columbus# route
Kernel IP Routentabelle
Ziel Router Genmask Flags Metric Ref Use Iface
192.168.3.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 br0
default 192.168.3.1 0.0.0.0 UG 0 0 0 eth0
default 192.168.0.1 0.0.0.0 UG 0 0 0 br0
Oder woran kann das jetzt wieder liegen?

Gruss Christian
Die größten Kritiker der Elche,
waren früher selber welche.

F.W. Bernstein

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: kvm-qemu verhält sich unerwartet

Beitrag von rendegast » 02.06.2009 06:51:29

(mittlerweile testing/squeeze)

Eine abschließende Erklärung (?), sollte für qemu wie auch kvm gelten:
http://marc.info/?l=fedora-de-list&m=11 ... 424014&w=2
im 'strace qemu ...'erscheint:
...
12427 open("/dev/net/tun", O_RDWR|O_LARGEFILE) = 5
12427 ioctl(5, TUNSETIFF, 0xbff3f6a4) = -1 EPERM (Operation not permitted)
12427 write(2, "warning: could not configure /dev"..., 72) = 72
12427 close(5) = 0
12427 write(2, "Could not initialize device 'tap'"..., 34) = 34
12427 exit_group(1) = ?
...
'tunctl' als normaler User ergibt das auch:

Code: Alles auswählen

$ vde_tunctl -u $USER
TUNSETIFF: Operation not permitted
Also auch wenn /dev/net/tun die Rechte 666 hat, was beim Laden des Moduls durch udev gesetzt wird (/lib/udev/conf.d/*permissions.rules),
gibt es
warning: could not configure /dev/net/tun: no virtual network emulation
Could not initialize device 'tap'


walkaround dafür (vde_tunctl aus vde2, kommt als recommend von qemu):

Code: Alles auswählen

#!/bin/sh
TUNCTL=/usr/bin/vde_tunctl
TUNCTL_DEVICE=$(sudo $TUNCTL -u $USER | egrep -o "tap[0-9]*")
echo TUNCTL_DEVICE $TUNCTL_DEVICE
   qemu -net nic -net tap,ifname=$TUNCTL_DEVICE $@
sudo $TUNCTL -d $TUNCTL_DEVICE
oder einfacher:

Code: Alles auswählen

#!/bin/sh
sudo qemu -net nic -net tap  -runas $USER  $@
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten