A learning operating system to get a deeper knowledge in the system software design
Go to file
Steffen Vogel e4d215d3d3 Merge branch 'master' of github.com:stv0g/eduOS 2014-12-20 00:48:15 +01:00
arch/x86 fixes wrong return value of page_map(), fixes #2y 2014-12-20 00:47:07 +01:00
documentation fix typo in URL 2014-08-10 07:06:16 +02:00
include/eduos redesign of the IO interface 2014-12-13 18:00:35 +01:00
kernel redesign of the IO interface 2014-12-13 18:00:35 +01:00
libkern redesign of the IO interface 2014-12-13 18:00:35 +01:00
mm get_pages uses the algorithm "first fit", but starts now at the last hit 2014-12-04 21:04:22 +01:00
.gitignore add missing makefile 2013-11-28 11:09:47 +01:00
Doxyfile remove typos 2014-08-10 00:39:51 +02:00
Makefile.example fix issue in the configuration of the UART device 2014-12-19 21:38:42 +01:00
Makefile.inc add the "smallest" HelloWorld of the world 2013-11-08 17:22:37 +01:00
README.md remove typo 2014-12-11 22:47:18 +01:00
debug.gdb Don't strip debug symbols of elf to use as symbol-file in gdb (fix crashing 2014-12-19 11:42:05 +01:00
link.ld remove obsolete line 2013-11-12 21:35:25 +01:00


eduOS - A teaching operating system


eduOS is a Unix-like computer operating system based on a monolithic architecture for educational purposes. It is derived from following tutorials and software distributions.

  1. 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.

  2. 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.

Requirements of eduOS

  • Currently, eduOS supports only x86-based architectures.
  • Following command line tools have to be installed: make, gcc, binutil, git, qemu, nams, gdb
  • The test PC has to use grub as bootloader.

Building eduOS

  1. Copy Makefile.example to Makefile and edit this Makefile to meet your individual convenience.
  2. Copy include/eduos/config.h.example to include/eduos/config.h and edit this config file to meet your individual convenience.
  3. Build kernel with "make"

Start eduOS via qemu

  1. Install qemu to emulate an x86 architecture
  2. Start emulator with "make qemu"

Boot eduOS via grub

  1. Copy eduos.elf as eduos.bin into the directory /boot. (cp eduos.elf /boot/eduos.bin)
  2. Create a boot entry in the grub menu. This depends on the version of grub, which is used by the installed Linux system. For instance, we added following lines to /boot/grub/grub.cfg:
   ### 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

Overview of all branches

  1. stage0 - Smallest HelloWorld of the World

    Description of loading a minimal 32bit kernel

  2. stage1 - Non-preemptive multitasking

    Introduction into a simple form of multitasking, where no interrupts are required.

  3. stage2 - Synchronisation primitives

    Description of basic synchronization primitives

  4. stage3 - Preemptive multitasking

    Introduction into preemptive multitasking and interrupt handling

  5. stage4 - Support of user-level tasks

    Add support of user-level tasks with an small interface for basic system calls

  6. stage5 - Enabling paging

    Add support of paging. See http://www.noteblok.net/2014/06/14/bachelor for a detailed description.

  7. stage6 - Add UART support

    Add basic support of a serial device

  1. http://www.gnu.org/software/grub/manual/multiboot/
  2. http://www.osdever.net/tutorials/view/brans-kernel-development-tutorial
  3. http://www.jamesmolloy.co.uk/tutorial_html/index.html
  4. http://techblog.lankes.org/tutorials/
  5. http://www.os.rwth-aachen.de
  6. http://www.noteblok.net/2014/06/14/bachelor