
O maravilhoso mundo da tecnologia avançou a passos largos graças à internet, permitindo a entusiastas como eu a oportunidade de compreender o funcionamento de quase tudo que nos interessa. Contudo, por muito tempo, o funcionamento dos computadores permaneceu um enigma para mim. Essas ferramentas complexas, que são verdadeiras maravilhas da engenharia, acabam sendo subestimadas por estarem tão presentes em nosso cotidiano. Movido pela curiosidade e pelo desejo de aprender na prática, além de passar horas a fio diante do computador, decidi criar o 'Maestro', um sistema operacional semelhante ao Unix, leve e suficientemente compatível com o Linux para uso diário.
O 'Maestro' teve seu primeiro commit em 22 de dezembro de 2018, às 3h18 da madrugada – considerado por muitos o melhor momento para programar. Inicialmente, foi um projeto escolar desenvolvido em C, até que a base de código se tornou complexa demais para manutenção. Foi quando optei pela linguagem Rust, marcando o recomeço do projeto com as lições aprendidas e um foco em inovação e segurança de memória proporcionada pelo sistema de tipos da própria linguagem, reduzindo a responsabilidade do programador e aumentando a do compilador.
No desenvolvimento de um kernel, a depuração é notoriamente desafiadora devido à escassez de documentação, implementações de BIOS falhas, o acesso irrestrito à memória durante a inicialização e a dificuldade em rastrear vazamentos de memória. Apesar de ferramentas como o gdb serem utilizáveis com emuladores como QEMU e VMWare, o comportamento do kernel pode variar e até mesmo levar ao travamento do gdb. Por essas razões, a segurança de memória se tornou uma prioridade, e a escolha da Rust foi considerada a melhor decisão para o projeto.
Atualmente, o Maestro é um kernel monolítico que suporta apenas a arquitetura x86 (em 32 bits). Com 135 de 437 chamadas de sistema do Linux implementadas, o projeto já conta com 48.800 linhas de código distribuídas em 615 arquivos. Além do kernel, o sistema possui componentes como o 'Solfège', um gerenciador de inicialização e serviços; 'maestro-utils', comandos utilitários do sistema; 'blimp', um gerenciador de pacotes; entre outros disponíveis no meu GitHub. Programas de terceiros, como a biblioteca padrão 'musl', o shell bash e alguns comandos do GNU coreutils, já foram testados e estão operacionais.
O sistema ainda está em fase inicial e sua instabilidade desaconselha a instalação em máquinas com dados importantes. Testes foram realizados principalmente em QEMU, VMWare e VirtualBox. Existem duas formas de instalar o Maestro: por meio de um arquivo .iso pré-construído ou construindo o ISO você mesmo. O instalador requer pelo menos 1GB de RAM, uma vez que os pacotes são armazenados na RAM em vez do disco.
Este blog tem o objetivo de explorar tópicos avançados da construção de sistemas operacionais e apresentar soluções para os problemas encontrados. Futuramente, pretendo limpar a base de código, otimizar o desempenho e corrigir vazamentos de memória. Planos incluem suporte a rede e a bibliotecas compartilhadas para avançar na implementação do gerenciador de pacotes. A comunidade pode contribuir com o projeto deixando uma estrela no repositório do GitHub e participando do nosso Discord para troca de feedback, conselhos ou dúvidas.
Confira os últimos vídeos publicados no canal