Помещение
В Windows подсистема Windows для Linux — я использую WSL 2, но это также применимо к WSL 1, насколько я понимаю — делает файловые системы гостевого экземпляра Linux доступными для хоста Windows через 9p, в частности 9p2000.L. Есть ли способ сделать что-то подобное между гостевой ОС VirtualBox и ОС хоста? Мне это интересно для нескольких ОС хоста, включая:
- macOS
- Окна
и несколько гостевых ОС, включая:
- macOS
- FreeBSD
- Линукс
- Позже, когда я стану немного смелее и буду готов с ними повозиться:
-
(В основном/частично отступление: Да, я знаю, что в основном это выглядит так, как будто проект мертв, но веб-сайт устарел. Большая часть активности сейчас на сервере Discord проекта. Самое захватывающее, что произошло за последнее время, это когдапчелиная грива ему удалось заставить macOS загрузиться после того, как он заменил ядро XNU, поставляемое Apple, на ядро, собранное им из исходного кода, но это было в середине 2022 года.)
ravynOS (Веб-сайт,Репозиторий GitHub)
(ravynOS основана на FreeBSD, поэтому ответ на этот вопрос может подойти для нее на данный момент. Совместимость с macOS в ravynOS — этодолго(Это далеко не так, поэтому ответ для macOS пока не будет работать для ravynOS.)
-
(Вы можете свободно сосредоточиться на наиболее известных и поддерживаемых в хорошем состоянии из них; я не прошу вас прилагать чрезмерные усилия.)
Некоторые потенциальные направления расследования, о которых я знаю, включают:
9p, используемый WSL2, как упоминалось ранее.
виртио
(Примечание:
- macOSимеет некоторые базовые функции virtio начиная с macOS Mojave 10.14, включая поддерживаемый virtio 9p kext. Я не уверен, является ли последний сервером, клиентом или и тем, и другим.)
VirtFS
Нет virtiofs, поскольку в его наиболее известной документации указано, что он предназначен для обмена файлами из хостовой ОС в гостевую ОС, а не наоборот, как мне хотелось бы.
virt-manager, может быть…?
СШФС
(Ответы могут выбирать между использованием одного или нескольких из них в качестве решения, которое они охватывают.) Кроме того, я знаю, что QEMU/KVM поддерживают virito/9p, но я хотел бы узнать/посмотреть, возможен ли тот тип соглашения о совместном доступе к файлам, который я ищу, с VirtualBox. Я с ним знаком, и его проще настроить, по крайней мере в том смысле, что вам не нужно изменять сырые файлы конфигурации или выполнять команды CLI.
Обоснование предпосылки
Причина, по которой мне хотелось бы узнать, как поделиться содержимым файловой системы гостевой ОС виртуальной машины с хостовой ОС, заключается в следующем:
Для:
- Разработка ядра и ОС
- Возможно, в будущем будет разработано расширение ядра.
Где в игру вступают накладные расходы на производительность:
- Когда хостовая ОС обращается к файлам в файловой системе гостевой ОС,
- Не каждый раз гостевой ОС требуется доступ к файлам сборки и другим файлам проекта.
Я не хочу хранить файлы сборки/проекта где-то в файловой системе хостовой ОС, тем самым заставляя гостевую ОС сталкиваться с издержками производительности и затратами на кругооборот через используемый механизм обмена файлами. Доступ гостевой ОС к файловым системам в образе диска виртуальной машины, содержащем ее, должен обеспечить производительность, близкую к нативной/сырой, или, по крайней мере, более высокую или близкую к нативной.
решение1
Я никогда не слышал о 9p, но я нашелhttps://wiki.qemu.org/Documentation/9psetupи особенноhttps://wiki.qemu.org/Documentation/9pинтересно.
Я также думаю, что Qemu с Virsh может больше подойти для ваших требований к разработке и отладке (и, возможно, будет быстрее). Qemu и/или libvirt поддерживаются на платформе MacOS, и Windows может работать, но я считаю, что это более ограничено выбором и дизайном MS (HyperV — их фишка и все такое).
Почему не Linux host? но я продолжу отвечать на ваш широкий вопрос. Учитывая ваше обоснование, почему бы не монтировать виртуальный жесткий диск, когда это необходимо? libguestfs или мой любимый qemu-nbd могут позволить вам монтировать его в то время, когда вам это необходимо. qemu-ndb работал у меня в прошлом с несколькими типами клиентских ОС, включая mac, xbox и ntfs (windows)
Как предоставить общий доступ к каталогу хосту без использования сети в QEMU?кажется, частично отвечает на ваши вопросы? Возможности отладки системы и ядра Qemu также добавляют много в набор инструментов. Virsh в качестве интерфейса может быть немного неуклюжим, но более автоматизированным в некотором смысле.
решение2
VirtualBox имеет функцию общих папок, которая доступна при установке гостевых дополнений в гостевую ОС (Глава 4. Гостевые дополнения).
У меня нет опыта работы с общими папками, но я установил гостевые дополнения на некоторых виртуальных машинах для поддержки интеграции указателя мыши.
Редактировать: Я только что просматривал ссылку выше и нашел Диспетчер файлов гостевого управления (4.8. Диспетчер файлов гостевого управления), которые могут быть более удобными, чем общие папки.