GNU/Linux >> Tutoriales Linux >  >> Linux

Windows:¿carpeta compartida entre Qemu Windows Guest y Linux Host?

En el pasado, usé Virtual Box, que tiene muy buen soporte para compartir una carpeta en el host con un invitado de Windows. Estoy buscando una funcionalidad similar para QEMU.

La documentación sugiere exponer un servidor Samba ejecutándose en algún lugar de la red, o usar -net user,smb=/path/to/folder para iniciar un servidor samba.

No tuve suerte con el usuario -net user,smb opción de QEMU. Todo lo que hace es iniciar smbd (que entra en conflicto con otro servicio que se ejecuta localmente debido a un conflicto de puerto). Basta con decir que esto es inutilizable, especialmente con múltiples invitados en mente. (Para Linux, -virtfs (Plan 9) se puede usar para compartir carpetas fácilmente).

Otros problemas con Samba es que no se limita a compartir carpetas, también comparte impresoras, mapeo de usuarios y otras cosas. Todo lo que necesito es compartir una (¿o más?) carpetas con el invitado de Windows.

¿Existe un método alternativo para compartir carpetas para QEMU que funcione con un invitado de Windows?

¿O hay alguna forma de configurar Samba para restringirse a un conjunto muy limitado de funciones e integrarlo en QEMU? Debería:

  • No todos los miembros de la red deberían poder acceder a la carpeta.
  • usuarios locales incluidos (si es factible).
  • No proporcionar otras funciones (compartir impresoras).
  • Caso de uso:exponer un directorio git a Windows, compilarlo en Windows y usar Linux para el análisis.
  • Tener una velocidad aceptable, Windows usa virtio-scsi y virtio-net.
  • Poder compartir una carpeta desde un host Linux con un invitado de Windows 7.

Respuesta aceptada:

Servicio Samba incorporado de QEMU

El usuario -net user,smb La opción fue causada por una incompatibilidad con las versiones más nuevas de Samba (>=4). Esto se solucionó en QEMU v2.2.0 y posteriores con estos cambios:

  • b87b8a8 slirp/smb:mover el directorio ncalrpc a tmp (desde v2.1.0)
  • 44d8d2b net/slirp:especifique la base de registro para smbd (desde v2.2.0)
  • 7912d04 slirp/smbd:modificar/establecer varios parámetros en el smbd.conf generado (desde v2.2.0, también deshabilita la impresora)

(Debian ha adaptado los dos últimos parches a 2.1+dfsg-6, que está presente en Jessie).

Uso

Puede exportar una carpeta como \10.0.2.4qemu al usar redes de usuario:

qemu-system-x86_64 
    -net user,smb=/absolute/path/to/folder 
    -net nic,model=virtio 
    ...

Cuando QEMU se inicia con éxito con estas opciones, un nuevo /tmp/qemu-smb.*-*/ se creará un directorio que contiene un smb.conf . Si es lo suficientemente rápido, este archivo podría modificarse para que las rutas sean de solo lectura o para exportar más carpetas.

Modo de funcionamiento

El demonio samba se ejecuta cada vez que se accede a los puertos 139 o 445 a través de una red de "usuario". La comunicación ocurre a través de la entrada/salida/error estándar del proceso smbd. Esta es la razón por la cual fallaron los demonios más nuevos, escribirían su mensaje de error en la canalización en lugar de mensajes de protocolo.

Debido a este método de operación, el daemon no escuchará en los puertos del host y, por lo tanto, solo será accesible para el invitado. Por lo tanto, otros clientes en la red e incluso los usuarios locales no pueden obtener acceso a las carpetas utilizando este demonio.

Relacionado:Windows 7:falla al configurar las actualizaciones de Windows. Reversión de cambios. ¿Se bloquea/atasca?

Dado que el uso compartido de impresoras QEMU v2.2.0 está completamente deshabilitado a través de la configuración de samba, otra preocupación se ha ido aquí.

La velocidad depende del adaptador de red, por lo que se recomienda utilizar el virtio netkvm controlador en Windows.

También tenga en cuenta que el daemon se ejecuta por su ruta absoluta (normalmente /usr/sbin/smbd ) como se especifica en tiempo de compilación (usando el --smbd opción). Siempre que necesite probar un nuevo binario o interponer smbd , deberá modificar el archivo en esa ruta.

Otras advertencias

Ejecutables (*.exe ) debe ser ejecutable en el host (chmod +x FILE ) para que el invitado tenga permisos de ejecución. Para permitir la ejecución de cualquier archivo, agregue acl allow execute always = True opción a compartir.

Ejemplo solo lectura Configuración de smb.conf que permite la ejecución de cualquier archivo (basado en QEMU v2.2.0):

...
[qemu]
path=/home/peter/windows
read only=yes
guest ok=true
force user=peter
acl allow execute always = True

Linux
  1. Linux:¿compartir archivos entre el host de Linux y el invitado de Windows?

  2. ¿Carpeta compartida de host de Windows en Ubuntu 20.04?

  3. ¿Cómo acceder a la carpeta compartida de Windows desde Linux?

  4. Uso de Samba para compartir una carpeta de un invitado de Linux con un host de Windows en VirtualBox

  5. carpeta de contenido de copia de diferencia entre /. y /* en linux

Montaje y asignación de recursos compartidos entre Windows y Linux con Samba

Comparta archivos fácilmente entre Linux, Windows y Mac usando NitroShare

Cómo compartir archivos de juegos de Steam entre Linux y Windows

¿Carpeta compartida en Virtualbox (ubuntu y Windows 7)?

Aprovechar un host Linux con Windows 11 como administrador de TI

Compartir archivos entre Linux Mint y Windows 10