ScooterOS is a minimalist operating system written in C. It provides basic OS functionality such as memory management, process scheduling, a file system called ScooterFS, and a text-based user interface.
- Memory Management: Simple block-based memory allocation system
- Process Scheduler: Basic round-robin task scheduling
- File System: Custom ScooterFS implementation with basic file operations
- User Interface: Text-based UI with window management
- Keyboard Driver: Full keyboard support with modifier keys
- GDT & IDT: Proper segmentation and interrupt handling
- i686-elf cross-compiler
- GRUB
- QEMU (for testing)
- Clone the repository
- Run make:
make
This will create scooterOS.iso
in the current directory.
To run ScooterOS in QEMU:
make run
When ScooterOS boots, you'll be presented with a boot prompt. Available commands are as follows:
boot
- Start the operating systemhelp
- Show available commandsclear
- Clear the screenabout
- Show system information
After booting, the following user commands become available:
help
- Show available commandsclear
- Clear the screenabout
- Show system informationfiles
- Open file managermake_file <filename>
- Create a new filedir_make <dirname>
- Create a new directorydelete <filename>
- Delete a file or directory
- Boot Process: Uses GRUB multiboot specification
- Memory Manager: 4KB block-based allocation
- Process Scheduler: Simple round-robin scheduling
- File System: ScooterFS with basic file operations
- Device Drivers: Keyboard and basic VGA support
- User Interface: Text-based window management
- Shell: Basic command interpreter
- Architecture: x86 (32-bit)
- Memory Model: Flat memory model with basic segmentation
- File System Block Size: 4096 bytes
- Maximum Files: 64
- Maximum Tasks: 64
- Display: 80x25 VGA text mode
/
├── boot.s # Assembly boot code
├── kernel.c # Main kernel code
├── string.c # String manipulation functions
├── keyboard.c # Keyboard driver
├── ui.c # User interface code
├── memory.c # Memory management
├── scheduler.c # Task scheduler
├── context_switch.s # Assembly context switching
├── gdt.c # Global Descriptor Table
├── idt.c # Interrupt Descriptor Table
├── userspace/
│ ├── userspace.c # User mode implementation
│ └── userspace.h # User mode headers
├── fs/
│ ├── scooterfs.c # File system implementation
│ └── scooterfs.h # File system headers
├── include/
│ ├── fs_common.h # Common file system definitions
│ ├── scheduler.h # Scheduler definitions
│ ├── interrupt.h # Interrupt handling
│ └── io.h # I/O operations
└── Makefile # Build configuration
Contributions are welcome! Please feel free to submit pull requests!
- Follow the existing code style
- Add comments for non-obvious code
- Update documentation when possible to new features
- Implement virtual memory management
- Add support for multiple file systems
- Improve process scheduling algorithm
- Add networking support
- Implement a GUI
- Add support for mice.