KVM+顯卡直通(passthrough)配置方法及問題說明

1.硬件條件

首先要確定主板和CPU都支持VT-d技術,即Virtualization Technology for Direct I/O(英特爾虛擬技術)。近年的產(chǎn)品應該都支持此技術纵寝。 在BIOS里將

還要確定要直通的顯卡支持PCI Pass-through。似乎A卡對于直通的支持比N卡好,但N卡性能比A卡好,這個大家都知道骄蝇。目前市面上的顯卡一般都支持直通。我用過的NVIDIA 的M60和GeForce系統(tǒng)960操骡,970九火,1080系列都支持的。注意做顯卡直通需要兩塊顯卡册招,一塊主機用岔激,另一塊虛擬機用,主板有集成顯卡的可以采用將集成顯卡給宿主機是掰,PCI的獨立顯卡給虛擬機用虑鼎。

2.準備工作

在BIOS將VT-d設置成enable(主板BIOS設置項名稱不一樣,類似于虛擬化技術的項目打開即可)冀惭。

3.安裝Ubuntu系統(tǒng)震叙。

宿主機操作系統(tǒng):ubuntu?16.X和18.X都可以掀鹅,18版本較新在有的機器上圖形界面登錄的位置卡的比較厲害散休,16版本比較穩(wěn)定。

安裝完ubuntu系統(tǒng)打開命令行終端乐尊,輸入如下命令戚丸,將系統(tǒng)更新至最新:

sudo apt-get update

sudo apt-get upgrade

如果是原本就已經(jīng)有了ubuntu系統(tǒng),則不需要重新安裝扔嵌,可以通過如下命令限府,確認CPU是否支持硬件虛擬化,有內容輸入即可

egrep -o '(vmx|svm)' /proc/cpuinfo

4.安裝KVM

輸入如下命令安裝KVM及Libvirt:

sudo apt-get install qemu-kvm libvirt-bin bridge-utils ubuntu-vm-builder virt-manager virtinst

啟動libvirt服務:

/etc/init.d/libvirtd start

5.確認內核是否支持iommu

cat /proc/cmdline | grep iommu

如果沒有輸出結果痢缎,添加intel_iommu=on到grub的啟動參數(shù),需要重啟胁勺。

加"名稱=值”的鍵值對到GRUB_CMDLINE_LINUX_DEFAULT變量,添加多個時用空格隔開,

例如GRUB_CMDLINE_LINUX_DEFAULT="...... name=value"

(注意:理論上添加到GRUB_CMDLINE_LINUX變量和GRUB_CMDLINE_LINUX_DEFAULT任意一個都可以)

使用命令:sudo view /etc/default/grub 編輯grub

找到GRUB_CMDLINE_LINUX_DEFAULT或GRUB_CMDLINE_LINUX加入iommu開關,如下:

GRUB_CMDLINE_LINUX="intel_iommu=on"

然后使用grub-mkconfig -o /boot/grub/grub.cfg更新grub.cfg文件

或者独旷,使用sudo update-grub來更新grub文件署穗。

之后需要重啟服務器(即便不做第五步最好也重啟的一下)。

6.使用dmesg | grep IOMMU 或dmesg | grep -e DMAR -e IOMMU檢查VT-d(AMD芯片時是 IOV)是否工作嵌洼。若沒有相應輸出案疲,需要重新檢查之前的步驟。

7.查看pci設備信息

lspci -nn | grep NVIDIA

如果不是NVIDIA的顯卡麻养,可以換自己顯卡的關鍵字查詢褐啡。重查詢結果上注意查看自己獨立顯卡(也就是要直通的顯卡)的設備ID和地址,形如:?[10de 1b80] 和?[10de 10f0]鳖昌, 01.00.0和01.00.1备畦。(Gefore顯卡一般會集成一個聲卡芯片)

查看驅動

lspci -vv -s 01:00.0 | grep driver

>Kernel driver in use: nouveau? ? (ubuntu系統(tǒng)為顯卡綁定的默認驅動)

lspci -vv -s 01:00.1 | grep driver

>Kernel driver in user: snd_hda_intel?(顯卡上附帶的集成聲卡的默認驅動)

