First I would like to say I have read the wiki on getting started. However, I have a few additional (subjective) questions in which I was hoping I could get some opinions on.
First I would like to give a basic rundown of what I think is my relavent knowledge so you can give better advice.
I just recently graduated high school (June), and will be attending university in the fall as a CS major. So I am only self-educated.
I am proficient in Java and c++. I have used python (but it's been a while). Also, I have recently been learning Haskell.
I am confortable with the unix cli. I run ArchLinux on all of my desktops and debian on my server.
I do not know x86 assembly. However, I plan to start on this during this week, as I see that it is needed in OS development.
Now for my actual question!
I was considering finding a small, yet established, operating system which I could study and potentially contribute to. In doing this I figure I would see first hand the best way to make things, as well as gain help from the developers of the os.
On the other hand, I am wondering if it would be better for me to try and start on my own to fully comprehend the subjects at hand and learn from my mistakes.
As I said this is a subjective question, thus I am open to any answers.
Thank you for your time and effort,
Joseph Pond
Opinions on starting
Re: Opinions on starting
Hi,
Well,it depends on your goals,and if I understand your post,it seems
that you want to be involved just for the seek of knowledge, so choose whatever you find more
convenient.
Good luck
Well,it depends on your goals,and if I understand your post,it seems
that you want to be involved just for the seek of knowledge, so choose whatever you find more
convenient.
Good luck
The man who follows the crowd will usually get no further than the crowd.
The man who walks alone is likely to find himself in places
no one has ever been before.
The man who walks alone is likely to find himself in places
no one has ever been before.
Re: Opinions on starting
I would recommend starting on your own to learn the basics before looking for a project to join. Since you don't know x86 assembly but otherwise seem to have a decent grounding in programming, I'd recommend you start off by writing a FAT12 boot sector. It's mostly simple asm, and it will introduce you to filesystem concepts, and real mode, which you otherwise most likely aren't all that familiar with. After that, you could continue on with writing a proper bootloader (not really recommended) or just ditch real mode and start using GRUB, which is what most people around here do, and what many will recommend.
Read the tutorials on the wiki, and JamesM's tutorials. The tutorials on the website are mostly C based, but there's a C++ barebones there for you. JamesM's tutorials are C based. There's many other tutorials available, but I've not read some of the newer ones so I can't comment on or recommend them. Anyway, those should give you a decent start.
Make sure you download the Intel manuals and are familiar with them. Also get the AMD manuals. There's a whole thread on here related to good books to buy or borrow from your local library.
Regardless of what you end up doing, you'll definitely want to check out different OSes. There's a list of OS projects at the wiki you can browse through, but personally I would recommend looking at the Pedigree source (it's in C++), Kiwi (C based), and one of the BSDs, like OpenBSD. I recommend those because they're all relatively clean code, and have friendly licensing. There's many others that people may plug as well.
Read the tutorials on the wiki, and JamesM's tutorials. The tutorials on the website are mostly C based, but there's a C++ barebones there for you. JamesM's tutorials are C based. There's many other tutorials available, but I've not read some of the newer ones so I can't comment on or recommend them. Anyway, those should give you a decent start.
Make sure you download the Intel manuals and are familiar with them. Also get the AMD manuals. There's a whole thread on here related to good books to buy or borrow from your local library.
Regardless of what you end up doing, you'll definitely want to check out different OSes. There's a list of OS projects at the wiki you can browse through, but personally I would recommend looking at the Pedigree source (it's in C++), Kiwi (C based), and one of the BSDs, like OpenBSD. I recommend those because they're all relatively clean code, and have friendly licensing. There's many others that people may plug as well.
Last edited by quok on Sun Jul 11, 2010 9:34 pm, edited 2 times in total.
Reason: JamesM's tutorials are C based, not assembly based... fixed other typos.
Reason: JamesM's tutorials are C based, not assembly based... fixed other typos.
Re: Opinions on starting
Second.I would recommend starting on your own to learn the basics before looking for a project to join.
Personally I'd dive straight in there and get my hands dirty. I found http://www.osdever.net/bkerndev/Docs/title.htm to be very useful, its tempting to copy and paste some of the code, but it defeats the whole point if you don't fully understand it.
I've had no previous experience with x86 assembly (some with z80), and creating small snippets of code isn't too difficult, what I am struggling with however is the architecture of x86 (i.e. the TSS, various modes, rings, etc.).
Have fun!