Um kernel experimental escrito do zero, focando em modernidade e segurança de memória. Inicialmente concebido em C, o projeto foi migrado para Zig para explorar recursos de linguagem moderna em desenvolvimento de baixo nível (OSDev).
O objetivo é construir um pequeno sistema operacional x86_64 compatível com Multiboot, implementando gerenciamento de memória, interrupções e drivers básicos.
Estado atual do kernel executando no QEMU, exibindo a inicialização do Memory Management Subsystem.
O kernel está na fase de Preparação para a troca de contexto.
- Bootloader: Suporte a Multiboot (GRUB) via Assembly (
multiboot_header.asm). - Kernel Entry: Ponto de entrada migrado para Zig (
kernel/main.zig). - Driver VGA: Implementação completa em Zig com suporte a cores e strings (
kernel/drivers/vga.zig). - IDT (Interrupt Descriptor Table): Tratamento básico de interrupções e exceções implementado em Zig.
- Multiboot Parsing: Leitura do mapa de memória fornecido pelo BIOS/GRUB.
- PMM (Physical Memory Manager):
- Alocador de páginas físicas (4KB).
- Uso de Bitmap para rastrear memória livre/ocupada.
- Proteção de memória do Kernel e do próprio Bitmap.
- VMM (Virtual Memory Manager): Paginação e mapeamento de memória virtual.
- Heap Allocator: Implementação de
kmallocekfree. - GDT (Global Descriptor Table): Refinamento da GDT em Zig.
- PIC: Gerenciar interrupções de hardware.
- Multithreading: Gerenciamento de Threads e trocas de contexto.
Para compilar este projeto, você precisará das seguintes ferramentas instaladas no seu Linux (Manjaro/Arch ou similar):
- Zig (Compilador principal)
- NASM (Assembler para os stubs de boot)
- QEMU (Emulador para testes)
- GRUB / xorriso (Para criar a imagem ISO bootável)
- Linker (
ld) (Geralmente parte do binutils)
O projeto utiliza um Makefile para facilitar o fluxo de desenvolvimento:
# Compilar todo o kernel e gerar a ISO
make all
# Compilar e executar imediatamente no QEMU
make run
# Limpar arquivos de build (.o, .elf, .iso)
make clean
# Executar em modo Debug (aguarda conexão do GDB)
make debug
/
├── kernel/
│ ├── arch/x86/ # Código específico de arquitetura (Assembly/GDT/IDT)
│ ├── mm/ # Gerenciamento de Memória (Heap, VMM, PMM, Bitmap)
│ ├── drivers/ # Drivers no geral (Teclado, Vídeo, Timer)
│ ├── utils/ # Utilitários do Kernel (Logger)
│ ├── main.zig # Ponto de entrada do Kernel
│ └── multiboot.zig # Parsing do cabeçalho Multiboot
├── linker.ld # Script de Linkagem
└── Makefile # Automação de build
