eduOS is a Unix-like computer operating system based on a monolithic architecture for educational purposes, which is developed for the course Operating Systems at the RWTH Aachen Univeristy. It is derived from following tutorials and software distributions.
bkerndev - Bran’s Kernel Development Tutorial
The first steps to realize eduOS based on Bran’s Kernel Development Tutorial (http://www.osdever.net/tutorials/view/brans-kernel-development-tutorial). In particular, the initialization of GDT, IDT and the interrupt handlers are derived from this tutorial.
kprintf, umoddu3, udivdi3, qdivrem, divdi3, lshrdi3, moddi3, strtol, strtoul, ucmpdi2
This software contains code derived from material licensed to the University of California by American Telephone and Telegraph Co. or Unix System Laboratories, Inc. and are reproduced herein with the permission of UNIX System Laboratories, Inc.
JamesM’s kernel development tutorials The first version of eduOS’s virtual filesystem and its initial ramdiks is is derived from JamesM’s kernel development tutorials. (http://www.jamesmolloy.co.uk/tutorial_html/index.html)
newlib The C library “newlib” is used to build user-level applications on the top of eduOS. Newlib is a collection of source code, it is distributed under the terms of several different licenses. All of the licensing is either public domain or BSD-like, which means that even proprietary applications can adopt newlib because its use does not require distribution of the end work’s source code. For convenience, all of newlib’s licenses are gathered up into the file COPYING.NEWLIB, which is included in the directory newlib or in newlib’s source code.
You are able to download the source code at GitHub or to create a clone with following command on your desktop:
git clone https://github.com/RWTH-OS/eduOS
Most parts of the source code is BSD licensed (3-clause). Please look into the source code to find more detailed information.
### BEGIN /etc/grub.d/40_custom ###
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Boot eduOS!" {
multiboot /boot/eduos.bin
boot
}
stage0 - Smallest HelloWorld of the World
Description of loading a minimal 32bit kernel
stage1 - Non-preemptive multitasking
Introduction into a simple form of multitasking, where no interrupts are required.
stage2 - Synchronisation primitives
Description of basic synchronization primitives
stage3 - Preemptive multitasking
Introduction into preemptive multitasking and interrupt handling
stage4 - Support of user-level tasks
Add support of user-level tasks with an small interface for basic system calls
stage5 - Enabling paging
Add support of paging. See http://www.noteblok.net/2014/06/14/bachelor for a detailed description.
stage6 - Add UART support
Add basic support of a serial device
stage7 - A simple file system
Add a virtual filesystem and a prototype of an initial ramdisk
stage8 - HelloWorld in user space
Add HelloWorld example with a small C library (newlib)
stage9 - FPU & 64bit support
Add FPU and SSE support, switch to newlib 2.2.0, add basic x86_64 support
stage10 - APIC support
Add support of the Local APIC and preliminary support of the I/O APIC