HelenOS – the operating system that launched a thousand processes
Autor original: Jesse Smith
Publicado originalmente no: distrowatch.com
Tradução: Roberto Bechtlufft
No dia 10 de março de 2010, o projeto HelenOS lançou a versão 0.4.2 de seu sistema operacional. O HelenOS usa o kernel SPARTAN, com suporte a SMP, multitarefa e multithread em diversas das arquiteturas mais comuns. Um dos desenvolvedores responsáveis pelo HelenOS, Jakub JerMar, separou um tempo em sua movimentada agenda para responder a algumas de nossas perguntas.
* * * * *
DW: Como o projeto HelenOS começou? Qual foi a motivação para a criação de um novo sistema operacional?
JJ: O HelenOS nasceu como um trabalho de faculdade em 2001. Eu tinha vários trabalhos de matérias diferentes para entregar, e eles se combinaram no que depois se tornaria o HelenOS. Em 2004, outros cinco alunos se uniram a mim para que criássemos um sistema operacional mais completo. O projeto foi concluído em 2006. De lá para cá, alguns de nós continuaram trabalhando no projeto como parte do mestrado (com pesquisa na área de verificação de sistemas operacionais de propósitos gerais), enquanto outros o fazem por hobby. Nos últimos anos providenciamos suporte a sistemas de arquivos, e recentemente também a rede. As coisas andam devagar porque temos que entender como tudo funciona por conta própria para implementar em seguida, e também porque estamos escrevendo código multiplataforma (o que não é o caso do Hurd e do MINIX).
A motivação inicial era mais um exercício do que uma “visão”. Na época, o MINIX e o Hurd pareciam mortos e enterrados, e parecia que nós éramos os únicos trabalhando em um sistema multisservidor. Infelizmente estávamos enganados.
Nos últimos anos, percebemos que nosso design nos permitia escrever pequenos componentes de software (por exemplo, o file_bd ou os drivers de dispositivo do bloco de partições) e combinar esses componentes facilmente em tempo de execução, de acordo com a configuração desejada. É como desenvolver software desenhando imagens de componentes interconectados. Chamamos isso de “o princípio da caixa”. Obviamente, o princípio da caixa gira em torno do fato de que todas as “caixas” se comunicam usando algum protocolo IPC fixo. Duas caixas se comunicam alegremente uma com a outra, desde que o protocolo seja obedecido, usando algo como o polimorfismo de caixas, se você me permite usar um termo POP.
DW: O download do HelenOS é pequeno, com cerca de 5,5 MB. O que vem nesse pequeno pacote?
JJ: A imagem é só um live CD. Por outro lado, ela contém todos os comandos que usamos atualmente, ou seja, mesmo que o sistema fosse instalado em um disco rígido, seu tamanho não seria muito maior.
Não existe uma maneira fácil de se instalar automaticamente o HelenOS em um HD. Temos um tíquete aberto que estamos tentando encaixar no Google Summer of Code. De qualquer maneira, deve ser possível configurar o HelenOS de maneira que ele inicialize do disco rígido, mas você vai ter que cuidar disso manualmente.
DW: O HelenOS é parente do UNIX? Quero dizer, ele tem um sistema de arquivos semelhante, programas em espaço de usuário e contas de usuário?
JJ: Não, não há parentesco entre eles. Algumas partes e os nomes dos comandos podem ser parecidos. Nós temos um servidor central de processos de usuário chamado VFS. Ele multiplexa solicitações ao sistema de arquivos em todos os sistemas de arquivos. No momento, há suporte a TMPFS, FAT16 e DEVFS. Cada sistema de arquivos se registra no VFS ao ser iniciado, e a partir daí pode ser montado/usado. No momento, o HelenOS é um sistema de usuário único e sem segurança. Um aluno está fazendo sua tese de mestrado justamente sobre esse assunto (a inclusão de segurança no HelenOS).
DW: Por que você decidiu criar um microkernel?
JJ: O microkernel nos pareceu mais interessante, e achamos que poderíamos concluí-lo (descontando todo o sistema multisservidor) a tempo, ou seja, em junho de 2006.
DW: Usuários finais e administradores podem usar o HelenOS?
JJ: O uso é muito limitado no momento. Penso em sua utilização como uma espécie de caixa preta, com o HelenOS realizando alguma atividade autônoma, controlando elevadores ou coisa do gênero. Quando corrigirmos um bug no TCP, vai ser possível usá-lo como um terminal remoto, ou criar um pacotão com um processador ARM e vender um minigame no estilo Tetris. Imagino que com algum trabalho ele também possa ser um servidor de arquivos. Mas o nosso objetivo é fazer do HelenOS um sistema para propósitos gerais, então ainda temos muito trabalho pela frente.
DW: É possível compilar o HelenOS no HelenOS?
JJ: Ainda não. Precisaríamos de um port do GCC e do Binutils para o HelenOS.
DW: Obrigado pelo tempo dispensado para responder às nossas perguntas sobre o projeto, Jakub.
* * * * *
O site da equipe do HelenOS tem design simples mas elegante, é fácil de navegar e oferece as informações de maneira simples, ponto a ponto. Muitas informações técnicas estão incluídas, especialmente quanto ao design do HelenOS. Os visitantes do site vão ficar sabendo que o HelenOS contém aproximadamente 325 mil linhas de código (em sua maioria escritas em C), e que no momento ele é mantido por nove desenvolvedores. Mas talvez o mais importante seja a falta de documentação sobre o uso do sistema operacional. Como Jakub mencionou acima, não há muito que um usuário final ou administrador possa fazer com o HelenOS: no momento, ele é mais para programadores e pessoas que queiram aprender sobre kernels. Depois de confirmar que o HelenOS é compatível com computadores Intel de 32 bits (e também ARM, MIPS, PowerPC e Sparc64) eu baixei a imagem ISO do sistema e o botei para rodar em uma máquina virtual do VirtualBox.
HelenOS 0.4.2 – a linha de comando
A inicialização pelo CD mostra brevemente o menu do GRUB, que traz como única opção a inicialização do HelenOS. Poucos segundos depois, o usuário chega a um console meio texto, meio gráfico. No topo da tela há um banner que exibe o nome do sistema operacional, uma série de botões numerados e um botão com o rótulo “Kcon”. Abaixo do banner temos a linha de comando (com o Brain Dead Shell), que diz ao usuário para digitar “help” se quiser obter ajuda. Como essa era minha primeira experiência com o novo sistema operacional, aceitei a sugestão.
O resultado foi uma lista com uns vinte comandos reconhecidos pelo sistema. Os comandos são em sua maioria para a manipulação de arquivos, com nomes semelhantes às suas contrapartes no UNIX: mount, cp, mv, mkdir, ls e touch, por exemplo, soarão familiares para quem estiver acostumado à linha de comando do Linux. Além da lista de comandos da mensagem de ajuda, o HelenOS também tem mais uma dúzia de pequenos aplicativos, que podem ser encontrados no diretório “app”. Há um editor de textos simples, uma versão do comando ping, um programa para iniciar a conexão de rede e Tetris.
Além do diretório “app” temos o diretório “dev” que abriga os dispositivos, como acontece em um sistema UNIX. Há o diretório “cfg”, que contém informações de configuração do sistema operacional, semelhante ao diretório “/etc” do UNIX. O HelenOS é um sistema de usuário único, e o usuário pode criar ou excluir arquivos e executar comandos à vontade. A maioria dos comandos funciona bem e leva aos resultados esperados, embora ainda estejam nos estágios iniciais de desenvolvimento. Agora vamos ao banner no topo da tela: clicando nos botões numerados contidos nele o usuário alterna entre terminais virtuais. Também é possível alternar entre os terminais usando a tecla ALT e as teclas de função, basicamente da mesma forma que um usuário escolhe terminais virtuais no Linux.
Para mim, a parte mais interessante do HelenOS é o kcon, o console de depuração do kernel. Ao clicar no botão “kcon” ou executar o comando, uma tela azul de visual e operação semelhante à linha de comando bdsh se abre. Digitando “help” mais uma vez abrimos um menu com os comandos reconhecidos pelo console. Aqui o usuário pode chamar funções, realizar testes, exibir informações da memória e do processador e monitorar processos. O console do kernel também mostra o tempo de atividade do computador (uptime) e oferece a possibilidade de desligar ou reiniciar o sistema.
HelenOS 0.4.2 – o console do kernel
Por ser um sistema operacional pequeno, o HelenOS não consome muitos recursos. O sistema inteiro roda com menos de 64 MB de memória. Como pouquíssimas tarefas são executadas por padrão, o sistema é rápido e leve. E também é estável. Nos quatro dias em que usei o HelenOS, nenhum aplicativo travou, muito menos o sistema. Pode não haver muita coisa dentro do HelenOS, mas o que está lá parece bem feito. Não consegui fazer algumas coisas no HelenOS: botei a rede loopback para rodar, mas não consegui me conectar à internet. O suporte ao hardware é limitado, e quem quiser experimentar esse sistema operacional deveria fazê-lo em uma máquina virtual.
Essa foi a minha exploração do sistema operacional. Não há gerenciamento de pacotes, contas de usuários e nem compiladores (ao menos que eu saiba). E aí você se pergunta, “por que isso?” O que o HelenOS tem de tão interessante que nós já não tenhamos no Linux, no BSD ou no MINIX? Eu tenho duas respostas:
-
O desenvolvimento do HelenOS ainda está engatinhando. Ele é jovem, se comparado aos sistemas operacionais que eu mencionei. É pequeno, organizado e já recebeu muita pesquisa. Com isso tudo, o HelenOS é uma ótima ferramenta de aprendizado sobre o design de sistemas operacionais, porque não sobrecarrega quem deseja estudá-lo. Ele é leve, altamente portável e não tem elementos remanescentes de décadas passadas.
-
Pelo mesmo motivo que leva as pessoas a montarem miniaturas de carros: pela diversão. Algumas pessoas gostam de contemplar as estrelas; outras coletam selos. Algumas escrevem código para o kernel. Nada disso precisa ter alguma utilidade. Mas com o tempo, quem sabe se o HelenOS não vai ser útil?
No momento, é pouco provável que pessoas que não sejam estudantes da área se empolguem com o HelenOS. Mas o projeto é interessante, e tem tudo para ser um ótimo brinquedo educativo.
Créditos a Jesse Smith – distrowatch.com
Tradução por Roberto Bechtlufft <info at bechtranslations.com.br>
Deixe seu comentário