DevSecOpsARTIGO

Kernel Linux rodando inteiramente sobre Javascript

É conhecida de todos nós a versatilidade que o kernel LinuxLinux34 conteúdosKali Linux em um Servidor VPS: como, quando e por que usar?DevSecOps · dez 2024Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2Dev (Back & Front) · jul 2020Criando uma WebApi utilizando .NET, Linux e VSCodeDev (Back & Front) · ago 2019Ver tudo em DevSecOps 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 JavascriptJavaScript116 conteúdosJavaScript em 2020: O que esperarDev (Back & Front) · jan 2020Campos públicos e privados em classes JavaScript – O que vem por aí no ESNextDev (Back & Front) · abr 201929 anos de JavaScript!Dev (Back & Front) · jan 2025Ver tudo em Dev (Back & Front) .

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 😉 

trabalha com Planejamento Estratégico e Gestão. Previamente, atuou profissionalmente como gestor de TI e, no campo tecnológico, como administrador de rede e sistemas, desenvolvedor web e na área de pesquisa e desenvolvimento em automação de telecomunicações. Tem participação atuante na comunidade Linux brasileira desde 1996, mantendo o site BR-Linux. Também escreve para o blog do developerWorks Brasil, da IBM, e para outros sites e periódicos impressos. Também é fundador e mantenedor do Efetividade.net, dedicado à produtividade pessoal. No twitter, é @augustocc.

Ver perfil