Freitag, 19. Juni 2015

Links und Skripte aus dem Video: Tutorial: Debian 8, KVM, OVMF, howto, eine echte Grafikkarte in einem virtuellen Windows7 benutzen




Hier sind die Links zu den hilfreichen Webseiten über KVM Virtualisierung mit Weiterleitung der Physikalischen Grafikkarte.

https://www.redhat.com/mailman/listinfo/vfio-users
Ist jetzt die nachfolger mailingliste des archlinux Forums
https://bbs.archlinux.org/viewtopic.php?id=162768
Bei Archlinux findet Ihr eine nette und sehr aktive community, im startpost befindet sich eine howto die auf verschiedene Konfigurationen eingeht.

http://vfio.blogspot.com
Im vfio Blog sind viele Informationen bezüglich der Hardwarevirtualisierung.

https://docs.google.com/spreadsheets/d/1LnGpTrXalwGVNy0PWJDURhyxa3sgqkGXmvNCIvIMenk/edit?pli=1#gid=0
In dieser Googletabelle findet Ihr von Usern getestete Konfigurationen und deren Ergebnisse dazu.

Dieses sind meine eingesetzten Hardwarekomponenten:
Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz socket 1150
GA-Z97X-UD3H-BK
16GB DDR3 Memory
512GB SSD
NVIDIA GeForce GTX 780 (ASUS GTX780-DC2OC-3GD5) zum durch reichen

Um zu Prüfen ob die verbaute Grafikkarte UEFI Boot unterstützt.
http://vfio.blogspot.de/2014/08/does-my-graphics-card-rom-support-efi.html


Für die Vorbereitungen:

http://kvm-exp.blogspot.de/2015/06/howto-debian-jessie-8-pcistub-config-to.html

VirtIo Driver von Fedora
https://fedoraproject.org/wiki/Windows_Virtio_Drivers



Skript Dateien:

kvm-install.sh
--------------------------------------------------- anfang -------------------------------------------
#!/bin/sh

INSTALLFILE=win7-uefi-x64_system.qcow2
FILESIZE=50G

INSTALLCD=/home/user/Downloads/W7SP1_PRO_DELL.iso
# if you use a hardware CD-ROM drive, check for the device. In most cases it's /dev/sr0
#INSTALLCD=/dev/sr0

DRIVERCD=/home/user/Downloads/virtio-win-0.1.96.iso

# PCI address of the passtrough devices
DEVICE1="01:00.0"
DEVICE2="01:00.1"

# load vfio-pci module
modprobe vfio-pci

for dev in "0000:$DEVICE1" "0000:$DEVICE2"; do
        vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
        device=$(cat /sys/bus/pci/devices/$dev/device)
        if [ -e /sys/bus/pci/devices/$dev/driver ]; then
                echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
        fi
        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
done

# create installation file if not exist
if [ ! -e $INSTALLFILE ]; then
    qemu-img create -f qcow2 $INSTALLFILE $FILESIZE
fi

QEMU_PA_SAMPLES=4096 QEMU_AUDIO_DRV=pa \
qemu-system-x86_64 \
-enable-kvm \
-m 4096 \
-cpu host,kvm=off \
-smp 2,sockets=1,cores=2,threads=1 \
-machine pc-i440fx-2.1,accel=kvm \
-soundhw hda \
-bios /usr/share/ovmf/OVMF.fd `# SID version of OVMF` \
-device vfio-pci,host=$DEVICE1,addr=0x8.0x0,multifunction=on \
-device vfio-pci,host=$DEVICE2,addr=0x8.0x1 \
-vga qxl \
-device virtio-net-pci,netdev=user.0,mac=52:54:00:a0:66:43 \
-netdev user,id=user.0 \
-drive file=$INSTALLCD,if=none,id=drive-ide0-0-0,readonly=on,format=raw \
-device ide-cd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
-drive file=$INSTALLFILE,if=none,id=drive-virtio-disk0,format=qcow2,cache=unsafe \
-device virtio-blk-pci,scsi=off,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=2 \
-drive file=$DRIVERCD,if=none,id=drive-ide0-1-0,readonly=on,format=raw \
-device ide-cd,bus=ide.0,unit=1,drive=drive-ide0-1-0,id=ide0-1-0,bootindex=3 \
-rtc base=localtime,driftfix=slew \
-smb /home/user/Downloads/toinstall \
-usb \
-device usb-tablet \
-device usb-kbd

--------------------------------------------------- ende -------------------------------------------

kvm-start.sh
--------------------------------------------------- anfang -------------------------------------------
#!/bin/bash

INSTALLFILE=win7-uefi-x64_system.qcow2
IMAGEFILE=win7-uefi-x64_system-01.qcow2
#FILESIZE=50G

# PCI address of the passtrough devices
DEVICE1="01:00.0"
DEVICE2="01:00.1"

# load vfio-pci module
modprobe vfio-pci