禁用顯卡的默認驅動

禁用nouveau低飒, snd_hda_intel,將其添加到/etc/modprobe.d/blacklist.conf文件最后

blacklist nouveau

blacklist snd_hda_intel

8.將顯卡從宿主機解綁定

$ modprobe pci_stub

$ echo "10de 1b80" > /sys/bus/pci/drivers/pci-stub/new_id

$ echo 0000:01:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind

$ echo 0000:01:00.0 > /sys/bus/pci/drivers/pci-stub/bind

$ echo "10de 10f0" > /sys/bus/pci/drivers/pci-stub/new_id

$ echo 0000:01:00.1 > /sys/bus/pci/devices/0000:01:00.1/driver/unbind

$ echo 0000:01:00.1 > /sys/bus/pci/drivers/pci-stub/bind

這步的前后忘記了是否需要重啟懂盐,如果遇到問題逸嘀,自己重啟一下試試吧。

9.查看顯卡設備所在組

find /sys/kernel/iommu_groups/ -type l

在做直通的時候允粤,需要將同組內的所有設備全部直通給虛擬機(也就是一個獨立完整的設備直通給虛擬機崭倘,不能一個設備一部分直通給虛擬機一部分在宿主機),比如剛才上面的顯卡包括顯卡和聲卡类垫,都需要一起直通給虛擬機司光。另外需要注意有的顯卡硬件在查詢所在組的時候,同組內除了顯卡和聲卡以外還會顯示一個設備(比如00:01.0),這個好像是CPU和PIC設備之間的橋設備(本人不從事硬件相關工作悉患,所以具體名稱我也叫不好残家,勿拍),這個設備在稍后做直通的時候可以忽略售躁,不同直通給虛擬機坞淮。

?

10.安裝OVMF

apt-get install ovmf

11.創(chuàng)建Windows虛擬機,通過在ubuntu圖形界面上找到virt-manager工具陪捷,創(chuàng)建Windows10虛擬機回窘,這個和其他創(chuàng)建虛擬機軟件差不多(比如,Vmware市袖,Virtualbox等)啡直,如果不了解的,可以自己百度查詢苍碟。

注意創(chuàng)建虛擬機時選擇自己配置酒觅,在最初的設定頁面上選擇引導方式為UFFI(這個功能也就是剛才安裝的OVMF支持的)一直到把Windows系統(tǒng)安裝完成。

安裝完以后微峰,將Windows更新至最新舷丹。然后關閉虛擬機。

在KVM管理界面(virt-manager)上蜓肆,通過添加設備颜凯,將顯卡(以及集成的聲卡)PCI設備一并分配給虛擬機。

然后啟動虛擬機症杏,聯(lián)網(wǎng)下載對應的顯卡驅動装获,安裝驅動,安裝完驅動厉颤,在設備管理中發(fā)現(xiàn)顯卡驅動出現(xiàn)43#錯誤穴豫,停止工作。

下載TightVNC,在虛擬機上安裝并運行VNC Server(默認端口5900)精肃,允許開機自動運行秤涩。

關閉虛擬機。

12.更改Windows10虛擬機設置司抱。

虛擬機配置文件在/etc/libvirt/qemu/目錄下筐眷,打開編輯,按照紅色部分修改

...

...

<loader readonly='yes' type='pflash'>/usr/share/OVMF/rom/OVMF_CODE.fd</loader>

<nvram template='/usr/share/OVMF/OVMF_VARS-pure.efi.fd'>/var/lib/libvirt/qemu/nvram/win10-2_VARS.fd</nvram>

loader 和nvram的template值是使用的OVMF提供的习柠,nvram標簽內的值是取決于自己創(chuàng)建的虛擬機的名字匀谣。

