(Oh - the title stands for Sean's Operating System - a name which I certainly never want to actually GIVE to this project)
So as some of you know I've been looking at making my own OS for a while now. I am aware this may be a very long-term project - I'm happy spending 4 years on it before I call it "done for the time being". The more I look at what I actually want to do, I'm liking the idea more and more of taking an existing kernel, stripping it down, and building it back up to where I want it. I'm really not that interested in how the memory manager and scheduler work - so long as they work. What I want this project to help me learn is about how Operating Systems communicate with the rest of the world - so I'd rather spend my time redoing the device drivers and interface!
When I was thinking about doing this from scratch - I really liked the microkernel concept. To me it seems safer and more stable - and the ability to add and remove functionality at run-time is something I'd really like to have. Since the only microkernel that has a lot of documentation and a decent community for the x86 right now seems to be MINIX (I haven't heard good things about MACH - plus it's not open source - and the GNU version isn't ported to x86 yet) - I'm willing to consider monolithic OS's now!
So it basically comes down to Linux or BSD. Linux is winning for a variety of reasons. I like NetBSD's emphasis on portability - but uClinux doesn't need an MMU, and I've heard that the Linux kernel itself is ported to more architectures - it just isn't taken advantage of so much in a single distribution.
In any case - I'm going to go through the LinuxFromScratch book to learn more about the process and the kernel - I very well may start over after going through it. But one thing I'd like to do is use run-time-loadable kernel modules for anything I can. Kind of have just a minimal kernel run, and then have the drivers and other processes run outside of that. Is there any huge drawback to that? I'm sure it would take some time to load all the modules, but I'm okay with that.
And considering what I've said - does anyone have any recommendations on a better kernel to start with? The other advantage to Linux is the massive amount of resources available for it. Regardless of how good it is - software and support are so readily available.