Giter Site home page Giter Site logo

ruiwentang / eduos Goto Github PK

View Code? Open in Web Editor NEW

This project forked from rwth-os/eduos

0.0 1.0 0.0 19.39 MB

A teaching operating system to get a deeper knowledge in the design of system software

Home Page: http://www.os.rwth-aachen.de

Makefile 10.56% C 71.32% Assembly 3.90% Objective-C 0.65% GDB 0.01% C++ 10.53% Shell 0.70% M4 0.81% Emacs Lisp 0.04% Mathematica 0.01% TeX 0.71% Perl 0.28% Roff 0.39% Yacc 0.01% Awk 0.01% DIGITAL Command Language 0.01% Scala 0.01% RPC 0.02% Batchfile 0.01% Python 0.04%

eduos's Introduction

eduOS - A teaching operating system

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.

  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.

  3. 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)

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

Requirements of eduOS

  • Currently, eduOS supports only x86-based architectures (32 & 64 bit).
  • Following command line tools have to be installed: make, gcc, binutils, git, qemu, nasm, gdb
  • The test PC has to use grub as bootloader.

Building eduOS

  1. Copy on a 64 bit system Makefile64.example or on 32 bit system Makefile32.example to Makefile. 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
          boot
   }

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

  8. stage7 - A simple file system

    Add a virtual filesystem and a prototype of an initial ramdisk

  9. stage8 - HelloWorld in user space

    Add HelloWorld example with a small C library (newlib)

  10. stage9 - FPU & 64bit support

    Add FPU and SSE support, switch to newlib 2.2.0, add basic x86_64 support

  11. stage10 - APIC support

Add support of the Local APIC and preliminary support of the I/O APIC

Usefull Links

  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
  7. https://sourceware.org/newlib/

eduos's People

Contributors

cirosantilli avatar daniel-k avatar noriyotcp avatar orthographic-pedant avatar ruiwentang avatar stlankes avatar stv0g avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.