注:上面這部分是為了解決Windows中安裝完顯卡驅動顯示驅動異常43#錯誤的問題,也就是Nvidia的驅動中對Geforce的顯卡做了檢查资溃,消費級顯卡不允許在虛擬機中運行武翎,只允許專業(yè)卡比如M60進行虛擬化。所以我們將Geforce顯卡做了直通的時候溶锭,驅動就會自己檢查報錯停止工作宝恶。我們在hyperv中提供虛假vender_id,隱藏KVM以達到欺騙的目的,但只做這兩點還不行趴捅,所以才需要安裝OVMF在rom引導上做手腳垫毙,使用OVMF提供的ROM引導系統(tǒng)。這樣就躲過了驅動的檢查拱绑。不過這樣做之后综芥,在宿主機的Virt-Manager中看不見虛擬機的Windows界面了,顯示黑屏欺栗,我們需要通過VNC連接虛擬機進行操作和使用毫痕。

修改完配置文件征峦,保存退出迟几。

13.啟動Windows虛擬機,看見OVMF 的UFFI引導界面栏笆,過一會兒在另一臺機器上通過VNC客戶端連接虛擬機(服務端)的Ip类腮,沒有意外,就可以連接上了蛉加,查看顯卡設備的驅動就應該正常了蚜枢。

歡迎大家交流:

都市凡塵

平行云科技(北京)有限公司

QQ:18100053

Email:dwj@pingxingyun.com

公司主頁:http://www.pingxingyun.com

訓課在線:http://www.vrapponline.com

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市针饥,隨后出現(xiàn)的幾起案子厂抽,更是在濱河造成了極大的恐慌,老刑警劉巖丁眼,帶你破解...
    沈念sama閱讀 212,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筷凤,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機藐守,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評論 3 385
  • 文/潘曉璐 我一進店門挪丢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卢厂,你說我怎么就攤上這事乾蓬。” “怎么了慎恒?”我有些...
    開封第一講書人閱讀 158,369評論 0 348
  • 文/不壞的土叔 我叫張陵任内,是天一觀的道長。 經(jīng)常有香客問我融柬,道長族奢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,799評論 1 285
  • 正文 為了忘掉前任丹鸿,我火速辦了婚禮越走,結果婚禮上,老公的妹妹穿的比我還像新娘靠欢。我一直安慰自己廊敌,他們只是感情好,可當我...
    茶點故事閱讀 65,910評論 6 386
  • 文/花漫 我一把揭開白布门怪。 她就那樣靜靜地躺著骡澈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掷空。 梳的紋絲不亂的頭發(fā)上肋殴,一...
    開封第一講書人閱讀 50,096評論 1 291
  • 那天,我揣著相機與錄音,去河邊找鬼跨释。 笑死蹭劈,一個胖子當著我的面吹牛,可吹牛的內容都是我干的烙懦。 我是一名探鬼主播,決...
    沈念sama閱讀 39,159評論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼赤炒,長吁一口氣:“原來是場噩夢啊……” “哼氯析!你這毒婦竟也來了?” 一聲冷哼從身側響起莺褒,我...
    開封第一講書人閱讀 37,917評論 0 268
  • 序言:老撾萬榮一對情侶失蹤掩缓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后遵岩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體你辣,經(jīng)...
    沈念sama閱讀 44,360評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,673評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绢记。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扁达。...
    茶點故事閱讀 38,814評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蠢熄,靈堂內的尸體忽然破棺而出跪解,到底是詐尸還是另有隱情,我是刑警寧澤签孔,帶...
    沈念sama閱讀 34,509評論 4 334
  • 正文 年R本政府宣布叉讥,位于F島的核電站,受9級特大地震影響饥追,放射性物質發(fā)生泄漏图仓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,156評論 3 317
  • 文/蒙蒙 一但绕、第九天 我趴在偏房一處隱蔽的房頂上張望救崔。 院中可真熱鬧,春花似錦捏顺、人聲如沸六孵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劫窒。三九已至,卻和暖如春拆座,著一層夾襖步出監(jiān)牢的瞬間主巍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評論 1 267
  • 我被黑心中介騙來泰國打工挪凑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留孕索,地道東北人。 一個月前我還...
    沈念sama閱讀 46,641評論 2 362
  • 正文 我出身青樓岖赋,卻偏偏與公主長得像檬果,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子唐断,可洞房花燭夜當晚...
    茶點故事閱讀 43,728評論 2 351

推薦閱讀更多精彩內容