DevSecOps

27 dez, 2011

Kernel Linux rodando inteiramente sobre Javascript

Publicidade

É conhecida de todos nós a versatilidade que o kernel Linux tem no que diz respeito a plataformas: ele roda em diminutos relógios e celulares, em notebooks e tablets, em enormes mainframes, e nos mais variados itens embarcados: roteadores, televisores, equipamentos industriais, e muito mais.

Essa longa lista de plataformas suportadas ganhou recentemente um integrante adicional, que tem a virtude não apenas de demonstrar uma vez mais a versatilidade do Linux, mas também a maturidade de uma tecnologia fundamental para o desenvolvimento nas plataformas da web: o Javascript.

A complexidade da implementação é alta, mas é fácil de descrever: um desenvolvedor usou o Javascript para criar um emulador de CPU 486 (e os dispositivos adicionais necessários para emular um computador funcional).

Para comprovar a capacidade desse emulador construído integralmente em Javascript, o programador em questão fez algo ainda mais curioso: compilou (com pouca necessidade de adaptação) o kernel Linux para rodar nesse processador virtualizado, e ainda complementou com a criação de uma pequena distribuição contendo os utilitários do Busybox (típico de aplicações embarcadas), o compilador TinyCC e o ambiente QEmacs.

E os aspectos interessantes não acabam na natureza da implementação: eu me surpreendi ainda mais quando soube qual foi a motivação por trás desse projeto tão inusitado.

Nas palavras do próprio autor: “Eu fiz por diversão, só porque os engines Javascript modernos são rápidos o suficiente para fazer coisas complicadas.” Mas o projeto também teve uma utilidade prática: “uma forma de aprender como escrever código otimizado para engines Javascript recentes”.

Se você estiver rodando a versão corrente do navegador Firefox ou Chrome, pode ver esse sistema dar boot e exibir um prompt de comando agora mesmo, bastando visitar o endereço http://bellard.org/jslinux/

Mas, ao acessar a URL acima, não deixe a aparência confundi-lo: não se trata de um terminal, e sim de um sistema Linux completo (ainda que reduzido) rodando integralmente dentro do seu navegador, por meio do Javascript. Você será o usuário root, e assim poderá experimentar tudo o que desejar no ambiente emulado.

O programador responsável pela façanha é um nome conhecido na comunidade: Fabrice Bellard, que tem em seu histórico o pontapé inicial no projeto FFmpeg (fundamental até hoje para boa parte dos aplicativos multimídia em código aberto) e no emulador QEMU.

Os detalhes técnicos estão publicados, e podem ser inspiradores quando você estiver pensando que o aplicativo que você está desenvolvendo tem código complexo demais 😉