Executando verificação de segurança...
62

Pitch: 12 Anos e criei meu SO.

Tenho 12 anos e criei meu próprio Sistema Operacional Gráfico do zero (sem Linux) rodando em disco real. O que aprendi nessa jornada.

Olá, pessoal do TabNews! Meu nome é Lucas Prado Coelho, tenho 12 anos e gostaria de compartilhar com vocês o meu maior desafio técnico até hoje: o desenvolvimento do GenesisOS, um sistema operacional gráfico de 32 bits escrito do absoluto zero (em C e Assembly x86) que roda diretamente no hardware emulado.

Sei que este é um projeto estritamente educacional e que um sistema de hobista não tem o objetivo de competir com gigantes como o Windows ou o Linux, mas a quantidade de conceitos de baixo nível, eletrônica e arquitetura de computadores que aprendi ao longo dessa jornada foi simplesmente incrível.

Gostaria de detalhar os principais componentes que precisei programar para fazer o GenesisOS ganhar vida:

🚀 A Arquitetura do GenesisOS

Diferente de muitas distribuições que utilizam o kernel do Linux como base, o GenesisOS roda em modo bare-metal (direto no metal). Ele usa o padrão Multiboot e inicializa em modo protegido de 32 bits.

Aqui estão os pilares que precisei construir para que o sistema funcionasse:

1. Driver de Vídeo e o Modo Gráfico (BGA)

Para sair da tradicional tela de texto preta do VGA, precisei programar um driver para a placa de vídeo emulada do QEMU (a Bochs Graphics Adapter ou BGA).

Ativei a resolução de 1024x768 pixels em 32-bit True Color (milhões de cores) enviando comandos de escrita diretamente nas portas físicas 0x01CE e 0x01CF.

Para evitar que as janelas e o mouse piscassem na tela ao serem arrastados (flickering), implementei a técnica de Double Buffering. Todo o sistema é desenhado de forma extremamente rápida em uma tela invisível de 3MB na memória RAM (backbuffer) e, ao final de cada quadro, o bloco inteiro é copiado ("blitado") para a memória de vídeo física (0xFD000000).

2. Driver de Disco Rígido e o GenesisOS File System (GFS)

Este foi um dos maiores desafios. Em vez de simular arquivos em memória estática, programei um driver de disco rígido IDE/ATA físico usando comunicação de hardware via portas I/O (0x1F0 a 0x1F7) em modo PIO de 28 bits (LBA28).

Criei o GFS (GenesisOS File System). Ao iniciar o sistema pela primeira vez, o kernel lê o Setor 1 do HD virtual (disk.img). Se o disco estiver em branco, ele formata o disco e grava a tabela de arquivos mestre.

O sistema de arquivos é persistente e real: quando você cria um arquivo ou apaga no File Explorer, a tabela é reescrita e gravada fisicamente de volta no arquivo de disco. Ao reiniciar o emulador, as modificações continuam lá!

3. Driver do Mouse Físico (PS/2)

Habilitei a porta auxiliar do mouse no controlador de teclado (0x64). O mouse PS/2 envia dados em ciclos rápidos de 3 bytes (botões clicados, delta X e delta Y).

Usei uma verificação de sincronização baseada no bit 3 do primeiro byte (!(data & 0x08)) para garantir que o mouse nunca perca o alinhamento de leitura e o cursor não saia deslizando sozinho de forma caótica.

4. Relógio CMOS em Tempo Real

Para exibir a hora exata no sistema, programei a leitura do chip CMOS da placa-mãe (portas 0x70 e 0x71). Para não sobrecarregar o hardware com leituras constantes (o que causava lag), implementei um limitador de quadros para ler as horas apenas a cada 30 frames.

🎨 A Interface Gráfica (Aero/Luna Vibe) e os Apps

A interface visual do GenesisOS foi inspirada na era do Windows XP (Luna Theme) e Windows Vista (Frutiger Aero). Desenhei botões com faixas brilhantes (glossy glass) e janelas com cantos arredondados (calculados via raio matemático no laço de pixels).

Docks Modularizados: A barra de tarefas foi substituída por 4 docks independentes (SYSTEM, APPS, POWER e CLOCK) que podem ser arrastados livremente para qualquer canto da tela. Ao soltá-los, eles sofrem uma atração magnética (snapping) e se acoplam suavemente nas bordas.

