MINIX 3



Este material é baseado no original do mestrando Marcelo Veiga (link).

Introdução

O Minix é um sistema operacional gratuito desenvolvido por Andrew Tanenbaum para compensar a proibição da AT&T contra o estudo de SO baseado no código UNIX e prover uma ferramenta de ensino para seus alunos. Originalmente foi projetado para ser compatível com a versão 7 do UNIX e em seguida passou a ser desenvolvido baseado no padrão POSIX. O Minix foi escrito a partir do zero e mesmo sendo compatível com UNIX, não contém código AT&T possibilitando sua distribuição livremente.

Versões existentes

O Minix 1 e 2 são entendidos como ferramentas de ensino. A versão 3 tem por objetivo se tornar usável em computadores com recursos limitados, sistemas embarcados e aplicações que demandam grande confiabilidade.

O Minix 3 é um novo sistema operacional open-source projetado para ser altamente confiável, flexível e seguro. Esta nova versão é, de certa forma, baseada nas anteriores mas é fundamentalmente diferente em muitos aspectos. Entre as novas funcionalidades pode-se citar:

A versão 3 do Minix é descrito na terceira edição do livro "Operating Systems: Design and Implementation 3nd Edition" (OSDI 3) de Andrew S. Tanenbaum e Albert S. Woodhull.

Estrutura interna do Minix

O Minix é estruturado em 4 camadas:

Camada 1: Kernel. Trata serviços de baixo nível necessários para a execução do sistema como o gerenciamento de interrupções, traps, escalonamento e comunicação. Os códigos que lidam com a parte mais baixo nível das interrupções são escritos em assembly. O restante desta camada e as demais acima são escritas em C.

Camada 2: Drivers de dispositivos. Os processos que tratam de E/S (I/O tasks) se encontram nessa camada. Entre os dispositivos podemos citar discos, terminais, placas de rede e relógios. Estes processos equivalem aos drivers de dispositivos, comuns em outros SO's. Todos os processos desta camada são ligados ao código da primeira camada formando um programa binário único chamado kernel.

Camada 3: Processos de servidor. Esta camada contém processos que fornecem serviços úteis para os processos de usuário como, por exemplo, gerenciamento de memória (MM), sistema de arquivos (FS), rede, etc.

Camada 4: Processos de usuário. Os processos de usuário como shells, editores, compiladores e demais programas se encontram nesta camada.

Instalação

Esta seção descreve o processo de instalação/utilização do Minix em três cenários diferentes: nativamente em um computador, a partir de um Live CD e utilizando emuladores.

Nativamente no computador

O processo de instalação do Minix 3 nativamente em um computador é descrito em http://www.minix3.org/doc/A-312.html.

Também é possível utilizar o Minix em um computador que possui outros sistemas operacionais instalados, como o Linux. Para tanto, basta adicionar a partição bootável do Minix no LILO ou GRUB. Informações adicionais podem ser encontradas neste link.

Live CD

