Xen-3.3.0 & HVM-USB-Support

Diesen Beitrag schrieb ich 15 Jahre und 5 Monate zuvor; die nachfolgenden Ausführungen müssen heute weder genau so nach wie vor funktionieren, noch meiner heutigen Meinung entsprechen. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 2 Minuten

Oder: mit Apples X11.app geht nichts, also machen wir’s auf der dom0

Während ich mich weiter mit dem Problem befasste fiel mir auf, dass in der Xen-Gemeinde offenbar doch sehr hohe Verwirrung herrscht; deshalb fasse ich mal kurz zusammen, wie man die Sache angehen kann: ich habe auf der dom0 einen grundlegenden X-Server installiert (apt-get install xserver-xorg xfonts-base xterm fvwm), Maus sowie Tastatur angeschlossen und den Server mal gestartet – das funktionierte.

Hinweis: Sollte es nicht funktionieren mit einer Fehlermeldung wie der nachfolgenden, ist das Paket xfonts-base nicht ordnungsgemäß installiert!

Could not init font path element /usr/share/fonts/X11/misc:unscaled, removing from list!
Could not init font path element /usr/share/fonts/X11/misc, removing from list!
Could not init font path element /usr/share/fonts/X11/Speedo, removing from list!
Could not init font path element /usr/share/fonts/X11/PEX, removing from list!
Could not init font path element /usr/share/fonts/X11/cyrillic, removing from list!
Could not init font path element /usr/share/fonts/truetype, removing from list!
Could not init font path element /usr/share/fonts/latex-ttf-fonts, removing from list!

Fatal server error:
could not open default font 'fixed'

Dann per lsusb schauen: welche Geräte sind gerade da? In meinem Fall sieht das dann etwa so aus:

Bus 003 Device 011: ID 045e:0025 Microsoft Corp. IntelliEye Mouse
Bus 003 Device 004: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub"
Bus 003 Device 003: ID 04b4:6560 Cypress Semiconductor Corp. CY7C65640 USB-2.0 "TetraHub"
Bus 003 Device 001: ID 0000:0000  
Bus 001 Device 003: ID 04d9:1603 Holtek Semiconductor, Inc. 
Bus 001 Device 001: ID 0000:0000  
Bus 002 Device 001: ID 0000:0000

Dann stöpfle ich mein USB-Device an und rufe erneut lsusb auf und sehe: es ergab sich eine Änderung, eine Zeile kam dazu:

Bus 003 Device 013: ID 13fe:3123

Hat zwar keinen Namen, aber das ist mein Device – hach, schön. Im fvwm starte ich nun ein xterm, und aus diesem xterm heraus starte ich die `domUv, die in ihrem SDL-Fenster hochkommt:

$ xm create galaxy

Innerhalb des SDL-Fensters kann ich nun (erfolgreich) die Tastenkombination Ctrl+Alt+2 ausführen und gelange tatsächlich in den Monitor des Qemu – hurra! Nun muss ich an dieser Stelle mein USB-Device (bei mir ist das ein 4GB-Stick) bekanntmachen:

$ usb_add host:13fe:3123

Hinweis: Erscheint als Reaktion auf diese Eingabe ein lapidares „Could not add host:13fe:3123“, so wurde in der Konfiguration der domU die Option usb=1 vergessen!

Den Monitor kann ich mittels Ctrl+Alt+1 wieder verlassen. Ich logge mich nun in die domU ein, rufe ein dmesg auf und sehe folgendes:

usb 1-2: new full speed USB device using uhci_hcd and address 2
usb 1-2: configuration #1 chosen from 1 choice
SCSI subsystem initialized
Initializing USB Mass Storage driver...
scsi0 : SCSI emulation for USB Mass Storage devices
usbcore: registered new driver usb-storage
usb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
USB Mass Storage support registered.
  Vendor: Verbatim  Model: STORE N GO        Rev: 5.00
  Type:   Direct-Access                      ANSI SCSI revision: 00
usb-storage: device scan complete
SCSI device sda: 7935104 512-byte hdwr sectors (4063 MB)
sda: Write Protect is off
sda: Mode Sense: 23 00 00 00
sda: assuming drive cache: write through
SCSI device sda: 7935104 512-byte hdwr sectors (4063 MB)
sda: Write Protect is off
sda: Mode Sense: 23 00 00 00
sda: assuming drive cache: write through
 sda: sda1
sd 0:0:0:0: Attached scsi removable disk sda

Außerdem mache ich mal ein lsusb und erhalte als Output dies hier:

galaxy:~$ lsusb 
Bus 001 Device 002: ID 13fe:3123

That’s it! Von meiner Apple-Workstation aus funktioniert es halt nicht – schätzungsweise müsste man da mal einen Bugreport an Apple schicken, damit diese elende Tastenkombination auch unter X11.app benutzbar wird. Davon abgesehen funktioniert diese Sache so ziemlich großartig.

Hinweis: Um das Device wieder zu entfernen arbeitet man nicht mehr mit dem host:vendor_id:product_id-Key, sondern mit der Bus-Adresse. Da die Ausgabe bei mir Bus 001 Device 002: ID 13fe:3123 lautete, ist die Adresse zum Entfernen des Geräts die 0.2 – im Qemu-Monitor also usb_del 0.2 eingeben und anschließend im dmesg staunen, dass das Gerät tatsächlich entfernt wurde ;) Doch Vorsicht: allzu willenloses Spielen mit den Parametern kann dazu führen, das du aus Versehen deine USB-Maus (die wohl per default immer auf 0.1 sitzt) deaktivierst.

Damit das funktioniert, musste ich in der Konfiguration der domU einige Anpassungen vornehmen. Nachfolgend die Konfiguration.

## kernel and memory
kernel	= '/usr/lib/xen/boot/hvmloader'
builder	= 'hvm'
device_model = '/usr/lib/xen/bin/qemu-dm'
memory	= '2048'

## display options
vnc=0
sdl=1
monitor=1
usb=1
keymap='en-us'

## disk devices
disk	= [ 'file:/vm/galaxy/main.img,hda,w', 'file:/vm/galaxy/data.img,hdb,w' ]
boot	= 'c'

## power
vcpus	= '2'

## networking and hostname
vif	= [ 'mac=00:02:02:c0:ff:ee' ]
dhcp	= 'dhcp'
name	= 'galaxy'

## behaviour
on_poweroff	= 'destroy'
on_reboot	= 'restart'
on_crash	= 'restart'
Alle Bilder dieser Seite: © Marianne Spiller – Alle Rechte vorbehalten
Hintergrundbild: 2560x 1920px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten

Eure Gedanken zu „Xen-3.3.0 & HVM-USB-Support“

Ich freue mich über jeden Kommentar, es sei denn, er ist blöd. Deshalb behalte ich mir auch vor, die richtig blöden kurzerhand wieder zu löschen. Die Kommentarfunktion ist über GitHub realisiert, weshalb ihr euch zunächst dort einloggen und „utterances“ bestätigen müsst. Die Kommentare selbst werden im Issue-Tracker und mit dem Label „✨💬✨ comment“ erfasst – jeder Blogartikel ist ein eigenes Issue. Über GitHub könnt ihr eure Kommentare somit jederzeit bearbeiten oder löschen.