Yet Another Operating System - a simple and small x86 operating system
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

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.