
O desenvolvedor espanhol conhecido como "cakehonolulu" conseguiu compilar e inicializar o kernel Linux junto com o BusyBox em um SEGA 32X, a expansão do Mega Drive lançada em 1994. O feito foi realizado em um hardware que conta com duas CPUs de 23 MHz e apenas 256 KB de memória RAM.
O SEGA 32X era considerado potente para a época, com dois processadores Hitachi SuperH SH2 de 23 MHz que auxiliavam o processador Motorola 68000 do Mega Drive, além de expandir a paleta de cores para até 32.000 cores. Mesmo assim, fazer o sistema operacional moderno rodar no acessório de 16 bits trouxe desafios.
Entre os principais obstáculos enfrentados pelo desenvolvedor estavam a quantidade limitada de memória RAM, a ausência de sincronização de hardware e a falta de acesso direto a portas UART para comunicação serial. Cakehonolulu também teve que superar bugs de agendador e fez o multiprocessamento simétrico funcionar para que o Linux pudesse usar ambos os núcleos de processamento SH2 de forma cooperativa.
Para alcançar o sucesso, ele usou o kit de desenvolvimento Chilly Willy, o projeto "linuxmd", cartuchos flash baseados em FPGA da Krikzz e documentações antigas sobre a arquitetura dos chips da Hitachi.
Este não é o primeiro projeto retrô de cakehonolulu. Ele também foi o responsável por portar o Linux para o Atari Jaguar, console de 1993. Para o programador, esses ports em hardwares antigos e exóticos não são apenas hobbies, mas servem como um portfólio de engenharia que ele espera usar para se destacar no mercado e conseguir um novo emprego na área de tecnologia.
Outros projetos de Linux em hardware limitado
A comunidade de entusiastas do Linux costuma levar o sistema operacional para hardwares com recursos mínimos. Assim como o jogo Doom é adaptado para qualquer eletrônico com um chip, o sistema do pinguim também é instalado em diversos níveis de hardware. Projetos como esse mostram a versatilidade do kernel Linux, que pode ser compilado para arquiteturas antigas e com pouca memória, funcionando como uma prova de conceito de engenharia reversa e programação de baixo nível.


