Dans le passé, j'ai utilisé Virtual Box qui a un très bon support pour partager un dossier sur l'hôte avec un invité Windows. Je recherche des fonctionnalités similaires pour QEMU.
La documentation suggère d'exposer un serveur Samba fonctionnant quelque part sur le réseau, ou d'utiliser le -net user,smb=/path/to/folder
pour démarrer un serveur samba.
Je n'ai pas eu de chance avec l' -net user,smb
option de QEMU. Il ne fait que démarrer smbd
(ce qui entre en conflit avec un autre service s'exécutant localement en raison d'un conflit de port). Il suffit de dire que cela est inutilisable, surtout avec plusieurs invités à l'esprit. (Pour Linux, -virtfs
(Plan 9) peut être utilisé pour un partage de dossier facile.)
D'autres problèmes avec Samba est qu'il ne se limite pas au partage de dossiers, il fait également le partage d'imprimantes, le mappage d'utilisateurs et tout ce qui est différent. Tout ce dont j'ai besoin est de partager un (ou plusieurs?) Dossiers avec l'invité Windows.
Existe-t-il une autre méthode de partage de dossiers pour QEMU qui fonctionne avec un invité Windows?
Ou existe-t-il un moyen de configurer Samba pour se limiter à un ensemble très limité de fonctionnalités et l'intégrer dans QEMU? Cela devrait:
- Tout le monde sur le réseau ne devrait pas pouvoir accéder au dossier.
- utilisateurs locaux inclus (si possible).
- Ne fournit pas 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 d'un hôte Linux avec un invité Windows 7.
la source
-virtfs
fonctionne très bien (voir aussi cette question), mais je ne connais pas de pilote 9p pour Windows.Réponses:
Service Samba intégré de QEMU
L'
-net user,smb
option qui ne fonctionnait pas était due à une incompatibilité avec les nouvelles versions de Samba (> = 4). Ceci est corrigé dans QEMU v2.2.0 et plus récent avec ces modifications:(Debian a rétroporté les deux derniers correctifs vers 2.1 + dfsg-6 qui est présent dans Jessie.)
Usage
Vous pouvez exporter un dossier comme
\\10.0.2.4\qemu
lors de l'utilisation du réseau utilisateur:Lorsque QEMU est démarré avec succès avec ces options, un nouveau
/tmp/qemu-smb.*-*/
répertoire sera créé contenant unsmb.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 écrirait son message d'erreur dans le canal 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.
Étant donné que le partage d'imprimante QEMU v2.2.0 est complètement désactivé via la configuration de samba, une autre inquiétude a disparu ici.
La vitesse dépend de la carte réseau, il est donc recommandé d'utiliser le pilote virtio
netkvm
sous Windows.Notez également que le démon est exécuté par son chemin absolu (généralement
/usr/sbin/smbd
) comme spécifié lors de la compilation (en utilisant l'--smbd
option). Chaque fois que vous devez essayer un nouveau binaire ou interposersmbd
, vous devrez modifier le fichier à ce chemin.Autres mises en garde
Les exécutables (
*.exe
) doivent être exécutables sur l'hôte (chmod +x FILE
) pour que l'invité dispose des autorisations d'exécution. Pour permettre l'exécution de n'importe quel fichier, ajoutez l'acl allow execute always = True
option à un partage.Exemple de configuration smb.conf en lecture seule qui permet l'exécution de n'importe quel fichier (basé sur QEMU v2.2.0):
la source
\\10.0.2.4\qemu
. Dernièrement, j'ai sauté cette étape et ouvert ledit chemin directement à partir de la boîte de dialogue Exécuter.En 2018, un moyen simple de partager un dossier entre un hôte Linux et une machine virtuelle Windows est d' activer RDP dans Windows
guest
et de se connecter àvm
avec le client Remmina Remote Desktop et d'activer un dossier partagé:Cela crée un dossier sous Ce PC ( dossier partagé sur Linux
hostname
) et un\\tsclient\shared-folder-name
partage réseau à l'intérieur duguest
. Vous pouvez également mapper un lecteur réseau:Cette solution ne nécessite pas
samba
d'être en cours d'exécution.Testé sous
libvirt
/virt-manager
mais devrait fonctionner avec n'importe quelle virtualisation.la source
xfreerdp /drive:shared-folder-name,/home/user/shared
option devrait également fonctionner. Références de code source: configuration Remmina , le code de la bibliothèque freerdp .