Premisa
En Windows, el Subsistema de Windows para Linux (yo uso WSL 2, pero esto también se aplica a WSL 1, según tengo entendido) hace que los sistemas de archivos de la instancia invitada de Linux estén disponibles para el host de Windows a través de 9p, específicamente 9p2000.L. ¿Hay alguna manera de hacer algo similar entre un sistema operativo invitado de VirtualBox y un sistema operativo host? Estoy interesado en esto para varios sistemas operativos host, incluidos:
- Mac OS
- ventanas
y múltiples sistemas operativos invitados, incluidos:
- Mac OS
- FreeBSD
- linux
- Más adelante, cuando sea un poco más valiente y esté dispuesto a meterme con ellos:
-
(Mayormente/parcialmente aparte: Sí, sé que en general parece que el proyecto está muerto, pero el sitio web está desactualizado. La mayor parte de la actividad está en el servidor Discord del proyecto en este momento. Lo más emocionante que ha sucedido en la memoria reciente es cuandomelena de abeja logró que macOS arrancara después de reemplazar el kernel XNU que Apple incluye con uno que creó a partir de la fuente, pero eso fue a mediados de 2022).
ravynOS (sitio web,repositorio de GitHub)
(ravynOS está basado en FreeBSD, por lo que la respuesta podría funcionar por ahora. La compatibilidad con macOS en ravynOS es unamuuuuchomuy lejos, por lo que la respuesta de macOS no funcionará para ravynOS todavía).
-
(Siéntase completamente libre de centrarse en los más conocidos y mejor mantenidos; no estoy pidiendo un esfuerzo excesivo aquí).
Algunas posibles vías de investigación que conozco son:
9p, como lo usa WSL2 como se mencionó anteriormente.
virtio
(Nota:
- Mac OSha tenido algunas funciones básicas de virtio desde macOS Mojave 10.14, incluido un kext de 9p respaldado por virtio. Sin embargo, no estoy seguro de si eso último es un servidor, un cliente o ambos).
VirtFS
No virtiofs, ya que su documentación más destacada indica que es para compartir archivos desde un sistema operativo host a un sistema operativo invitado, en lugar de al revés como quiero.
virt-manager, ¿quizás…?
SSHFS
(Las respuestas pueden elegir entre usar una o más de estas como solución que cubren). Además, sé que QEMU/KVM tiene soporte para virito/9p, pero me gustaría saber/ver si el tipo de acuerdo para compartir archivos que uso Lo que estoy buscando es posible con VirtualBox. Estoy familiarizado con él y es más fácil de configurar, al menos en el sentido de que no es necesario modificar archivos de configuración sin formato ni ejecutar comandos CLI.
Justificación de antecedentes
La razón por la que me gustaría saber cómo compartir el contenido del sistema de archivos del sistema operativo invitado de una VM con un sistema operativo host es:
Para:
- Desarrollo de kernel y sistema operativo.
- Quizás se desarrolle una extensión del kernel en el futuro.
Donde entra en juego la sobrecarga de rendimiento:
- Cuando el sistema operativo host accede a archivos en el sistema de archivos del sistema operativo invitado,
- No siempre cuando el sistema operativo invitado necesita acceder a archivos de compilación y otros archivos de proyecto.
No quiero almacenar archivos de compilación/proyecto en algún lugar de la ubicación del sistema de archivos del sistema operativo host, lo que obligaría al sistema operativo invitado a enfrentar la sobrecarga de rendimiento y el costo de tener que realizar un viaje de ida y vuelta a través del mecanismo de intercambio de archivos en uso. Los accesos del sistema operativo invitado a las ubicaciones del sistema de archivos dentro de la imagen de disco de la máquina virtual que lo contiene son los que deberían obtener un rendimiento cercano al nativo/sin procesar, o al menos un rendimiento más cercano al nativo o superior.
Respuesta1
Nunca había oído hablar de 9p pero encontréhttps://wiki.qemu.org/Documentation/9psetupy particularmentehttps://wiki.qemu.org/Documentation/9pinteresante.
También creo que Qemu con Virsh puede adaptarse mejor a sus requisitos de desarrollo y depuración (y quizás sea más rápido). Qemu y/o libvirt son compatibles con la plataforma MacOS y Windows puede funcionar, pero creo que es más restrictivo en cuanto a la elección y el diseño de MS (HyperV es lo suyo y todo)
¿Por qué no un servidor Linux? pero me quedaré respondiendo a tu amplia pregunta. Teniendo en cuenta sus antecedentes, ¿por qué no montar el disco duro virtual cuando sea necesario? libguestfs o mi qemu-nbd favorito podrían permitirle montarlo en los momentos que lo necesite. qemu-ndb funcionó para mí en el pasado con varios tipos de sistemas operativos cliente, incluidos mac, xbox y ntfs (windows)
¿Cómo compartir un directorio con el host sin conexión a red en QEMU?parece responder tal vez parcialmente a sus preguntas, ¿tal vez? Las capacidades de depuración del sistema y del kernel de Qemu también añaden mucho a la caja de herramientas. Virsh como su interfaz puede ser un poco incómodo pero en cierto modo más automatizado.
Respuesta2
VirtualBox tiene una función de Carpetas compartidas que está disponible cuando instala sus Guest Additions en su sistema operativo invitado (Capítulo 4. Adiciones de invitados).
No tengo ninguna experiencia con carpetas compartidas, pero instalé Guest Additions en algunas máquinas virtuales para admitir la integración del puntero del mouse.
Editar: estaba leyendo el enlace de arriba y encontré el Administrador de archivos de control de invitados (4.8. Administrador de archivos de control de invitados) que podría ser más amigable que las Carpetas compartidas.