O Live CD trata-se do CD de instalação do Minix 3. O Live CD pode ser obtido no site do Minix 3 (http://www.minix3.org/download) ou localmente aqui.

VMware

A vantagem de usar um emulador é a possibilidade de lançar um sistema operacional diferente, realizar alterações em seu código e depurá-lo sem a necessidade de reiniciar o computador.

VMware Workstation é um programa de virtualização que permite a criação e execução de múltiplas máquinas virtuais em um mesmo computador. Uma máquina virtual é um computador com configurações de hardware e sistema operacional definidas em software. O VMware Workstation é um software comercial que está disponível para diversos sistemas operacionais, como Linux e Windows.

VMware Player é uma versão limitada, porém gratuita que permite a execução e modificação de uma máquina virtual previamente criada pelo VMware Workstation. A última versão pode ser obtida em http://www.vmware.com/products/player ou localmente aqui. Um tutorial sobre a instalação em Linux pode ser encontrado neste link.

O site oficial do Minix 3 disponibiliza imagens pré-instaladas em http://www.minix3.org/vmware.html. As versões disponíveis localmente são:

Auxiliares:

Bochs

Bochs é um emulador de PC IA-32 (x86) disponível para Windows e Linux. A última versão do Bochs pode ser obtida em http://bochs.sourceforge.net. A imagem utilizada está disponível aqui.

Mais informações:

QEMU

QEMU é um emulador genérico e Open Source que permite emular um sistema completo (por exemplo, um PC), incluindo o processador e vários periféricos. A última versão do QEMU pode ser obtida em http://fabrice.bellard.free.fr/qemu.

As imagens disponíveis são:

Execute o QEMU com o comando:

  $ tar -xvzf minix3_1_2a-qemu-abnt.tar.gz
  $ cd minix3_1_2a-qemu-abnt
  $ qemu -m 128 -serial "file:serialport.file" -hda minix-3_1_2a-qemu.img

Dessa forma é possível se usar o arquivo serialport.file como saida de uma porta serial.

Noções básicas sobre Minix

Comandos básicos

A idéia inicial do Minix era ser um clone do Unix. Desta forma, os comandos básicos do Minix são os mesmos disponíveis em sistemas Unix como, por exemplo, no Linux. Os dois principais editores de arquivos do Minix são o vi e o elle (ELLE Looks Like Emacs). Um manual de referência para o vi pode ser obtido em http://drumlin.thehutt.org/vi.

A seguir são mostrados alguns comandos Minix/UNIX necessários para começar a utilizar o sistema.

Criar um diretório:

  $ mkdir diretorio

Acessar um diretório:

  $ cd diretorio

Listar o conteúdo do diretório corrente:

  $ ls -l

Apagar um arquivo:

  $ rm arquivo

Compilar um programa:

  $ cc hello.c
  $ ./a.out
  
  ou
  
  $ cc -o hello hello.c
  $ ./hello

Mudar as permissões de um arquivo:

  # neste caso, adicionar a permissao de execucao a um arquivo
  $ chmod +x arquivo

Executar um programa:

  # em segundo plano (ou background)
  $ ./programa &
  
  # em primeiro plano (ou foreground)
  $ ./programa

Executar um shell script:

  $ sh script.sh

Exibe o estado e PID dos processos em execução:

  $ ps -x

Mata um processo:

  $ kill PID

Para mais informações:

Compilando um kernel

O código-fonte do Minix está localizado no diretório /usr/src. Após alguma modificação no código, é necessário recompilar e criar um novo kernel. Para compilar:

  # cd /usr/src/tools
  # make

Nesse ponto o kernel apenas foi compilado, agora é necessário gerar e instalar a imagem do kernel.

  # cd /usr/src/tools
  # make install
  

A imagem do kernel é armazenada no diretório /boot/image. Cada vez que um kernel é compilado, uma cópia da imagem é armazenada neste diretório. Quando o computador for reiniciado, o Minix irá carregar a versão mais nova (último kernel compilado).

  # ls -a /boot/image
  .  ..  3.1.2a 3.1.2ar0 3.1.2ar1

Se forem realizadas modificações no gerenciamento de processos, também é necessário recompilar o comando ps para exibir corretament os processos no novo ambiente.

  # cd /usr/src/commands/ps
  # make
  # cp ps /usr/bin
  # chown root /usr/bin/ps
  # chmod 4755 /usr/bin/ps

Para que as alterações tenham efeito reinicie o sistema:

  # shutdown -R

O básico do básico do editor VIM

O ambiente disponibilizado para a execução do Minix é uma console texto sem nenhum suporte a ambientes gráficos. Neste caso é necessário realizar as tarefas que habitualmente se está acostumado a fazer com ferramentas gráficas com seu equivalente em modo texto.

O VIM é um editor de texto. Ele é uma evolução de um outro editor bastante conhecido no mundo UNIX, o vi. Apesar de parecer rudimentar ele oferece uma série de funcionalidades bastante úteis. A grande vantagem de se conhecer um editor de textos como o vi é poder interagir com um sistema instalado quando a interface gráfica, por uma ou outra razão, não funciona. Normalmente, para repará-la, é necessário editar arquivos de configuração... Portanto, o vi (e similares) resta como a única alternativa (Em caso de dúvida de sua utilidade, pergunte a um administrador de redes competente).

Você pode obter uma breve explanação dos principais comandos e uso do VIM no documento vimqrc.pdf.

Quick Start para os ansiosos

Outros sites


Última atualização em 18/08/2008.