2014-08-10 07:15:55 +02:00
|
|
|
eduOS - A teaching operating system
|
2013-11-13 20:57:41 +01:00
|
|
|
===================================
|
2013-11-13 20:43:43 +01:00
|
|
|
|
|
|
|
Introduction
|
|
|
|
------------
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
2014-08-10 08:36:37 +02:00
|
|
|
0. bkerndev - Bran's Kernel Development Tutorial
|
2013-11-13 21:03:35 +01:00
|
|
|
|
2013-11-13 20:43:43 +01:00
|
|
|
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.
|
|
|
|
|
2014-08-10 08:36:37 +02:00
|
|
|
1. kprintf, umoddu3, udivdi3, qdivrem, divdi3, lshrdi3, moddi3, strtol, strtoul, ucmpdi2
|
2013-11-13 21:03:35 +01:00
|
|
|
|
2013-11-13 20:43:43 +01:00
|
|
|
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
|
|
|
|
--------------
|
|
|
|
|
2014-08-10 08:36:37 +02:00
|
|
|
0. Copy Makefile.example to Makefile and edit this Makefile to meet your individual convenience.
|
|
|
|
1. Copy include/eduos/config.h.example to include/eduos/config.h and edit this config file to
|
2013-11-13 20:43:43 +01:00
|
|
|
meet your individual convenience.
|
2014-08-10 08:36:37 +02:00
|
|
|
2. Build kernel with "make"
|
2013-11-13 20:43:43 +01:00
|
|
|
|
|
|
|
Start eduOS via qemu
|
|
|
|
--------------------
|
2014-08-10 08:36:37 +02:00
|
|
|
0. Install qemu to emulate an x86 architecture
|
|
|
|
1. Start emulator with "make qemu"
|
2013-11-13 20:43:43 +01:00
|
|
|
|
|
|
|
Boot eduOS via grub
|
|
|
|
-------------------
|
2014-08-10 08:36:37 +02:00
|
|
|
0. Copy eduos.elf as eduos.bin into the directory /boot. (cp eduos.elf /boot/eduos.bin)
|
|
|
|
1. Create a boot entry in the grub menu. This depends on the version of grub, which is used by
|
2013-11-13 20:43:43 +01:00
|
|
|
the installed Linux system. For instance, we added following lines to /boot/grub/grub.cfg:
|
|
|
|
|
2013-11-13 21:02:22 +01:00
|
|
|
<pre>
|
|
|
|
### 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.
|
2013-11-13 20:43:43 +01:00
|
|
|
menuentry "Boot eduOS!" {
|
|
|
|
multiboot /boot/eduos.bin
|
|
|
|
boot
|
|
|
|
}
|
2013-11-13 21:02:22 +01:00
|
|
|
</pre>
|
2013-11-13 21:19:59 +01:00
|
|
|
|
2013-11-21 20:28:21 +01:00
|
|
|
Overview of all branches
|
|
|
|
------------------------
|
2014-01-22 15:28:52 +01:00
|
|
|
0. stage0 - Smallest HelloWorld of the World
|
2013-11-21 20:28:21 +01:00
|
|
|
|
|
|
|
Description of loading a minimal 32bit kernel
|
|
|
|
|
2014-01-22 15:28:52 +01:00
|
|
|
1. stage1 - Non-preemptive multitasking
|
2013-11-21 20:28:21 +01:00
|
|
|
|
|
|
|
Introduction into a simple form of multitasking, where no interrupts are
|
|
|
|
required.
|
|
|
|
|
2014-01-22 15:28:52 +01:00
|
|
|
2. stage2 - Synchronisation primitives
|
2013-11-26 09:33:59 +01:00
|
|
|
|
|
|
|
Description of basic synchronization primitives
|
|
|
|
|
2014-01-22 15:28:52 +01:00
|
|
|
3. stage3 - Preemptive multitasking
|
2013-11-27 22:49:30 +01:00
|
|
|
|
2013-11-27 22:53:53 +01:00
|
|
|
Introduction into preemptive multitasking and interrupt handling
|
2013-11-27 22:49:30 +01:00
|
|
|
|
2014-01-22 15:28:52 +01:00
|
|
|
4. stage4 - Support of user-level tasks
|
|
|
|
|
|
|
|
Add support of user-level tasks with an small interface for basic system calls
|
|
|
|
|
2014-11-30 09:05:19 +01:00
|
|
|
5. stage5 - Enabling paging
|
|
|
|
|
2014-12-05 09:43:55 +01:00
|
|
|
Add support of paging. See http://www.noteblok.net/2014/06/14/bachelor
|
|
|
|
for a detailed description.
|
2014-11-30 09:05:19 +01:00
|
|
|
|
2013-11-13 21:19:59 +01:00
|
|
|
Usefull Links
|
|
|
|
-------------
|
2014-08-10 08:32:51 +02:00
|
|
|
0. http://www.gnu.org/software/grub/manual/multiboot/
|
|
|
|
1. http://www.osdever.net/tutorials/view/brans-kernel-development-tutorial
|
|
|
|
2. http://www.jamesmolloy.co.uk/tutorial_html/index.html
|
|
|
|
3. http://techblog.lankes.org/tutorials/
|
|
|
|
4. http://www.os.rwth-aachen.de
|
2014-12-05 09:43:55 +01:00
|
|
|
5. http://www.noteblok.net/2014/06/14/bachelor
|