Compartilhando arquivos entre Host OS e Guest OS com o Samba
Diferente do
VirtualBox e do
VMWare, o QEMU não compartilha a mesma área de transferência entre o Guest OS e o Host OS. Quem sabe, na próxima versão do QEMU, isto já esteja implementado, mas por enquanto, a solução (que encontrei) é considerar as máquinas como pertencentes a uma mesma rede e compartilhar pastas para a troca de dados entre eles.
Para isto, você vai precisar ter o
Samba instalado. Para verificar se você já tem o Samba instalado (o que é bem provável), digite no terminal:
samba --version
Pra mim, a resposta foi:
Version 4.0.0alpha15-UNKNOWN
Caso necessite, instale o Samba:
sudo apt-get install samba
Após instalado, vamos compartilhar uma pasta. Como o compartilhamento é com toda a rede (escolhi assim para simplificar o processo, não preciso me
preocupar com logins e permissões de cada usuário), resolvi compartilhar a pasta temporária na minha "/home".
Escolhida a pasta a ser compartilhada, vamos criar uma entrada no arquivo de configuração do Samba:
sudo gedit /etc/samba/smb.conf
Logo abaixo do bloco [profiles], coloquei o meu bloco de definições de compartilhamento:
#
# Compartilhamneto para o Windows - Qemu
#
[Temp]
comment = Compartilhamento com Windows
path = /home/weslei/Temp
create mask = 0777
directory mask = 0777
read only = no
guest ok = yes
browseable = yes
Onde:
- Temp (entre []): é o nome do compartilhamento.
- comment: é qualquer comentário que se queira colocar.
- path: é o caminho completo da pasta a ser compartilhada.
- create mask: define as permissões dos arquivos criados na pasta compartilhada (eu decidi dar acesso total — 0777).
- directory mask: define as permissões das pastas criadas na pasta compartilhada (novamente preferi dar acesso total — 0777).
- read only: define se o compartilhamento será somente leitura.
- guest ok: define se o compartilhamento aceitará acesso de visitantes (anônimo).
- browseable: define se o compartilhamento será visto na lista de compartilhamentos disponíveis.
Reiniciei o servidor:
samba restart
O QEMU define, por padrão, o IP 10.0.2.2 como o IP do Host OS (Linux). Ou seja, quando você estiver rodando o Windows (Guest OS), para acessar os
arquivos compartilhados pelo Host, basta digitar (no 'Windows Explorer' ou na janelinha: Executar):
\\10.0.2.2\Temp
Novamente, se você seguiu este passo a passo até aqui sem erros, parabéns! Você já tem o que precisa. Esta executando o seu Windows real e
compartilhando arquivos (via Samba) com o Linux.
Criando um ícone para acessar o Windows
Gosto de usar a interface Shell do Linux, mas prefiro usar um ícone (na área de trabalho ou nos menus) para deixar à mão, as execuções mais corriqueiras.
Resolvi criar um lançador para o Windows. Primeiro criei, na minha pasta "/home", o seguinte Shell Script:
#!/bin/bash
# obtendo a senha do root
PW=$(zenity --entry --title="Root password" --text="Enter root password:" --entry-text="" --hide-text)
# executando o comando como root
echo $PW | sudo -S -k qemu -m 768 -localtime -hda /dev/sda
Salvei o Shell Script com o nome de ".QemuWin.sh". O ponto no início do nome, é para tornar o arquivo oculto, pois só vou executá-lo via lançador, portanto, não tem a necessidade de ficar visível.
E tornei-o executável:
chmod +x .QemuWin.sh
O que faz este Script, linha a linha:
- #!/bin/bash: define que o arquivo é um Shell Script e identifica o interpretador de comandos do Script (bash — Bourne Again Shell) .
- PW=$(zenity ... ): coloca a saída do comando ZENITY na variável PW.
O
Zenity oferece um meio de interação gráfica entre o usuário e os comandos do Script. Usei o Zenity em conjunto com as seguintes opções:
- --entry: opção que define uma janela de diálogo de entrada de texto.
- --title="Root password": opção que define o título da janela de diálogo.
- --text="Enter root password:" opção que define o texto que será exibido na janela de diálogo.
- --entry-text="": opção que define o texto que é exibido no campo de entrada da janela de diálogo.
- --hide-text: opção que oculta o texto no campo de entrada da janela de diálogo.
A linha seguinte, usa o encadeamento de comandos (pipe "|") para enviar o resultado de:
echo $PW, para o comando
sudo -S -
k.
- $PW: faz o display do valor da variável PW e não dos caracteres 'PW'.
- -S: faz com que o sudo obtenha a senha do standard input (do pipe "|") e não do terminal.
- -k: faz com que a senha seja 'esquecida' logo após ser usada.
Criando o Lançador
Cliquei com o botão direito do mouse na Área de Trabalho, selecionei: Criar Lançador...
No campo: Nome, coloquei: qemu Windows. No campo: Comando, coloquei: /home/weslei/.QemuWin.sh
Cliquei no ícone do lançador:
Escolhi um ícone (que baixei da internet) e clique em Ok.
O Lançador foi criado. Veja como ficou (com o QEMU rodando):
Espero que este meu relato tenha sido útil.
"Se o conhecimento pode criar problemas, não será através da ignorância que os resolveremos" - Isaac Asimov