ILoveYouTaco

Estimable
Jul 21, 2014
1
0
4,510
I am starting to dabble in Operating System creating, and I am wondering whether or not I would need to start with a clean "Blank Slate" PC or if I can keep my computer as is and code and test on the side. Any help would be nice. Thank you in advance.
 

McHenryB

Estimable
Jan 31, 2015
140
1
4,660
You can keep your PC as it is (if you run Linux). Any testing of your OS will be done in a VM such as qemu until you become proficient - it's a lot harder to get stuff running on a real machine, and debugging is a nightmare. With a VM you can use a debugger to step through and examine code. It is highly recommended that you use Linux for OS development. If you normally run Windows I would suggest installing Linux in a virtual machine for this purpose. Most documentation assumes you are using a Unix-type system.

A couple of links that you might find useful:

1. OSDev is pretty much the bible for hobby OS tinkerers. It contains loads of useful information and has links to a lot more. The forums are good too, but be wary about asking noob questions - a certain level of knowledge is expected. It's probably best to lurk on the forums for a while. And be sure to read the FORUM RULES sticky before posting.

2. This is the home page of an MIT course on OS engineering. Again, a lot of useful documents and links here, plus complete source code of a relatively simple Unix-like OS.

I would be very wary of the various on-line tutorials from individuals that you might find. Most of them contain mistakes or misleading information which will teach you bad habits. That applies doubly to YouTube tutorials.

OS development is a lot of fun, but is hard - and at times very frustrating - work. The only thing that compares to it in difficulty (IMO) is writng a compiler for a programming language. You really need to understand your chosen processor, its assembly language, and the high-level language (C is a very good choice here) that you decide to use. The chip manufacturers all provide incredibly good documentation. For example the Intel® 64 and IA-32 Architectures Software Developer Manuals. The x86 processors are going to be the easiest ones to target if only because there is so much information about them available online.