GNU/Linux >> Linux Esercitazione >  >> Linux

Windows:cartella condivisa tra Qemu Windows Guest e Linux Host?

In passato ho usato Virtual Box che ha un ottimo supporto per condividere una cartella sull'host con un guest Windows. Sto cercando funzionalità simili per QEMU.

La documentazione suggerisce di esporre un server Samba in esecuzione da qualche parte nella rete, o di usare -net user,smb=/path/to/folder per avviare un server samba.

Non ho avuto fortuna con -net user,smb opzione di QEMU. Tutto ciò che fa è avviare smbd (che è in conflitto con un altro servizio in esecuzione localmente a causa di un conflitto di porte). Basti dire che questo è inutilizzabile, soprattutto pensando a più ospiti. (Per Linux, -virtfs (Piano 9) può essere utilizzato per una facile condivisione delle cartelle.)

Altri problemi con Samba sono che non si limita alla condivisione delle cartelle, ma anche alla condivisione della stampante, alla mappatura degli utenti e quant'altro. Tutto ciò di cui ho bisogno è condividere una (o più?) cartelle con il guest Windows.

Esiste un metodo alternativo di condivisione delle cartelle per QEMU che funzioni con un guest Windows?

Oppure c'è un modo per configurare Samba per limitarsi a un insieme molto limitato di funzionalità e integrarlo in QEMU? Dovrebbe:

  • Non tutti nella rete dovrebbero essere in grado di accedere alla cartella.
  • Utenti locali inclusi (se possibile).
  • Non fornire altre funzionalità (condivisione della stampante).
  • Caso d'uso:esporre una directory git a Windows, compilarla in Windows e utilizzare Linux per l'analisi.
  • Avere una velocità accettabile, Windows usa virtio-scsi e virtio-net.
  • Essere in grado di condividere una cartella da un host Linux con un guest Windows 7.

Risposta accettata:

Il servizio Samba integrato di QEMU

L'utente -net user,smb non funzionante l'opzione è stata causata da un'incompatibilità con le versioni più recenti di Samba (>=4). Questo problema è stato risolto in QEMU v2.2.0 e versioni successive con queste modifiche:

  • b87b8a8 slirp/smb:sposta la directory ncalrpc in tmp (dalla v2.1.0)
  • 44d8d2b net/slirp:specifica logbase per smbd (dalla v2.2.0)
  • 7912d04 slirp/smbd:modifica/imposta diversi parametri in smbd.conf generato (dalla v2.2.0 disabilita anche la stampante)

(Debian ha eseguito il backport delle ultime due patch su 2.1+dfsg-6 che è presente in Jessie.)

Utilizzo

Puoi esportare una cartella come \10.0.2.4qemu quando si utilizza la rete utente:

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

Quando QEMU viene avviato correttamente con queste opzioni, un nuovo /tmp/qemu-smb.*-*/ verrà creata una directory contenente un smb.conf . Se sei abbastanza veloce, allora questo file può essere modificato per rendere i percorsi di sola lettura o esportare più cartelle.

Modalità di funzionamento

Il demone samba viene eseguito ogni volta che si accede alle porte 139 o 445 su una rete "utente". La comunicazione avviene tramite input/output/errore standard del processo smbd. Questo è il motivo per cui i demoni più recenti non sono riusciti, scriverebbero il messaggio di errore nella pipe anziché nei messaggi di protocollo.

A causa di questo metodo di funzionamento, il demone non sarà in ascolto sulle porte host e quindi sarà accessibile solo al guest. Quindi altri client nella rete e persino utenti locali non possono accedere alle cartelle utilizzando questo demone.

Correlati:Windows 7 – Errore di configurazione degli aggiornamenti di Windows Ripristino delle modifiche Blocco/blocco?

Poiché la condivisione della stampante QEMU v2.2.0 è completamente disabilitata tramite la configurazione samba, un'altra preoccupazione qui è scomparsa.

La velocità dipende dalla scheda di rete, quindi si consiglia di utilizzare virtio netkvm driver in Windows.

Nota anche che il demone viene eseguito dal suo percorso assoluto (in genere /usr/sbin/smbd ) come specificato in fase di compilazione (usando il --smbd opzione). Ogni volta che devi provare un nuovo binario o interporre smbd , dovrai modificare il file in quel percorso.

Altri avvertimenti

Eseguibili (*.exe ) deve essere eseguibile sull'host (chmod +x FILE ) affinché l'ospite disponga delle autorizzazioni di esecuzione. Per consentire l'esecuzione di qualsiasi file, aggiungi acl allow execute always = True opzione per una condivisione.

Esempio sola lettura Configurazione smb.conf che consente l'esecuzione di qualsiasi file (basato su 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:condividi file tra host Linux e guest Windows?

  2. Cartella condivisa host di Windows in Ubuntu 20.04?

  3. Come accedere alla cartella condivisa di Windows da Linux?

  4. script per monitorare i nuovi file in una cartella condivisa (host Windows, guest Linux)

  5. differenza copia la cartella dei contenuti tra /. e /* in Linux

Montaggio e mappatura delle condivisioni tra Windows e Linux con Samba

Condividi facilmente i file tra Linux, Windows e Mac utilizzando NitroShare

Come condividere file di giochi Steam tra Linux e Windows

Cartella condivisa in Virtualbox (ubuntu e Windows 7)?

Sfruttare un host Linux Windows 11 come amministratore IT

Condivisione di file tra Linux Mint e Windows 10