I just wasted ~2 hours reading various pages of this wiki, it's a great resource.
My question is: Other than the obvious educational value, is there something concrete a beginner can do with a minimal kernel? What beginner projects would you recommend?
My plan for a summer project is going to be to first make a really basic OS. Then I'm going to bootstrap my own language from nothing like this guy:
http://homepage.ntlworld.com/edmund.grimley-evans/bcompiler....
Then I'm going to make graphics with something like mode 13h. Maybe not beginner projects, but extremely interesting and challenging.
Perhaps for something that was embedded (like an OS for ARM microcontrollers or something), but a desktop or server OS is unrealistic.
The problem is drivers - unless you manage to port Linux drivers or something to your OS, it's never going to be able to use more than an extremely narrow cross-section of hardware.
It very good for the educational value though! Making a kernel that boots a simple shell, and eventually runs statically linked executables is possible in a few months if you spend a lot of time on it (and a lot of that time is research, not coding).
I'd say handling interrupts, paging/the memory subsystem, filesystems and scheduling were all pretty worthwhile.
It's important mostly not to worry about the finer details/getting things perfect - you almost certainly won't be able to make anything which is practically useful but it's an awesome learning experience :)
One thing that is very helpful to stop you from tearing your hair out is getting hold of a function to do sprintf() early on - it's no fun to write, just messy, and it lets you do primitive debugging. This seems like a good shot, despite the sketchy looking URL: http://read.pudn.com/downloads97/sourcecode/unix_linux/39644...
My question is: Other than the obvious educational value, is there something concrete a beginner can do with a minimal kernel? What beginner projects would you recommend?