Netboot.me: transforme o boot via rede em boot via internet

Netboot.me: transforme o boot via rede em boot via internet

Netboot.me turns netboot into internetboot
Autor original: Koen Vervloesem
Publicado originalmente no:
lwn.net
Tradução: Roberto Bechtlufft

logo

Os computadores recentes oferecem suporte à inicialização pela rede através do PXE (Preboot eXecuting Environment, ou ambiente de pré-execução), uma extensão do firmware que permite ao computador inicializar um sistema operacional armazenado em um servidor remoto usando uma interface de rede. No entanto, esse recurso exige que o usuário configure um servidor de inicialização PXE com uma ou mais imagens de sistemas operacionais. Há algumas semanas, Nick Johnson lançou um novo serviço que usa o PXE para inicializar o programa de instalação de várias distribuições Linux populares e do FreeBSD diretamente pela internet, sem a necessidade de qualquer servidor de inicialização PXE local; chama-se netboot.me.

Basicamente, o netboot.me oferece um gerenciador de inicialização que permite ao usuário instalar a versão mais recente de vários sistemas operacionais de código aberto a partir de uma única mídia. O gerenciador de inicialização usa o gPXE (GPL PXE); a imagem de 1 MB pode ser instalada em um pendrive USB, em um disquete ou gravada em um CD. A partir daí, qualquer computador que iniciar por essa imagem obtém a lista atual de sistemas operacionais disponíveis do site do netboot.me e a exibe no menu de inicialização. Quando o usuário escolhe um sistema operacional no menu, o instalador é baixado via HTTP ou FTP e começa a rodar. No momento, isso só funciona com uma conexão Ethernet, mas o suporte a Wi-Fi está sendo desenvolvido com base em um projeto do Google Summer of Code para implementar drivers 802.11 no gPXE.

No momento, o menu de inicialização apresenta instaladores para:

  • FreeBSD 7.2
  • Debian Lenny e Debian Testing
  • Fedora 11
  • openSUSE 11.1
  • Ubuntu 9.04 e 9.10 alpha

Ele também dá acesso a alguns sistemas operacionais e ferramentas que podem ser úteis. O usuário pode inicializar os live CDs do Tiny Core Linux, do Micro Core Linux 2.2 e do MirOS BSD. Outras ferramentas disponíveis são a ferramenta de particionamento de disco GParted Live, o live CD de resgate e particionamento Parted Magic 4.4, o Memtest86 e o Memtest86+ para testar a memória do sistema e um módulo do Syslinux, o Hardware Detection Tool, que exibe informações de baixo nível sobre o hardware.

798d3c4e

Por um lado, o gerenciador de inicialização oferece ao usuário a possibilidade de instalar o FreeBSD e algumas das distribuições Linux mais populares sem a necessidade de baixar e gravar uma imagem de instalação. Por outro, o gerenciador de inicialização do netboot.me inclui uma leva de ferramentas de diagnóstico, particionamento e resgate que são muito úteis. Os usuários geralmente não baixam ferramentas de resgate até precisarem de uma, e aí já pode ser tarde demais. Por isso, as ferramentas do menu do netboot.me podem poupar tempo – e sistemas.

URLs de chainload

O netboot.me chama os sistemas operacionais disponíveis de “chainload URLs” (URLs de chainload), que identificam unicamente cada imagem de sistema operacional. O instalador do Debian Lenny para x86, por exemplo, está localizado na URL de chainload http://netboot.me/2013. Essa página da web lista a imagem do kernel, o ramdisk inicial e os argumentos do kernel (vga=normal — quiet). Os detalhes variam um pouco entre as distribuições: no instalador PXE do Fedora 11, o usuário precisa digitar uma URL que contenha a imagem de instalação do Fedora, enquanto o instalador do openSUSE 11.1 já traz a URL do repositório como argumento do kernel. O site netboot.me lista os sistemas operacionais disponíveis em subcategorias.

Na verdade, o usuário nem precisa da imagem do gerenciador de inicialização: a maioria dos computadores recentes é perfeitamente capaz de inicializar pela rede sem um disco de boot. Isso pode ser usado para inicializar automaticamente o gerenciador de inicialização do netboot.me, que por sua vez inicializa via rede o gerenciador de inicialização da distribuição desejada via HTTP ou FTP. Para inicializar um sistema dessa forma, via rede e sem discos, o usuário só precisa alterar as configurações do seu servidor DHCP local para que retorne as informações exigidas para inicializar por TFTP. Como o TFTP não é lá um dos protocolos mais confiáveis pela Internet, o usuário também pode hospedar sua própria cópia da imagem de inicialização em um servidor TFTP local. Para instruções, consulte a página Getting Started (em inglês).

O melhor de tudo é que o netboot.me é “hackeável” e está aberto a contribuições. Qualquer usuário pode adicionar configurações de inicialização personalizadas ao site, embora isso infelizmente exija o login usando uma conta do Google. O usuário envia as URIs da imagem do kernel e do ramdisk inicial, junto a eventuais argumentos do kernel necessários. O netboot.me pode inicializar qualquer kernel do Linux e qualquer outra imagem de inicialização padrão, além de imagens de disco e de CD. Para inicializar a configuração personalizada a partir do disco de boot do netboot.me, o usuário abre a linha de comando do gPXE com CTRL-B pouco antes do menu do netboot.me aparecer, digita autoboot e em seguida chain http://netboot.me/XXXX com a URL de chainload adequada à configuração personalizada.

