VDR Client/Server unter KVM

  • Hi Leute,


    nach nun mehr fast 2 Jahren will ich meinen VDR 1.7.23-r1 aktualisieren. Das Besondere ist, dass ich einen Server und einen Client habe (nach dieser Seite). Auch mein zugrunde liegendes Gentoo ist nun schon so alt. Newer touch a running system. Zumal auch meine Frau sehr böse werden würde, wenn das Ding ausfällt. Also habe ich KVM (incl. qemu, libvirt und virt-manager) in Gang gebracht.


    Meine Frage, bevor ich jetzt in einer VM ein extra Gentoo aufsetze für meinen VDR-Server:


    - Hat jemand einen VDR unter KVM am laufen?
    - Hat jemand den VDR-2 als Client/Server laufen?


    Vielleicht kann ich auf die eine oder andere Erfahrung zurückgreifen und brauche nicht einen bekannten Fehler zu wiederholen. HowTo''s und andere Seiten sind auch sehr willkommen.


    Danke & Gruß
    Thomas

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • Ich nutze proxmox für kvm Virtualisierung. Als Guest habe ich yaVDR 0.5 laufen (headless VDR Server, 4 Tuner L4M). Zudem zwei yaVDR 0.5 Clients, die keine eigenen Tuner besitzen (angeschlossen an TVs). Zudem sonstige Geräte wie PC, Tablet und Smartphone als Clients. Micro Howto Proxmox virtualisierter yaVDR mit S2-6400


    Ich bin mehr als Zufrieden mit dieser Konstellation. Das Ganze läuft seit 9 Monaten ohne Zwischenfälle.


    EDIT: Irgendwie ist ein Absatz verloren gegangen ;)


    Der genannte Link ist ein guter Ansatz, um mit proxmox oder kvm allgemein zu starten. Du solltest zunächst prüfen, ob Deine Hardware auch vt-d unterstützt. Ohne wird es nicht funktionieren (Stichwort PCI Passthrough). Ansonsten wäre natürlich xen noch eine Alternative.

  • Ich wollte normal auf Gentoo bleiben. VT-d wird unterstützt (siehe auch hier). Nur habe ich wohl das Problem für meine Fehlermeldung identifiziert:


    Code
    Error starting domain: Interner Fehler Process exited while reading console log output: char device redirected to /dev/pts/2
    Failed to assign device "hostdev0" : Operation not permitted
    qemu-system-x86_64: -device pci-assign,host=07:00.0,id=hostdev0,configfd=21,bus=pci.0,addr=0x5: Device 'pci-assign' could not be initialized


    Nach dem hier wird der IRQ doppelt verwendet. Nun bin ich am Suchen, wie ich die Karte an den Gast durchreichen kann, also die IRQ's irgend wie "auseinanderlegen". In der Hoffnung, dass es überhaupt daran liegt. :(

    Edit:

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • Kernel wird mit "intel_iommu=on" geladen?
    Moduloption "allow_unsafe_assigned_interrupts=1" hast Du hinzugefügt?


    Bzgl. dem geteilten IRQ könntest Du das Bios prüfen (ggf. kannst Du den IRQ manuell vergeben). Ansonsten stellt sich die Frage, ob Du das IDE Interface überhaupt benötigst (ggf. im Bios deaktivieren)? Letzte Alternative wäre noch einen anderen PCI/PCIe Steckplatz zu verwenden, damit ein anderer IRQ zugewiesen wird.

  • Langsam... ich sehe gerade, dass Du mit "pci-assign" arbeitest... damit hat es bei mir auch nie funktioniert. Bevor Du Karten umsteckst, solltest Du mal 'hostpci0: 07:00.0' versuchen! Bitte aber wie erwähnt Kernel Parameter und Moduloption prüfen!


    EDIT:
    'hostpci0' ist wohl proxmox spezifisch... Der Befehl müsste dann bei Dir so oder so ähnlich aussehen:
    qemu-kvm -pcidevice host=07:00.0

  • Das intel_iommu=on habe ich schon. Ist aber bei mir nicht notwendig, das Ergebnis ist mit und ohne das Gleiche.
    Das mit allow_unsafe_assigned_interrupts=1 wusste ich noch nicht. Für welches Modul denn?.
    Auch im BIOS nachzuschauen wegen IRQ-Routing mache ich mal.
    Mit "pci-assign" arbeitet app-emulation/libvirt-0.9.8. Für diese Umstellung muss ich erst mal nach schauen. :(
    Danke erst einmal für die Hinweise, ich melde mich, wenn der VDR mal wieder eine Zeit lang ungenutzt ist. ;)


    Edit:
    ich arbeite mit app-emulation/qemu-kvm-0.15.1-r1, da gibt es diese Option nicht, da heißt es ein wenig anders: siehe hier.

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • Für die Moduloption einfach eine neue Datei '/etc/modprobe.d/kvm_iommu_map_guest.conf' erstellen und "allow_unsafe_assigned_interrupts=1" als Text einfügen (natürlich ohne ""). Beim nächsten Neustart wird diese Option dann berücksichtigt.


    Dass app-emulation den Parameter pci-assign verwendet, mag sein... jedoch ändert das nichts daran, dass es damit nicht funktionieren wird. Ich habe damals auch sehr lange suchen müssen, bis mir das klar war. Vielleicht bietet ja app-emulation auch die Möglichkeit eigene Parameter zu übergeben... Falls nicht, kannst Du das Thema auch abhaken.

  • Dazu brauche ich ja erst einmal nur qemu-kvm per Hand starten. Sollte zum Testen erst einmal kein Problem sein. GUI ist zwar schön, doch letztlich soll der VDR funktionieren.


    Und mit dem Parameter: Werde es wohl mit Parapeterübergabe an den Kernel versuchen, da ich KVM fest in den Kernel genommen habe.


    DEN IDE-Controler brauche ich wirklich nicht, nun hat die Karte einen eigenen IRQ. :)


    Mal sehen, wie es weiter geht. Ab 15 Uhr kommt eine Sendung für meine Frau. Also erst einmal Testpause.

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • Ich habe noch diese Seite gefunden. Gibt es denn auf einem "normalen" Linux eine Entsprechung für


    Code
    setsebool -P virt_manage_sysfs 1


    Danke & Gruß
    Thomas

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • Es wäre gut, wenn Du zunächst mal eine Rückmeldung zu den bereits besprochenen Punkten geben würdest. Was hast Du umgesetzt und welche neuen Fehlermeldungen erhältst Du? Sonst drehen wir uns nur im Kreis.

  • Ok Sorry, hier noch einmal in Summe:


    - intel_iommu=on ist gesetzt
    - allow_unsafe_assigned_interrupts=1 habe ich als Kernelparameter gesetzt, da ich KVM fest eincompiliert habe
    - IRQ hat die Karte jetzt auch einen eigenen
    - Die PCI-Karte habe ich auch nach HowTo "unbind"-et


    Trotzdem bekomme ich immer noch Fehlermeldung:


    Code
    error : qemuProcessReadLogOutput:1006 : Interner Fehler Process exited while reading console log output: char device redirected to /dev/pts/2
    Failed to assign device "hostdev0" : Operation not permitted


    Hier der Ausschnitt aus dem Logfile:


    Code
    2013-08-30 20:43:19.378+0000: 3899: error : virConnectNumOfInterfaces:9803 : this function is not supported by the connection driver: virConnectNumOfInterfaces
    2013-08-30 20:43:24.225+0000: 3898: error : virCommandWait:2192 : Interner Fehler Child process (/sbin/modprobe pciback) status unexpected: exit status 1
    2013-08-30 20:44:28.875+0000: 3895: error : virNetSocketReadWire:996 : End of file while reading data: Eingabe-/Ausgabefehler
    2013-08-30 20:47:12.358+0000: 3898: warning : qemuDomainObjTaint:1134 : Domain id=1 name='Test' uuid=9838cb70-e11b-49ec-4e7e-4c15589b0d4c is tainted: high-privileges
    2013-08-30 20:47:12.629+0000: 3898: error : qemuProcessReadLogOutput:1006 : Interner Fehler Process exited while reading console log output: char device redirected to /dev/pts/1
    Failed to assign device "hostdev0" : Operation not permitted
    qemu-system-x86_64: -device pci-assign,host=06:00.0,id=hostdev0,configfd=22,bus=pci.0,addr=0x5: Device 'pci-assign' could not be initialized


    Nun will ich nach dem HowTo noch einmal vorgehen, doch ich bin erst wieder Donnerstag direkt am Rechner und von Remote ist mir das zu unsicher.


    Zu dem Fehler modprobe pciback finde ich leider nichts. pciback kennt mein Kernel absolut nicht. :(

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • Wahrscheinlich ist das bei mir aber nicht falsch (durch app-emulation/qemu-kvm-0.15.1-r1):


    Code
    # qemu-kvm -pcidevice
    qemu-system-x86_64: -pcidevice: invalid option


    Hingegen:

    Code
    # qemu-kvm -device pci-assign,host=06:00.0,id=hostdev0,configfd=22,bus=pci.0,addr=0x5
    get_real_device: read failed, errno = 9
    assigned_dev_pci_read: pread failed, ret = -1 errno = 9


    Die Karte ist aktiv an eine VDR-Instanz gekoppelt.


    EDIT:


    Hier mal noch eine laufende Instanz:

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

    Einmal editiert, zuletzt von tom66 ()

  • Ok, dann poste doch bitte mal die Ausgabe von:

    Code
    dmesg | grep -i iommu


    und

    Code
    dmesg | grep -i dmar


    Bitte nenn auch einmal die genaue Bezeichnung Deines Mainboards und der CPU. Ich werde das Gefühl nicht los, dass Deine Hardware evtl. noch Probleme bereitet (fehlende/mangelhafte vt-d Unterstützung).

  • Da das System jetzt nicht online ist, hier die Message-Ausgabe vom Freitag.


    dmesg | grep -i iommu

    Code
    Aug 30 15:40:27 lux kernel: kvm_iommu_map_guest: No interrupt remapping support, disallowing device assignment. Re-enble with "allow_unsafe_assigned_interrupts=1" module option.
    Aug 30 15:41:58 lux kernel: Command line: root=/dev/sda1 quiet intel_iommu=on allow_unsafe_assigned_interrupts=1
    Aug 30 15:42:03 lux kernel: Kernel command line: root=/dev/sda1 quiet intel_iommu=on allow_unsafe_assigned_interrupts=1
    Aug 30 15:42:03 lux kernel: Intel-IOMMU: enabled
    Aug 30 15:42:03 lux kernel: IOMMU 0: reg_base_addr fbfff000 ver 1:0 cap c9008010e60262 ecap f0207a
    Aug 30 15:42:03 lux kernel: IOMMU 1: reg_base_addr fbffe000 ver 1:0 cap c90780106f0462 ecap f020fe
    Aug 30 15:42:03 lux kernel: IOMMU 0 0xfbfff000: using Queued invalidation
    Aug 30 15:42:03 lux kernel: IOMMU 1 0xfbffe000: using Queued invalidation


    Hier fällt mir auf, dass ich vielleicht nicht alles fest in den Kernel nehmen soll, sondern als Modul? (-> Re-enble with "allow_unsafe_assigned_interrupts=1" module option)


    dmesg | grep -i dmar

    Code
    Aug 30 15:42:03 lux kernel: ACPI: DMAR 00000000bf7980c0 00138 (v01    AMI  OEMDMAR 00000001 MSFT 00000097)
    Aug 30 15:42:03 lux kernel: DMAR: Host address width 39
    Aug 30 15:42:03 lux kernel: DMAR: DRHD base: 0x000000fbfff000 flags: 0x0
    Aug 30 15:42:03 lux kernel: DMAR: DRHD base: 0x000000fbffe000 flags: 0x1
    Aug 30 15:42:03 lux kernel: DMAR: RMRR base: 0x000000000ec000 end: 0x000000000effff
    Aug 30 15:42:03 lux kernel: DMAR: RMRR base: 0x000000bf7dc000 end: 0x000000bf7dbfff
    Aug 30 15:42:03 lux kernel: DMAR: ATSR flags: 0x0
    Aug 30 15:42:03 lux kernel: Your BIOS is broken; DMA routed to ISOCH DMAR unit but no TLB space.

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • Habe eben mal schon gesucht, wegen BIOS-Update. Es gibt eins, doch ob das notwendig ist, ist nicht herauszufinden. Hier die Angaben:


    BIOS
    American Megatrends Inc.
    Version: 0808
    Datum: 03/08/2010


    Mainboard
    ASUSTeK Computer INC.
    P6T SE - Rev 1.xx


    Sockel
    LGA1366


    CPU
    Intel(R) Core(TM) i7 CPU 960 @ 3.20GHz


    CPU-Flags
    fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid


    Hinsichtlich des "brocken" könnte ich auch immo=soft mal ausprobieren, doch das soll stark die Geschwindigkeit verringern. Ich werde das wohl mal mit den Modul ausprobieren. Doch das dann leider erst wieder Donnerstag. :(


    Wieso will libvirt pciback laden, obwohl es ohne XEN-Unterstützung kompiliert wurde?

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • Das Board scheint zwar grundsätzlich vt-d zu unterstützen, aber foldender (älterer) Thread ist nicht allzu positiv. http://vip.asus.com/forum/view.aspx?id=20090402224408018&SLanguage=en-us&board_id=1
    Aber nur mal angenommen das Board würde das mitmachen, fehlt noch immer der vt-d Support durch die CPU. Auf der Intel Seite konnte ich keine Angabe zu vt-d zu deiner CPU finden und vt-x reicht nicht aus!


    XEN wäre somit der bessere Ansatz!

  • Ich glaube, langsam verstehe ich es. Auch hier steht es ja schon drin:

    Zitat

    In order to assign devices in KVM, you'll need a system which supports VT-d. This has nothing to do with the VT-x support of your CPU, VT-d needs to be supported by both your chipset on your motherboard and by your CPU.


    Nach dem Wiki kann sie es nicht. Auch Intel sagt, dass es nicht geht. Danke, wer lesen kann, ...


    Nun habe ich meinem Händler wohl zu sehr vertraut. Ich rufe den morgen gleich an, ob ich die CPU tauschen kann. Nach 2 Jahren wird es wohl schwer werden. Vielleicht wird es auch gleich ein Mainboard-Update. Kannst Du mir was empfehlen? Derzeit habe ich 24GByte RAM drauf.


    Hier der Controller:



    Und hier ein Modul als Beispiel:


    Code
    Memory Module Information
            Socket Designation: DIMM2
            Bank Connections: 3
            Current Speed: 1 ns
            Type: DIMM
            Installed Size: 4096 MB (Single-bank Connection)
            Enabled Size: 4096 MB (Single-bank Connection)
            Error Status: OK

    VDR-Server: Gentoo (AMD64/Core-i7) / VDR-1.7.23 / Digital Devices Octopus CI & 2xDuoFlex S2 HDTV (Rev. V3)
    VDR-Client: Gentoo (AMD64/Atom-D525) / VDR-1.7.23 / Chieftech & iMON-Pad / ASUSTeK - AT5IONT-I / 4GB-RAM & 65GB-SSD
    Alt: 3xTT-1.5 / linuxtv-dvb-1.1.1 + test_av-1.28 + FW-2622 / vdr-1.3.37 / viele Plugins / LFS-4.1

  • vt-d ist nur von Interesse, wenn Du kvm verwenden willst. Schau Dir doch mal folgenden Thread an... vielleicht ist xen doch eine Alternative für Dich. Dann könntest Du Dir das Geld für neue Hardware sparen. [Virtualisierung] yaVDR64 0.5 goes Xen Hypervisor - VDR Server als Hypervisor oder in VM inkl. DVB Karten



    Das Problem bei vt-d ist, dass zwar einige Hersteller Desktop Boards anbieten, jedoch das Bios teils fehlerhaft ist und somit unter Linux kein pci-passthrough verwendet werden kann.
    Ich würde daher für diesen Zweck Server Hardware empfehlen, z.B. Board von Supermicro (X10SLH-F) mit Xeon CPU. Die Kosten sind für eine solche Kombination jedoch nicht zu verachten.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!