Skip to content

harjotsm/victoriaOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VictoriaOS

A minimalistic, bare-metal 32-bit x86 operating system kernel built from scratch in C and Assembly.

This project was started as a way to bridge the gap between Operating Systems class theory and actual, bare-metal implementation.

What I've Done So Far

  • Environment Setup: Configured a native i686-elf cross-compiler toolchain on an M1 Mac (Apple Silicon).
  • The Boot Stub: Wrote a Multiboot-compliant Assembly stub (boot.s) to interface with the bootloader and set up the C stack.
  • The Bare-Bones Kernel: Implemented a minimal C kernel (kernel.c) that bypasses the standard library and prints directly to physical memory (VGA text buffer at 0xB8000).
  • Memory Layout: Configured a custom linker script (linker.ld) to load the kernel at the standard 1MB mark.
  • Build Automation: Wrote a Makefile to automatically assemble, compile, link, and boot the OS inside the QEMU emulator.

Next Steps

  • VGA Text Driver: Upgrade the hardcoded terminal output into a full C driver that handles newlines (\n), cursor movement, and screen scrolling.
  • CPU Architecture: Set up the Global Descriptor Table (GDT) and the Interrupt Descriptor Table (IDT).
  • Hardware Interrupts: Write Interrupt Service Routines (ISRs) to handle keyboard input and timer ticks.
  • Bootable ISO: Pack the kernel into a bootable CD-ROM image (.iso) using GRUB.

Resources & Documentation

This project is being built with the help of the following incredible community resources:

About

building a little OS...

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors