scaramanga::ScaraOS

ScaraOS

A 32-bit multiboot OS kernel for IA32 (PC/AT) systems, written to teach myself OS fundamentals and have some fun. PCI support, the beginnings of paged memory management, the start of a VFS layer, plus the basic PC/AT stuff — timer, PIC, keyboard, floppy.

The most recent version adds a working inode and dentry cache, pre-emptive multi-tasking, demand loading, and a syscall interface — so far just exec(2), open(2), close(2), read(2), write(2), and exit(2). fork(2) and others wait on the next milestone: context switching to and from userspace. Screenshot. More detail lives on the wiki, kept as a sort of pseudo-blog of development.

Features

  • Mostly written in C
  • Multiboot compliant
  • Pre-emptive multi-tasking
  • Paged memory management, including demand loading of files, anonymous memory areas, and ELF binaries
  • Virtual filesystem switch with inode and page cache
  • EXT2 support
  • Slab allocator
  • Block I/O subsystem
  • Floppy disk controller driver
  • 32-bit protected mode
  • 8254 PIT support
  • 8259A PIC support
  • PCI device enumeration
  • VGA text mode output

TODO

  • Implement dentry cache
  • Buddy allocator for multi-page allocations
  • Then all the fun stuff

Downloads

Version 0.0.6 (latest)source · bootable floppy image
Version 0.0.5 — source · bootable floppy image
Version 0.0.4 — source · bootable floppy image
Version 0.0.3 — source · bootable floppy image
Version 0.0.2 — source · bootable floppy image
Version 0.0.1 — source · bootable floppy image

Follow development:

git clone git://github.com/giannitedesco/scaraOS.git

License

GNU GPL v3. Copyright © 2001–2010 Gianni Tedesco, except where otherwise stated in the source code.