1 pontos por GN⁺ 2025-01-26 | 1 comentários | Compartilhar no WhatsApp
  • Snowdrop OS é um sistema operacional de 16 bits em modo real para a arquitetura IBM PC, um OS homebrew implementado diretamente do boot à execução de apps usando apenas Assembly x86
  • A distribuição é fornecida como imagem de disquete de 1,44 MB e imagem de CD-ROM, incluindo boot loader, kernel, shell, utilitários, apps de teste e o clone de Tetris aSMtris
  • Um boot loader de 512 bytes localiza o kernel e o carrega na memória, e o kernel configura os vetores de interrupção para os apps antes de carregar o app inicial
  • Inclui gerenciador de arquivos, editor de texto, apps gráficos, interpretador BASIC, assembler x86 e debugger, permitindo desenvolver e experimentar dentro do próprio OS
  • O código-fonte é publicado sem restrições de uso ou modificação, servindo como material de referência para programadores que querem acompanhar diretamente o funcionamento de baixo nível de um sistema operacional

Estrutura implementada diretamente do boot aos apps

  • Snowdrop OS é um projeto que nasceu da curiosidade sobre o que acontece quando o PC é ligado e sobre como funcionam um disco bootável e o interior de um sistema operacional
  • O alvo é um OS de 16 bits em modo real para a arquitetura IBM PC, escrito do zero inteiramente em Assembly x86
  • A imagem de distribuição é oferecida em dois formatos
    • imagem de disquete de 1,44 MB
    • imagem de CD-ROM
  • A imagem inclui, juntos, componentes centrais escritos manualmente
    • boot loader que carrega o kernel na memória
    • kernel que configura os vetores de interrupção para os aplicativos do usuário e depois carrega o app inicial
    • apps de usuário como shell, utilitários, apps de teste e o clone de Tetris aSMtris
  • Se detectar um disco rígido durante o boot, pergunta se deseja instalar e permite instalar o Snowdrop OS no disco rígido
  • Os apps e ferramentas incluídos se estendem a gerenciador de arquivos, editor de texto, aplicativo gráfico, interpretador BASIC, assembler x86 e debugger x86
  • O código-fonte do Snowdrop OS e de seus apps é publicado sem restrições de uso ou modificação

Áreas do código-fonte que valem a leitura

  • Boot loader: cabe em 512 bytes e localiza e carrega o kernel
  • kernel: fornece serviços básicos e abstrações para as aplicações
  • Graphics and GUI framework: base para criar aplicativos gráficos e baseados em mouse
  • x86 assembler: permite criar diretamente aplicações de baixo nível dentro do Snowdrop OS
  • BASIC interpreter: ferramenta para criar rapidamente aplicações de alto nível
  • x86 debugger: pode ser usado junto com o assembler
  • Dynamic data structure libraries: oferece suporte para trabalhar com estruturas de dados dinâmicas como listas encadeadas, árvores e BST
  • All applications: inclui jogos, editor de texto, gerenciador de arquivos, ferramentas e aplicações de teste

Recursos adicionados ao longo das versões

  • O histórico de versões mostra uma evolução contínua de recursos, começando no v1 com tarefa única, shell e aSMtris
    • v2: driver de mouse PS/2 e app de teste de mouse
    • v3: multitarefa básica e suporte a display virtual
    • v4: driver de escrita e exclusão FAT12, gerenciador de arquivos, editor de texto
    • v6: jogo Snake multiplayer baseado em porta serial
    • v16: framework GUI
    • v18: interpretador BASIC e linker
    • v19: instalação em disco rígido
    • v22: assembler x86, suporte a múltiplos discos, utilitário de visualização de arquivos
    • v23: debugger x86
    • v25: memória dinâmica e estruturas de dados
    • v28: GUI de alta resolução, app de desenho, app de desktop
    • v31: biblioteca de runtime e RTL do interpretador BASIC