for dev in "0000:$DEVICE1" "0000:$DEVICE2"; do
        vendor=$(cat /sys/bus/pci/devices/${dev}/vendor)
        device=$(cat /sys/bus/pci/devices/${dev}/device)
        if [ -e /sys/bus/pci/devices/${dev}/driver ]; then
                echo ${dev} > /sys/bus/pci/devices/${dev}/driver/unbind
        fi
        echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
done

# create a imagefile from backingfile file if not exist
if [ ! -e $IMAGEFILE ]; then
    qemu-img create -f qcow2 -o backing_file=$INSTALLFILE,backing_fmt=qcow2 $IMAGEFILE
fi


QEMU_PA_SAMPLES=6144 QEMU_AUDIO_DRV=pa \
taskset -c 0-1 \
qemu-system-x86_64 \
-enable-kvm \
-m 4096 \
-cpu host,kvm=off \
-smp 2,sockets=1,cores=2,threads=1 \
-machine pc-i440fx-2.1,accel=kvm \
-soundhw hda \
-bios /usr/share/ovmf/OVMF.fd `# SID version of OVMF` \
-device vfio-pci,host=$DEVICE1,addr=0x8.0x0,multifunction=on,x-vga=on \
-device vfio-pci,host=$DEVICE2,addr=0x8.0x1 \
-vga none \
-device qxl \
-device virtio-net-pci,netdev=user.0,mac=52:54:00:a0:66:43 \
-netdev user,id=user.0 \
-drive file=$IMAGEFILE,if=none,id=drive-virtio-disk0,format=qcow2,cache=none \
-device virtio-blk-pci,scsi=off,addr=0x7,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 \
-rtc base=localtime,driftfix=slew \
-smb /home/user/Downloads/toinstall \
-usb \
-device usb-mouse \
-device usb-kbd
 
--------------------------------------------------- ende ------------------------------------------- 


6 Kommentare:

  1. die erste code es geht nicht mann kann die windows nicht installieren weil es Mann kein partition machen aber auf jden falls yeher gut gemacht

    AntwortenLöschen
  2. Dieser Kommentar wurde vom Autor entfernt.

    AntwortenLöschen
  3. Hallo,
    Habe Windows u. Debian Jessie im Uefi Modus installiert.
    Im System ist eine Palit gtx 780 super jetstream verbaut.

    Wenn ich das Rom der Grafikkarte auslese und mir die Daten per rom-parser anzeigen lasse, kommt folgendes bei raus:

    root@asus:/home/andreas/rom-parser# ./rom-parser image.rom
    Valid ROM signature found @0h, PCIR offset 190h
    PCIR: type 0 (x86 PC-AT), vendor: 10de, device: 1004, class: 030000
    PCIR: revision 0, vendor revision: 1
    Error, ran off the end

    Der uefi Teil fehlt irgendwie im Rom.

    Meine Frage:
    Da Sie ja eine gtx 780 verwenden, mussten Sie auch ein anderes Rom installieren?

    Ohne den uefi Support kann ich die physikalische Grafikkarte nicht in der virtuellen Maschine qemu nutzen?
    Ist das richtig?

    Trotzdem ein gutes Tutorial, dass Sie geschrieben haben.

    AntwortenLöschen
  4. Hallo,

    ich hatte die Asus GTX 780 mit UEFI Bios, die Palit können Sie mit einem nativen Windows und GPUz auf UEFI prüfen, wenn es mit diesem rom-parser nicht klappt.

    Evtl. gibt es ja ein UEFI Bios für die Grafikkarte beim Hersteller.

    Um die Grafikkarte ohne UEFI nutzen zu können wird es etwas schwieriger.

    Danke

    AntwortenLöschen
    Antworten
    1. Hallo,
      nochmal vielen Dank für Ihre schnelle Hilfe.

      gpu-z hatte mir angezeigt, dass die palit gtx 780 uefi unterstützt.
      Anschließend hatte ich Windows 10 mit Ihrer Anleitung mit qemu installiert.
      Die Grafikkarte wurde dann unter Systemsteurung -> System -> Geräte Manager angezeigt.
      Nachdem ich die nvidia Treiber installiert hatte, war das Ausrufezeichen weg u. die Grafikkarte lief ohne Probleme.

      Nachdem ich in dem virtuellen System einen Grafikbenchmark mit gpu-z gemacht hatte, war mir klar, dass nun die Grafikkarte
      ohne Probleme läuft.

      Nun aber zu meinem Problem:
      Ich habe nur einen Monitor.
      Dieser Monitor ist an der onboard Grafikkarte angeschlossen.

      Wenn ich nun ein Spiel starte, dann werden die Spiele nicht über die geforce Grafikkarte berechnet.

      Ich hatte zu diesem Thema im Internet gelesen, dass man dies über die nvidia Systemsteuerung einstellen könnte.
      Leider lässt sich die nvidia Systemsteuerung bei mir nicht öffnen.

      Daher wollte ich Fragen, ob Sie wüssten wie ich das einstellen könnte.

      Löschen
    2. Hab mir einen zweiten Monitor angeschafft....klappt alles einwandfrei...nochmal vielen Dank für Ihre Anleitung

      Löschen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.