Giter Site home page Giter Site logo

doytsujin / yaos Goto Github PK

View Code? Open in Web Editor NEW

This project forked from haltode/yaos

0.0 1.0 0.0 235 KB

Yet Another Operating System - a simple and small x86 operating system

License: MIT License

Shell 0.09% Makefile 1.30% Assembly 2.13% C 96.13% C++ 0.36%

yaos's Introduction

yaos

The name yaos stands for Yet Another Operating System. This is my first attempt at making a simple and small x86 operating system to learn more about OS development.

How to use yaos?

Requirements

To compile and run yaos, you will need:

  • A cross-compiler for i686-elf
  • A virtual machine to run the OS (I used qemu in this project)

Running yaos

Simply use the Makefile provided as follows:

# Compile the OS
$ make

# Run yaos in a virtual machine (qemu)
# You may need to use the manual command according to your system:
# qemu-system-YOUR_ARCH -cdrom yaos.iso
$ make run

What you should see

yaos running in qemu

Resources used for this project

Lessons learned

Since this is my first attempt at making an operating system, I learned a lot about OS development. But, I also made a tons of mistakes, and because I am planning on creating another OS in the future, here are some tips for my future self:

  • Plan ahead: since I had no idea of what I was going to implement and how, I pretty much had no design for my OS, and I thought I didn't really need one because I wasn't aiming for a big operating system after all. But, I was totally wrong. Planning the design of the OS and the implementation of its components is a necessity, otherwise you will have a hard time building it because of huge design flaws. I often had to rewrite parts of the kernel, but at a point, it would need to be rewritten from scratch because of this lack of planning.
  • Code everything by yourself: GRUB is great, but I would have learned even more by doing a small bootloader by myself, and I would have been much more in control of my OS. Also, don't follow specific tutorials too much, since almost all of them are either outdated, incomplete, or simply wrong, and sticking too much to one tutorial's design is again a mistake. Read as much documentation and information on the topic as possible, plan the implementation, and then code it your way.
  • Take time for testing: each component should be heavily tested/reviewed before moving on to another one, and you should know the limits and the possible improvements you can make on components.

License

All the source code is licensed under the MIT license.

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.