Serviço Samba embutido do QEMU
A opção -net user,smb
não funcional foi causada por uma incompatibilidade com versões mais recentes do Samba (> = 4). Isso é corrigido no QEMU v2.2.0 e mais recente com estas alterações:
- b87b8a8 slirp / smb: Mover o diretório ncalrpc para tmp (desde a v2.1.0 )
- 44d8d2b net / slirp: especifique logbase para smbd (desde a v2.2.0)
- 7912d04 slirp / smbd: modificar / definir vários parâmetros no smbd.conf gerado (desde a v2.2.0, desativa a impressora também)
(o Debian deu backport aos últimos dois patches para o 2.1 + dfsg-6 que está presente no Jessie.)
Uso
Você pode exportar uma pasta como \10.0.2.4\qemu
ao usar rede do usuário:
qemu-system-x86_64 \
-net user,smb=/absolute/path/to/folder \
-net nic,model=virtio \
...
Quando o QEMU é iniciado com êxito com essas opções, um novo diretório /tmp/qemu-smb.*-*/
será criado contendo smb.conf
. Se você for rápido o suficiente, esse arquivo pode ser modificado para tornar os caminhos somente leitura ou exportar mais pastas.
Modo de operação
O daemon do samba é executado sempre que as portas 139 ou 445 são acessadas por uma rede de "usuários". A comunicação acontece via entrada / saída / erro padrão do processo smbd. Esta é a razão pela qual os daemons mais novos falharam, ele escreveria sua mensagem de erro no canal em vez de mensagens de protocolo.
Devido a esse método de operação, o daemon não escutará as portas do host e, portanto, só estará acessível ao convidado. Assim, outros clientes na rede e até mesmo usuários locais não podem obter acesso a pastas usando esse daemon.
Como o compartilhamento de impressoras QEMU v2.2.0 está completamente desativado por meio da configuração do samba, outra preocupação desapareceu.
A velocidade depende do adaptador de rede, por isso é recomendável usar o driver virtio netkvm
no Windows.
Observe também que o daemon é executado por seu caminho absoluto (normalmente /usr/sbin/smbd
) conforme especificado no tempo de compilação (usando a opção --smbd
). Sempre que você precisar testar um novo binário ou interpor smbd
, será necessário modificar o arquivo nesse caminho.
Outras advertências
Executáveis ( *.exe
) devem ser executáveis no host ( chmod +x FILE
) para que o convidado tenha permissões de execução. Para permitir a execução de qualquer arquivo, adicione a opção acl allow execute always = True
a um compartilhamento.
Exemplo de configuração somente leitura smb.conf, que permite a execução de qualquer arquivo (baseado no QEMU v2.2.0):
... [qemu] path=/home/peter/windows read only=yes guest ok=true force user=peter acl allow execute always = True