# qemu-kvm

## SarahS93

Beschäftige mich mit qemu-kvm und habe immer noch so viele Fragen worauf ich in den weiten vom Netz noch keine Antworten und Erklärungen gefunden habe die mich weiterbringen.

qemu-kvm gebe ich ein um es zu benutzen. Aber warum sind das zwei namen? Wo liegen die Unterschiede?

Über "qemu-img create hdd.img 4G" habe ich mir eine 4GB grosse Imagedatei angelegt.

Die Datei erscheint als 4GB gross, aber ist noch leer?! Wie kann ich die ganze Datei richtig anlegen lassen?

Muss oder kann ich etwas angeben damit hdd.img als SCSI Laufwerk benutzt wird?

Die Konfiguration mit dem Netzwerk fällt mir noch sehr schwer.

emerge -av sys-apps/usermode-utilities

tunctl

ifconfig tap0 10.0.0.1

Die VM boote ich mit dieser Zeile:

qemu-kvm -k de -enable-kvm -m 512 -localtime -cdrom install-amd64-minimal.iso -boot once=d,menu=off -hda hdd.img -net nic,model=e1000,macaddr=00:00:00:00:00:01 -net tap,vlan=0,ifname=tap0,script=no -vnc password -vnc 192.168.178.33:5

In der VM gebe ich dann ein:

ifconfig enp0s3 10.0.0.2

Host und VM können sich jetzt gegenseitig pingen.

Mit iptables klappt auch das routing ins internet.

Wenn ich auf diese Weise 2 VM laufen lasse, so z.B.:

Host tap0 10.0.0.1 und VM0 10.0.0.2

Host tap1 10.0.1.1 und VM1 10.0.1.2

funktioniert die Verbindung zwischen Host und VM jeweils, aber mir gefällt nicht das sich die VM untereinander auch erreichen.

Ich will das mehr abtrennen, wie muss ich das machen!?

Die Option "-vnc password" hat keinerlei wirkung, ich kann kein Passwort für den VNC zugang vergeben. Wo kann ich es vergeben?

VNC kann nur Passwörter mit 8 Zeichen verwalten habe ich gelesen!? Da ich eventuel auch von ausserhalb meines Netzwerks auf die ein oder andere VM zugriefen möchte bin ich sehr daran interessiert das ganze besser abzusichern. Welche möglichkeiten (ausser villeicht einen SSH Tunnel) gibt es dafür?

Habe eine Intel Core i7-2600 CPU

http://ark.intel.com/products/52213

welche Optionen muss ich mitangeben damit die CPU optimal genutzt wird?

----------

## SarahS93

*verzweifel*

----------

## l3u

http://wiki.gentoo.org/wiki/QEMU? Erstmal das, und dann die dort verlinkten Themen?

Ich denke mal, es fehlt hier an Grundlagen und grundlegendem Verständnis, deswegen will hier auch keiner was dazu sagen, weil er bei Null anfangen müsste.

Wenn du z. B. mit qemu-img create eine Festplatte erzeugst, dann wird’s schon sein, dass die leer, ist – was soll auch drauf sein? Die muss ja erstmal partitioniert und formatiert werden, genau so, wie wenn du eine Festplatte aus dem Laden in deinen Computer steckst.

Vielleicht solltest du von wegen Virtualisierung erstmal mit was „benutzerfreundlicherem“ wie VirtualBox anfangen? Und wenn du grundsätzlich weißt, wie der Hase läuft, auf qemu/kvm umsteigen?

Qemu und kvm hab ich mir kürzlich auch mal angeschaut, aber es war auch für einen (ich denke, ich bin einer) alten Linux-Hasen wie mich nicht ganz aus dem Ärmel zu schütteln. Gerade, was das Netzwerk angeht.

----------

## Marlo

 *SarahS93 wrote:*   

> *verzweifel*

 

Aber nich doch!

 *l3u wrote:*   

> 
> 
> ... es fehlt hier an Grundlagen und grundlegendem Verständnis, deswegen will hier auch keiner was dazu sagen, weil er bei Null anfangen müsste. 

 

