[英]Can I use a virtual machine instead of a physical machine for MacOS device driver development?
我想修改一個MacOS X USB XHCI控制器驅動程序。 據Apple稱,他們強烈建議使用兩台機器進行調試和測試。 不幸的是,我的開發機器有目標硬件,我無法訪問其他合適的機器。
在考慮之后,是否可以為此目的創建和運行虛擬機? 具體來說,我可以讓OS X來賓直接對我的開發主機進行IO訪問嗎?
這里有幾個問題,所以讓我們解開各個部分:
1.虛擬機中的macOS kext開發/測試/調試
這通常很有效。 如果將虛擬串行端口連接到VM,則可以獲取kprintf
日志記錄輸出,並且根據模擬的以太網設備,您可以附加lldb內核調試器會話。 我知道這適用於VMWare Fusion和Parallels Desktop。 我已經多年沒有使用VirtualBox,但最后我嘗試過必須使用virtio網絡設備(和驅動程序),因為它模擬默認的intel以太網適配器似乎與OSX的驅動程序的內核調試支持不兼容。 他們可能已經修好了。
如果您將主機啟動到Linux,您還可以在Qemu / KVM虛擬機中運行macOS; 內核調試同樣適用於那里。 (您也可以在macOS上的Qemu中運行它,但這只支持仿真模式,與硬件輔助虛擬化相比,這種模式非常慢。)
2.虛擬機中的設備驅動程序開發/測試/調試
您要么為VM環境模擬的設備編寫驅動程序 - 這種情況相當明顯,當然您可以這樣做。 許多VM環境都可以模擬XHCI主機控制器。
您要問的是訪問物理主機硬件,這通常被稱為傳遞 。 這是否可行在很大程度上取決於虛擬化環境和設備類型:
綜上所述:
如果你現在想要這樣做,檢查你的Mac有一個IOMMU,如果有,看起來你有兩個選擇:在它上啟動Linux並使用Qemu / KVM,或使用VMWare ESXi; 在這兩種情況下,創建一些macOS虛擬機(可能是一個用於測試/調試,另一個用於開發/構建你的kexts)並使用vfio將你想要開發驅動程序的設備傳遞給測試VM。
這是否比使用兩台Mac更方便是值得商榷的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.