Segurança

As implicações de segurança do netboot.me também precisam ser levadas em conta. Que garantia tem o usuário de estar obtendo de fato o gerenciador de inicialização e a imagem de SO solicitada? De modo geral, as imagens do menu netboot.me se originam ou do static.netboot.me, onde Nick Johnson já baixou e verificou pessoalmente os arquivos, ou dos sites oficiais das distribuições, como do ubuntu.com. Se o usuário confia no netboot.me e nas fontes originais, só resta preocupar-se com ataques de intermediários. Johnson acha que essa é uma preocupação legítima, e considera dois componentes que poderiam ter a segurança aprimorada: o download dos scripts e do menu do netboot.me, e o subsequente download da imagem de inicialização. A princípio, o primeiro pode ser protegido pelo uso do SSL, que é suportado pelo gPXE. Infelizmente, Johnson vê dois grandes problemas no suporte a SSL do gPXE:

Ele não realiza verificação de certificado, e seu gerador de números aleatórios é fraco (e estou sendo gentil, pois ele sempre enche o buffer com bytes 0x01). Os dois problemas podem ser resolvidos, obviamente (ainda que seja difícil obter dados legitimamente aleatórios na inicialização), mas tenho algumas reservas quanto à integridade da implementação do SSL no gPXE e à minha capacidade de torná-lo seguro. Tendo isso em mente, estou pensando em uma abordagem mais simples: assinar respostas do netboot.me com uma chave RSA, pondo a assinatura no cabeçalho, e verificando-a no gPXE. O gPXE já conta com a implementação de RSA; portanto, em princípio, é bem simples fazer isso.

O segundo componente (o download da imagem de inicialização) é muito mais simples: torná-lo seguro exigiria a adição do suporte à verificação de hashes de conteúdo das imagens baixadas. Isso já está em grande parte preparado, e de acordo com Johnson, também seria simples de implementar.

Hospede seu próprio netboot.me

O código do netboot.me é licenciado sob uma licença BSD. A maior parte server side é código Python, feito para rodar no Google App Engine. O gerenciador de inicialização é uma versão modificada do gPXE. Uma desvantagem óbvia do netboot.me é sua dependência do Google App Engine. Embora não haja esforços em atividade para desassociar o netboot.me do App Engine, Johnson diz que isso não deve ser muito complicado:

O netboot.me não usa o armazenamento de dados de maneira particularmente complexa, então deve ser muito fácil inserir uma camada de abstração a ele para que seja executado em um banco de dados relacional. Dentre as alternativas, há movimentos como o AppScale e o Twisted AE, que facilitam a execução de aplicativos feitos para o App Engine em ambientes de terceiros. Para uma solução de rede puramente local, no entanto, a execução pelo dev_appserver do SDK deve ser mais do que satisfatória.

Colaboração

E como o netboot.me se compara às outras soluções? Existe o Billix, um pendrive USB multi-inicialização com instalações de rede para várias distribuições Linux. A abordagem dele é diferente: O Billix hospeda no pendrive USB as ISOs de instalação via rede, enquanto o netboot.me realiza a inicialização no computador do usuário para em seguida obter as ISOs completas das distribuições pela internet, via PXE.

Outro competidor mais direto do netboot.me é o boot.kernel.org (BKO), que é um projeto do Google Summer of Code para o gPXE. Embora pareça menos bem-acabado do que o netboot.me e ofereça uma quantidade menor de distribuições Linux no momento, ele tem uma vantagem: pode ser instalado facilmente em um servidor local. O administrador pode baixar as imagens ISO, e todos os usuários da rede local poderão instalar as distribuições Linux disponíveis via PXE. Como as ISOs são armazenadas na rede local, o processo é bem mais rápido do que o realizado pela internet com o netboot.me. Isso não é um mero conforto, porque por diversas vezes a experiência com o netboot.me é arruinada por downloads lentos das imagens dos sistemas operacionais.

Os projetos também possuem um foco levemente diferente. O BKO é mais voltado para as distribuições “live” que usam iSCSI ou HTTPFS para a montagem dos sistemas de arquivos, enquanto o netboot.me se concentra mais em inicializar via rede imagens que já existam. De acordo com Johnson, os dois projetos estão de olho em uma oportunidade de colaborarem um com o outro. Para contribuir nesse sentido, ele já adicionou uma entrada no menu, na categoria de ferramentas, que carrega o menu do boot.kernel.org de dentro do menu do netboot.me.

Conclusão

Para testar distribuições novas, ou mesmo sistemas operacionais completos, certamente é conveniente poder inicializar diretamente pela internet. Mas, para tarefas de recuperação de sistemas, pode-se dizer facilmente que ele é indispensável. Poder acessar uma grande quantidade de distribuições atualizadas, live CDs e ferramentas de recuperação sem ter que manter uma pilha de CDs ou outros tipos de mídia, é algo que os usuários e administradores de sistemas podem achar muito útil.

Créditos a Koen Vervloesem – lwn.net
Tradução por Roberto Bechtlufft <info at bechtranslations.com.br>

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X