啟動錯誤? ? ? ?
????????今天啟動某個hyper-v虛擬機時,啟動失敗了,大概的錯誤信息為:嘗試更改“ubuntu_desktop_2204”的狀態時應用程序遇到錯誤。Virtual Pci Express Port (實例 ID 0445948B-C377-4912-AEEB-58A3D45C5694): 無法開機,因為發生了錯誤“找不到元素。”。找不到即插即用設備實例路徑為“PCIP\VEN_10DE&DEV_1C09&SUBSYS_643819DA&REV_A1\4&E5D2217&0&0008”的 PCI Express 設備。
具體錯誤如下圖所示:
原因分析
????????從報錯信息上看,是跟pci相關。突然記得這個虛擬機之前是做過顯卡直通的,后來把顯卡拔了,所以當虛擬機啟動時,就會找不到對應的硬件設備,導致如上圖的啟動失敗。
可通過powershell命令Get--VMAssignableDevice來獲取之前直通的設備信息
Get--VMAssignableDevice -VMName "ubuntu_desktop_2204"
如下圖所示:
在上圖中可以看到,該虛擬機被直通了一個設備。之所以InstanceID和LocationPath變為了空,是因為設備已經被撥掉了。
解決辦法
使用Remove-VMAssignableDevice將直通設備移除即可:
Remove-VMAssignableDevice -VMName "ubuntu_desktop_2204"
備注:上述命令會把所有直通的設備都移除掉。其實更好的方式是通過位置路徑參數再加以限定,只移除某一個直通設備,如:Remove-VMAssignableDevice ?-VMName "ubuntu_desktop_2204" -LocationPath "PCIROOT(0)#PCI(0300)#PCI(0000)",但因為這里實際PCI設備被拔導致LocationPath為空,所以這里才直接省略該參數。
設備移除后,虛擬機就成功啟動了,如下圖所示:
參考
Remove-VMAssignableDevice (Hyper-V) | Microsoft Learn