GNU/Linux >> Tutoriels Linux >  >> Linux

Windows - Dossier partagé entre l'invité Windows Qemu et l'hôte Linux ?

Dans le passé, j'ai utilisé Virtual Box qui prend très bien en charge le partage d'un dossier sur l'hôte avec un invité Windows. Je recherche une fonctionnalité similaire pour QEMU.

La documentation suggère d'exposer un serveur Samba exécuté quelque part sur le réseau, ou d'utiliser l'utilisateur -net user,smb=/path/to/folder pour démarrer un serveur samba.

Je n'ai pas eu de chance avec l'utilisateur -net user,smb option de QEMU. Tout ce qu'il fait est de démarrer smbd (qui entre en conflit avec un autre service exécuté localement en raison d'un conflit de port). Autant dire que c'est inutilisable, surtout avec plusieurs invités à l'esprit. (Pour Linux, -virtfs (Plan 9) peut être utilisé pour partager facilement des dossiers.)

D'autres problèmes avec Samba sont qu'il ne se limite pas au partage de dossiers, il fait également le partage d'imprimantes, le mappage des utilisateurs et ainsi de suite. Tout ce dont j'ai besoin est de partager un (ou plusieurs ?) dossiers avec l'invité Windows.

Existe-t-il une méthode alternative de partage de dossiers pour QEMU qui fonctionne avec un invité Windows ?

Ou existe-t-il un moyen de configurer Samba pour qu'il se limite à un ensemble très limité de fonctionnalités et l'intègre dans QEMU ? Il devrait :

  • Tous les membres du réseau ne doivent pas pouvoir accéder au dossier.
  • utilisateurs locaux inclus (si possible).
  • Ne pas fournir d'autres fonctionnalités (partage d'imprimante).
  • Cas d'utilisation :exposez un répertoire git à Windows, compilez-le dans Windows et utilisez Linux pour l'analyse.
  • Avoir une vitesse acceptable, Windows utilise virtio-scsi et virtio-net.
  • Pouvoir partager un dossier depuis un hôte Linux avec un invité Windows 7

Réponse acceptée :

Service Samba intégré de QEMU

L'utilisateur -net user,smb L'option a été causée par une incompatibilité avec les nouvelles versions de Samba (>=4). Ceci est corrigé dans QEMU v2.2.0 et versions ultérieures avec ces modifications :

  • b87b8a8 slirp/smb :Déplacer le répertoire ncalrpc vers tmp (depuis la v2.1.0)
  • 44d8d2b net/slirp :spécifiez la base de journalisation pour smbd (depuis la v2.2.0)
  • 7912d04 slirp/smbd :modifie/définit plusieurs paramètres dans le fichier smbd.conf généré (depuis la v2.2.0, désactive également l'imprimante)

(Debian a rétroporté les deux derniers correctifs vers 2.1+dfsg-6 qui est présent dans Jessie.)

Utilisation

Vous pouvez exporter un dossier sous \10.0.2.4qemu lors de l'utilisation de la mise en réseau utilisateur :

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

Lorsque QEMU est démarré avec succès avec ces options, un nouveau /tmp/qemu-smb.*-*/ un répertoire sera créé contenant un smb.conf . Si vous êtes assez rapide, ce fichier peut être modifié pour rendre les chemins en lecture seule ou exporter plus de dossiers.

Mode de fonctionnement

Le démon samba est exécuté chaque fois que les ports 139 ou 445 sont accessibles via un réseau "utilisateur". La communication se fait via une entrée/sortie/erreur standard du processus smbd. C'est la raison pour laquelle les nouveaux démons ont échoué, il écrivait son message d'erreur dans le tube au lieu des messages de protocole.

En raison de cette méthode de fonctionnement, le démon n'écoutera pas sur les ports hôtes et ne sera donc accessible qu'à l'invité. Ainsi, les autres clients du réseau et même les utilisateurs locaux ne peuvent pas accéder aux dossiers à l'aide de ce démon.

Connexe :Windows 7 – Échec de la configuration des mises à jour Windows Annulation des modifications Blocage/blocage ?

Étant donné que le partage d'imprimante QEMU v2.2.0 est complètement désactivé via la configuration de samba, un autre souci a donc disparu ici.

La vitesse dépend de la carte réseau, il est donc recommandé d'utiliser le virtio netkvm pilote sous Windows.

Notez également que le démon est exécuté par son chemin absolu (généralement /usr/sbin/smbd ) comme spécifié au moment de la compilation (en utilisant le --smbd option). Chaque fois que vous avez besoin d'essayer un nouveau binaire ou d'interposer smbd , vous devrez modifier le fichier à ce chemin.

Autres mises en garde

Exécutables (*.exe ) doit être exécutable sur l'hôte (chmod +x FILE ) pour que l'invité dispose des autorisations d'exécution. Pour autoriser l'exécution de n'importe quel fichier, ajoutez le acl allow execute always = True option à un partage.

Exemple lecture seule Configuration smb.conf qui permet l'exécution de n'importe quel fichier (basé sur 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 - Partager des fichiers entre l'hôte Linux et l'invité Windows ?

  2. Dossier partagé de l'hôte Windows dans Ubuntu 20.04 ?

  3. Comment accéder au dossier partagé Windows à partir de Linux ?

  4. Utilisation de Samba pour partager un dossier d'un invité Linux avec un hôte Windows dans VirtualBox

  5. script pour surveiller les nouveaux fichiers dans un dossier partagé (hôte Windows, invité Linux)

Montage et mappage des partages entre Windows et Linux avec Samba

Partagez facilement des fichiers entre Linux, Windows et Mac à l'aide de NitroShare

Comment partager des fichiers de jeu Steam entre Linux et Windows

Dossier partagé dans Virtualbox (ubuntu et Windows 7) ?

Tirer parti d'un hôte Linux Windows 11 en tant qu'administrateur informatique

Partage de fichiers entre Linux Mint et Windows 10