1 comentários

 
GN⁺ 2025-01-26
Comentários do Hacker News
  • Em meados dos anos 90, fiz um OS hobbyista de 32 bits com GUI parecido, e este livro era leitura obrigatória
    https://www.amazon.com/Developing-32-Bit-Operating-System-Cd...

    • Dá para ler de graça
      https://web.archive.org/web/20140704223135/https://www.ipdat...
      Depois que a Sensory Publishing obteve os direitos, mudou o título e imprimiu mais 1.000 cópias, mas agora restam só cerca de 200 e elas não são mais vendidas. O livro agora está em domínio público, e os exemplares restantes seriam preservados para a Great Alexandria Library
  • Se você se interessa por projetos assim, MenuetOS e KolibriOS também valem a pena. O KolibriOS é um fork que se separou do MenuetOS há bastante tempo
    O MenuetOS também tem uma versão x64 com suporte a SMP, mas essa é de código fechado

    • Quero aprender assembly, mas não achei no Coursera um curso realmente voltado para iniciantes completos. Tenho experiência com Java e estou fazendo um curso de C/C++ para ficar mais próximo do hardware
    • Não entendo por que alguém faria algo assim em código fechado em 2025
      Tirando um OS hobbyista, quem realmente usaria isso numa máquina x64 multicore?
    • Se quiser algo ainda mais insano, tem o TempleOS
  • Fico curioso sobre quais são as ideias modernas mais legais em design de OS hoje, tanto do ponto de vista de usuário quanto do de hacker de OS

    • Está publicado discretamente, mas estou trabalhando em um novo design de kernel. Esta é a 12ª e última reescrita, e já faz cerca de 1 ano de desenvolvimento
      https://github.com/oro-os/kernel
      É um design de microkernel sem usuários nem capabilities, impondo controle de acesso pela camada de entidades do kernel. Portas de memória compartilhada com vários níveis de segurança são o principal mecanismo de IPC, com tipagem no nível do kernel
      Neste momento estou na fase final de validação da utilidade do kernel. Se eu conseguir demonstrar o design, devo escrever sobre ele de forma mais oficial. São 8 anos como projeto mental e uns 4 anos dentro do editor
    • As ideias legais do Plan 9 em geral ainda não foram superadas nem reimplementadas direito
      https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
    • O Fuchsia tem várias ideias bem ousadas. Há microkernel, capability e um sistema de instalação de apps incomum, e parece querer tornar os apps mais parecidos com sites
      https://rtic.rs/ traz ideias bem interessantes numa área parecida com RTOS embarcado
      Para ser honesto, ainda existem recursos do Plan 9 muito à frente do Linux. Por exemplo, https://9p.io/sys/doc/lexnames.html
    • O Genode [1] tem uma abordagem interessante de design de OS por ser um framework. Só não sei quanto assembly ele usa
      [1] https://genode.org
    • Considerando os dois extremos em sentido amplo, acho que a melhor resposta é o Redox OS
      https://redox-os.org/
  • Numa linha parecida, fico curioso sobre quais avanços existem em RTOS de alto desempenho para robótica. Parece ser uma área que recebe relativamente pouca atenção
    ROS/ROS2 não é sistema operacional, e a maior parte também não é algo que eu chamaria de software de alto desempenho

    • x86 e RTOS não combinam muito bem por causa de coisas como SMM, caches complexos e afins. Se houver trabalho de alto desempenho, é bem provável que você prefira controlar isso com um MCU embarcado separado, ou vários
      No mundo embarcado há muitos OS como FreeRTOS, Zephyr e ThreadX, além de várias soluções proprietárias como o Nvidia DriveOS
      Mas OS embarcados costumam ser bem limitados em comparação com um OS geral como Linux. Eles têm escalonador de tarefas, mas muitas vezes não têm processos, sistema de arquivos, carregamento dinâmico de arquivos, ferramentas binárias etc., ou isso é opcional
    • Quem leva isso a sério parece usar QNX ou VxWorks. Infelizmente, a maioria dos projetos de robótica não leva tão a sério assim e roda Ubuntu
    • Não é um RTOS no sentido tradicional, mas RTIC é bom. Pelo que sei, foi desenvolvido originalmente para robótica
      https://rtic.rs
  • Há estes posts relacionados. Será que existem outros?
    Homebrew an OS from Scratch? Snowdrop Shows How It's Done - https://news.ycombinator.com/item?id=39005640 - Jan 2024 (1 comment)
    Snowdrop OS – a homebrew operating system from scratch, in assembly language - https://news.ycombinator.com/item?id=28090574 - Aug 2021 (3 comments)

  • Tecnicamente, é assembly x86

    • Mais precisamente, é assembly x86 de 16 bits em modo real
  • O conjunto de ferramentas e apps criados é impressionante. Mesmo assim, parece que não caiu na tentação do self-hosting
    Para levar o assembler ao nível do nasm, provavelmente seria preciso mais trabalho, ou então aproximar todo o código-fonte do Snowdrop ASM

  • V32, também seria legal ter um compilador BASIC
    Parece que dá para pedir isso como feature

  • Eu gostaria de ver isso portado para esp32. Por exemplo, rodando numa placa ttgo vga32
    Seria legal um OS básico com GUI e shell, com cartão SD, VGA, som, teclado/mouse, Wi‑Fi e Bluetooth. Algo com vibe de Commodore 64 moderno, com impressão via Wi‑Fi mesmo que só em texto, além de navegador estilo lynx, e-mail, IRC, gopher e coisas do tipo

  • Os requisitos de build do Snowdrop OS são impressionantes
    Works on: Windows XP 32bit, Windows 98, Windows 95