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.