File Explorer Hierárquico: Permite navegar por diretórios reais do HD (Root / e /documents), além de possuir funções de Criar, Deletar e Renomear arquivos.

Notepad (Editor de Texto): Ao abrir um arquivo .txt no File Explorer, você pode usar o seu teclado físico para digitar textos e salvar as alterações direto no setor físico correspondente do HD.

Genesis Paint: Um aplicativo de desenho em escala de 64x64 pixels onde você arrasta o mouse físico real para desenhar e pode salvar sua arte direto no disco.

🛠️ Como desenvolvi tudo no Windows?

Desenvolver sistemas operacionais no Windows de forma nativa é um desafio conhecido devido ao formato de arquivos executáveis (PE vs ELF). Resolvi isso utilizando a cadeia de compiladores cruzados i686-elf-tools do projeto do Lordmilko no GitHub.

Para agilizar o desenvolvimento, configurei um script em PowerShell (compile.ps1) com loop de Auto-Heal (Auto-Correção):

Toda vez que o GCC 15 exibe um erro de digitação do tipo "did you mean 'sugestao'?", o próprio script analisa o log de erros, substitui a variável incorreta no kernel.c e tenta compilar novamente de forma autônoma!

📦 Código e Download da ISO

O GenesisOS está com o código-fonte totalmente aberto. O repositório contém as instruções de compilação, o script de auto-correção, o arquivo do linker e o bootloader.

📂 Repositório no GitHub:
https://github.com/prilugano992-cmyk/Lucas-s-Projects

💾 Download Direto da ISO Bootável: https://github.com/prilugano992-cmyk/Lucas-s-Projects/releases/download/v1.0.0/genesis.iso

Fiquei muito feliz em concluir esse ciclo de desenvolvimento do GenesisOS. Gostaria de ouvir o feedback de vocês, dicas de baixo nível e sugestões de arquitetura. Muito obrigado!

Carregando publicação patrocinada...
11

Sensacional, meu caro! Meus parabéns pelos projeto 😍🎉

Para quem possa ter curiosidade, estou colocando aqui um print do seu sistema funcionando na minha máquina 🤝


5
3

caraca, não é possivel que o criador do tabnews ta aqui! vlw demais cara, nunca pensei que eu iria ter tanto conhecimento assim.

4
3

Muito bom, que massa ver um jovem dessa idade com tanto a contribuir para nossa área...
Eu com 12 anos estava comendo terra, parabéns demais, projeto phoda!!!
GenesysOS

3
1

Primeiro, te parabenizo por estar escapando dos "algoritmos do vício" que estão destruindo mentes na Internet, buscando uma das melhores coisas que você poderia fazer: aprender.
Segundo, talvez você já saiba disso, mas se realmente gosta do assunto, procure por livros e/ou cursos confiáveis para aprender sobre os conceitos daquilo que está experimentando. Os LLMs ajudam muito, mas podem te passar informações erradas sobre assuntos que são menos disseminados.
E, para finalizar, houve algum motivo especifico para colocar o código fonte em um ZIP? Para os seus próximos projetos talvez seja melhor subir os arquivos diretamente pelo Git. Acredito que que melhore a visibilidade daquilo que você está fazendo, pois muitas pessoas nem olharão o seu código por ser necessário descompactá-lo.

1
2
2

Sensacional ver a galera nova chegando com esse nível de entrega! É muito gratificante ver que tem gente interessada no que realmente importa, sem medo de C e Assembly (arrepio só de ouvir falar). Parabéns pelo empenho, o reconhecimento do Filipe é super merecido. Você tem um futuro brilhante pela frente, mantém essa curiosidade acesa e segue !

2
2

Que isso, parabéns irmão! É um projeto animal de verdade. A maioria da galera hoje em dia ignora completamente o baixo nível kkkkkkk, passa mal só de ouvir falar em Assembly ou porta de I/O. Você construir um SO do zero, bare-metal, nessa idade... bota muito marmanjo da faculdade no bolso. Se continuar nesse ritmo, o céu é o limite. Voa!

2

Maninho, parabéns!
Começar a programar cedo é muito bom, eu comecei quando tinha 11 anos(tenho 13 agora), atualmente eu estou aprendendo C e estudando pra olimpíadas científicas.
Você tem potencial cara!
OBS: É estranho eu dando conselho cono se eu tivesse muita experiência KKKKKKK

1
1
1
1
1
1
0
1
Conteúdo excluído
2
Conteúdo excluído