• Please review our updated Terms and Rules here

I'm feeling like accomplishing something ambitious...

Building the distro is the easy part; maintaining it is the real time sink. Maybe instead of creating the 10^x+1st new distro, you should look into standing on the shoulders of an existing one.

I'm thinking along the lines of how Ubuntu is magically transformed into Xubuntu (of some other "sub-distro") by installing just one package. Better said: a meta-package which depends upon a whole set of packages which modify the user interface and/or install software specific to that distro.
 
Building the distro is the easy part; maintaining it is the real time sink. Maybe instead of creating the 10^x+1st new distro, you should look into standing on the shoulders of an existing one.

I'm thinking along the lines of how Ubuntu is magically transformed into Xubuntu (of some other "sub-distro") by installing just one package. Better said: a meta-package which depends upon a whole set of packages which modify the user interface and/or install software specific to that distro.
That's kind of what I'm thinking of doing with that linux distro I posted. A few TUI mods, some new software packages, and BAM!! The Vintage Computer Mini-Linux distro. I realise that this is not really important, but, if I may point it out, neither was the Vintage Computer Game that *i forget the name* made. It's just a fun little community thing. If you don't want to do it, you don't have to.
 
Hi Tandy,

Instead of trying to write a YAOS (yet another OS), you might give some consideration to a little proggie called TCC (for Tiny C Compiler)

http://bellard.org/tcc/

This small compiler is fun to play around with, and a good learning tool. Once operational, it will even compile itself. The only problem is you have to bootstrap it onto your system. There are a couple of ways to accomplish this, but I'll leave it as a learning exercise for you.

Just a thot...
 
Ist denn so grosses geheimnis?

Ist denn so grosses geheimnis?

Goethe wrote that long ago. The full translation would be something like "Is it such a big mistery like Man, World and God? Not! But nobody dares to unveal it, hence it's still a mistery".

Writing and OS is not that difficult. It's been done over and again, and has become easier as tools have evolved. Many CS schools have OS courses where students are expected to write an OS or parts of it. Minix, Oberon, VSTa, Linux, OMU, and an endless list of OSes come to mind that were written by one person in a reasonable time. Even venerable old CP/M and the original DOS are said to.

What is costly is writing drivers for all possible existing hardware, and tweaking it for optimal speed. But if all you want is to learn the basics, that is no big deal.

As for the rest of arguments: first, define UNIX. If you mean a full bloated cluster, SMP, distributed, POSIX compliant system it certainly will take more time. If you mean UNIX v6 or v7 making a clone from scratch using only C might be done in a few months by a competent programmer. Even so, with adequate reasoning one might argue if anything beyond that is really needed inside the kernel. For someone wanting to learn, v6 (or MINIX) maybe a sensible project.

Next, define "programming". If you are going to do it in assembler as it was still done in the 70's I agree that it will be more difficult. If you allow using tools, moving to PL/I (or PL/M as for CP/M), C or C++ will certainly help speed up development, mostly so if you rely on Minix or Oberon books. If you add more tools, it becomes even easier: Sprite over Mach took about 6 student months to develop. Using L4 or similars and extra tools will certainly speed things up as well. It all depends on the tools. Even the machine itself can be a tool: a virtual machine like the one used for Nachos in teaching OS development simplifies things a lot as well.

Then, after all that, consider using your brain: even driver development needs not be a nightmare, you can hijack others' drivers, as L4 can do, or as happens with ndiswrapper, or you could implement hooks to a well defined DDK API... You would concentrate on true OS design decisions instead of low level details.

The point is, writing and OS is not difficult, what is difficult is making the right design decisions. And that is why people complains so much about Windows: even when they start from good design decisions MS tends to spoil them later on by bloating their OS and making it needlessly complex and inherently more buggy and difficult to maintain. MS persistently ignores the KISS principle to earn moot/imaginary marketing advantages, and that's their problem.

As for the OP, my advice would be: consider getting a copy of Tannenbaum's MINIX book or Wirth's Oberon books, have a look at the code of other similar OSes for inspiration (like VSTa, OMU, whichever), set up an emulator to start working and google the Net for some recent discussions on OS design principles. Who knows? You may end up with a great new idea that beats us all and brings us to a new OS era. At the very worst you may end up learning something -and maybe even get to write a few lines of code.
 
I was down this road several times, and what I learned then was "you need to know x86 assembly, or you cannot make a bootloader". I now know x86 assembly well enough that I could probably pull off a bootloader - perhaps I will attack writing my own little OS again sometime soon, but not now - first the sound project I mentioned elsewhere (if you don't know what I'm talking about don't worry about it, I'll make a big thread on it when I get going).
 
If you start something, make sure you'll keep us updated with your progress.

I'm still a noob but would like to learn more about the making of an OS.
 
Back
Top