Tecnólogo em Análise e Desenvolvimento de Sistemas Nivelamento – Máquinas Virtuais / VirtualBox Gil Eduardo de Andrade O conteúdo deste documento tem como objetivos geral introduzir conceitos mínimos sobre sistemas operacionais e máquinas virtuais para posteriormente utilizar o aplicativo VirtualBox. A partir dos conceitos e utilizando o aplicativo, é apresentado um tutorial sobre a criação de uma máquina virtual contendo o sistema operacional Linux como convidado (guest) de um sistema operacional Windows (host). Como objetivo específico deseja-se criar a possibilidade, por parte do aluno, de utilizar em seu computador pessoal uma máquina virtual contendo o sistema operacional Linux, que lhe permite implementar os códigos-fonte em C relativos as atividades desenvolvidas na disciplina de Programação de Computadores I. O conteúdo teórico sobre sistemas operacionais e máquinas virtuais é baseado no livro do Prof. Dr. Carlos Alberto Maziero, disponível no link: http://dainf.ct.utfpr.edu.br/~maziero Sistemas Operacionais Um sistema de computação é constituído basicamente por hardware e software, existindo uma grande distância entre os circuitos eletrônicos e dispositivos de hardware e os programas em software. Os circuitos são complexos, acessados através de interfaces de baixo nível (geralmente usando as portas de entrada/saída do processador) e muitas vezes suas características e seu comportamento dependem da tecnologia usada em sua construção. Por exemplo, a forma de acesso em baixo nível, a discos rígidos IDE, difere da forma de acesso a discos SCSI ou leitores de CD. Essa grande diversidade pode ser um grande problema para o desenvolvedor de aplicativos. Com isso torna-se desejável oferecer aos programas uma forma de acesso homogênea aos dispositivos físicos, que possibilite abstrair as diferenças tecnológicas entre eles. O sistema operacional é uma camada de software que opera entre o hardware e os programas aplicativos voltados ao usuário final. O sistema operacional é uma estrutura de software ampla, muitas vezes complexa que incorpora aspectos de baixo nível (como drivers de dispositivos e gerência de memória física) e de alto nível (como programas utilitários e a própria interface gráfica). A figura a seguir ilustra a arquitetura geral de um sistema de computação típico. Nela, podemos observar elementos de hardware, o sistema operacional e alguns programas aplicativos. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 1 de 15 Estrutura de um Sistema de Computação Típico Abstração de Recursos Acessar os recursos de hardware de um sistema de computação pode ser uma tarefa complexa, devido às características específicas de cada dispositivo físico e a complexidade de suas interfaces. Por exemplo, a seqüência a seguir apresenta os principais passos envolvidos na abertura de um arquivo (operação open) em um leitor de disquete: 1. Verificar se os parâmetros informados estão corretos (nome do arquivo, identificador do leitor de disquete, buffer de leitura, etc); 2. Verificar se o leitor de disquetes está disponível; 3. Verificar se o leitor contém um disquete; 4. Ligar o motor do leitor e aguardar atingir a velocidade de rotação correta; 5. Posicionar a cabeça de leitura sobre a trilha onde está a tabela de diretório; 6. Ler a tabela de diretório e localizar o arquivo ou subdiretório desejado; 7. Mover a cabeça de leitura para a posição do bloco inicial do arquivo; 8. Ler o bloco inicial do arquivo e depositá-lo em um buffer de memória. Assim, o sistema operacional deve definir interfaces abstratas para os recursos do hardware, visando atender os seguintes objetivos: Prover interfaces de acesso aos dispositivos mais simples que as interfaces de baixo nível, com intuito de simplificar a construção de programas aplicativos. Por exemplo: para ler dados de um disco rígido, uma aplicação usa um conceito chamado arquivo, que fornece uma visão abstrata do disco rígido. Tornar os aplicativos independentes do hardware. Ao definir uma interface abstrata de acesso a um dispositivo de hardware, o sistema operacional desacopla o hardware dos Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 2 de 15 aplicativos e permite que ambos evoluam de forma mais autônoma. Por exemplo, o código de um editor de textos não deve ser dependente da tecnologia de discos rígidos utilizada no sistema. Definir interfaces de acesso homogêneas para dispositivos com tecnologias distintas. Através de suas abstrações, o sistema operacional permite aos aplicativos usar a mesma interface para dispositivos diversos. Por exemplo, um aplicativo acessa dados em disco através de arquivos e diretórios, sem precisar se preocupar com a estrutura real de armazenamento dos dados, que podem estar em um disquete, um disco IDE, uma máquina fotográfica digital conectada à porta USB, um CD ou mesmo um disco remoto, compartilhado através da rede. Máquinas Virtuais Para que programas e bibliotecas possam executar sobre uma determinada plataforma computacional, é necessário que tenham sido compilados para ela, respeitando o conjunto de instruções do processador e o conjunto de chamadas do sistema operacional. Da mesma forma, um sistema operacional só poderá executar sobre uma plataforma de hardware se for compatível com ela. Nos sistemas atuais, as interfaces de baixo nível são pouco flexíveis: geralmente não é possível criar novas instruções de processador ou novas chamadas de sistema, ou mudar sua semântica. Por isso, um sistema operacional só funciona sobre o hardware para o qual foi construído, uma biblioteca só funciona sobre o hardware e sistema operacional para os quais foi projetada e as aplicações também têm de obedecer a interfaces pré-definidas. Todavia, é possível contornar os problemas de compatibilidade entre os componentes de um sistema através de técnicas de virtualização. Usando os serviços oferecidos por um determinado componente do sistema, é possível construir uma camada de software que ofereça aos demais componentes serviços com outra interface. Essa camada permitirá assim o acoplamento entre interfaces distintas, de forma que um programa desenvolvido para uma plataforma A possa executar sobre uma plataforma distinta B. O sistema computacional visto através dessa camada é denominado máquina virtual. A figura abaixo, extraída de [Smith and Nair, 2004], mostra um exemplo de máquina virtual, onde uma camada de virtualização permite executar um sistema operacional Windows e suas aplicações sobre uma plataforma de hardware Sparc, distinta daquela para a qual foi projetado (Intel/AMD). Máquina Virtual [Smith and Nair, 2004]. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 3 de 15 Um ambiente de máquina virtual consiste de três partes básicas, que podem ser observadas na figura anterior: O sistema real, ou sistema hospedeiro (host system), que contém os recursos reais de hardware e software do sistema; O sistema virtual, também denominado sistema convidado (guest system), que executa sobre o sistema virtualizado; em alguns casos, vários sistemas virtuais podem coexistir, executando sobre o mesmo sistema real; A camada de virtualização, denominada hipervisor ou monitor de virtualização (VMM Virtual Machine Monitor), que constrói as interfaces virtuais a partir da interface real. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 4 de 15 Tutorial de Instalação – Maquina Virtual O aplicativo VirtualBox pode ser encontrado aqui. (VirtualBox 4.3.26 for Windows hosts) O arquivo ‘.iso’ do sistema operacional Ubuntu poder encontrado aqui. Instalação do VirtualBox A instalação do aplicativo VirtualBox é extremamente simples, e basta apenas seguir os passos que são apresentados pelo seu programa instalador. Entretanto são apresentadas duas capturas de tela (figuras 01 e 02) efetuadas durante a instalação caso acha alguma dúvida. Figura 01: Tela inicial de instalação do Virtual Box. Após selecionar a opção “Next” na tela inicial a instalação terá seu início, ao longo dela uma tela contendo informações sobre a instalação de software de dispositivos é mostrada, quando isso ocorrer, selecione a caixa de checagem com os dizeres “Sempre confiar em softwares Oracle Corporation” e então escolha a opção “Instalar” Figura 02: Tela inicial de instalação Virtual Box – Opção Software de Dispositivo. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 5 de 15 Criando uma Máquina Virtual Linux Convidada Ao término da instalação do aplicativo Virtual Box um ícone de atalho para o mesmo, na área de trabalho do computador, será criado, como mostra a figura 03. Ao clicarmos duplamente no ícone, iniciamos o aplicativo instalado como visto na figura 04. Figura 03: Ícone do aplicativo Virtual Box criado na Área de Trabalho após a instalação. Figura 04: Tela Inicial do aplicativo Virtual Box. Com o aplicativo aberto, iremos criar uma nova máquina virtual, para isso selecionamos a opção “Novo” (botão azul no canto superior esquerdo da janela). Após isso a janela apresentada na figura 05 é aberta. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 6 de 15 Figura 05: Criando uma nova máquina virtual – especificando o sistema operacional. Após a abertura da janela apresentada na figura 05 é necessário preencher o nome que será dado a máquina virtual que deseja-se criar e então selecionar nas caixas de combinação: o sistema operacional que será instalado dentro dessa nova máquina (nesse caso Linux) e a versão deste SO (neste caso Ubuntu). Ao término das especificações sobre o sistema operacional que será virtualizado deve-se selecionar a opção “Próximo” para que a janela de configuração de memória seja apresentada, como mostrado na figura 06. Figura 06: Configurando a quantidade de memória que ficará disponível para máquina virtual que está sendo criada. Como pode ser visto na figura 06 foi disponibilizado 1GB de memória RAM para que a máquina virtual seja executada, esse valor poderia ser menor caso a quantidade de memória do computador seja menor que 4GB. Lembrando que essa quantidade também foi configurada para que a interface gráfica padrão (Unity) dos sistemas Linux Ubuntu possa ser configurada adequadamente para executar de forma virtualizada. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 7 de 15 Figura 07: Configuração da memória RAM (1GB) da máquina que está sendo criada. Ao término das especificações sobre a quantidade de memória que ficará disponível para uso da máquina virtual, e pressionando a opção “Próximo” é apresentada a janela que permite criar e iniciar a configuração do HD virtual a ser utilizado pela máquina, como mostra a figura 08. Figura 08: Criando um novo disco rígido virtual. Após a criação do disco rígido, clicando na opção “Criar” a janela para especificação do tipo de disco rígido que deseja-se utilizar é apresentada, nela utilizaremos a opção mais comum que é a criação de uma imagem de disco do Virtualbox (VDI), que já encontra-se selecionada como mostra figura 09. Figura 09: Especificando o tipo do disco rígido (VDI – Virtualbox Image Disk). Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 8 de 15 Na próxima etapa especifica-se o método como o arquivo virtual, que representa o disco rígido criado, deve ser manipulado e como ele deve armazenar os dados. Nesta etapa selecione a opção “Dinamicamente alocado”, ou seja, o HD virtual irá crescer de acordo com armazenamento efetuado ao longo da utilização da máquina virtual, como mostra a figura 10. Figura 10:Armazenamento Dinamicamente alocado. Por fim é configurado o tamanho total do HD virtual que estamos criando, este valor varia de acordo com a finalidade da máquina virtual que está sendo criada. Neste caso, como é apenas demonstrativo utilizaremos um total de 20GB, como mostrado na figura 11. Figura 11: Configurando a quantidade de armazenamento total da máquina virtual. Após todas as configurações efetuadas anteriormente a máquina virtual está criada, como mostra a figura 12, e assim podemos iniciar a instalação do sistema operacional convidado, no caso desse tutorial, Linux Ubuntu. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 9 de 15 Figura 12: Máquina Virtual criada – já possível iniciar a instalação do sistema operacional. Agora, selecionando a opção “Iniciar” (seta verde na parte superior esquerda da janela) é possível iniciar a máquina e então selecionar a imagem “.iso” do sistema operacional que desejamos utilizar (arquivo baixado do link apresentado no início desse tutorial) para instalação, como mostra a figura 13. (ATENÇÃO: não clique ainda em iniciar) Figura 13:Iniciando a máquina virtual criada. Na janela que foi aberta é solicitado um disco de boot, ou seja, a imagem “iso” que contém os arquivos necessários para instalação do sistema operacional Linux. Para que possa indicar onde este arquivo encontra-se na sua máquina, clique no ícone “abrir” (pastinha amarela no canto direito inferior da imagem) e então uma janela de navegação entre os diretórios da sua máquina se abrirá como mostra a figura 14. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 10 de 15 Figura 14: Navegação entre os Diretórios da máquina para seleção do arquivo “.iso” que contém a imagem do sistema operacional Linux. Navegue até o diretório onde salvou o arquivo “.iso” do sistema operacional Linux, selecione-o e clique em “Abrir”, como mostrado na figura 14. Após isso a janela apresentada na figura 15 se abrirá e o processo de instalação terá início. Figura 15: Iniciando a instalação do sistema Linux Ubuntu. Seleciona a opção “Português Brasil” na lateral esquerda da janela apresentada na figura 15 e então escolha “Instalar o Ubuntu”. Logo após este processo a janela apresentada na figura 16 será mostrada para dar continuidade a instalação do sistema. Nela você verá na parte superior da janela o HD virtual criado anteriormente, visto que será nele que faremos a instalação do sistema operacional Linux Ubuntu. Sendo assim bastará, nesse momento apenas selecionar a opção “Instalar agora”. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 11 de 15 Figura 16: Selecionando o HD virtual criado anteriormente e iniciando a instalação. Ao iniciar a instalação a janela apresentada na figura 17 solicitará a configuração de partições que deve ser utilizada para o seu HD virtual, por questões de praticidade e simplicidade selecione a opção “Apagar disco e reinstalar Ubuntu”. Importante salientar que o disco apagado será o virtual criado anteriormente e não seu disco rígido real que possui o sistema operacional Windows como hospedeiro. Figura 17: Definindo formato das partições – utilizando o padrão, mais simples. Após essa etapa, a instalação propriamente dita terá seu início, sendo os arquivos do sistema copiados para o HD virtual, algumas configurações como layout do teclado e fuso horário serão solicitadas, mas não são apresentadas aqui por serem simples de se efetuar. Posteriormente a essas configurações temos a definição de um usuário e senha, como apresentado na figura 18. Nesse momento você pode utilizar seu nome e uma senha que, obrigatoriamente, deve lembrar no futuro para ter acesso ao sistema. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 12 de 15 Figura 18: Criação de um usuário e definição de uma senha. A instalação prosseguirá e após alguns minutos ela será finalizada, quando isso ocorrer uma mensagem solicitando que o sistema seja reiniciado será apresentada. Você pode então reiniciar a máquina ou até mesmo desligá-la (clique no “x” da janela principal do aplicativo VirtualBox). Configuração para executar a Interface gráfica Unity Com a máquina virtual criada e o sistema operacional instalado, logo após você fechar a máquina, no término da instalação, a janela apresentada na figura 19 será apresentada, e então você deve clicar o botão direito do mouse sobre o ícone da máquina virtual Ubuntu instalada e selecionar a opção “Configuração”. Figura 19: Configurações de vídeo para executar o ambiente gráfico Unity. As configurações da máquina virtual serão abertas, selecione então a opção “Monitor ou Video”, como mostra a figura 20, selecione a caixa de checagem “Habilitar Aceleração 3D” e na Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 13 de 15 opção que define a quantidade de “Memória de Vídeo” arraste a barra até o canto direito para utilizar o valor máximo que é de 128MB. Figura 20: Configurações de vídeo para executar o ambiente gráfico Unity – 3D e memória. Logo após as configurações de vídeo especificadas inicie a máquina novamente, e logo que a janela se abra, vá até a opção “Dispositivos” → “Dispositivos de CD/DVD” e selecione a opção “Drive do Hospedeiro E:”. Quando a máquina inicializar, após você ter efetuado seu login, e estiver na área de trabalho do sistema Ubuntu, vá novamente na opção “Dispositivos” → “Dispositivos de CD/DVD” e agora selecione a última opção “inserir Imagem de CD para Adicionais para convidado” como mostra a figura 21. Figura 21: Instalando Adicionais de Convidado. Uma janela se abrirá dentro do sistema virtualizado, e solicitará sua permissão para execução e instalação, permita. Este pacote é muito útil e contém funcionalidade como porta USB Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 14 de 15 compartilhada com o sistema hospedeiro, ou seja, ao plugar um pen-drive na sua máquina este ficará disponível também no sistema virtual, também habilitará o redimensionamento para tela cheia, ponteiro de mouse compartilhado e principalmente aceleração 3D para rodar o a interface Unity. Gil Eduardo de Andrade Nivelamento – Máquinas Virtuais / VirtualBox Página 15 de 15