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