Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
Ich habe mich an der Anleitung von https://www.pugetsystems.com/labs/articles/Multiheaded-NVIDIA-Gaming-using-Ubuntu-14-04-KVM-585/ orientiert. Die frage ist was ich ändern muss damit das Skript funktioniert.
Ich habe verschiedene Tutorial gelesen da leider mein englisch nicht so gut ist und ich auch kein Informatiker bin weiss ich nicht weiter.
Was genau meinst du mit Konfigurationsdatei habe ich sie vergessen zu erstellen oder ist es weil Ubuntu 16.04 was geändert hat in der Struktur das der Link nicht existiert.
| Datei: /etc/vfio-pci1.cfg
0000:04:00.1
0000:04:00.0
0000:05:00.1
0000:05:00.0
|
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 851
|
Hallo Kaffetrinker
Welche Konfiguration Datei muss ich ändern das zuerst Matrox g550 geladen wird?
Die Einstellung mußt du im Bios vornehmen, suche nach "VGA initizialize first" oder ähnlich (jeder Hersteller verwendet hier andere Bezeichnungen) um deine Grafikkarte für den Host (jetzt Radeon) an erste Stelle zu setzen. Unterstützt das Mainboard/CPU überhaupt Virtualisierung? Du solltest im Bios eine Option AMD-Vi oder ähnlich finden, die zu aktivieren ist. GRUB_CMDLINE_LINUX_DEFAULT="quiet splash amd__iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1"
amd_iommu=on wäre hier richtig (1 Unterstrich, grub update nicht vergessen!)
Wenn das erledigt ist, würd ich gern die Ausgabe von
dmesg | grep -Ei "iommu|dmar|vfio|drm"
sehen, nachdem du neu gebootet hast; um die Fehler mit den Scripten kümmern wir uns später. Gruß TNT
|
Letalis_Sonus
Anmeldungsdatum: 13. April 2008
Beiträge: 12990
Wohnort: Oldenburg/Erlangen
|
Die Fehlermeldung weißt darauf hin, dass du Leerzeilen in der Datei hast. Das Teil nimmt keine Auswertung der Datei vor, sie wird stumpf Zeilenweise eingelesen. Die Fehlermeldung mit dem CPUID Flag ist irgendwie Käse - VMX ist von Intel, er sollte stattdessen nach SVM suchen. Vielleicht solltest du mal einen konkreten CPU Typ festlegen, der besser zu deiner Host CPU passt. TNTMaster schrieb: Unterstützt das Mainboard/CPU überhaupt Virtualisierung?
Wirf mal einen Blick auf die erste Seite des Themas.
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
Ich habe noch eine Datei erstellt /etc/modprobe.d/blacklist-gpu.conf mit dem Inhalt
Nach einen Neustart bekomme ich jetzt beim Login den Fehler. Ergo einer meiner 3 Bildschirme bleibt schwarz. Es sind zwei an der Nvidia ROG MARS 760 von ASUS und einer davon ist weg. | could not set configuration for CRTC 63
|
dmesg | grep -Ei "iommu|dmar|vfio|drm" 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 | dmesg | grep -Ei "iommu|dmar|vfio|drm"
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-92-generic root=UUID=70d2dd70-7429-4f29-b75b-72a23862bded ro quiet splash amd__iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1 vt.handoff=7
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-92-generic root=UUID=70d2dd70-7429-4f29-b75b-72a23862bded ro quiet splash amd__iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1 vt.handoff=7
[ 1.361565] iommu: Adding device 0000:00:00.0 to group 0
[ 1.361926] iommu: Adding device 0000:00:02.0 to group 1
[ 1.362238] iommu: Adding device 0000:00:03.0 to group 2
[ 1.362549] iommu: Adding device 0000:00:04.0 to group 3
[ 1.362860] iommu: Adding device 0000:00:05.0 to group 4
[ 1.363170] iommu: Adding device 0000:00:06.0 to group 5
[ 1.363478] iommu: Adding device 0000:00:07.0 to group 6
[ 1.363787] iommu: Adding device 0000:00:09.0 to group 7
[ 1.364097] iommu: Adding device 0000:00:11.0 to group 8
[ 1.364418] iommu: Adding device 0000:00:12.0 to group 9
[ 1.364433] iommu: Adding device 0000:00:12.2 to group 9
[ 1.364753] iommu: Adding device 0000:00:13.0 to group 10
[ 1.364768] iommu: Adding device 0000:00:13.2 to group 10
[ 1.365079] iommu: Adding device 0000:00:14.0 to group 11
[ 1.365390] iommu: Adding device 0000:00:14.1 to group 12
[ 1.365723] iommu: Adding device 0000:00:14.2 to group 13
[ 1.366035] iommu: Adding device 0000:00:14.3 to group 14
[ 1.366346] iommu: Adding device 0000:00:14.4 to group 15
[ 1.366655] iommu: Adding device 0000:00:14.5 to group 16
[ 1.366965] iommu: Adding device 0000:00:15.0 to group 17
[ 1.367287] iommu: Adding device 0000:00:16.0 to group 18
[ 1.367303] iommu: Adding device 0000:00:16.2 to group 18
[ 1.367630] iommu: Adding device 0000:01:00.0 to group 19
[ 1.367652] iommu: Adding device 0000:01:00.1 to group 19
[ 1.367972] iommu: Adding device 0000:02:00.0 to group 20
[ 1.368288] iommu: Adding device 0000:03:08.0 to group 21
[ 1.368627] iommu: Adding device 0000:03:10.0 to group 22
[ 1.368961] iommu: Adding device 0000:04:00.0 to group 23
[ 1.368989] iommu: Adding device 0000:04:00.1 to group 23
[ 1.369324] iommu: Adding device 0000:05:00.0 to group 24
[ 1.369353] iommu: Adding device 0000:05:00.1 to group 24
[ 1.369675] iommu: Adding device 0000:06:00.0 to group 25
[ 1.369989] iommu: Adding device 0000:07:00.0 to group 26
[ 1.370302] iommu: Adding device 0000:08:00.0 to group 27
[ 1.370614] iommu: Adding device 0000:09:00.0 to group 28
[ 1.370928] iommu: Adding device 0000:0a:00.0 to group 29
[ 1.370938] iommu: Adding device 0000:0c:00.0 to group 17
[ 1.444688] AMD-Vi: Found IOMMU at 0000:00:00.2 cap 0x40
[ 1.929174] [drm] Initialized drm 1.1.0 20060810
[ 1.960136] [drm] radeon kernel modesetting enabled.
[ 1.961865] AMD IOMMUv2 driver by Joerg Roedel <jroedel@suse.de>
[ 1.961867] AMD IOMMUv2 functionality not available on this system
[ 1.964773] fb: switching to radeondrmfb from VESA VGA
[ 1.965167] [drm] initializing kernel modesetting (CAICOS 0x1002:0x6771 0x174B:0xA01E).
[ 1.965179] [drm] register mmio base: 0xF7720000
[ 1.965180] [drm] register mmio size: 131072
[ 1.966063] [drm] Detected VRAM RAM=1024M, BAR=256M
[ 1.966064] [drm] RAM width 64bits DDR
[ 1.966218] [drm] radeon: 1024M of VRAM memory ready
[ 1.966219] [drm] radeon: 1024M of GTT memory ready.
[ 1.966226] [drm] Loading CAICOS Microcode
[ 1.966291] [drm] Internal thermal controller without fan control
[ 1.971433] [drm] radeon: dpm initialized
[ 1.971518] [drm] GART: num cpu pages 262144, num gpu pages 262144
[ 1.972272] [drm] enabling PCIE gen 2 link speeds, disable with radeon.pcie_gen2=0
[ 1.989601] [drm] PCIE GART of 1024M enabled (table at 0x0000000000274000).
[ 1.991327] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 1.991328] [drm] Driver supports precise vblank timestamp query.
[ 1.991518] [drm] radeon: irq initialized.
[ 2.007853] [drm] ring test on 0 succeeded in 0 usecs
[ 2.007865] [drm] ring test on 3 succeeded in 7 usecs
[ 2.183718] [drm] ring test on 5 succeeded in 2 usecs
[ 2.183727] [drm] UVD initialized successfully.
[ 2.183871] [drm] ib test on ring 0 succeeded in 0 usecs
[ 2.183921] [drm] ib test on ring 3 succeeded in 0 usecs
[ 2.833988] [drm] ib test on ring 5 succeeded
[ 2.834798] [drm] Radeon Display Connectors
[ 2.834800] [drm] Connector 0:
[ 2.834801] [drm] HDMI-A-1
[ 2.834801] [drm] HPD2
[ 2.834803] [drm] DDC: 0x6440 0x6440 0x6444 0x6444 0x6448 0x6448 0x644c 0x644c
[ 2.834803] [drm] Encoders:
[ 2.834804] [drm] DFP1: INTERNAL_UNIPHY1
[ 2.834805] [drm] Connector 1:
[ 2.834805] [drm] DVI-D-1
[ 2.834806] [drm] HPD4
[ 2.834807] [drm] DDC: 0x6460 0x6460 0x6464 0x6464 0x6468 0x6468 0x646c 0x646c
[ 2.834808] [drm] Encoders:
[ 2.834808] [drm] DFP2: INTERNAL_UNIPHY
[ 2.834809] [drm] Connector 2:
[ 2.834809] [drm] VGA-1
[ 2.834810] [drm] DDC: 0x6430 0x6430 0x6434 0x6434 0x6438 0x6438 0x643c 0x643c
[ 2.834811] [drm] Encoders:
[ 2.834812] [drm] CRT1: INTERNAL_KLDSCP_DAC1
[ 2.880711] [drm] fb mappable at 0xB0475000
[ 2.880712] [drm] vram apper at 0xB0000000
[ 2.880713] [drm] size 7299072
[ 2.880714] [drm] fb depth is 24
[ 2.880714] [drm] pitch is 6912
[ 2.880776] fbcon: radeondrmfb (fb0) is primary device
[ 2.880851] radeon 0000:01:00.0: fb0: radeondrmfb frame buffer device
[ 2.890023] [drm] Initialized radeon 2.43.0 20080528 for 0000:01:00.0 on minor 0
[ 3.151123] nouveau 0000:04:00.0: DRM: VRAM: 2048 MiB
[ 3.151124] nouveau 0000:04:00.0: DRM: GART: 1048576 MiB
[ 3.151127] nouveau 0000:04:00.0: DRM: TMDS table version 2.0
[ 3.151129] nouveau 0000:04:00.0: DRM: DCB version 4.0
[ 3.151130] nouveau 0000:04:00.0: DRM: DCB outp 00: 02000f00 00000000
[ 3.151132] nouveau 0000:04:00.0: DRM: DCB outp 01: 01020f02 00020030
[ 3.151134] nouveau 0000:04:00.0: DRM: DCB outp 02: 08011f82 00020030
[ 3.151135] nouveau 0000:04:00.0: DRM: DCB outp 03: 04832fb6 0f420010
[ 3.151136] nouveau 0000:04:00.0: DRM: DCB outp 04: 04032f72 00020010
[ 3.151138] nouveau 0000:04:00.0: DRM: DCB conn 00: 00001030
[ 3.151139] nouveau 0000:04:00.0: DRM: DCB conn 01: 01000131
[ 3.151140] nouveau 0000:04:00.0: DRM: DCB conn 02: 00020246
[ 3.152510] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 3.152511] [drm] Driver supports precise vblank timestamp query.
[ 3.226253] nouveau 0000:04:00.0: DRM: MM: using COPY for buffer copies
[ 3.451930] nouveau 0000:04:00.0: DRM: allocated 1920x1080 fb: 0x60000, bo ffff8804359d3000
[ 3.452000] [drm] Initialized nouveau 1.3.1 20120801 for 0000:04:00.0 on minor 1
[ 3.860379] nouveau 0000:05:00.0: DRM: VRAM: 2048 MiB
[ 3.860380] nouveau 0000:05:00.0: DRM: GART: 1048576 MiB
[ 3.860382] nouveau 0000:05:00.0: DRM: TMDS table version 2.0
[ 3.860384] nouveau 0000:05:00.0: DRM: DCB version 4.0
[ 3.860385] nouveau 0000:05:00.0: DRM: DCB outp 00: 02000f00 00000000
[ 3.860387] nouveau 0000:05:00.0: DRM: DCB outp 01: 01020f02 00020030
[ 3.860388] nouveau 0000:05:00.0: DRM: DCB conn 00: 00001030
[ 3.861385] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
[ 3.861387] [drm] Driver supports precise vblank timestamp query.
[ 3.934644] nouveau 0000:05:00.0: DRM: MM: using COPY for buffer copies
[ 3.934649] [drm] Initialized nouveau 1.3.1 20120801 for 0000:05:00.0 on minor 2
[ 7.399048] VFIO - User Level meta-driver version: 0.3
|
Habe die Konfiguration angepasst. Wenn ich sie starte bleibt der ganze Rechner stehen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 | #!/bin/bash
configfile=/etc/vfio-pci1.cfg
vfiobind() {
dev="$1"
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
}
modprobe vfio-pci
cat $configfile | while read line;do
echo $line | grep ^# >/dev/null 2>&1 && continue
vfiobind $line
done
sudo qemu-system-x86_64 -enable-kvm -M q35 -m 8096 -cpu host -smp 8,sockets=1,cores=8,threads=1 -bios /usr/share/qemu/b$
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 -device vfio-pci,host=04:00.1,bus=root$
-device vfio-pci,host=05:00.1,bus=root.1,addr=00.1 -drive file=/mnt/virtuell/windows8.img ,id=disk,format=raw -device i$
-drive file=/home/martin/Downloads/Windows.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd -boot menu=on
exit 0
|
Es ist kein fx-8350 gelistet wecher soll ich nehmen und wo genau müste ich meine /usr/vm1 ändern ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 | kvm -cpu ?
x86 qemu64 QEMU Virtual CPU version 2.5+
x86 phenom AMD Phenom(tm) 9550 Quad-Core Processor
x86 core2duo Intel(R) Core(TM)2 Duo CPU T7700 @ 2.40GHz
x86 kvm64 Common KVM processor
x86 qemu32 QEMU Virtual CPU version 2.5+
x86 kvm32 Common 32-bit KVM processor
x86 coreduo Genuine Intel(R) CPU T2600 @ 2.16GHz
x86 486
x86 pentium
x86 pentium2
x86 pentium3
x86 athlon QEMU Virtual CPU version 2.5+
x86 n270 Intel(R) Atom(TM) CPU N270 @ 1.60GHz
x86 Conroe Intel Celeron_4x0 (Conroe/Merom Class Core 2)
x86 Penryn Intel Core 2 Duo P9xxx (Penryn Class Core 2)
x86 Nehalem Intel Core i7 9xx (Nehalem Class Core i7)
x86 Westmere Westmere E56xx/L56xx/X56xx (Nehalem-C)
x86 SandyBridge Intel Xeon E312xx (Sandy Bridge)
x86 IvyBridge Intel Xeon E3-12xx v2 (Ivy Bridge)
x86 Haswell-noTSX Intel Core Processor (Haswell, no TSX)
x86 Haswell Intel Core Processor (Haswell)
x86 Broadwell-noTSX Intel Core Processor (Broadwell, no TSX)
x86 Broadwell Intel Core Processor (Broadwell)
x86 Opteron_G1 AMD Opteron 240 (Gen 1 Class Opteron)
x86 Opteron_G2 AMD Opteron 22xx (Gen 2 Class Opteron)
x86 Opteron_G3 AMD Opteron 23xx (Gen 3 Class Opteron)
x86 Opteron_G4 AMD Opteron 62xx class CPU
x86 Opteron_G5 AMD Opteron 63xx class CPU
x86 host KVM processor with all supported host features (only available in KVM mode)
Recognized CPUID flags:
fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 pn clflush ds acpi mmx fxsr sse sse2 ss ht tm ia64 pbe
pni|sse3 pclmulqdq|pclmuldq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cid fma cx16 xtpr pdcm pcid dca sse4.1|sse4_1 sse4.2|sse4_2 x2apic movbe popcnt tsc-deadline aes xsave osxsave avx f16c rdrand hypervisor
fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f rdseed adx smap pcommit clflushopt clwb avx512pf avx512er avx512cd
syscall nx|xd mmxext fxsr_opt|ffxsr pdpe1gb rdtscp lm|i64 3dnowext 3dnow
lahf_lm cmp_legacy svm extapic cr8legacy abm sse4a misalignsse 3dnowprefetch osvw ibs xop skinit wdt lwp fma4 tce nodeid_msr tbm topoext perfctr_core perfctr_nb
invtsc
xstore xstore-en xcrypt xcrypt-en ace2 ace2-en phe phe-en pmm pmm-en
kvmclock kvm_nopiodelay kvm_mmu kvmclock kvm_asyncpf kvm_steal_time kvm_pv_eoi kvm_pv_unhalt kvmclock-stable-bit
npt lbrv svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists pause_filter pfthreshold
xsaveopt xsavec xgetbv1 xsaves
arat
|
Ich würde gerne Fehler Meldungen Posten weiss aber nicht wo diese hinterlegt sind. Habe mit sudo service lightdm stop versucht der Rechner bleib nicht mehr stehen. | cat: /sys/bus/pci/devices//vendor: Datei oder Verzeichnis nicht gefunden
cat: /sys/bus/pci/devices//device: Datei oder Verzeichnis nicht gefunden
/usr/vm1: Zeile 11: echo: Schreibfehler: Das Argument ist ungültig.
cat: /sys/bus/pci/devices//vendor: Datei oder Verzeichnis nicht gefunden
cat: /sys/bus/pci/devices//device: Datei oder Verzeichnis nicht gefunden
/usr/vm1: Zeile 11: echo: Schreibfehler: Das Argument ist ungültig.
qemu-system-x86_64: -drive file=/mnt/virtuell/windows8.img: Could not open '/mnt/virtuell/windows8.img': No such file or directory
|
Windows ist aber in /mnt/virtuell/
|
Letalis_Sonus
Anmeldungsdatum: 13. April 2008
Beiträge: 12990
Wohnort: Oldenburg/Erlangen
|
Kaffetrinker schrieb: Habe die Konfiguration angepasst. Wenn ich sie starte bleibt der ganze Rechner stehen.
Mal abgesehen davon, dass die Option völlig überflüssig sein sollte: Du hast dich vertippt, da ist ein Unterstricht zu viel drin. Kaffetrinker schrieb: Es ist kein fx-8350 gelistet wecher soll ich nehmen
Der FX-8350 ist ein Piledriver, das entspricht der Opteron 63xx Serie - also Opteron_G5. Kaffetrinker schrieb: Ich würde gerne Fehler Meldungen Posten weiss aber nicht wo diese hinterlegt sind.
Das wirst du wohl Qemu via Option erst vorgeben müssen. Du könntest dir alternativ auch mal für das Starten der VM libvirt anschauen, es ist nur erfahrungsgemäß ziemlich eklig das ganze für einen PCI Passthrough allgemein so einzurichten, dass AppArmor nicht meckert - die VFIO Nodes sind in den dazugehörigen AppArmor Regeln nämlich nicht freigegeben - genau das war für mich der Tropfen, der mich zu Arch getrieben hatte, meine Änderungen an der AppArmor Konfiguration wurden nach einem Update schlicht ignoriert.
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 851
|
cat: /sys/bus/pci/devices//vendor: Datei oder Verzeichnis nicht gefunden
cat: /sys/bus/pci/devices//device: Datei oder Verzeichnis nicht gefunden
Wie heißt die Konfigurationsdatei denn nun? Im Skript steht /etc/vfio-pci1.cfg In deinem 1. Post heißt sie /etc/vfio-pci1 Der Dateiname muß natürlich gleich sein.
qemu-system-x86_64: -drive file=/mnt/virtuell/windows8.img: Could not open '/mnt/virtuell/windows8.img': No such file or directory
-drive file=/mnt/virtuell/windows8.img ,id=disk,format=raw
Hier ist ein Leerzeichen zuviel, außerdem heißt die Datei in deinem 1. Post /mnt/virtuell/windos8.img, wo du erfolgreich ohne Passthrough startest. Ich sehe hier immernoch amd__iommu=on (mit 2 Unterstrichen) in deiner dmesg Ausgabe, würde mich jetzt wundern, wenn das so funktioniert.
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
So ich habe es jetzt auch gemerkt wie die Änderung "amd_iommu=on" wirksam wird. Die Konfigurationsdatei heist /etc/vfio-pci1.cfg. Inhalt:
| 0000:04:00.1
0000:04:00.0
0000:05:00.1
0000:05:00.0
|
Also ich habe das Skript einfach übernommen deshalb verstehe ich den unterschied nicht zwischen | -drive file=/mnt/virtuell/windows8.img,id=disk,format=raw
|
und | /mnt/virtuell/windos8.img
|
was müste den diese links bewirken?
| cat: /sys/bus/pci/devices//vendor: Datei oder Verzeichnis nicht gefunden
cat: /sys/bus/pci/devices//device: Datei oder Verzeichnis nicht gefunden
|
Für was brauche ich das bios in /usr/share/qemu/bios.bin? und drive file=/home/puget/Downloads/Windows.iso ? Das wäre die Installation cd die brauche ich au nicht mehr? -device vfio-pci,host=04:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \ muss ich die doppelt haben da ich 2 Gpu in einer Karte habe? 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 |
#!/bin/bash
configfile=/etc/vfio-pci1.cfg
vfiobind() {
dev="$1"
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
}
modprobe vfio-pci
cat $configfile | while read line;do
echo $line | grep ^# >/dev/null 2>&1 && continue
vfiobind $line
done
sudo qemu-system-x86_64 -enable-kvm -M q35 -m 8192 -cpu Opteron_G5 \
-smp 8,sockets=1,cores=8,threads=1 \
-bios /usr/share/qemu/bios.bin -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,multifunction=on,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=04:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=04:00.1,bus=root.1,addr=00.1 \
-drive file=/mnt/virtuell/windos8.img,id=disk,format=raw -device ide-hd,bus=ide.0,drive=disk \
-drive file=/home/puget/Downloads/Windows.iso,id=isocd -device ide-cd,bus=ide.1,drive=isocd \
-boot menu=on
exit 0
|
|
Letalis_Sonus
Anmeldungsdatum: 13. April 2008
Beiträge: 12990
Wohnort: Oldenburg/Erlangen
|
Kaffetrinker schrieb: Also ich habe das Skript einfach übernommen deshalb verstehe ich den unterschied nicht
Tippfehler. Mehr Sorgfalt fürs Detail! Kaffetrinker schrieb: Für was brauche ich das bios in /usr/share/qemu/bios.bin?
Wie willst du denn einen Rechner ohne BIOS booten? Der Festplattencontroller initialisiert sich nicht von alleine, das gilt auch für virtuelle Hardware. Man kann hier stattdessen auch ein TianoCore UEFI als Firmware konfigurieren. Kaffetrinker schrieb: -device vfio-pci,host=04:00.0,bus=root.1,addr=00.0,multifunction=on,x-vga=on \ muss ich die doppelt haben da ich 2 Gpu in einer Karte habe?
Die Geräte werden über PCI Adressen identifiziert, wie soll das denn sonst funktionieren? Beachte, dass stets auch die untergeordneten PCI Geräte mit durchgereicht werden müssen, da sich diese nicht separat ansteuern lassen - sprich: die auf den Karten verbauten Audiochips. So ein Unterfangen ist stets eine ziemlich individuelle Geschichte, vielleicht solltest du erst einmal mehr Zeit damit verbringen die Grundlagen zu studieren um das ganze selbst von Grund auf aufzubauen. Im Arch Forum gibt es einen alten Thread zu dem Thema mit über 200 Seiten, http://vfio.blogspot.de/ hat auch sehr umfangreiche Informationen - insbesondere auch Anleitungen die erklären, wie man das ganze auch (weitestgehend) grafisch mit libvirt konfiguriert. Man sollte lediglich im Hinterkopf behalten, dass sich darin auch Details befinden, die Arch und Red Hat spezifisch sind.
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 851
|
Ich weiß jetzt nicht, warum die vfio-pci1.cfg nicht richtig verarbeitet wird. Aber wir können mal eine minimal setup probieren, ohne extra config Datei. Anstelle der Windows.iso kannst du auch jedes andere Linux Live ISO verwenden, vorerst testen wir mit einer GPU. Leider hab ich keine Ahnung, wie sich das mit dieser Dual GPU Karte verhält, oder ob es nur funktioniert, wenn beide GPUs durchgereicht werden. 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 | #!/bin/bash
modprobe vfio-pci
modprobe vfio_iommu_type1
for dev in 0000:04:00.0 0000:04:00.1; do
vendor=$(cat /sys/bus/pci/devices/$dev/vendor)
device=$(cat /sys/bus/pci/devices/$dev/device)
echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id
echo $dev > /sys/bus/pci/devices/$dev/driver/unbind
echo $dev > /sys/bus/pci/drivers/vfio-pci/bind
done
qemu-system-x86_64 -enable-kvm -M q35 -m 8192 \
-cpu host -vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=04:00.0,bus=root.1,addr=00.0 \
-cdrom /home/puget/Downloads/Windows.iso
|
Aufruf:
sudo /usr/vm1 &>/home/puget/qemu.log
Das schreib alle Meldung in qemu.log, falls PC hängt und neugestartet wird EDIT: Anscheinend wird der nouveau Treiber für die Grafikkarte noch geladen, das ist schlecht und muß so früh wie möglich beim Booten verhindert werden.
Mach deine Änderung in der Datei /etc/initramfs-tools/modules rückgängig und füge folgendes hinzu
vfio
vfio_iommu_type1
vfio_pci ids=10de:1187,10de:0e0a
vfio_virqfd
Deine erstellte Datei /etc/modprobe.d/blacklist-gpu.conf bleibt so wie sie ist. Das entspricht in etwa meiner Konfiguration und funktioniert bei mir, wobei ich meine VM unter Arch Linux betreibe und dort das Vorgehen etwas anders ist. Dannach initrd updaten und Neustart:
sudo update-initramfs -u
Als Ergebnis sollten alle 4 Devices der Grafikkarte mit dem Befehl: lspci -nnk
Kernel driver in use: vfio-pci
anzeigen, der for .... done Block im Skript (Zeile 6 - 12) wäre dann auch überflüssig.
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
TNTMaster Leider hab ich keine Ahnung, wie sich das mit dieser Dual GPU Karte verhält, oder ob es nur funktioniert, wenn beide GPUs durchgereicht werden.
So weit ich das beurteilen kann hast du recht das es nur funktioniert wenn beide GPU durchgereicht werden. Wenn ich als Gast Ubuntu starte kommt ein Fester qemu und die Lüfter der Nvidia Grafikkarte fangen an zu drehen. Leider macht der geschlossene Bildschirm nicht viel.
Im Fester steht dann The system is running in low-graphics mode. Windows zeigt mir nur eine GPU an. Mit -vga none starte qemu nicht es kommt nur die konsole compat_monitor0 console. Wäre schön wenn es direkt beim zweiten Bildschirm startet. Ich habe das script ein wenig angepasst. Tastatur, Maus und Webcam wird duchrgereicht. 1
2
3
4
5
6
7
8
9
10
11
12 | qemu-system-x86_64 -enable-kvm -M q35 -m 3192 \
-cpu Opteron_G5 \
-device ioh3420,bus=pcie.0,addr=1c.0,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=04:00.0,bus=root.1,multifunction=on,x-vga=on \
-device vfio-pci,host=04:00.1,bus=root.1,multifunction=on \
-device vfio-pci,host=05:00.0,bus=root.1,multifunction=on \
-device vfio-pci,host=05:00.1,bus=root.1,multifunction=on \
-hda /mnt/virtuell/ubuntu117.img \
-usbdevice host:046d:c30f \
-usbdevice host:046d:082d \
-usbdevice host:045e:0084 \
|
Die Grafikkarte wird an vfio-pci überreicht.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 | lspci -nnk
00:00.2 IOMMU [0806]: Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit (IOMMU) [1002:5a23]
Subsystem: Advanced Micro Devices, Inc. [AMD/ATI] RD990 I/O Memory Management Unit (IOMMU) [1002:5a23]
01:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Caicos XTX [Radeon HD 8490 / R5 235X OEM] [1002:6771]
Subsystem: PC Partner Limited / Sapphire Technology Caicos XTX [Radeon HD 8490 / R5 235X OEM] [174b:a01e]
Kernel driver in use: radeon
Kernel modules: radeon
01:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Caicos HDMI Audio [Radeon HD 6400 Series] [1002:aa98]
Subsystem: PC Partner Limited / Sapphire Technology Radeon HD 6450 1GB DDR3 [174b:aa98]
Kernel driver in use: snd_hda_intel
Kernel modules: snd_hda_intel
04:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK104 [GeForce GTX 760] [10de:1187] (rev a1)
Subsystem: ASUSTeK Computer Inc. GK104 [GeForce GTX 760] [1043:8489]
Kernel driver in use: vfio-pci
Kernel modules: nvidiafb, nouveau
04:00.1 Audio device [0403]: NVIDIA Corporation GK104 HDMI Audio Controller [10de:0e0a] (rev a1)
Subsystem: ASUSTeK Computer Inc. GK104 HDMI Audio Controller [1043:8489]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
05:00.0 3D controller [0302]: NVIDIA Corporation GK104 [GeForce GTX 760] [10de:1187] (rev a1)
Subsystem: ASUSTeK Computer Inc. GK104 [GeForce GTX 760] [1043:8489]
Kernel driver in use: vfio-pci
Kernel modules: nvidiafb, nouveau
05:00.1 Audio device [0403]: NVIDIA Corporation GK104 HDMI Audio Controller [10de:0e0a] (rev a1)
Subsystem: ASUSTeK Computer Inc. GK104 HDMI Audio Controller [1043:8489]
Kernel driver in use: vfio-pci
Kernel modules: snd_hda_intel
|
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
Ich habe es so weit higekriegt das ich ubuntu so wie auch win starten kann.
War der Schlüsse damit der Bildschirm starten.
Leider funktionieren "nur" 2 von 3 Ausgänge. Bei einem kommt: | qemu-system-x86_64: vfio-pci: Cannot read device rom at 0000:04:00.0
Device option ROM contents are probably invalid (check dmesg).
Skip option ROM probe with rombar=0, or load from file with romfile=
|
Weiterhin habe ich immer noch das Problem das nur ein GPU benutzt/angezeigt wird.
Ich denke beides hat miteinander zu tun fals jemand eine idee dazu hat wüde ich sie gerne testen.
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 851
|
Die Grafikkarte wird an vfio-pci überreicht. ....
Das sieht gut aus. Mit -vga none starte qemu nicht es kommt nur die konsole compat_monitor0 console. Wäre schön wenn es direkt beim zweiten Bildschirm startet.
Du brauchst die Option -vga none aber, damit die Nvidia Karte benutzt wird und es soll auch "nur" ein Konsolenfenster kommen, die Ausgabe der VM soll ja die Nvidia Karte übernehmen. Als CPU immer "host" wählen, sonst wird diese emuliert und ist quälend langsam.
Ich habe den Befehl mal dahingehend verändert, in der letzten Zeile das '\' noch weg, da hier der Befehl ja endet. Evtl. auch mal ein wenig warten, wenn nicht gleich ne Ausgabe am Bildschirm erscheint.
1
2
3
4
5
6
7
8
9
10
11
12
13 | qemu-system-x86_64 -enable-kvm -M q35 -m 3192 \
-cpu host,kvm=off \
-vga none \
-device ioh3420,bus=pcie.0,addr=1c.0,port=1,chassis=1,id=root.1 \
-device vfio-pci,host=04:00.0,bus=root.1,multifunction=on,x-vga=on \
-device vfio-pci,host=04:00.1,bus=root.1,multifunction=on \
-device vfio-pci,host=05:00.0,bus=root.1,multifunction=on \
-device vfio-pci,host=05:00.1,bus=root.1,multifunction=on \
-hda /mnt/virtuell/ubuntu117.img \
-usb \
-usbdevice host:046d:c30f \
-usbdevice host:046d:082d \
-usbdevice host:045e:0084
|
|
Letalis_Sonus
Anmeldungsdatum: 13. April 2008
Beiträge: 12990
Wohnort: Oldenburg/Erlangen
|
TNTMaster schrieb: Du brauchst die Option -vga none aber, damit die Nvidia Karte benutzt wird und es soll auch "nur" ein Konsolenfenster kommen, die Ausgabe der VM soll ja die Nvidia Karte übernehmen.
Nein, die lassen sich parallel betreiben - was gerade zum Einrichten des System durchaus nützlich ist. Bei mir führte das mit meiner gewählten Buskonfiguration immer zu Konflikten, es wurde kein Adressfenster für den Grafikspeicher gelassen - aber ich habe schon viele gesehen, bei denen dies problemlos funktioniert. TNTMaster schrieb: Als CPU immer "host" wählen, sonst wird diese emuliert und ist quälend langsam.
Humbug. Es werden lediglich die Erweiterungen festgelegt, die als verfügbar gemeldet werden - emuliert wird da rein gar nichts. Über Emulation und Virtualisierung entscheidet allein die Verwendung von KVM. Ansonsten hat die Option nur einen Einfluss darauf, als was für ein Modell sich die virtuelle CPU meldet - jene Erweiterungen lassen sich auch separat aktivieren, der Funktionsumfang einer CPU wird unabhängig über die CPUID Kennung bestimmt.
|
TNTMaster
Anmeldungsdatum: 30. Juli 2009
Beiträge: 851
|
Danke für die Richtigstellung, dann hab ich das jetzt hoffentlich richtig im Kopf abgespeichert ☺
|
Kaffetrinker
(Themenstarter)
Anmeldungsdatum: 8. August 2007
Beiträge: 205
Wohnort: St.Gallen
|
Ich danke für eure Hilfe es funktioniert gut. ☺
Abgesehen das nur ein GPU erkannt wird aber das ist nicht weiter schlimm da ich im sinne habe sie zu ersetzen gegen eine AMD Radeon RX Vega 64. Leider finde ich auf deutsch ein paar Erklärungen nicht.
Nach den - device stehen da Attribute nennt man sie Attribute?
| bus=pcie.0,
addr=1c.0,
port=1,
chassis=1,
id=root.1 \
multifunction=on
|
Habt ihr eine Erklärung oder eine Verweis wo ich es nachlesen könnte?
|