Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
espec:maquinas_virtuais_uml [2008/07/07 04:37] – maziero | espec:maquinas_virtuais_uml [2020/08/18 22:12] (atual) – edição externa 127.0.0.1 | ||
---|---|---|---|
Linha 1: | Linha 1: | ||
+ | ====== Máquinas Virtuais UML ====== | ||
+ | |||
+ | ===== Introdução às Máquinas Virtuais ===== | ||
+ | |||
+ | Máquina Máquinas virtuais são uma abstração de hardware construída por um **monitor de máquina virtual**. As máquinas virtuais permitem executar vários sistemas operacionais " | ||
+ | |||
+ | Há basicamente dois tipos de monitores de máquina virtual: os nativos (ou de tipo I) e os convidados (ou de tipo II): | ||
+ | |||
+ | * **Monitor nativo**: software de baixo nível que executa diretamente sobre o hardware, sendo carregado no computador antes de qualquer sistema operacional. | ||
+ | |||
+ | * **Monitor convidado**: | ||
+ | |||
+ | Apesar de ser uma tecnologia dos anos 1960, as máquinas virtuais vêm sendo cada vez mais utilizadas em várias circunstâncias: | ||
+ | |||
+ | * Executar vários sistemas operacionais sobre o mesmo hardware, simultaneamente; | ||
+ | * Consolidar servidores em ambientes corporativos; | ||
+ | * Web hosting: ao invés de oferecer uma conta em um servidor Web, alugar uma máquina virtual completa e totalmente configurável; | ||
+ | * Desenvolvimento de núcleos de sistema e outros softwares de baixo nível; | ||
+ | * Ensino: cada aluno pode lançar várias máquinas virtuais, com controle total sobre elas e sem interferência nos trabalhos dos demais alunos; as configurações individuais podem ser facilmente preservadas pelo aluno. | ||
+ | |||
+ | Para o leitor interessado no assunto, {{: | ||
+ | |||
+ | ===== O User-Mode Linux ===== | ||
+ | |||
+ | O [[http:// | ||
+ | |||
+ | No UML, cada máquina virtual é vista como um processo do sistema Linux nativo subjacente. Esse processo contém internamente o monitor de máquina virtual, o núcleo (// | ||
+ | |||
+ | * os discos da máquina virtual correpondem a arquivos no sistema nativo; | ||
+ | * As interfaces de rede virtuais são providas por //daemons// executando no sistema nativo; | ||
+ | |||
+ | Os usuários e processos da máquina virtual são distintos dos usuários e processos do sistema nativo; por isso, cada aluno pode ser //root// de suas máquinas virtuais, sem prejuízo para a segurança do sistema. | ||
+ | |||
+ | ===== Usando máquinas UML no servidor Espec ===== | ||
+ | |||
+ | O servidor [[http:// | ||
+ | |||
+ | ==== Inicialização e término ==== | ||
+ | |||
+ | Para lançar uma máquina virtual (ou VM), basta chamar o script '' | ||
+ | |||
+ | < | ||
+ | (host)$ linux vm1 | ||
+ | |||
+ | ... [mensagens de boot suprimidas] | ||
+ | |||
+ | Fedora release 7 (Moonshine) | ||
+ | Kernel 2.6.22.6 on an i686 | ||
+ | |||
+ | localhost login: root | ||
+ | |||
+ | (vm1)$ | ||
+ | </ | ||
+ | |||
+ | Ao terminar de usar uma máquina virtual, é importante **desligá-la adequadamente** (assim como desligamos um computador real após usá-lo), para manter a consistência das informações em sua imagem de disco virtual. O desligamento de uma VM deve ser feito através dos comandos '' | ||
+ | |||
+ | < | ||
+ | (vm1)$ halt | ||
+ | |||
+ | ... [mensagens de shutdown suprimidas] | ||
+ | |||
+ | Disco desta maquina virtual: rootfs32.vm1 | ||
+ | |||
+ | (host)$ | ||
+ | </ | ||
+ | |||
+ | Ao ser lançada pela primeira vez, cada máquina virtual usa como disco de inicialização uma imagem de disco presente no diretório "''/ | ||
+ | |||
+ | Os arquivos de imagem '' | ||
+ | |||
+ | ==== Pacotes de software ==== | ||
+ | |||
+ | A imagem de base das máquinas virtuais UML instaladas no servidor Espec é baseada na distribuição Linux [[http:// | ||
+ | |||
+ | < | ||
+ | (host)$ ls -l / | ||
+ | total 220 | ||
+ | drwxr-xr-x 2 root root 102400 Out 17 2007 all/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 dns/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 httpd/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 lynx/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 mutt/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 php/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 pine/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 pop-imap/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 postfix/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 samba/ | ||
+ | drwxr-xr-x 2 root root 4096 Jul 4 15:29 squid/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 telnet/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 vsftpd/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 wireshark/ | ||
+ | drwxr-xr-x 2 root root 4096 Set 22 2007 xinetd/ | ||
+ | </ | ||
+ | |||
+ | ==== Host FS ==== | ||
+ | |||
+ | Para facilitar a cópia de arquivos entre as máquinas virtuais e o sistema real subjacente, o diretório raiz ("''/''" | ||
+ | |||
+ | < | ||
+ | (vm1)$ cd / | ||
+ | </ | ||
+ | |||
+ | ==== Interfaces de rede ==== | ||
+ | |||
+ | Cada máquina virtual disponível no servidor espec tem ao menos quatro interfaces de rede disponíveis: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | A figura a seguir ilustra a disposição das máquinas virtuais: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | As interfaces de rede da máquina virtual podem ser configuradas normalmente através dos comandos '' | ||
+ | |||
+ | < | ||
+ | (vm1)$ ifconfig eth0 20.0.0.119 up | ||
+ | (vm1)$ route add default gw 20.0.0.1 | ||
+ | </ | ||
+ | |||
+ | **Importante**: | ||
+ | |||
+ | ==== Console de gerência ==== | ||
+ | |||
+ | O ambiente de máquinas virtuais UML provê algumas ferramentas para gerênciar máquinas virtuais. Por exemplo, o comando '' | ||
+ | |||
+ | < | ||
+ | (host)$ uml_mconsole vm1 | ||
+ | (vm1) help | ||
+ | OK Commands: | ||
+ | version - Get kernel version | ||
+ | help - Print this message | ||
+ | halt - Halt UML | ||
+ | reboot - Reboot UML | ||
+ | config < | ||
+ | same syntax as command line | ||
+ | config <dev> - Query the configuration of a device | ||
+ | remove <dev> - Remove a device from UML | ||
+ | sysrq < | ||
+ | cad - invoke the Ctrl-Alt-Del handler | ||
+ | stop - pause the UML; it will do nothing until it receives a ' | ||
+ | go - continue the UML after a ' | ||
+ | log < | ||
+ | proc < | ||
+ | stack <pid> - returns the stack of the specified pid | ||
+ | |||
+ | Additional local mconsole commands: | ||
+ | quit - Quit mconsole | ||
+ | switch < | ||
+ | log -f < | ||
+ | mconsole-version - version of this mconsole program | ||
+ | </ | ||
+ | |||
+ | Pela informação fornecida pelo " | ||
+ | |||
+ | * encerrar a VM (comando '' | ||
+ | * reiniciar a VM (comando '' | ||
+ | * pausar e continuar a execução da VM (comandos '' | ||
+ | * alterar configurações e consultar informações internas | ||
+ | |||
+ | Uma situação **muito freqüente** é acidentalmente fechar a janela de terminal de uma máquina virtual. Nesse caso, a máquina virtual continua executando, mas não é mais possível interagir com ela nem encerrá-la normalmente (// | ||
+ | |||
+ | < | ||
+ | (host)$ uml_mconsole vm3 | ||
+ | (vm3) halt | ||
+ | OK | ||
+ | (vm3) quit | ||
+ | (host)$ | ||
+ | </ | ||
+ | |||
+ | ==== Display gráfico ==== | ||
+ | |||
+ | FIXME | ||
+ | |||
+ | Explicar sobre o desvio de display de aplicações gráficas da máquina virtual para a máquina real (conferir primeiro se ainda está funcionando). | ||
+ | |||
+ | ===== Mais informações ===== | ||
+ | |||
+ | * {{: | ||
+ | * [[http:// | ||
+ | * [[http:// | ||