11 pontos por GN⁺ 2026-02-04 | 1 comentários | Compartilhar no WhatsApp
  • O Floppinux, uma distribuição Linux leve inicializável a partir de um único disquete (1,44MB), foi atualizado para a edição de 2025 (v0.3.1)
  • A nova versão é baseada no kernel Linux 6.14.11 e no BusyBox 1.36.1, incluindo armazenamento persistente (264KB) e compatibilidade com hardware mais recente
  • Pode rodar com apenas uma CPU Intel 486DX (33MHz) ou superior e 20MB de RAM, com suporte a editor de texto (vi) e comandos básicos de manipulação de arquivos
  • Funciona tanto em hardware real quanto em emuladores (qemu, Bochs, 86Box), e foi estruturado para que o próprio usuário compile o kernel e a toolchain
  • Desde seu lançamento inicial há 4 anos, vem sendo usado para fins educacionais e experimentais, e esta edição foca em manter o kernel atualizado e renovar o tutorial de aprendizado

Visão geral do projeto

  • O Floppinux tem como objetivo criar um sistema Linux mínimo inicializável a partir de um único disquete
    • Foi projetado no formato de um workshop educacional semelhante ao “Linux From Scratch”, permitindo que o usuário modifique e expanda tudo diretamente
  • A distribuição final oferece um ambiente de terminal baseado em texto, permitindo editar arquivos e escrever scripts simples
  • O espaço de armazenamento restante é de 264KB, permitindo salvar diretamente no disquete os arquivos criados pelo usuário

Principais recursos e requisitos

  • Suporte a boot por um único disquete, kernel recente (6.14) e CPU x86 de 32 bits (486DX ou superior)
  • Inclui editor de texto (vi), comandos básicos de manipulação de arquivos (cat, cp, mv, rm etc.) e recursos de scripting simples
  • Permite salvar arquivos no disquete por meio de armazenamento persistente (persistent storage)
  • Requisitos mínimos de hardware: Intel 486DX 33MHz, 20MB de RAM, unidade interna de disquete

Configuração do kernel

  • A versão Linux 6.14.11 é usada por ser o último kernel com suporte completo à CPU i486
  • A configuração do kernel é centrada no mínimo necessário para boot, incluindo initramfs compactado com XZ, suporte à execução ELF e sistema de arquivos FAT
  • Suporte ativado para TTY, dispositivos de bloco e sistemas de arquivos /proc e sysfs
  • O artefato resultante da compilação do kernel é gerado como bzImage (881KiB)

Ambiente de build e toolchain

  • O build foi feito no Omarchy Linux (SO de 64 bits baseado em Arch), mas o mesmo processo pode ser aplicado em sistemas compatíveis com POSIX
  • Usa o compilador cruzado i486-linux-musl-cross para dar suporte a builds voltados ao alvo de 32 bits
  • Usa qemu como ambiente de emulação; o Bochs é usado para depuração, e o 86Box, embora lento, também pode ser uma alternativa

Conjunto de ferramentas baseado em BusyBox

  • Usa a versão BusyBox 1.36.1, oferecendo um conjunto leve de comandos que substitui utilitários GNU
  • Principais comandos selecionados: cat, cp, df, echo, ls, mkdir, mv, rm, sync, vi, mount, umount, clear, test
  • Foi compilado como binário estático (static binary), eliminando dependências de bibliotecas compartilhadas
  • Após o build do BusyBox, o sistema de arquivos raiz gerado (rootfs.cpio.xz) tem tamanho de 137KiB

Sistema de arquivos e configuração de inicialização

  • Inclui uma estrutura mínima de diretórios, além de mensagem de boas-vindas (welcome), inittab e script de inicialização rc
    • O script rc monta /proc e /sys, cria o diretório /home e monta o disquete em /mnt
    • Durante o boot, exibe um banner de boas-vindas e então entra no shell (/bin/sh)
  • As mensagens de boot e os parâmetros do kernel são definidos via syslinux.cfg
    • APPEND root=/dev/ram rdinit=/etc/init.d/rc console=tty0 tsc=unstable

