1. 程式人生 > >KVM虛擬機器顯示卡直通(Ubuntu 14.04)

KVM虛擬機器顯示卡直通(Ubuntu 14.04)

對於顯示卡直通,此前我走了很多彎路,在我的博文《我的KVM顯示卡直通實踐》中有過相關記錄,在此就不贅述了,只描述一下配置成功的方法。

配置好顯示卡直通的方法:

1.硬體條件

首先要確定主機板和CPU都支援VT-d技術,即Virtualization Technology for Direct I/O(英特爾虛擬技術)。近年的產品應該都支援此技術。
還要確定要直通的顯示卡支援PCI Pass-through。似乎A卡對於直通的支援比N卡好,不過我這臺電腦中的NVIDIA Quadro M4000對此是支援的。之前我以為顯示卡直通需要兩塊獨立顯示卡,一塊主機用,另一塊虛擬機器用。現在看來是VMware ESXi的顯示卡直通需要兩塊顯示卡,我用KVM配置的則不需要,因為我的主機一直用的是Intel的整合顯示卡。

2.準備工作

在BIOS將VT-d設定成enable,將顯示卡設定成iGPU(即直接在BIOS中把獨立顯示卡禁用)。
安裝Ubuntu系統。
此時如果發現滑鼠的顯示不穩定,螢幕閃爍,就開啟系統設定中的顯示設定。顯示設定裡面會看到兩塊螢幕(可能是因為我把獨立顯示卡與整合顯示卡都用線連線到了顯示器)。把使用獨立顯示卡的那塊顯示屏關閉。
使用apt-get update、apt-get upgrade等更新系統。
安裝Bumblebee(我直接安裝NVIDIA顯示卡驅動時無法調成整合顯示卡顯示),參考Bumblebee的wiki

sudo add-apt-repository
ppa:bumblebee/stable sudo apt-get update sudo apt-get install bumblebee bumblebee-nvidia primus linux-headers-generic

再安裝NVIDIA驅動。(非常重要)
NVIDIAXServer Settings中的PRIME profiles應該顯示使用的是整合顯示卡。
配置grub檔案。
sudo gedit /etc/default/grub
在檔案中的GRUB_CMDLINE_LINUX_DEFAULT引數內新增”intel_iommu=on”。
使用sudo update-grub更新grub。
重啟電腦。
使用dmesg | grep IOMMU檢查VT-d是否工作。若沒有相應輸出,需要重新檢查之前的步驟。

3.VIFO配置

使用lspci -nn | grep VGA找到待分配的顯示卡裝置編號。
0000:04:00.0VGA compatible controller [0300]: NVIDIA Corporation GM204GL [Quadro M4000] [10de:13f1] (rev a1)
0000:04:00.1Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)
接著在終端輸入:

    sudo modprobe vfio
    sudo modprobe vfio-pci
    sudo su
    cd /sys/bus/pci/devices/0000:04:00.0/
    echo 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbind
    echo 10de 13f1 > /sys/bus/pci/drivers/vfio-pci/new_id
    cd /sys/bus/pci/devices/0000:04:00.1/
    echo 0000:04:00.1 > /sys/bus/pci/devices/0000:04:00.1/driver/unbind
    echo 10de 0fbb > /sys/bus/pci/drivers/vfio-pci/new_id

(注:要確定這兩個裝置在同一個iommu group,而且同一個group下沒有別的硬體。一般是不會有的。可以cd進資料夾然後用readlink iommu_group和ll iommu_group/devices來確定)

4.虛擬機器顯示卡分配

安裝KVM:

    sudo apt-get install qemu-kvm qemu virt-manager virt-viewer libvirt-bin python-libvirt bridge-utils
用KVM新建一`這裡寫程式碼片`個新的虛擬機器,安裝好系統。
將虛擬機器關閉,開啟KVM虛擬機器的資訊,新增新的裝置。將PCI編號為0000:04:00.0和 0000:04:00.1的裝置新增進去,即完成了顯示卡直通。

5.仍然存在的問題

顯示卡直通這樣就可以算成功了。
目前存在的問題是:我在虛擬機器裡面把顯示卡的NVIDIA驅動安裝好之後,重啟虛擬機器,就會卡在輸入ubuntu賬戶密碼的介面。這確實是一個熟悉的場景,是因為連線的虛擬整合顯示卡被禁用了,得使用獨立顯示卡。但是虛擬機器又沒有BIOS,此處的配置還有待於研究(TBC)。

/本文第一次編輯於2017-6-14