Menu

Tree [4f92f3] master /
 History

HTTPS access


File Date Author Commit
 docs 2010-02-02 Manohar Vanga Manohar Vanga [d48569] Initial commit by Manohar Vanga
 src 2010-02-15 Manohar Vanga Manohar Vanga [4f92f3] removed warnings
 AUTHORS 2010-02-04 Manohar Vanga Manohar Vanga [6d1c5b] Modified dir structure. Added AUTHORS file
 LICENSE 2010-02-04 Manohar Vanga Manohar Vanga [494c50] Added license information to all files (GPL v2)
 README 2010-02-04 Manohar Vanga Manohar Vanga [818a8e] More info in README files
 floppy.img 2010-02-02 Manohar Vanga Manohar Vanga [d48569] Initial commit by Manohar Vanga
 initrd 2010-02-06 Manohar Vanga Manohar Vanga [0cbed2] Added initrd loading and checking. Added blank ...
 run_qemu.sh 2010-02-07 Manohar Vanga Manohar Vanga [d5e3de] Some more tries to fix multitasking
 test.sh 2010-02-02 Manohar Vanga Manohar Vanga [d48569] Initial commit by Manohar Vanga
 update_image.sh 2010-02-06 Manohar Vanga Manohar Vanga [0cbed2] Added initrd loading and checking. Added blank ...

Read Me

ToyOS Educational Operating System Kernel
=========================================

Introduction
------------

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

Installing/Running
------------------
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.

	Compiling:
		$ cd src
		$ make
	
	Running:
		$ ./update_image.sh
		$ ./run_qemu.sh

	All-in-One:
		$ ./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 :-)

Documentation
-------------
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!

Contributing
------------
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!

Contact
-------
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