Criação da imagem de boot

  • Após gerar a imagem de disquete de 1,44MB (floppinux.img), ela é formatada e recebe o bootloader (syslinux)
  • O kernel, o sistema de arquivos raiz e os arquivos de configuração são copiados para a imagem
  • Depois de testar o boot com qemu, é possível gravar a imagem em um disquete real
  • Há um aviso sobre o risco de perda de dados em caso de seleção incorreta da unidade

Resumo final

  • Versão: 0.3.1 (dezembro de 2025)
  • Kernel: 6.14.11
  • BusyBox: 1.36.1
  • Tamanho da imagem: 1.44MiB
  • Espaço restante: cerca de 253KiB
  • Comandos suportados: manipulação de arquivos (cat, cp, mv, rm, ls, mkdir), administração do sistema (df, sync, mount, umount), processamento de texto (echo, more), editor (vi)

Significado

  • O Floppinux é uma distribuição ultraleve otimizada para aprender a estrutura do kernel Linux e o processo de boot
  • Implementa em um único disquete um ambiente Linux completo capaz de rodar em hardware real
  • Pode ser usado como uma plataforma de exemplo útil para educação, experimentos com sistemas retrô e iniciação ao desenvolvimento embarcado

1 comentários

 
GN⁺ 2026-02-04
Comentários do Hacker News
  • No Natal, tentei tornar um computador da era 32-bit realmente usável
    O problema não era desempenho, mas sim suporte de software e drivers de vídeo
    Hoje em dia quase ninguém compila pacotes para 32-bit, então até o CLI fica limitado por dependências de 64-bit
    Até no kernel os drivers de GPU antigos foram removidos, sobrando só o modo VGA básico, e até reproduzir MPEG2 fica penoso
    No fim, tentei instalar o Debian 5 adequado ao hardware, mas a ISO da época não dava boot por USB, então desisti
    A conclusão é que projetos assim são divertidos, mas difíceis de usar no dia a dia

    • Testei o Office 97 numa VM e ele ainda é rico em recursos e rápido
      Gosto mais da interface antiga do que da UI em fita, e recursos como WordArt despertam nostalgia
      Os recursos das versões modernas também são bons, mas impressiona como um software de quase 30 anos é tão bem acabado
    • Acho que isso vale mais para Linux
      O NetBSD ainda fornece pacotes e pkgsrc para i386
      Link do repositório pkgsrc
      Eu prefiro modo texto VGA a gráficos
    • O problema não é desempenho, e sim o inchaço do software moderno
      Há aplicativos demais baseados em navegador e programas lentos demais feitos em JS
      É curioso pensar que os LLMs são treinados com esse tipo de código
    • Lembro de rodar um servidor de CS 1.6 no começo dos anos 2000 com um AMD 800MHz e 256MB de RAM
      Ainda rodava junto gateway NAT e servidor web, e funcionava bem
      Hoje, o irônico é que às vezes parece que nem 16GB bastam
    • Recomendo o Plop Boot Manager
      Ele dá boot por disquete ou CD e permite chainloading via USB mesmo em PCs antigos
      Usei num Pentium MMX; era lento, mas funcionava bem
  • A primeira distro Linux que usei foi a Damn Small Linux (DSL)
    Ela foi usada originalmente numa tentativa de portar para o GameCube, mas a equipe principal acabou migrando para Gentoo
    A DSL 2024 atual é baseada no antiX 23 i386 e reduziu pacotes de idioma e documentação para colocar um ambiente desktop dentro do limite de 700MB
    Dá para baixar de novo os arquivos necessários com scripts de restauração
    Site oficial

    • Recentemente revi Puppy Linux, DSL e TinyCoreLinux e criei VMs para sandbox de agentes LLM
      Pelas reviews, Alpine era a distro recomendada, mas não sei bem o quanto isso é confiável
  • Testei em um 486 de verdade, mas o boot falhou
    Instalei 32MB de RAM, mas apareceu o erro “Booting kernel failed: Invalid Argument”
    Suspeito que seja porque a BIOS não suporta a rotina de mapa de memória E820h
    Dá para ver a captura de tela e a
    galeria em hardware real

  • A estratégia de persistência baseada em FAT12 apresentada no texto é uma abordagem inteligente para economizar espaço
    Mas disquetes não têm journaling, então há um grande risco de corrupção de dados se faltar energia
    Em vez disso, usar um sistema de arquivos log-structured (como JFFS2) ou serializar tudo em tar só no momento do desligamento talvez fosse mais seguro

    • Journaling talvez não seja uma vantagem tão grande assim
      Usei FAT por décadas e quase nunca tive corrupção de dados
      Mesmo hoje, a maioria dos dispositivos embarcados ainda usa FAT
    • Mesmo FAT pode implementar estabilidade em nível de journaling com o design certo do driver
      Ajustando a ordem das cópias FAT1/FAT2 e das atualizações de tamanho de arquivo, dá para recuperar após falhas
    • Antigamente não havia nada como initrd, e o sistema inteiro era lido direto do disco
      O Slackware 8 e até versões recentes do NetBSD ainda mantêm essa estrutura
    • Também daria para usar algo como a estrutura squashfs + overlay jffs2 do OpenWrt, com raiz somente leitura e um overlay gravável
    • Para reduzir o risco de queda de energia, acho melhor usar um segundo drive de disquete
  • Lembro do disquete demo do QNX em 1999
    Ele iniciava direto uma GUI e um navegador web a partir de um disco de 1,44MB
    Nunca mais vi algo assim desde então

    • MenuetOS/KolibriOS é um exemplo parecido
      Agora esse tipo de sistema existe de novo
    • xwoaf-rebuild também é dessa linha
    • Quando vi pela primeira vez, pareceu inacreditável colocar GUI e drivers em 1,44MB
    • Hoje em dia, talvez só as tabelas Unicode já estourassem o tamanho
  • Para aumentar os 264KB restantes, basta usar um formato de disquete estendido
    Como nos discos de instalação do Windows 95, dá para usar um formato de 21 setores por trilha e chegar a 1680KB
    As ferramentas padrão de formatação do Linux também conseguem criar esse layout

  • Sinto falta do som do disquete e da expectativa durante o carregamento

    • O coil whine dos notebooks atuais é o que mais chega perto de lembrar aquele “som do computador trabalhando”
      Seria legal poder ajustar isso nas configurações
  • Ri ao ler a frase “gravar um disquete em 5 minutos”

    • Isso com certeza passa uma sensação bem da geração CD-R/RW
  • Fiquei pensando se realmente é preciso formatar o disquete
    Se o syslinux ou o lilo puderem carregar o kernel diretamente dos setores do disquete, talvez ficasse mais simples
    O ext2 talvez até seja menor que o FAT

  • Lembro de receber o Slackware em 1997 como um conjunto de 12 disquetes

    • Naquela época, algumas lojas vendiam disquetes com Slackware por um preço “absurdamente baixo”
      Mas a qualidade não era boa, então instalar era difícil
    • O MuLinux também era uma distro live baseada em disquete, e dava para expandir com disquetes extras para X11 ou pacotes de idioma
    • Na prática, acho que eram mais de 30 discos
      Baixei via FTP num VAX, transferi com Kermit para um PC DOS e instalei, mas tive que repetir por causa de disquetes defeituosos no meio do processo
      A série X era para X11, e as séries A/B/C eram para o sistema básico
    • Provavelmente a que rodava em dois discos era a Puppy Linux
      Usei num sistema Coppermine de 933MHz e depois lembro de ter tentado compilar o X11 após trocar o HDD, mas não consegui