4 pontos por GN⁺ 2025-04-27 | 1 comentários | Compartilhar no WhatsApp
  • RetrOS-32 é um projeto de sistema operacional de hobby de 32 bits baseado na arquitetura i386
  • Oferece recursos de gráficos, multitarefa e rede e já foi testado em hardware real
  • Foi escrito em C, C++ e Assembly e oferece compilação multiplataforma via Docker
  • É possível montar um sistema de usuário, executar emulação no QEMU e inicializar em hardware físico
  • O projeto conta com recursos de kernel bem desenvolvidos e uma pilha de rede, com novas funcionalidades sendo adicionadas continuamente

Introdução ao projeto RetrOS-32bit

  • Projeto de desenvolvimento de um sistema operacional de hobby de 32 bits baseado na arquitetura i386
  • Suporta ambiente gráfico, multitarefa e recursos de rede
  • Início do projeto: 12 de maio de 2022

Informações básicas de login

  • Contas de usuário padrão: system, admin, guest
  • A senha de admin é admin, e guest não tem senha
  • Novos usuários podem ser criados com o comando admin create <nome de usuário> <senha>

Principais linguagens e ferramentas de desenvolvimento

  • C, Assembly: kernel, utilitários, sistema de build
  • C++: aplicações em espaço de usuário
  • Make: automação de build
  • Docker: fornece um ambiente de compilação multiplataforma

Hardware testado

  • Lenovo x240
  • Asus Eee PC series
  • Dell Optiplex 780
  • Samsung N150 Plus
  • Samsung NP-NC10
  • IBM Thinkpad a21p

Primeiros passos (Getting Started)

Ferramentas necessárias (Prerequisites)

  • Docker: compilação multiplataforma
  • QEMU: emulação de máquina virtual
  • Ambiente Linux/WSL: build-essential, gcc-multilib, grub2, xorriso, xxd
  • MacOS: é necessário usar Docker (limitação para builds x86 de 32 bits)

Instalação (Installation)

  • Clonar o repositório Git
  • Inicializar os submódulos do Git
  • Gerar o arquivo de imagem com os comandos make compile, make img
  • Executar o emulador QEMU com o comando make qemu

No MacOS e no Windows, recomenda-se usar Docker

Como usar (Usage)

  • Fazer upload do arquivo .img no site copy.sh v86 para executar
  • Também é possível executar diretamente com QEMU: make qemu ou qemu-system-i386 <nome da imagem>
  • Em hardware real, é possível inicializar gravando uma ISO baseada em GRUB em USB/CD

Estrutura do projeto (resumo simples)

  • apps: aplicações em espaço de usuário
  • bin: arquivos binários
  • boot: código-fonte do bootloader
  • drivers: drivers do kernel
  • fs: código do sistema de arquivos
  • graphics: código de processamento gráfico
  • include: arquivos de cabeçalho
  • kernel: principais fontes do kernel
  • lib: bibliotecas
  • net: código de rede
  • rootfs: sistema de arquivos raiz
  • tests: código de teste
  • tools: ferramentas de build e utilitários

Roteiro de desenvolvimento (Roadmap)

  • Bootloader customizado e boot compatível com GRUB concluídos
  • Implementados agendamento preemptivo multithread e separação entre espaço de kernel e de usuário
  • Pilha de rede: Ethernet, IP, ARP, UDP, TCP, DHCP, DNS concluídos
  • Sistema gráfico: gerenciador de janelas, widgets, renderização com framebuffer duplo implementados
  • Sistema de arquivos: semelhante ao Ext2, com suporte a FAT16, leitura/escrita disponíveis
  • Planos futuros: adicionar suporte a web server, FTP, IRC, SSH, Telnet, HTTP e HTML

1 comentários

 
GN⁺ 2025-04-27
Comentários do Hacker News
  • Projetos assim são muito mais agradáveis de ver do que IA. Não parece algo que seria vendido, mas sim um técnico fazendo um trabalho criativo
    • No fim da adolescência, estudei bastante desenvolvimento de SO como hobby. Ainda faço kernels pequenos de vez em quando (recentemente, exibi uma mensagem para minha parceira com um pequeno kernel RISC-V)
  • Um dos projetos de paixão mais impressionantes que vi em muito tempo. Fico curioso sobre por que ele escreveu o próprio compilador C
  • A fonte padrão do sistema deveria ser uma variante mais condensada. O sistema pareceria muito mais refinado
    • Está claro que os caracteres precisam de mais espaço horizontal. Cada caractere deveria ser mais estreito, e o espaço entre caracteres deveria ser o menor possível — com o tamanho de fonte e a resolução usados atualmente, cerca de um pixel já bastaria
    • Não entendo muito de sistemas de fontes, mas suponho que seja uma fonte bitmap monoespaçada. Não sei quão difícil seria fazer essas mudanças dentro da base de código, mas, se for trabalho demais, não se preocupe com isso
    • Estou criando um site de web OS do zero e recentemente reescrevi completamente a classe de fonte. Então essa questão está na minha cabeça
  • Excelente! Se fosse recomeçar hoje, o que faria de diferente?
    • O que pensa sobre a adequação da linguagem para as partes de baixo nível? (por exemplo, ficar em C, usar um subconjunto simples de C++ ou alguma das linguagens mais novas)
    • Com tantos recursos disponíveis, como manteve o projeto interessante sem simplesmente copiar o código de outras pessoas?
  • Parabéns! Como alguém que usou um Commodore PET 2001 em 1977, isso parece fantástico. Eu estava brincando com KolibriOS e MenuetOSx64, mas queria criar meu próprio SO. Você conseguiu! Espero que continue avançando
  • Só queria deixar meus parabéns. Fiquei profundamente impressionado com o projeto. Sou fã de desenvolvimento de SO desde a adolescência, e é ótimo ver essa conquista se concretizando. Fico curioso sobre como o subsistema gráfico é inicializado. Desejo sucesso
  • Vai ser grande e profissional como o GNU? :)
  • Você poderia explicar como esse compilador interage com o sistema operacional? Em especial, tenho curiosidade sobre como ele lida com recursos como structs, e quais são as limitações atuais ou melhorias planejadas nessa área
  • É interessante que vários projetos estejam alcançando marcos ao mesmo tempo. É reconfortante saber que ainda existem pessoas trabalhando profundamente com computadores e compartilhando os resultados
    • Espero que continue avançando
  • Vi traços de Turbo C/QBasic no editor
    • Meus elogios ao projeto