SistemasDistribuidosEConcorrentes LinuxVirtual
SistemasDistribuidosEConcorrentes LinuxVirtual
SistemasDistribuidosEConcorrentes LinuxVirtual
Virtualização de Máquinas
Neste tutorial irei utilizar o VMware e o VirtualBox. O VMware é uma alternativa paga, mas pode ser
baixado a versão Trial válida por 30 dias. Já o VirtualBox é totalmente gratuito.
Os sites são:
VirtualBox > http://www.virtualbox.org
VMware Workstation > http://www.vmware.com/products/workstation/
Existem vários tutoriais sobre a instalação de sistemas operacionais nestes virtualizadores. Não é o
objetivo deste tutorial ensinar isto.
Contudo, lembre-se que é um HD virtual e não danifica tua máquina. Que tudo que estiver errado pode ser
feito novamente e que existem máquinas virtuais já prontas para uso.
No entanto, experimente utilizar estes virtualizadores e crie sua própria máquina virtual.
No tutorial a seguir foi utilizada a distribuição Linux Fedora 14, mas poderia ter sido qualquer outra. Esta
distribuição foi escolhida, pois sai um pouco do padrão das distribuições baseadas no Debian (como o Ubuntu).
Uma coisa que você deve observar para que tua rede virtual funcione é que além da placa de rede tipo
“NAT” que é utilizada no VMware ou no VirtualBox, você deve instalar uma segunda placa de rede tipo “Host-
only” para que as máquinas se comuniquem na mesma faixa de ip. Isso não é uma regra, mas sim um maneira
prática de fazer sem se preocupar com detalhes.
Usuários
Se desejar, poderá utilizar qualquer distribuição. Lembre-se, no entanto, de usar os seguintes padrões para
facilitar o entendimento:
- Usuário comum
Login: user
Nome: user user
Senha: useruser
- Usuário Administrador
Login: root
Nome: root
Senha: rootroot
Diretórios
Crie os diretórios:
c:\VM
c:\VMFedora14
c:\VM\VMFedora14\FedoraA
c:\VM\VMFedora14\FedoraB
Crie a primeira máquina virtual em:
c:\VM\VMFedora14\FedoraA
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 1 / 12
Elaborado por: M Barbosa Rede Linux Virtual Teoria Linux | março/2011
Avisos
Se for usar o Linux em programa de virtualização com o VMware e VirtualBox, nunca instale o
VMwareTools ou o VirtualBox Guest Additions. Se fizer isto poderá ter problemas de compatibilidade entre os
sistemas de virtualização.
Lembre-se o VirtualBox é gratuito e aceita discos (vmdk) criados pelo VMware, não sendo necessário fazer
nenhuma conversão.
Caso queira, você pode converter um arquivo "vmdk" do VMware para o VirtualBox utilizando o Qemu:
qemu-img convert arquivo.vmdk -O vdi arquivonovo.vdi
A sintaxe é a mesma tanto para Linux quanto para Windows.
Dependendo da distribuição Linux você terá comandos diferentes, mas quando em dúvida é só digitar
<comando> --help.
Exemplo:
Fedora > para instalar pacotes utiliza o yum
Ubuntu > para instalar pacotes utiliza o apt-get
Por padrão utilizaremos a seguinte sintaxe:
$ = Usuário comum: user (Nome: user user) senha: useruser
$ = Usuário comum: UsuarioA (Nome: UsuarioA) senha: usuarioa
$ = Usuário comum: UsuarioB (Nome: UsuarioB) senha: usuariob
# = Administrador: root (Nome: root) senha: rootroot
Instalando pacotes
> Entrando como administrador para instalar os pacotes desejados
$ [user@localhost ~]$ su
Senha:
> Instalando o pacote de compilação de fontes
# [root@localhost user]# yum install gcc make kernel-headers kernel-devel
> Instalando o painel de controle de rede no Fedora
# [root@localhost user]# yum install system-config-network
> Instalando o painel de controle de serviços do Fedora
# [root@localhost user]# yum install system-config-services
> Instalando o Telnet e o OpenSSH
# [root@localhost user]# yum install telnet openssh
> Instalando o editor Nano
# [root@localhost user]# yum install nano
Gksudo /Gksu
O gksu ou gksudo é modo prático de um usuário comum ter privilégios de root para abrir aplicativos como
Gedit ou o Nautilus.
No entanto estão sendo revisadas no projeto Fedora e para ter estes privilégios existe uma maneira
alternativa que é o pacote Beesu.
Para instalá-lo, digite:
# [root@localhost user]# yum install beesu nautilus-beesu-manager gedit-beesu-plugin
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 2 / 12
Elaborado por: M Barbosa Rede Linux Virtual Teoria Linux | março/2011
[root@localhost user]# exit
$ [user@localhost ~]$ nautilus-beesu-manager
Na janela que irá se abrir, escolha o que deseja instalar (deve estar como usuário comum).
Feito isso, abra o navegador de arquivos (Nautilus), navegue até o arquivo ou pasta desejada.
Clique com o botão direito do mouse e escolha "scripts - beesu". Depois é só escolher a opção adequada.
Isto deve ser feito para cada usuário que o desejar e também pode ser encontrados no painel “Sistemas -
Preferências" como o nome de "Beesu Scripts Manager".
Servidor Samba
> Instalando os servidor samba para conversar com redes Windows
# [root@localhost user]# yum install samba samba-client samba-common samba-winbind
samba-swat system-config-samba
> Verificando se o servidor está rodando
# [root@localhost user]# service smb status
smbd está parado
[root@localhost user]# service nmb status
nmbd está parado
> Ativando o servidor Samba
# [root@localhost user]# service smb start
Iniciando serviços SMB: [ OK ]
[root@localhost user]# service nmb start
Iniciando serviços NMB: [ OK ]
> Configurando para que os serviços se iniciem na inicialização do Linux
> (também pode ser feito clicando em "Sistema", "Administração" e "Serviços")
# [root@localhost user]# chkconfig smb on
[root@localhost user]# chkconfig nmb on
> Criando uma pasta compartilhada no Linux
# [root@localhost user]# mkdir /transfers
[root@localhost user]# chmod 777 /transfers
[root@localhost user]# mkdir /transfers/todos
[root@localhost user]# chmod 777 /transfers/todos
[root@localhost user]# mkdir /transfers/alguns
[root@localhost user]# chmod 777 /transfers/alguns
Firewall
Por precaução, desative o Firewall do Linux, pois precisaremos mais tarde ter acesso a máquina Linux.
Caso você não possua o painel do Firewall, é só instalar:
# [root@localhost user]# yum install system-config-firewall
Configurar o Windows
Para configurar o Windows:
Você pode utilizar um usuário que já exista com senha ou criar um novo como descrito abaixo.
No "Painel de Controle", clique em "Contas de Usuário";
a) Clique em "Gerenciar outra conta";
b) Clique em "Criar uma nova conta";
c) Escreva "user" e defina como "Usuário padrão";
d) Clique no usuário "Linux" criado;
e) Clique em "Criar uma senha"
f) Digite "useruser" para senha e confirmação de senha;
g) Clique em "Criar senha";
h) Feche o painel.
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]
"DomainCompatibilityMode"=dword:00000001
"DNSNameResolutionRequired"=dword:00000000
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 3 / 12
Elaborado por: M Barbosa Rede Linux Virtual Teoria Linux | março/2011
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"LmCompatibilityLevel"=dword:00000000
-------------------------------------------------------------------------------------
Feita esta alteração É NECESSÁRIO reiniciar o Windows 7. (http://wiki.samba.org/index.php/Windows7)
Desabilite o SELINUX editando o arquivo /etc/selinux/config para:
SELINUX=disabled
Desabilitando esta opção você estará livre de futuros problemas, inclusive liberando o Samba para a rede.
Ou então instale o painel administrativo:
# [root@localhost user]# yum install policycoreutils-gui
Caso não queira desabilitar, no seu diretório home do Linux execute (como root):
# [root@localhost user]# setsebool -P samba_share_fusefs on
[root@localhost user]# setsebool -P virt_use_samba on
[root@localhost user]# setsebool -P samba_enable_home_dirs on
Configurando o Samba
Você pode configurar o Samba no modo texto e no modo gráfico.
Modo Gráfico
a) Clique em "Sistema", "Administração" e "Samba";
b) No configurador do Samba, clique no menu "Preferências" e logo após em "Configurações do
servidor...";
c) Na aba "Básica", em "Grupo de trabalho:" escreva "workgroup" (ou o nome do grupo na rede
Windows) e clique "OK";
d) Clique novamente no menu "Preferências" e logo após em "Usuários do Samba...";
e) Clique em "Adicionar usuário";
f) Em "Nome de usuário Unix:" escolha "user";
g) Em "Nome de usuário Windows:" escreva "user" ou um nome de usuário que exista no Windows;
h) Em "Senha do Samba:" e "Confirme a senha do Samba:" escreva "useruser" ou a senha de um
usuário que exista no Windows;
i) Clique "OK" e "OK";
j) Ainda no configurador do Samba, clique em "+";
k) Na aba "Básica", escolha a pasta criada anteriormente (/home/transfer);
l) Marque "Permitir escrita" e "Visível";
m) Clique na aba "Acesso" marque "Permitir acesso a estes utilizadores:";
n) Marque também "user" e clique "OK";
o) Feche a "Configuração do servidor Samba".
Modo texto
Lembre-se que no modo texto você está mais sujeito a erros de sintaxe visto que existem modificações nas
versões e, por conseguinte nem sempre o que valia antes funciona.
Na linha de comando (terminal):
# [root@localhost user]# nano /etc/samba/smb.conf
Retire o comentário das linhas e altere para ficar como a seguir:
[global]
workgroup = workgroup
server string = Samba Server Version %v
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
keepalive = 20
Level0 oplocks = no
ntlm auth = YES
lanman auth = Yes
client NTLMv2 auth = Yes
log file = /var/log/samba/log.%m
max log size = 50
cups options = raw
security = user
local master = yes
os level = 124
domain master = yes
prefered master = yes
domain logons = yes
wins support = yes
wins proxy = no
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 4 / 12
Elaborado por: M Barbosa Rede Linux Virtual Teoria Linux | março/2011
max wins ttl = 518400
name resolve order = lmhosts wins bcast
time server = yes
encrypt passwords = yes
passdb backend = tdbsam
[netlogon]
comment = Network Logon Service
path = /home/netlogon
guest ok = yes
writable = no
#share modes = no
browseable = no
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
[todos]
comment = Public Stuff
path = /transfers/todos
write list = +staff
read only = No
guest ok = Yes
public = yes
only guest = no
writable = yes
browseable = no
force create mode = 777
force directory mode = 777
[alguns]
path = /transfers/alguns
valid users = Linux, user
read only = No
Rede virtual
Como você já configurou o básico do que será necessário para sua máquina virtual Linux, agora vamos
fazer uma cópia destes arquivos para termos uma máquina virtual idêntica.
Existem outras maneiras de fazer isto, como clonar através do VMware, mas vamos fazer manualmente
para melhor entendimento do que são os arquivos e como trabalhar com eles, pois nem sempre você pode
utilizar a instalação no modo gráfico. Além disso, a opção “clone” do VMware automaticamente coloca para
instalar o VMware Tools e não queremos isso.
Você vai precisar do "Bloco de Notas" (Notepad) ou de um editor de programas. Para tal, recomendo o
"PSPad Freeware Editor". Ele é um editor de programas com diversos recursos e em constante
aprimoramento. Pode ser baixado do site http://www.pspad.com.
Se tiver dúvidas sobre o Fedora, entre no site http://www.fedora.org.br, por exemplo.
Em todos os comandos abaixo, digite o comando e "--help". Assim você conhecerá um pouco mais sobre
eles, inclusive recursos importantes. Experimente digitar "passwd --help".
Copiando os arquivos
Como você criou uma máquina virtual com nome FedoraA no diretório "c:\VM\VMFedora14\FedoraA",
crie um diretório "c:\VM\VMFedora14\FedoraB" (caso ainda não tenha criado) e copie os arquivos que estão
no diretório FedoraA para o Fedora B.
Renomeie todos os arquivos "FedoraA.<extensão>" no diretório FedoraB para "FedoraB.<extensão>"
Com exceção do arquivo "FedoraB.vmdk" e "FedoraB.nvram" os outros arquivos são de configuração e
pode ser editados em "modo texto".
Testando as modificações
Abra o VMware Workstation, clique no menu "File" "Open..." e abra o arquivo
"c:\VM\VMFedora14\FedoraB\FedoraB.vmx".
Clique em "Power on this virtual machine" para executar esta máquina virtual.
O VMware irá identificar que você fez uma cópia ou moveu a máquina virtual e te perguntará o que você
fez, responda "I copied it" e clique "OK".
Verifique se está tudo correto.
Alterando o Hostname
Alterando o nome do Host parcialmente
Como administrador (root), altere o nome da máquina somente em uma seção
# [root@localhost user]# hostname FedoraB
Feche o terminal e o abra novamente. Veja que o nome foi alterado.
O Servidor SSHD
> Verificando se o servidor SSHD está rodando
$ [UsuarioA@FedoraA ~] service sshd status
Para gerenciar servidores devo ser usuário administrativo.
$ [UsuarioA@FedoraA ~]$ su
# [root@FedoraA UsuarioA]# service sshd start //inicia o servidor
[root@FedoraA UsuarioA]# service sshd restart //reinicia o servidor
[root@FedoraA UsuarioA]# service sshd stop //para o servidor
[root@FedoraA UsuarioA]# service sshd status //verifica se o servidor está rodando
E se desejar fazer com que o servidor inicie automaticamente no boot:
# [root@FedoraA UsuarioA]# chkconfig sshd on //digite chkconfig --help para ajuda
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 8 / 12
Elaborado por: M Barbosa Rede Linux Virtual Teoria Linux | março/2011
No nosso caso desejamos que fique ligado sempre, então usamos a última opção para ambas as máquinas
virtuais.
# [root@FedoraA UsuarioA]# chkconfig sshd on
[root@FedoraB UsuarioB]# chkconfig sshd on
Por precaução, reinicie as máquinas virtuais e repita o processo de login para cada usuário. Abra o
terminal e digite "ifconfig" para saber o ip de cada máquina virtual.
No nosso exemplo verificamos que:
FedoraA > 192.168.137.3
FedoraB > 192.168.137.2
Feito isso siga os passos abaixo para cada máquina. Observe o tipo de usuário.
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 9 / 12
Elaborado por: M Barbosa Rede Linux Virtual Teoria Linux | março/2011
[UsuarioB@FedoraB ~]$ cd SourceA/
[UsuarioB@FedoraB SourceA]$ ls
txtA.txt
[UsuarioB@FedoraB SourceB]$ cd /home/UsuarioB
[UsuarioB@FedoraB ~]$ ssh UsuarioA@192.168.137.3
UsuarioA@192.168.137.3's password:
> Terminal na máquina FedoraA
[UsuarioA@FedoraA ~]$ cd ..
[UsuarioA@FedoraA home]$ ls
user UsuarioA
[UsuarioA@FedoraA home]$ cd /transfers/SourceA
[UsuarioA@FedoraA BkpB]$ ls
[UsuarioA@FedoraA BkpB]$
txtA.txt
[UsuarioA@FedoraA BkpB]$ logout
Connection to 192.168.137.3 closed.
[UsuarioB@FedoraB ~]$
Nos passos a seguir não será mostrado como digitar na máquina FedoraB, visto que é o mesmo processo
mas como UsuarioB em FedoraB.
Criando a chave
$ [UsuarioA@FedoraA ~]$ ssh-keygen -t dsa -b 1024 -f ~/.ssh/id_dsa
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/UsuarioA/.ssh/id_dsa.
Your public key has been saved in /home/UsuarioA/.ssh/id_dsa.pub.
The key fingerprint is:
32:72:75:48:af:e6:18:15:46:08:68:96:e1:2b:db:5f UsuarioA@FedoraA
The key's randomart image is:
+--[ DSA 1024]----+
| .+.. o= |
| .= .o + |
| o. + o |
| . o o |
|. . . = S |
| + o B |
|. . E . |
| . . |
| . |
+-----------------+
[UsuarioA@FedoraA ~]$ cd .ssh
[UsuarioA@FedoraA .ssh]$ ls
id_dsa id_dsa.pub known_hosts
Temos a identificação gravada em "id_dsa" e a chave pública "id_dsa.pub".
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Se o UsuarioB tivesse transferido a chave pública dele autorizando a transferência
segura, teríamos:
[UsuarioA@FedoraA .ssh]$ ls
authorized_keys id_dsa id_dsa.pub known_hosts
Agora que ambos as máquinas estão autorizadas experimente entrar na outra máquina e verá que a
mesma não pedirá mais senha.
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 10 / 12
Elaborado por: M Barbosa Rede Linux Virtual Teoria Linux | março/2011
Testando a chave
$ [UsuarioA@FedoraA ~]$ ssh UsuarioB@192.168.137.2
Last login: Thu Mar 10 14:44:32 2011 from 192.168.137.2
[UsuarioB@FedoraB ~]$
> Saindo da máquina FedoraB e retornando ao diretório home
$ [UsuarioB@FedoraB ~]$ logout
[UsuarioA@FedoraA .ssh]cd ..
[UsuarioA@FedoraA ~]$
Os dispositivos montados pelo Linux ficam na pasta "/media". Se desejamos copiar um arquivo da
pendrive "DOCUMENTOS" para a máquina FedoraB, simplesmente digitaríamos:
$ [UsuarioA@FedoraA ~]$ scp /media/DOCUMENTOS/aula.txt UsuarioB@192.168.137.2:~/
Não mais seria necessária a senha.
Usando o NFS
Primeiro precisamos instalar os serviços
# [root@FedoraA UsuarioA]# yum -y install nfs-utils rpcbind system-config-nfs
> Verificando a condição dos serviços
# [root@FedoraA UsuarioA]# service nfs status
rpc.svcgssd está parado
rpc.mountd está parado
nfsd está parado
[root@FedoraA UsuarioA]# service rpcbind status
rpcbind está parado
Configurando o Servidor
O primeiro passo é editar o arquivo /etc/exports na máquina que será o servidor, nele deverá ser colocado
o diretório que vai ser compartilhado com a máquina cliente, o número do IP da máquina que estará
acessando o servidor e por fim as opções de segurança.
Neste processo iremos utilizar o "vi" e os comandos que precisaremos são:
i para inserir
:wq para gravar e sair
Precisamos saber qual o ip da máquina destino digitando "ifconfig" na linha de comando.
Criando um diretório para compartilhar os dados na máquina FedoraA
# [root@FedoraA UsuarioA]# mkdir /transfers/pubA
[root@FedoraA UsuarioA]# chmod 777 /transfers/pubA
Digite então "/transfers/pubA 192.168.137.*(rw)". Isto libera que todas as máquinas da rede tenham
acesso ao diretório "/transfers/pubA".
# [root@FedoraA UsuarioA]# vi /etc/exports
> Verificando o conteúdo digitado
# [root@FedoraA UsuarioA]# cat /etc/exports
/transfers/pubA 192.168.137.*(rw)
ou ainda
/transfers/pubA 192.168.137.2(rw,insecure,sync,no_root_squash)
> Inicializando os serviços
# [root@FedoraA UsuarioA]# service rpcbind start
Iniciando o rpcbind: [ OK ]
[root@FedoraA UsuarioA]# service nfslock start
Iniciando o NFS statd: [ OK ]
[root@FedoraA UsuarioA]# service nfs start
Iniciando os serviços NFS: [ OK ]
Iniciando o servidor NFS: [ OK ]
Iniciando o NFS mountd: [ OK ]
Iniciando o RPC idmapd: [ OK ]
Você pode deixar eles inicializando na inicialização do Linux
# [root@FedoraA UsuarioA]# chkconfig rpcbind on
[root@FedoraA UsuarioA]# chkconfig nfslock on
[root@FedoraA UsuarioA]# chkconfig nfs on
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 11 / 12
Elaborado por: M Barbosa Rede Linux Virtual Teoria Linux | março/2011
Você pode modificar o arquivo "/etc/exports" e atualizar o compartilhamento sem precisar reiniciar o
servidor NFS.
Para isto basta digitar:
# [root@FedoraA UsuarioA]# exportfs -a -v
Máquina Cliente
> Criando um diretório para os dados na máquina FedoraA na máquina FedoraB
# [root@FedoraB UsuarioB]# mkdir /transfers/dados
[root@FedoraB UsuarioB]# chmod 777 /transfers/dados
> Verificando o conteúdo do diretório dados. Podemos notar que não existe nenhum arquivo
ainda.
# [root@FedoraB UsuarioB]# ls
> Fazendo o link entre os diretórios
# [root@FedoraB UsuarioB]# mount -t nfs 192.168.137.2:/transfers/pubA /transfers/dados
-o nolock
> Voltando para o usuário comum
# [root@FedoraB UsuarioB]# exit
exit
$ [UsuarioB@FedoraB ~]$
OT:55! – One Target: Simple Solutions! – Rede Linux Virtual – http://www.ot55.net Pág.: 12 / 12