Giter VIP home page Giter VIP logo

oudados's Introduction

oudadOS Build Status

An Open-Source Lightweight Operating System Built from Scratch for Educational Purposes with C++ and Assembly.

alt text

Description:

oudadOS is an operating system built from scratch because of my interest in operating systems and my passion to live such hard, great, and rewarding learning experience. oudadOS is designed in an object oriented manner for x86 architectures. You might find some parts of the operating system that are not written in an elegant way. You might find some mistakes in the Object Oriented design that I followed. The ultimate purpose of coding it from scratch is learning.

Structure:

oudadOS has 3 main parts as you see in the repository.

  • lib: .h files - Libraries that are used by the sec files
    • com: hardware communication libraries
    • common: common libraries used by different .cpp files
    • drivers: abstraction of devices' drivers (e.g keyboad, mouse...)
  • src: .cpp files - Implementations
    • com: hardware communication implementations
    • drivers: abstraction of devices' drivers implementations

Build:

For this repository, I used travis-ci, so the makefile genrates just the binary file of the operating system. If you want to generate an ISO image, please refer to MakefileISO file in this repository. Just copy the content of MakefileISO to Makefile then follow the steps below.

  • Generate .iso image for oudadOS:
$ make oudadOS.iso
  • Clean up:
$ make clean

Please note that I am developing oudadOS on a guest VM (Ubuntu Xenial Xerus) on a host (masOS Sierra) with a shared folder between them. I am testing it on a VM machine on my host. You can have a different scenario like developing and testing it in the same machine

License:

oudadOS is free software. You can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 3. We used grub as a bootloader which is under GNU General Public License 3 as well. Please refer to LICENSE for more information.

Acknowledgements:

I would like to thank Mr. Viktor Engelmann for explaining well the hard concepts of OSs on YouTube in "Make your own OS" series. I would like to thank also www.osdev.org for the great documentation and articles about OSs. I would like to thank OSDEV reddit community for sharing the knowledge for free. I would like to thank Dr. Stallings thanks to his great reference "Operating Systems: Internals and Design Principles" and Mr. Robert Love thanks to his amazing reference "Linux Kernel Development".

Screenshots:

  • Bootloader:

alt text

  • Main Screen:

alt text

  • Writing on the Screen:

alt text

  • PCI & Mouse:

alt text

Contribution:

If you detected any bugs or you want to suggest some improvements in oudadOS, please feel to submit a pull request or contact me by email ahmed [at] lekssays [dot] com. If you faced a critical error in VirtualBox, please move kernelStack: tag in line 15 in loader.s to the bottom (after line 30). This change is caused by the differece in Assemblers. If you are using Ubuntu Xenial Xerus, this should be fine.

Improvements:

  • Memory Segments and Global Descriptor Table (done)
  • Hardware Communication and Ports (done)
  • Interrupts (done)
  • Abstraction for Drivers (done)
  • PCI (done)
  • Graphics and GUI (pending)
  • Multitasking (done)
  • Dynamic Memory Management
  • Networking
  • Ports and Protocols
  • System Calls
  • Partition Tables
  • File Systems

oudadOS is made with alt text

oudados's People

Contributors

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