ToyOS Educational Operating System Kernel
The ToyOS project is an educational kernel that provides a simple
pedagogical view of an operating system kernel. It's great for self
study and aims to be a low-complexity version of the Linux kernel.
The aimed architecture is the Intel x86 although I have tried to keep
the directory structure port-friendly. If anyone is interested in
porting ToyOS to a different architecture, you can contact me (see
Contact section below).
Currently, the kernel has the following features implemented:
* Multi-architecture friendly directory structure
* Basic initialization for x86 processor
* GRUB Bootloader support
* Paging and kmalloc/kfree implementation
* Interrupt handling (timer interrupt handler implemented)
As can be seen from the meagre list above, the implementation is quite
basic and serves well in an educational environment. The kernel will
always aim to adhere to the KISS (Keep It Simple Stupid!) principle when
making design decisions. If you are interested in contributing code, see
the Contacts section below.
The Twincling Technology Foundation is the umbrella foundation for this
project and has graciously provided the web hosting for it (among other
things). You can find out more about the Twincling Technology
Foundation on their website at http://www.twincling.org
Being an operating system kernel, there is no way to "run" the software.
You need to compile it and boot it from GRUB on your machine. For the
sake of simplicity and ease of testing, I have included a QEMU floppy
image and scripts to update the image as well as to run QEMU.
$ cd src
$ ./test # Clean, recompile, update image and run QEMU
The Makefiles are hideously recursive and if anyone knows how to
implement non-recursive Makefiles in a human way, please let me know :-)
Currently, the only form of documentation is the sparse commenting in
the source files. I will be adding verbose comments soon to keep with
the "educational" spirit of the project!
The best way to contribute to the project is to download it, try it out,
read the code and provide me with feedback on how I can improve it or
where you had trouble understanding the code.
If you are a programmer, you can send me patches for the code! (see
Contact section below). Style guidelines should be adhered to. If they
are not, expect your code to be modified (or possibly rejected!) before
being released publicly!
Please adhere to human understandable English when communicating and
refrain frm usng shrt lang fr rqsts nd such kthxbye!
Feedback and patches can be sent to any of the following (preferably
tried in the order specified below):
- contribute at twincling dot org
- manohar at twincling dot org
- manohar dot vanga at gmail dot com