如何在 ubuntu 18.04 上為 qemu windows 10 guest 設定動態畫面大小?

如何在 ubuntu 18.04 上為 qemu windows 10 guest 設定動態畫面大小?

我的筆記型電腦上有雙啟動設定:Ubuntu 18.04 和 Windows 10。本指南。我正在使用的命令是這樣的:

sudo qemu-system-x86_64 --enable-kvm -cpu host -smp 8 -m 8192 \
-drive format=raw,file=/dev/nvme0n1,index=1 \
-bios /usr/share/ovmf/OVMF.fd \
-display sdl -vga qxl \
-device qemu-xhci,id=xhci \
-netdev user,id=vmnic,smb=/home/generic/Downloads \
-device virtio-net,netdev=vmnic -cdrom ~/Downloads/virtio-win-0.1.171.iso

最後一行只是安裝virtio驅動程式所以我很確定我不需要每次都需要它。
第二行確定分區/dev/nvme0n1p1

指南中提到了 SPICE,即顯然有利於

動態螢幕調整大小、訪客/主機之間的剪貼簿等。

我想讓虛擬螢幕更改其大小並調整分辨率當我調整視窗大小時。我嘗試按照指南進行操作https://www.linux-kvm.org/page/SPICE並意識到這spicec不再是一件事 - 這意味著我無法透過 與客人聯繫spicec -h 127.0.0.1 -p 5900
香料使用手冊同意:

建議的客戶端是remote-viewer(隨virt-viewer一起提供)。
GNOME Boxes 也可以用作 Spice 用戶端。
SPICEC 是一個過時的舊客戶端,而辣只是一個測試應用。

所以我嘗試添加-spice port=5900,addr=127.0.0.1,disable-ticketing到我的qemu命令中並remote-viewerspice://127.0.0.1:5009.這實際上打開了一個香料視窗 - 所以現在我有兩個視窗顯示我的 win10 客戶端。
Spice 視窗在調整大小時反應更佳,但它保持相同的分辨率,僅在必要時添加白色邊框。

問題

如何獲得能夠很好地適應大小調整的訪客系統的無邊界視圖?
如果這不是一個完全不同的問題:我怎麼才能只有一個窗口,而不是同時使用 qemu 和 SPICE 窗口?


更多細節

當我連接時remote-viewer,它的控制台視窗顯示

** (remote-viewer:3066): CRITICAL **: 15:54:52.441: virt_viewer_util_extract_host: assertion 'uri != NULL' failed

輸出qemu顯示

main_channel_link: add main channel client
main_channel_client_handle_pong: net test: latency 0.110000 ms, bitrate 34711864406 bps (33103.813559 Mbps)
inputs_connect: inputs channel client create
red_qxl_set_cursor_peer:

答案1

長話短說
第 3 點和第 12 點可能就足夠了,這取決於其他使用者如何設定其 VM。 --凱亞


奧茲曼迪亞斯42建議嘗試用作virt-manager前端並引導我完成它。

  1. virt-manager在主機ubuntu上安裝
  2. 設定一個群組,以便您無需 sudo 即可使用 virt-manager
    sudo groupadd --system libvirt
    sudo usermod -a -G libvirt $(whoami)
    su - $USER
    
  3. 開始virt-manager並轉到View -> Edit -> Preferences -> Console。啟用Resize guest with window: On
  4. 使用左上角的圖示「建立新虛擬機器」。我在那裡不確定,因為我不想要一台新機器,我只是想啟動我的雙啟動 Windows 分割區。但這就是按鈕。選擇“匯入現有磁碟映像”
  5. 選擇您的作業系統類型和版本,然後輸入您的裝置作為路徑。我已經使用過,/dev/nvme0n1
    我不確定是否/如何可以只允許虛擬機訪問某些分區(我首先嘗試只給它 EFI 分區,但這當然不起作用。也許可以添加所需的每個分區對於Windows 作為單獨的虛擬磁碟。受限空間
  6. 繼續瀏覽窗口,確保選中“安裝前自訂配置”
  7. 在自訂視窗中,我選擇了Firmware: UEFI x86_64: /usr/share/OVMF/OVMF_CODE.fd我的 Linux 上已有的。我想我安裝了它,apt install ovmf但沒有保證。
  8. 您的磁碟被添加為“IDE 磁碟”,這沒關係,但我被告知 virtio 更好,因為它不模擬磁碟。如果您想使用 virtio,則訪客需要對其的支援。 Ozymandias42 也告訴我,在安裝驅動程式時設定實際使用該驅動程式的裝置/控制器非常重要,因為否則它在啟動時將無法以類似 intiramfs 的狀態可用。因此,添加第二個磁碟,使其變小,由一些檔案支持,並將其磁碟總線類型設為 virtio。您可以在來賓中安裝 virtio guest 工具後再次將其刪除。
  9. 左上:Begin Installation同樣,這聽起來很可怕。但它不會擾亂已安裝的視窗。
  10. 我已經在來賓上安裝了 Qemu 來賓工具和 SPICE 來賓工具。我想你兩者都需要。還要安裝virtio 訪客工具 exe並運行它。
  11. 重啟。如果一切正常,您可以刪除臨時磁碟並將網路卡也變更為 virtio。
  12. 在VM機器中轉到View -> Scale Display -> Auto resize VM with window

答案2

您需要為虛擬機器新增virtio串列埠設備,以便與主機上的spice用戶端進行通訊。如果您將 virt-manager 與 libvirtd 一起使用,而不是直接使用 qemu,它很可能會自動為您解決這個問題。

嘗試新增

-device virtio-serial-pci,id=virtio-serial0,bus=pci.3,addr=0x0
-chardev spicevms,id=charchannel1,name=vdagent
-device virtserialport,bus=virtio-serial0.0,nr=2,chardev=charchannel1,id=channel1,name=com.redhat.spice.0

如果這不起作用,我建議使用 virt-manager 作為前端。

相關內容