GPU 直通適用於 UEFI 韌體,但不適用於 Windows iso
我正在嘗試使用直通圖形設置虛擬機。我能夠讓 UEFI shell 的直通工作,但不是官方的 Windows 安裝程序。我可以讓 Windows 安裝程序工作,但只能使用模擬圖形
這會在 QEMU 視窗中啟動 Windows 安裝程序:
sudo qemu-system-x86_64 --enable-kvm \ -name TESTVM,process=TESTVM \ -cdrom /media/big-tank-8TB/OSISOS/Windows/WindowsOct2018.iso \ -smp 4 \ -cpu core2duo \ -m 4096 \ -vga qxl
這也會在 QEMU 視窗中啟動 Windows 安裝程序(仍然沒有直通)
sudo qemu-system-x86_64 --enable-kvm \ -name TESTVM,process=TESTVM \ -cdrom /media/big-tank-8TB/OSISOS/Windows/WindowsOct2018.iso \ -smp 4 \ -cpu core2duo \ -m 4096 \ -device vfio-pci,host=43:00.0,multifunction=on \ -device vfio-pci,host=43:00.1
但是,如果我指定 UEFI 韌體的路徑,我會在連接到我的直通影片卡的顯示器和 QEMU 視窗中獲得 Tiano slpash 螢幕,然後是 UEFI shell。
sudo qemu-system-x86_64 --enable-kvm \ -name TESTVM,process=TESTVM \ -cdrom /media/big-tank-8TB/OSISOS/Windows/WindowsOct2018.iso \ -smp 4 \ -cpu core2duo \ -m 4096 \ -device vfio-pci,host=43:00.0,multifunction=on \ -device vfio-pci,host=43:00.1 \ -drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd \ -drive if=pflash,format=raw,file=/usr/share/OVMF/OVMF_VARS.fd
為什麼只有在沒有 UEFI 文件的情況下才能進行直通?或者,為什麼指定 UEFI 文件會阻止我啟動 Windows?
編輯:嘗試下載不同版本的 Windows(2018 年 4 月而不是 10 月),同樣的問題。
編輯:嘗試清除並重新安裝 OVMF,但沒有運氣。
編輯:我可以通過在 shell 中鍵入“exit”進入啟動管理器,但選擇可用的 DVD 驅動器(和所有其他選項)會立即退回到啟動管理器。
編輯:跑這個:
-name TESTVM,process=TESTVM \ -drive file=/media/big-tank-8TB/OSISOS/Windows/Win10_1803_English_x64.iso,index=1,media=cdrom \ -drive file=/media/big-tank-8TB/OSISOS/Windows/virtio-win-0.1.160.iso,index=2,media=cdrom \ -smp 4 \ -cpu core2duo \ -m 4096 \ -device vfio-pci,host=43:00.0,multifunction=on \ -device vfio-pci,host=43:00.1 \ -drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd \ -drive if=pflash,format=raw,file=/usr/share/OVMF/OVMF_VARS.fd
當我得到 uefi shell 時,我輸入“exit”進入啟動管理器。在啟動管理器中,選擇可用的 DVD 驅動器會立即退回到啟動管理器。
然後我通過 Boot Maintenance Manager > Boot Options > Add boot option 添加了另一個 DVD 驅動器,然後在 Boot Manager 菜單中選擇了它。 .
這給了我一個非常簡短的“按任意鍵從 CD 啟動”。如果我足夠快,它會啟動到 Windows 安裝程序,但只能在 QEMU 視窗中。連接到直通卡的螢幕是黑色的,帶有一個簡單的游標,而不是像 UEFI/Boot Manager 那樣鏡像。
編輯:我正在嘗試通過 NVIDIA GTX1070。Mobo 是華擎 x399 Taichi,CPU 是 Threadripper 1950X。作業系統是安裝了 XFCE 的 Ubuntu Server。
編輯:如果我繼續安裝,QEMU 視窗中仍然有 Windows,並且直通卡上只有一個 TianoCore 閃屏。如果我轉到設備管理器,Windows 會看到該卡,但由於某種原因它被停止了。
編輯:我嘗試使用這些說明來擺脫程式碼 43,但無濟於事。為了嘗試這個,我使用了 virt-install 而不是 qemu-system,這樣做時沒有 TianoCore 閃屏。但是當我進入 Windows 時仍然是程式碼 43。
編輯:使用 dmesg 來檢查記憶體預留錯誤,如此處所述。沒有找到。編輯:同樣從上面的連結,使用 ROM 解析器並確認存在“類型 3 (EFI)”
你已經在正確的軌道上。GPU Passthrough 並不完美,特別是如果它是 NVidia 卡(您沒有提到 NVidia 或 AMD)。在 Qemu 視窗上完成設置。確保 Windows 機器已連接到 Internet,並讓 Windows Update 為您安裝圖形驅動程序。當您回來時,您應該會看到第二台顯示器,如果沒有,請重新啟動。然後我通常會移除 spice/vnc 控制台,只連接 GPU 監視器。讓 GPU Passthrough 正常工作就是反複試驗。
其他要嘗試的事情:
- 在沒有 GPU 直通的情況下安裝 Windows,然後嘗試直通 GPU。
- 通過 NVidia_drivers.exe 安裝驅動程序
- 通過 Windows 更新安裝驅動程序
- BIOS 與 UEFI
- Q35 與 i440fx
注意:程式碼 43 是與 NVidia 相關的已知錯誤,與 NVidia 驅動程序檢查它們是否在 VM 中執行有關。NVidia 銷售專門用於在 VM 環境中執行的卡,並試圖阻止在 VM 中安裝消費級卡的驅動程序。您需要確保在 domain.xml 中使用以下內容
<kvm> <hidden state='on'/> </kvm>
有關範例,請參閱https://passthroughpo.st/apply-error-43-workaround/和其他資源。
這是我的配置的螢幕截圖:
這是我的 domain.xml 的“相關”部分,如果你願意,我可以分享整個內容,但它有一堆不必要的東西。
<os> <type arch='x86_64' machine='pc-i440fx-2.10'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/edk2/ovmf/OVMF_CODE.fd</loader> <nvram>/var/lib/libvirt/qemu/nvram/Windows10_VARS.fd</nvram> <boot dev='hd'/> </os> <features> <acpi/> <apic/> <kvm> <hidden state='on'/> </kvm> <vmport state='off'/> </features> <clock offset='localtime'> <timer name='rtc' tickpolicy='catchup'/> <timer name='pit' tickpolicy='delay'/> <timer name='hpet' present='no'/> </clock>