在采用OVMF(UEFI)啟動的虛擬機(jī)副砍,若host linux以UEFI模式啟動并完成直通GPU的初始化宏多,則會造成虛擬機(jī)啟動失敗并宕掉host linux恢恼。
解決辦法:
1.調(diào)整主板BIOS
此項(xiàng)與各主板廠商BIOS設(shè)置項(xiàng)開放程度有關(guān)姻乓。
若有多個GPU設(shè)備砂碉,可以設(shè)置不直通的顯卡為primary video card蕉拢。
2.若所有GPU均需直通給虛擬機(jī)特碳,或只有一個GPU
方法一:嘗試開啟CSM,并disable video rom晕换,這會導(dǎo)致之后POST及HOST主機(jī)啟動黑屏無顯示午乓,并有POST報(bào)警。
方法二:設(shè)置linux cmdline闸准,禁掉內(nèi)核framebuffer益愈。
GRUB_CMDLINE_LINUX_DEFAULT="video=efifb:off nomodeset" ///追加至末尾,uefi啟動方式
GRUB_CMDLINE_LINUX_DEFAULT="video=vesafb:off nomodeset" ///追加至末尾夷家,傳統(tǒng)BIOS啟動方式
在設(shè)置linux cmdline蒸其,并更新grub,重啟之后库快,啟動虛擬機(jī)后屏幕黑屏摸袁,內(nèi)核日志中vfio報(bào)GPU rom not found錯誤。
需要提取GPU vbios rom义屏,并在libvirt xml中指定rom文件
<hostdev mode='subsystem' type='pci' managed='yes'>
<driver name='vfio'/>
<source>
<address domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</source>
<rom bar='on' file='/path/to/rom/file/gpu.rom'/> ///添加GPU rom文件
<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0' multifunction='on'/>
</hostdev>
提取GPU vbios rom文件
linux系統(tǒng)方式
預(yù)置條件:必須開啟CSM兼容模式靠汁,并以legacy方式啟動系統(tǒng),UEFI不可用闽铐〉可下載centos等安裝鏡像,制作U盤啟動兄墅。
提取bios文件的顯卡必須作為主顯示設(shè)備并接顯示器踢星。即提取intel集成顯卡接主板顯示輸出,獨(dú)顯接獨(dú)顯輸出察迟。
若未按以上操作斩狱,則會出現(xiàn)設(shè)備文件夾內(nèi)無rom文件,或者提取時報(bào)IO error扎瓶。
cd /sys/bus/pci/devices/0000:01:00.0/ ///lspci查詢GPU所在位置
echo 1 > rom
cat rom > /usr/share/kvm/vbios.bin
echo 0 > rom
windows系統(tǒng)方式
顯卡rom是存放在注冊表中的所踊,打開注冊表,搜索vbios概荷,可找到多個路徑秕岛,仔細(xì)比對,其中的二進(jìn)制數(shù)據(jù)即rom,下載HxD程序https://mh-nexus.de/en/hxd/继薛,新建文件并將該二進(jìn)制數(shù)據(jù)粘貼保存即可修壕。
參考鏈接:https://forums.laptopvideo2go.com/topic/32103-how-to-grab-a-notebooks-vbios-that-is-not-supported-by-nvflash/
注:techpowerup中的bios文件有其他校驗(yàn)數(shù)據(jù),不可直接使用遏考,可輔助用來對比提取出的rom文件(nvidia已驗(yàn)證)
提取的bios使用hxd(windows)慈鸠,hexdump(linux)打開后,是以55 aa開頭灌具,如下:
00000000 55 aa 80 e9 92 f9 30 30 30 30 30 30 30 30 30 30 |U.....0000000000|
00000010 30 30 c0 30 e9 c9 2f 0e 40 00 f0 0a 30 30 49 42 |00.0../.@...00IB|
00000020 4d 20 56 47 41 20 43 6f 6d 70 61 74 69 62 6c 65 |M VGA Compatible|
00000030 20 42 49 4f 53 2e 20 03 ae 00 be 00 cc 00 8b c0 | BIOS. .........|
00000040 50 43 49 52 86 80 06 04 1c 00 1c 00 03 00 00 03 |PCIR............|