I am writing this thread not to ask how to make an operating system, but to say how to make an operating system. There always seems to be new threads created asking how to make an operating system.
The simple answer
There is no simple answer. Making an operating system is hard work. You need to do research - lots of it. Try OSDev (http://wiki.osdev.org/) - that has tonnes of information to use, from bootloaders to sound drivers.
You can’t start by designing an GUI with amazing new features. You need to think about how your system boots, what it loads first and how it works (generally). Operating Systems take a lot of work and there is a lot of theory involved.
I think that the best way to start is by looking at how some simple operating systems work. MikeOS is a good operating system - it fits on a floppy disk (yes, that right, a floppy disk,, it is a good and easy way to boot an operating system) and uses system calls for functions. It uses the BIOS to do most tasks, such as drawing to the screen. It is mainly text based, but is pretty good for what it is. It is open source and provides a good set of system calls for developers. Have a look at http://mikeos.berlios.de/ if you want to try it out.
Starting from scratch
Here is a list of what you need to do:
- Create 2 stage bootloader if you want to use the Operating System on a FAT or NTSF file system.
- Create a Kernal - Basically a program that talks to the hardware. This should include a CLI (Comand Line Interface)
- Create a API (Application Programming Interface) - Its in the name.
- Create a GUI (Graphical User Interface)
- Create a bunch of drivers for mouses, keyboard, sound systems, disk drives, etc, etc, etc..
- Sell it and make a million
You will be looking at 2-5 years of work, a lot of research, a developer team of clever people, etc...
I think you get the point, an operating system is one of the hardest things you can make when it comes to computers.
So, if you really want to make an operating system, go ahead. I am not stopping you, nor am I sugar coding this.
Hope this helps, respond if there is something wrong or a step I have missed out.