Virtualisation ist ja nun wirklich ein schwieriges Thema, aber es wird immer wichtiger. Denke nur an die Wolken. Und die Grundlagen können hier mit Gentoo tatsächlich ausprobiert werden.

Zu empfehlen ist auf jeden Fall das  Original  mit Wiki und so weiter.

Vielleicht auch ein Blick zurück, hier oder  dort  hin.

Grüße

Ma

----------

## SarahS93

Ich verstehe das nicht mit KVM, warum ist das so schwer ein Netzwerk zum laufen zubkommen?

Ich habe meinen Host Computer und zwei VM.

wie muss ich die beiden VM starten damit ich am Host für jede VM eine eigene Netzwertkschnitstelle habe die ich mittel iptables routen und verwalten kann!?

Wie muss der abschnit mit "-net" bei den KVM Zeilen der beiden VM aussehen?

Wie und welche Netzwerkschnitstellen muss ich dazu am Host vorbereiten?

( Die beiden VM sollen getrennt von einander im Netzwerk sein und sich gegenseitig nicht erreichen )

----------

## l3u

Wenn sie getrennt voneinander sein und sich nicht erreichen können sollen, dann kannst du auch nichts mit iptables machen (afaik).

Wenn du irgendwelches Routing machen willst, dann pack doch die Netzwerkschnittstellen in eine bridge (vgl http://wiki.gentoo.org/wiki/QEMU/Options#Network_bridge), dann ist es so, als wären sie ganz normale Rechner im lokalen Netzwerk. Dann kannst du ihnen auch die Kommunikation miteinander per iptables verbieten.

Beispiel von meinem Setup hier:

/etc/conf.d/net

```
config_eth0="null"

tuntap_tap0="tap"

config_tap0="null"

config_br0="192.168.178.80/24"

routes_br0="default via 192.168.178.1"

bridge_br0="eth0 tap0"

rc_net_br0_need="net.eth0 net.tap0"
```

Sprich, die bridge wird so konfiguriert, wie die Netzwerkschnittstelle des Host-Rechners. 192.168.178.80 ist die „normale“ IP meines Host-Rechners. Dem VM-Rechner weise ich dann z. B. 192.168.178.90 zu. Die relevanten Parameter für qemu-kvm sind in meinem Beispiel:

```
-net nic,model=virtio -net tap,ifname=tap0,script=no,downscript=no
```

Das ",script=no,downscript=no" heißt einfach, dass du dich selbst darum kümmerst, die Geräte zur Verfügung zu stellen, also beim Start der VM keine Scripts aufgerufen werden sollen/müssen. In meinem Fall verwende ich eine paravirtualisierte Netzwerkkarte, deswegen das ",model=virtio" bei dem anderen -net-Parameter. Wenn du das nicht willst/kannst, dann einfach weglassen, also:

```
-net nic -net tap,ifname=tap0,script=no,downscript=no
```

----------

## SarahS93

Danke für die Hilfreichen Infos.

Hab das bei mir jetzt mal so versucht :

Host /etc/conf.d/net :

```
config_enp7s0="192.168.178.33"

routes_enp7s0="default via 192.168.178.1"

dns_servers="192.168.178.1"

tuntap_tap1="tap"

config_tap1="10.0.1.1"

tuntap_tap2="tap"

config_tap2="10.0.2.1"

config_br0="192.168.178.80/24"

routes_br0="default via 192.168.178.1"

bridge_br0="enp7s0 tap1 tap2"

rc_net_br0_need="net.enp7s0 net.tap1 tap2"
```

vm1.sh :

```
#!/bin/sh

qemu-kvm \

 -k de -enable-kvm -m 512 -localtime \

 -cdrom install-amd64-minimal-20131010.iso \

 -boot once=d,menu=off \

 -hda vm1disk.img \

 -net nic,model=virtio,macaddr=00:00:00:00:00:01 \

 -net tap,ifname=tap1,script=no,downscript=no \

 -vnc 192.168.178.33:1
```

In der VM1 mache ich :

```
killall dhcpcd

echo "nameserver 192.168.178.1" > /etc/resolv.conf

route add default gw 10.0.1.1

ifconfig eth0 10.0.1.2
```

vm2.sh :

```
#!/bin/sh

qemu-kvm \

 -k de -enable-kvm -m 512 -localtime \

 -cdrom install-amd64-minimal-20131010.iso \

 -boot once=d,menu=off \

 -hda vm2disk.img \

 -net nic,model=virtio,macaddr=00:00:00:00:00:02 \

 -net tap,ifname=tap2,script=no,downscript=no \

 -vnc 192.168.178.33:2
```

In der VM2 mache ich :

```
killall dhcpcd

echo "nameserver 192.168.178.1" > /etc/resolv.conf

route add default gw 10.0.2.1

ifconfig eth0 10.0.2.2
```

Je nach dem welche VM ich zuerst hochfahre, in der habe ich Netzwerk.

Ich kann den Host oder z.B. google.de pingen, in der die als zweites hochfährt habe ich kein Netzwerk.

Habe es gerade mehrfach ausprobiert, es lässt sich reproduzieren. Woran könnte das liegen?

Hat das was mit br0 zu tun?

Warum muss da überhaupt ein br0 sein?

----------

## l3u

Die config für die echte Netzwerkkarte muss genauso "null" sein wie die für die TAP-Devices. Nur die Brücke selber hat eine IP, Route etc., und zwar die, die Host-Netzwerkkarte hätte, wenn die Brücke nicht da wäre. Und außerdem müssen die beiden virtuellen Netzwerkkarten im selben Subnetz sein, wie die echte, sofern da was geroutet werden soll – und die Konfiguration hierfür musst du innerhalb der virtuellen Maschinen machen, nicht im Host.

So kannst du halt wie gesagt Netzwerkkarten simulieren, die sich genauso verhalten, wie wenn die virtuellen Maschinen unabhängige Rechner im lokalen Netz wären.

Kommt halt drauf an, was du machen willst …

Abgesehen davon: scheinbar ist dein Router/Gateway ja 192.168.178.1, also zumindest schreibst du ja (fälschlicherweise, weil das in routes_br0 gehört):

```
routes_enp7s0="default via 192.168.178.1"
```

In den virtuellen Maschinen steht dann aber:

```
route add default gw 10.0.1.1
```

und

```
route add default gw 10.0.2.1
```

Gibt es den Gateway denn überhaupt? Sind ja schonmal zwei verschiedene Subnetze, es müssten also bei dir insgesamt drei Router im Netz hängen. Ist das so?!

Also funktionieren würde das Ganze z. B. so:

/etc/conf.d/net

```
config_enp7s0="null" 

tuntap_tap1="tap" 

config_tap1="null" 

tuntap_tap2="tap" 

config_tap2="null" 

config_br0="192.168.178.33/24" 

routes_br0="default via 192.168.178.1" 

bridge_br0="enp7s0 tap1 tap2" 

rc_net_br0_need="net.enp7s0 net.tap1 tap2"
```

Und dann in VM 1:

```
killall dhcpcd 

echo "nameserver 192.168.178.1" > /etc/resolv.conf 

route add default gw 192.168.178.1

ifconfig eth0 192.168.178.40
```

und in VM 2:

```
killall dhcpcd 

echo "nameserver 192.168.178.1" > /etc/resolv.conf 

route add default 192.168.178.1

ifconfig eth0 192.168.178.41
```

Man sollte abgesehen davon dhcpcd gar nicht erst starten, wenn man statische IPs verwenden will.

Aber so bekommst du für deinen Host 192.168.178.33, für VM 1 192.168.178.40 und für VM 2 192.168.178.41. Und alle benutzen 192.168.178.1 als Gateway und Nameserver und alle können sich gegenseitig und das Internet pingen.

----------

## SarahS93

Genau das will ich ja nicht, es sollen sich nicht alle gegenseitig erreichen ohne das ich es über iptables route.

192.168.178.1 ist unsere Fritzox, sie ist der router und weg ins Internet.

Ich will den Host, VM1 und VM2 jeweils in einem eigenem Subnetz haben.

Daher verstehe ich das mit den Brücken auch noch nicht so wirklich.

----------

## l3u

Dann brauchst du keine Brücke, aber kannst auch nicht von außen auf die VM übers Netzwerk zugreifen (so weit ich weiß, man möge mich eines Besseren belehren).

Schau halt erstmal in

http://wiki.qemu.org/Documentation/Networking und

http://wiki.gentoo.org/wiki/QEMU/Options#Networking

vielleicht wirst du ja da fündig.

So weit ich das verstanden habe, gibt es ein Pass-through-Netzwerk, das du nicht von außen erreichen kannst, sondern das nur innerhalb der VM läuft (wohl aber mit der Möglichkeit ins Internet zu kommen, aber eben nur von innen nach außen) und einem Bridged-Netzwerk, das sich so verhält, wie wenn es ein normaler Computer im Netzwerk wäre. Mit allen Möglichkeiten, die man da eben hat.

Aber ich bin weder ein Qemu- noch ein Netzwerkprofi, von daher gibt es sicher Leute hier, die das besser wissen bzw. erklären können.

----------

## SarahS93

Achso.

Kann ich da aber nicht für jede VM eine eigene Brücke haben und jede VM so in einem eigenem Netz behalten das ich dann per iptables nach belieben route?

Ist denn eine Brücke sozusagen eine Netzwerkschnitstelle?

----------

## l3u

Die Brücke schließt generell mehrere Netzwerksegmente zu einem zusammen.

Vielleicht klappt es ja, wenn du bei dem Setup, das ich vorgeschlagen habe, den Netzwerkkarten einfach ein anderes Subnetz zuweist? Dann verhalten sie sich so, als wären sie „normale“ Rechner, haben aber ohne Weiteres keinen Zugriff aufeinander.

Inwiefern man dann doch Traffic mit iptables da rein- oder rausrouten kann, weiß ich allerdings nicht.

----------

## SarahS93

Wenn ich das so mache wie du in der Beispielskonfiguration für mich vorgeschlagen hast, zwischen welchen Netzwerkschnitstellen route ich dann?

----------

## SarahS93

Früher, bei Vmware-Server hatte mein Host die IP Adresse 192.168.178.0.1 .

VM1 hatte an Eth0 die IP 192.168.178.101.2 und sprach 192.168.178.101.1 als Gateway an. Am Host gab es die IP 192.168.178.101.1 an der Schnistelle vmnet1.

VM2 hatte an Eth0 die IP 192.168.178.102.2 und sprach 192.168.178.102.1 als Gateway an. Am Host gab es die IP 192.168.178.102.1 an der Schnistelle vmnet2.

Das war Super!!! Bei Vmware-Server nannte sich das "Host-Only" Netzwerk. Wie geht das mit KVM? (Geht das ohne Brücken?

----------

## SarahS93

Ich glaub ich habe nun eine Konfiguration gefunden mit der ich zufrieden bin.

Habe es als kleine Kurzanleitung zusammen gefasst.

Im Kernel einschalten:

```
[*] Virtualization --->

    --- Virtualization

    <*> Kernel-based Virtual Machine (KVM) support

    <M>   KVM for Intel processors support 

Device Drivers --->

    [*] Network device support --->

            <*> Universal TUN/TAP device driver support

Networking support --->

    Networking options --->

        <*> 802.1d Ethernet Bridging
```

Programme brctl und tunctl installieren.

```
  emerge -av net-misc/bridge-utils

  emerge -av sys-apps/usermode-utilities
```

Qemu-KVM installieren

```
  emerge -av qemu-kvm
```

Ein 4GB Image für die VM anlegen

```
  dd if=/dev/zero of=vm1disk.img bs=1024k count=4000
```

Info: 192.168.178.33 Host

Info: 192.168.101.1  br1 @host

Info: 192.168.101.2  eth0 @vm1

Brücke anlegen (später =Gateway).

```
  brctl addbr br1

  ifconfig br1 192.168.101.1 netmask 255.255.255.248 up
```

Virtuelle Netzwerkkarte anlegen, zu der Brücke hinzufügen und in den promiscuous mode setzen

```
  tunctl -b -u root -t qtap1

  brctl addif br1 qtap1

  ifconfig qtap1 up 0.0.0.0 promisc
```

Route für die Gäste anlegen.

```
  route add -host 192.168.101.2 dev br1
```

Qemu-KVM startscript anlegen und ausführen. (Ich boote hier die Gentoo Minimal Installations Disc)

```
  #!/bin/sh

  qemu-kvm \

   -k de -enable-kvm -m 512 -localtime \

   -cdrom install-amd64-minimal-20131010.iso \

   -boot once=d,menu=off \

   -hda vm1disk.img \

   -net nic,model=virtio,macaddr=00:00:00:00:00:01 \

   -net tap,ifname=qtap1,script=no,downscript=no \

   -vnc 192.168.178.33:1
```

VNCViewer installieren und per VNC zum Gast verbinden

```
  emerge -av tightvnc

  vncviewer 192.168.178.33:1
```

Im Gast das Netzwerk einrichten.

```
  killall dhcpcd

  ifconfig eth0 192.168.101.2 netmask 255.255.255.248 up

  route add default gw 192.168.101.1

  echo "nameserver 192.168.178.1" > /etc/resolv.conf
```

Am Host mittel iptables routen.

```
  $ipt -t nat -A POSTROUTING             -o enp7s0  -s 192.168.101.2  -d 0.0.0.0/0                                                      -j MASQUERADE    # masquerieren

  $ipt        -A FORWARD      -i br1     -o enp7s0  -s 192.168.101.2  -d 0.0.0.0/0      -m conntrack --ctstate NEW,ESTABLISHED,RELATED  -j ACCEPT        # weiterlietung raus

  $ipt        -A FORWARD      -i enp7s0  -o br1     -s 0.0.0.0/0      -d 192.168.101.2  -m conntrack --ctstate     ESTABLISHED,RELATED  -j ACCEPT        # weiterleitung rein
```

Das ist mein kleine Anleitung nun  :Wink:  Whohoo, es funktioniert endlich... *freu*

So ein paar Fragen habe ich aber noch ...

1. Habe eine Intel Coire i7 CPU mit 4 echten und 4 virtuellen kernen, plane bis zu 10VM gleichzeitig laufen zu lassen - welche CPU gebe ich in meinem VM startscript  am besten an, und wie?

2. Wieviel mehr Leistung oder besser ist die option "-net nic,model=virtio"?

3. Wie kriege ich am einfachsten und schnellsten ohne viel gefummel z.B. vom Host das Verzeichnis /usr/portage/distfiles/ in meine VM1 und oder VM2 rein? Gibt es vielleicht einen Weg den inhalt von /usr/portage/distfiles/ per emulierten USB Gerät mal eben schnell in der VM1 einzuhängen?

4. Beim rumspielen mit dem virt-manager ist mir aufgefallen das die Ansicht besser zu sein scheint als die die ich über meine VNC Lösung kriege, die Maus regaiert anders usw. Was für eine Methode benutzt der virt-manager, gibt es die auch einzeln ohne virt-manager?

----------

## SarahS93

huhu

----------

## l3u

 *SarahS93 wrote:*   

> huhu

 

Verzeih die späte Antwort.

 *SarahS93 wrote:*   

> 2. Wieviel mehr Leistung oder besser ist die option "-net nic,model=virtio"?

 

Mit virtio hast du einen paravirtualisierten Treiber, das heißt, der Treiber weiß, dass er in einer virtuellen Maschine arbeitet. Somit sollte die Performance deutlich besser sein.

 *SarahS93 wrote:*   

> 3. Wie kriege ich am einfachsten und schnellsten ohne viel gefummel z.B. vom Host das Verzeichnis /usr/portage/distfiles/ in meine VM1 und oder VM2 rein? Gibt es vielleicht einen Weg den inhalt von /usr/portage/distfiles/ per emulierten USB Gerät mal eben schnell in der VM1 einzuhängen?

 

Mit NFS.

----------

## SarahS93

OK

Welche CPU gibt man beim starten am besten an?

Beim Virt-Manager ist die Ansicht irgendwie anders/besser. Die Maus reagiert besser als bei der Lösung über VNC. Wie macht der Virt-Manager das, und wie kann ich das ohne die VM üver Virt-Manager zustarten auch machen?

----------

## l3u

Schonmal

```
-usbdevice tablet
```

probiert?

----------

## SarahS93

Probiert ja, aber da erscheint mir die Maus genauso ungenau wie ohne diese Option.

Wenn ich

-cpu SandyBridge -smp 4

oder

-cpucore2uo -smp 2

benutze, wirkt das System das ich boote (in meinem Beispiel immer noch die minimal-install.iso) beim booten deutlich langsammer als ohne die Optionen -smp und -cpu . Am Host selbst sehe ich das nur immer ein Prozessor arbeitet, dabei gebe ich doch -smp an das er die VM 2 oder gar 4 Prozessoren haben soll. Warum werden dann auf dem Host nicht auch 2 oder 4 benutzt?

----------

## SarahS93

Welche Gentoospeziefischen Verzeichnisse sollte ich per NFS aus der VM "auslagern" damit ich die VM klein bleiben kann?

----------

## bell

/usr/portage auf jeden Fall. Am besten mit der Host-/usr/portage verbinden. Dann muss man weniger aktualisieren und auch die Distfiles müssen nur 1x runtergeladen werden.

/var/tmp/portage macht auch Sinn. Dort wird gebaut und bei einigen Paketen benötigt man dort viel Platz. Hier wird es jedoch etwas schwierig. Am Besten mit NFS-3 und mit no_root_squash freigeben da sonst ggf. Rechte nicht mehr passen. Mit NFS-4 habe ich es noch nicht hingekriegt dass alle UID/GID 1:1 passen.

----------

## SarahS93

OK, das mit dem NFS ist so eine Sache....

Wie kann ich denn in einer laufenden VM Geräte hinzufügen oder entfernen?

Wenn ich per VNC hinverbunden bin, komme ich mit strg + alt + 2 in den qemu-monitor.

Wie mache ich das am Host in der Linux-Konsole ohne VNC?

----------

## l3u

```
-monitor stdio
```

----------

## SarahS93

 *l3u wrote:*   

> 
> 
> ```
> -monitor stdio
> ```
> ...

 

Ne, das geht bei mir ja nicht. Ich starte qemu-kvm so das es in den Hintergrund geht.

Ich verbinde mich von einem entfernten Computer per ssh in die VM rein, oder per VNC auf den Host.

Gibt es kein z.B. telnet mit dem ich mich in die Konsole von Qemu verbinden kann?

----------

## l3u

Das geht über qmp. Wenn du mit "-qmp tcp:127.0.0.1:4444,server,nowait" startest, dann kannst du per telnet bzw. einem Client auf die Konsole zugreifen (vorsicht: per telnet musst die dirtekt JSON-formatierte Befehle absetzen, damit es geht). Siehe http://wiki.qemu.org/QMP

----------

## SarahS93

UH, das sieht kompliziert aus.

Ich suche nur nach einer möglichkeit vom enterntem Computer auf dem Host in einer VM mal eben eine Festplatte hinzuzufügen oder wegzunehmen. Oder das Linux neu zustarten ohne gleich das System abrupt abzuschalten.

----------

## l3u

Ich hab es noch nicht benutzt, aber scheinbar ist wohl libvirt dafür gut geeignet (anstatt qemu „von Hand“ zu starten).

----------

## SarahS93

Das von Hand starten geht bei mir prima, nur ich würde gerne so sachen vereinfacht haben wie im Betrieb USB Geräte hinzufügen/entfernen, Festplatten und das System sauber herrunterfahren.

Wie kann ich denn von meinem entferntem Computer an den Host in die VM ein shutdown -h oder shutdown -r Signal senden?

(Ohne das ich mich dazu per SSH z.B. einloggen muss in die VM).

Ich brauche eine möglichkeit die VM sauber herrunter zufahren. Ein "kill $vm.pid" am Host funktioniert, will ich aber nicht.

Wenn ich bei einer VM ein USB Gerät direkt reingebe, meldet das System, Windows XP, das dass Gerät mit USB2 besser laufen würde. Kurz danach hängt es sich mit einem blauem Bildschirm auf. Es geht um einen Scanner.

Kann ich USB Geräte noch irgendwie anders reinverlinken in eine VM?

Gibt Qemu-KVM die USB Geräte per usbip in eine VM rein?

Wie gut ist die USB weitergabe von Qemu-KVM? Habe bei mir un einem USB2 Scanner den ich in einer Windows XP VM benutzen will nur Probleme?

----------

## SarahS93

Wer kann mir weiterhelfen!?

----------

## frostschutz

Schau dir mal -serial und -monitor an. Ich habe das mit telnet genutzt. Dann kannst du die VM über den monitor runterfahren lassen. Die VM muss da aber mitspielen, wenn sie von aussen das Shutdown-Signal bekommt.

hier macht das jemand mit sockets: http://www.nico.schottelius.org/blog/control-and-shutdown-qemu-kvm-vm-via-unix-socket/

 *Quote:*   

> Wenn ich bei einer VM ein USB Gerät direkt reingebe, meldet das System, Windows XP, das dass Gerät mit USB2 besser laufen würde.

 

Ich nutze einen Canon Drucker/Scanner-Multikulti im USB2 Modus so:

```
-usb -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,vendorid=0x04a9,productid=0x1759
```

Das geht auch irgendwie über den Monitor aber, äh. Nie gemacht, sorry...  :Wink: 

----------

## l3u

Mit

```
-qmp tcp:127.0.0.1:4444,server,nowait
```

kann ich z. B. mittels folgendem Script meinem Windows-SBS-2003-Gast runterfahren:

```
#!/usr/bin/expect

set timeout -1

spawn telnet 127.0.0.1 4444

expect "QMP"

send "{ 'execute': 'qmp_capabilities' }\n"

expect "return"

send "{ 'execute': 'system_powerdown' }\n"

expect "SHUTDOWN"
```

USB-2-Geräte über den Monitor kann man z. B. so einfügen:

```
device_add usb-host,bus=<bus-id>.0,hostbus=1,hostport=2
```

----------

## SarahS93

Starte ich qemu-kvm mit:

-usbdevice host:04a9:1905

kriege ich wie gesagt eine Meldung das es mit USB2 besser laufen würde und das WXP hängt sich auf.

lsusb:

Bus 001 Device 008: ID 04a9:1905 Canon, Inc. CanoScan LiDE 200

Wenn ich aber qemu-kvm starte mit

-usb -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,vendorid=0x04a9,productid=0x1905

kriege ich keine Meldungen im Windows XP Gast das USB2 besser wäre, es kommen garkeine Meldungen.

Im Syslog am Host sehe ich dafür solche Meldungen:

```
hub 1-1:1.0: port 3 not reset yet, waiting 10ms

usb 1-1.3: reset high-speed USB device number 8 using ehci-pci

hub 1-1:1.0: port 3 not reset yet, waiting 10ms

hub 1-1:1.0: port 3 not reset yet, waiting 10ms

hub 1-1:1.0: state 7 ports 6 chg 0000 evt 0008

usb 1-1.3: reset high-speed USB device number 8 using ehci-pci

hub 1-1:1.0: port 3 not reset yet, waiting 10ms

hub 1-1:1.0: port 3 not reset yet, waiting 10ms
```

Im Gast, dem Windows XP, funktioniert das mit dem Scanner dennoch nicht.

Er wird nicht einmal angezeigt oder gefunden.

Muss meine Zeile denn genau so aussehen: "-usb -device usb-ehci,id=ehci -device usb-host,bus=ehci.0,vendorid=0x04a9,productid=0x1905" ?

Was genau bedeutet dieses "-device usb-host,bus=ehci.0"?

Wenn ich es über den Monitor hinzufüge, müsste es doch so:

device_add usb-host,bus=04a9:1905.0,hostbus=001,hostport=008

funktionieren? "Bus 04a9:1905.0" not found, erscheint im Monitor aber nur.

----------

## frostschutz

Solche Meldungen hab ich nicht. Das -device usb-ehci,id=ehci dürfte einen ehci (USB2) Controller erstellen. - An dem dann der Drucker/Scanner hängt, und auch mit den Windows-Treibern von Canon dann funktioniert...

Mein Gast ist Windows 7 64bit. Host ist ein Intel Haswell mit Gentoo ~amd64, qemu 1.6.1. Kernel 3.12...

----------

## l3u

 *SarahS93 wrote:*   

> Starte ich qemu-kvm mit:
> 
> -usbdevice host:04a9:1905
> 
> kriege ich wie gesagt eine Meldung das es mit USB2 besser laufen würde

 

Na klar, weil so meldest du das Gerät ja auch am eingebauten USB-1-Host an. Siehe auch http://lmgtfy.com/?q=qemu+usb2 ;-)

 *SarahS93 wrote:*   

> Wenn ich es über den Monitor hinzufüge, müsste es doch so: 
> 
> device_add usb-host,bus=04a9:1905.0,hostbus=001,hostport=008 
> 
> funktionieren? "Bus 04a9:1905.0" not found, erscheint im Monitor aber nur

 

Hier ist auch nicht die USB-ID anzugeben. Riskier doch mal nen Blick in die Dokumentation … vgl. Link oben!

----------

## SarahS93

Wie kann ich eine Qemu Raw image Datei, die 2 Partitionen hat (Boot und System), über den Mountbefehl im System einhängen?

Über fdisk -l qemu.image kann ich die beiden Partionen sehen.

Ich sehe auch eine Anfang und Ende Zahl.

Nehme ich die Anfangszahl "206848" und multipliziere sie mit 512 , ergibt das 105906176.

Mache ich nun:

losetup -r -o 105906176 qemu.image

und dann:

mount /dev/loop1 /mnt/test/

kommt nur "wrong fs type...

:edit

Andersherrum genauso. Wenn ich am Host eine Datei anlege, diese formatiere und sie dann in der VM (als Festplatte) anspreche, wird das Dateiensystem nicht erkannt.

Was mache ich verkehrt?

----------

## l3u

http://lmgtfy.com/?q=mount+qemu+raw+image

----------

## frostschutz

aktuelles losetup hat --partscan, dann hast du direkt /dev/loop5p3 usw.

----------

## SarahS93

```
losetup --partscan qemu.image

losetup: the options --{encryption,sizelimit,pass-fd,read-only,show} are allowed to loop device setup only
```

Was soll mir das sagen? Ich verstehe es nicht.

:edit

Das soll mir sagen das da noch ein /dev/loop1 z.B. fehlt

mit: "losetup --partscan /dev/loop1 qemu.image" funktioniert es!

Habe dann /dev/loop1p1 und /dev/loop1p2. Ich kann beide im System einhängen, super! Danke!

----------

## SarahS93

Wie ist das mit dieser overlay Geschichte eigentlich ...

ist das dafür gedacht das ich z.B. ein Gentoo in einer VM installiere und mir dann z.B. 5 verschiedene start Scripte schreibe die alle das eine Gentoo benutzen, aber mit 5 verschiedenen overlay Dateien? So könnte ich 5 Verschiedene VM haben und dazu 5 kleine overlay Dateien!?

In den 5 Gentoo wird überwiegen auf Netzlaufwerken gearbeitet.

Macht das so Sinn oder ist das mit dem overlay für was anderes gedacht?

Lässt sich ein image einer Festplatte überhaupt 5 mal gleichzeitig mit Qemu öffnen?

Wie ist das aber wenn ich im Gentoo image updates mache, funnktionieren dann noch die overlay dateien dazu?

----------

## SarahS93

Wie finde ich herraus warum qemu-kvm image.datei bei "Booting from Hard Disk..." stehen bleibt?

----------

## SarahS93

Huhu?  :Sad: 

----------

