1. 程式人生 > >QEMU虛擬機器中如何安裝Virtio驅動

QEMU虛擬機器中如何安裝Virtio驅動

在計算機虛擬化中,Virtio是一種半虛擬化解決方案,即需要對Guest OS進行一定的修改(安裝相應的驅動程式),能夠對虛擬機器的I/O效能進行大幅的提升。在QEMU+KVM的環境中,Virtio的後端驅動由QEMU程式提供,不需要額外的安裝,而前端驅動則位於Guest OS中,需要將相應OS型別的驅動程式安裝到Guest OS中。

本文以QEMU+KVM為VMM,以Win 7為Guest OS,展示如何在Guest OS上安裝Virtio SCSI驅動。

由於在Guest OS在沒有安裝Virtio驅動的時候,無法使用Virtio裝置,同時Guest OS在沒有VIrtio裝置的時候,也可能無法正確安裝Virtio驅動,故需要一定的方法繞過該問題,即先給虛擬機器一個空的Virtio SCSI裝置用於安裝Virtio SCSI驅動程式,等安裝完畢後,再將虛擬機器映象繫結到Virtio SCSI控制器上。如果在虛擬機器沒有安裝Virtio SCSI驅動的情況下,直接將虛擬機器映象繫結到Virtio SCSI裝置上的話,將會導致虛擬機器無法啟動。

 

1. 按照正常的步驟建立虛擬機器,並啟動。

執行下列命令建立一個容量為40GB的磁碟檔案,用作虛擬機器的磁碟

qemu-img create -f qcow2 win7.img 40G

執行下列命令啟動虛擬機器,並將win7系統安裝到win.img所制定的虛擬機器磁碟中。

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -hda win7.img -cdrom cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso

2. 下載virtio驅動

下載地址頁面:https://docs.fedoraproject.org/en-US/quick-docs/creating-windows-virtual-machines-using-virtio-drivers/index.html


如:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

3. 利用下列命令啟動虛擬機器,虛擬機器映象先還是以傳統的hda形式傳進去,並且將下載的virtio-win.iso以cdrom的形式傳進虛擬機器,最後還得給虛擬機器建立一個virtio的裝置那樣windows才能正確安裝virtio驅動(好像,如果沒有virtio裝置,windows是無法正確安裝virtio驅動的,這點很重要)

這裡以virtio-blk-pci裝置為例(virtio是一類I/O裝置的統稱,可以有很多中,如block、net、serial等),並且virtio-blk-pci裝置在傳進虛擬機器的時候,得有個對應的磁碟檔案,這裡就建立一個10GB的空的磁碟檔案。

qemu-img create -f qcow2 fake.img 10G

然後執行下列命令

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -hda win7.img -cdrom virtio-win.iso -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=fake.img,format=qcow2,if=none,id=drive-virtio-disk0,cache=writeback

啟動虛擬機器後發現在CDROM中已經自動載入了virtio-win.iso映象

同時在裝置管理器中找到了帶感嘆號的SCSI控制器

右擊該裝置,選擇更新驅動程式,然後選擇“瀏覽計算機以查詢驅動程式軟體”,在搜尋位置上選擇載入的CDROM(可以發現,在該iso映象中包含了很多種I/O裝置的virtio驅動,並且每種virtio驅動的目錄下都對應有不同的OS型別),這裡不需要自己手動選擇這些,只需要選擇“CD驅動器”即可,讓系統自動搜尋合適的驅動程式。

然後下一步,自動搜尋到了Virtio SCSI controller的驅動程式了,選擇安裝。

至此驅動程式安裝完畢

關閉虛擬機器。

4. 將虛擬機器映象win7.img繫結到Virtio SCSI裝置上,重新啟動虛擬機器,執行如下命令(不需要cdrom和fake.img了):

qemu-system-x86_64 -enable-kvm -smp 2 -m 2048 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x6,drive=drive-virtio-disk0,id=virtio-disk0 -drive file=win7.img,format=qcow2,if=none,id=drive-virtio-disk0,cache=writeback

會發現,虛擬機器啟動快多了,這是因為虛擬機器使用了半虛擬化的Virtio SCSI控制器,大大加快了虛擬機器磁碟讀寫的速度。

 

歡迎關注同名微信公眾號“河馬虛擬化”第一時間獲取最新文章。