Snowdrop OS, um sistema operacional homebrew desenvolvido do zero em Assembly
(sebastianmihai.com)- 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
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...
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
Tirando um OS hobbyista, quem realmente usaria isso numa máquina x64 multicore?
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
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
https://doc.cat-v.org/plan_9/3rd_edition/rio/rio_slides.pdf
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
[1] https://genode.org
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
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
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
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