前提
在 Windows 上,Windows Subsystem for Linux(我使用 WSL 2,但這也適用於 WSL 1,據我所知)使來賓 Linux 執行個體的檔案系統可透過 9p(特別是 9p2000.L)供 Windows 主機使用。有沒有辦法在 VirtualBox 來賓作業系統和主機作業系統之間執行類似的操作?我對多個主機作業系統感興趣,包括:
- 蘋果系統
- 視窗
和多個來賓作業系統,包括:
- 蘋果系統
- 自由BSD
- Linux
- 後來,當我變得更勇敢並準備好惹他們時:
-
(大部分/部分是旁白: 是的,我知道這個項目看起來基本上已經死了,但網站已經過時了。目前大多數活動都在該專案的 Discord 伺服器上進行。最近記憶中發生的最令人興奮的事情是比塞爾馬內 在用他從原始碼構建的核心替換蘋果附帶的 XNU 核心後,他成功啟動了 macOS,但那是 2022 年中期。
拉文操作系統(網站,GitHub 儲存庫)
(ravynOS 基於 FreeBSD,因此目前的答案可能適用於它。ravynOS 中的 macOS 相容性是龍太遠了,所以 macOS 的答案還不適用於 ravynOS。
-
(您可以完全自由地關注其中更知名和維護良好的內容;我在這裡不要求過多的努力。)
我知道的一些潛在的調查途徑是:
9p,如前面提到的 WSL2 所使用的。
虛擬機
(筆記:
- 蘋果系統自 macOS Mojave 10.14 以來已有一些基本的 virtio 功能,包括 virtio 支援的 9p kext。不過,我不確定最後一個是伺服器、客戶端還是兩者。
虛擬檔案系統
不是 維蒂奧夫斯,因為其最著名的文檔指出,它用於從主機作業系統到來賓作業系統共享文件,而不是像我想要的那樣相反。
虛擬經理,也許…?
SSHFS
(答案可能會選擇使用其中一個或多個作為它們所涵蓋的解決方案。)此外,我知道 QEMU/KVM 有 virito/9p 支持,但我想知道/看看我是否喜歡這種文件共享安排我正在尋找VirtualBox 的可能性。我對它很熟悉,而且設定起來也更容易,至少從某種意義上說,您不必修改原始設定檔或執行 CLI 命令。
背景原理
我想知道如何與主機作業系統共享虛擬機器來賓作業系統的檔案系統內容的原因是:
為了:
- 內核和作業系統開發
- 也許將來會進行內核擴展開發
性能開銷發揮作用的地方:
- 當主機作業系統存取來賓作業系統檔案系統中的檔案時,
- 並非每次來賓作業系統需要存取建置檔案和其他專案檔案時。
我不想將建置/專案檔案儲存在主機作業系統檔案系統位置的某個位置,從而迫使來賓作業系統遇到效能開銷和必須往返使用的檔案共用機制的成本。來賓作業系統對其包含的 VM 磁碟映像內的檔案系統位置的存取應該會獲得接近本機/原始效能,或至少接近本機或更高的效能。
答案1
我自己從未聽過 9p,但我發現https://wiki.qemu.org/Documentation/9psetup特別是https://wiki.qemu.org/Documentation/9p有趣的。
我還認為帶有 Virsh 的 Qemu 可能更適合您的開發和調試要求(而且可能更快)。 MacOS 平台支援 Qemu 和/或 libvirt,Windows 也可以工作,但我覺得 MS 的選擇和設計限制更多(HyperV 是他們的事情)
為什麼不使用 Linux 主機呢?但我會繼續回答你的廣泛問題。考慮到您的背景原理,為什麼不在需要時安裝虛擬硬碟呢? libguestfs 或我最喜歡的 qemu-nbd 可能允許您在需要時安裝它。 qemu-ndb 過去曾為我工作過多種客戶端作業系統,包括 mac、xbox 和 ntfs (windows)
QEMU中如何在沒有網路的情況下與主機共用目錄?似乎部分回答了你的問題? Qemu 的系統和核心偵錯能力也為工具箱增添了許多功能。 Virsh 作為它的前端可能有點笨拙,但在某種程度上更加自動化。
答案2
VirtualBox 具有共用資料夾功能,當您在來賓作業系統中安裝其來賓新增時,即可使用此功能(第 4 章 客座補充)。
我對共用資料夾沒有任何經驗,但我已在某些虛擬機器中安裝了來賓添加件以支援滑鼠指標整合。
編輯:我只是仔細閱讀上面的鏈接,發現了來賓控製文件管理器(4.8.訪客控製文件管理器)這可能比共享資料夾更友好。