<p>One thing I've always wanted to do is develop my very own operating system (not necessarily fancy like Linux or Windows, but better than a simple boot loader which I've already done).</p>
<p>I'm having a hard time finding resources/guides that take you past writing a simple &quot;Hello World&quot; OS.</p>
<p>I know lots of people will probably recommend I look at Linux or BSD; but the code base for systems like that is (presumably) so big that I wouldn't know where to start.</p>
<p>Any suggestions?</p>
<p>Update: To make it easier for people who land on this post through Google here are some OS development resources:</p>
<ul>
<li><p><a href="https://web.archive.org/web/20120506110242/http://osix.net/modules/article/?id=359" rel="noreferrer">Writing Your Own Operating System</a> (Thanks Adam)</p>
</li>
<li><p><a href="http://www.linuxfromscratch.org/" rel="noreferrer">Linux From Scratch</a> (Thanks John)</p>
</li>
<li><p><a href="http://en.wikipedia.org/wiki/SharpOS_(operating_system)" rel="noreferrer">SharpOS (C# Operating System)</a> (Thanks lomaxx)</p>
</li>
<li><p><a href="http://www.minix3.org/" rel="noreferrer">Minix3</a> and <a href="http://minix1.woodhull.com/mxdownld.html" rel="noreferrer">Minix2</a> (Thanks Mike)</p>
</li>
<li><p><a href="http://wiki.osdev.org/Main_Page" rel="noreferrer">OS Dev Wiki</a> and <a href="http://forum.osdev.org/" rel="noreferrer">Forums</a> (Thanks Steve)</p>
</li>
<li><p><a href="http://www.osdever.net/" rel="noreferrer">BonaFide</a> (Thanks Steve)</p>
</li>
<li><p><a href="http://osdever.net/bkerndev/Docs/intro.htm" rel="noreferrer">Bran</a> (Thanks Steve)</p>
</li>
<li><p><a href="http://www.jamesmolloy.co.uk/tutorial_html/index.html" rel="noreferrer">Roll your own toy UNIX-clone OS</a> (Thanks Steve)</p>
</li>
<li><p><a href="http://www.brokenthorn.com/Resources/OSDevIndex.html" rel="noreferrer">Broken Thorn OS Development Series</a></p>
</li>
</ul>
<p>Other resources:</p>
<p>I found a nice resource named <a href="http://mikeos.berlios.de/" rel="noreferrer">MikeOS</a>, &quot;MikeOS is a learning tool to demonstrate how simple OSes work. It uses 16-bit real mode for BIOS access, so that it doesn't need complex drivers&quot;</p>
<p><em>Updated 11/14/08</em></p>
<p>I found some resources at <a href="http://www.freebyte.com/operatingsystems/#osprojects" rel="noreferrer">Freebyte's Guide to...Free and non-free Operating Systems</a> that links to kits such as OSKit and ExOS library.  These seem super useful in getting started in OS development.</p>
<p><em>Updated 2/23/09</em></p>
<p><a href="https://stackoverflow.com/users/42019/ric-tokyo">Ric Tokyo</a> recommended <a href="http://code.google.com/p/nanoos/" rel="noreferrer">nanoos</a> in this <a href="https://stackoverflow.com/questions/580308/making-an-os-in-c/580362#580362">question</a>.  Nanoos is an OS written in C++.</p>
<p><em>Updated 3/9/09</em></p>
<p>Dinah provided some useful Stack Overflow discussion of aspiring OS developers: <a href="https://stackoverflow.com/questions/340674/roadblocks-in-creating-a-custom-operating-system">Roadblocks in creating a custom operating system</a> discusses what pitfalls you might encounter while developing an OS
and <a href="https://stackoverflow.com/questions/130065/os-development">OS Development</a> is a more general discussion.</p>
<p><em>Updated 7/9/09</em></p>
<p>LB provided a link to the <a href="http://www.scs.stanford.edu/07au-cs140/pintos/pintos.html" rel="noreferrer">Pintos Project</a>, an education OS designed for students learning OS development.</p>
<p><em>Updated 7/27/09 (Still going strong!)</em></p>
<p>I stumbled upon an <a href="http://academicearth.org/courses/operating-systems-and-system-programming" rel="noreferrer">online OS course</a> from Berkley featuring 23 lectures.</p>
<p><a href="http://tomos.sourceforge.net/" rel="noreferrer">TomOS</a> is a fork of <a href="http://mikeos.berlios.de/" rel="noreferrer">MikeOS</a> that includes a little memory manager and mouse support. As MikeOS, it is designed to be an educational project.  It is written in NASM assembler.</p>
<p><em>Updated 8/4/09</em></p>
<p>I found the <a href="http://www.cs.berkeley.edu/%7Ekubitron/courses/cs162-F08/" rel="noreferrer">slides and other materials</a> to go along with the online Berkeley lectures listed above.</p>
<p><em>Updated 8/23/09</em></p>
<p>All <a href="https://stackoverflow.com/questions/tagged/osdev">questions tagged osdev</a> on stackoverflow</p>
<p><a href="http://www.eecs.harvard.edu/syrah/os161/" rel="noreferrer">OS/161</a> is an academic OS written in c that runs on a simulated hardware.  This OS is similar in Nachos.  Thanks Novelocrat!</p>
<p>tangurena recommends <a href="http://en.wikipedia.org/wiki/MicroC/OS-II" rel="noreferrer">http://en.wikipedia.org/wiki/MicroC/OS-II</a>, an OS designed for embedded systems.  There is a <a href="https://rads.stackoverflow.com/amzn/click/com/1578201039" rel="noreferrer" rel="nofollow noreferrer">companion book</a> as well.</p>
<p><a href="https://rads.stackoverflow.com/amzn/click/com/0672327201" rel="noreferrer" rel="nofollow noreferrer">Linux Kernel Development</a> by Robert Love is suggested by Anders.  It is a &quot;widely acclaimed insider's look at the Linux kernel.&quot;</p>
<p><em>Updated 9/18/2009</em></p>
<p>Thanks Tim S. Van Haren for telling us about <a href="http://www.gocosmos.org/index.en.aspx" rel="noreferrer">Cosmos</a>, an OS written entirely in c#.</p>
<p>tgiphil tells us about <a href="http://www.mosa-project.org/" rel="noreferrer">Managed Operating System Alliance (MOSA) Framework</a>, &quot;a set of tools, specifications and source code to foster development of managed operating systems based on the Common Intermediate Language.&quot;</p>
<p><em>Update 9/24/2009</em></p>
<p>Steve found a couple resources for development on windows using Visual Studio, check out <a href="http://www.brokenthorn.com/Resources/OSDevMSVC.html" rel="noreferrer">BrokenThorn's guide setup with VS 2005</a> or <a href="http://wiki.osdev.org/Visual%5FStudio" rel="noreferrer">OSDev's VS Section</a>.</p>
<p><em>Updated 9/5/2012</em></p>
<p>kerneltrap.org is no longer available.  The linux kernel v0.01 is available from <a href="http://www.kernel.org/pub/linux/kernel/Historic/linux-0.01.tar.gz" rel="noreferrer">kernel.org</a></p>
<p><em>Updated 12/21/2012</em>
A basic OS development <a href="http://nw08.american.edu/%7Emblack/teaching.html#OSPROJECT" rel="noreferrer">tutorial</a> designed to be a semester's project. It guides you through to build an OS with basic components. Very good start for beginners. Related <a href="http://nw08.american.edu/%7Emblack/papers/sigcse09.pdf" rel="noreferrer">paper</a>.  Thanks Srujan!</p>
<p><em>Updated 11/15/2013</em></p>
<p><a href="http://www.cs.bham.ac.uk/%7Eexr/lectures/opsys/10_11/lectures/os-dev.pdf" rel="noreferrer">Writing a Simple Operating System From Scratch</a>.  Thanks James Moore!</p>
<p><em>Updated 12/8/2013</em></p>
<p><a href="https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System" rel="noreferrer">How to make a computer operating system</a>  Thanks ddtoni!</p>
<p><em>Updated 3/18/2014</em></p>
<p><a href="https://github.com/klange/toaruos" rel="noreferrer">ToAruOS an OS built mostly from scratch, including GUI</a></p>
<p><em>Updated Sept 12 2016</em></p>
<p><a href="http://www.independent-software.com/writing-your-own-toy-operating-system/" rel="noreferrer">Writing your own Toy Operating System</a></p>
<p><em>Updated Dec 10 2016</em></p>
<p><a href="https://www.cs.bham.ac.uk/%7Eexr/lectures/opsys/10_11/lectures/os-dev.pdf" rel="noreferrer">Writing a Simple Operating System —from Scratch</a> (thank you @Tyler C)</p>

[{'answer_id': 43183, 'author': 'Mike Stone', 'author_id': 122, 'author_profile': 'https://Stackoverflow.com/users/122', 'pm_score': 5, 'selected': False, 'text': '<p><a href="http://www.minix3.org/" rel="noreferrer">Minix</a> is a lot smaller, and designed for learning purposes, and <a href="https://rads.stackoverflow.com/amzn/click/com/0003458903" rel="noreferrer" rel="nofollow noreferrer">the book to go with it</a> is a good one too.</p>\n\n<p>Update: I guess Minix 3 is a bit of a different goal, but <a href="http://minix1.woodhull.com/mxdownld.html" rel="noreferrer">Minix 2</a> (and of course the first version) were for teaching purposes.</p>\n'}, {'answer_id': 43188, 'author': 'Adam Davis', 'author_id': 2915, 'author_profile': 'https://Stackoverflow.com/users/2915', 'pm_score': 3, 'selected': False, 'text': '<p>There are good resources for operating system fundamentals in books.  Since there isn\'t much call to create new OS\'s from scratch you won\'t find a ton of hobbyist type information on the internet.</p>\n\n<p>I recommend the standard text book, "Modern Operating Systems" by Tanenbaum.  You may also be able to find "Operating System Elements" by Calingaert useful - it\'s a thin overview of a book which give a rough sketch of what an OS is from a designer\'s standpoint.</p>\n\n<p>If you have any interest in real time systems (and you should at least understand the differences and reasons for real time OS\'s) then I\'d also recommend "MicroC/OS-II" by Labrosse.</p>\n\n<p>Edit:</p>\n\n<p>Can you specify what you mean by "more technical"?  These books give pseudo code implementation details, but are you looking for an example OS, or code snippets for a particular machine/language?</p>\n\n<p>-Adam</p>\n'}, {'answer_id': 43245, 'author': 'lomaxx', 'author_id': 493, 'author_profile': 'https://Stackoverflow.com/users/493', 'pm_score': 4, 'selected': False, 'text': '<p>you also might want to take a look at <a href="http://en.wikipedia.org/wiki/SharpOS_(operating_system)" rel="noreferrer">SharpOS</a> which is an operating system that they\'re writing in c#.</p>\n'}, {'answer_id': 43248, 'author': 'jfs', 'author_id': 718, 'author_profile': 'https://Stackoverflow.com/users/718', 'pm_score': 2, 'selected': False, 'text': '<p>You might want to look at <a href="http://www.linuxfromscratch.org/" rel="nofollow noreferrer">linuxfromscratch</a>.</p>\n\n<blockquote>\n  <p>Linux From Scratch (LFS) is a project\n  that provides you with step-by-step\n  instructions for building your own\n  custom Linux system, entirely from\n  source code.</p>\n</blockquote>\n'}, {'answer_id': 45684, 'author': 'Adam Davis', 'author_id': 2915, 'author_profile': 'https://Stackoverflow.com/users/2915', 'pm_score': 8, 'selected': True, 'text': '<p>There are a lot of links after this <a href="http://www.osix.net/modules/article/?id=359" rel="noreferrer">brief overview</a> of what is involved in writing an OS for the X86 platform.</p>\n\n<p>The link that appears to be most promising (www.nondot.org/sabre/os/articles) is no longer available, so you\'ll need to poke through the <a href="http://web.archive.org/web/20021207220335/http://www.nondot.org/sabre/os/articles" rel="noreferrer">Archive.org version</a> to read it.</p>\n\n<p>At the end of the day the bootloader takes the machine code of the kernel, puts it in memory, and jumps to it.  You can put any machine code in the kernel that you want, but most C programs expect an OS so you\'ll need to tell your compiler that it won\'t have all that, or the bootloader has to create some of it.</p>\n\n<p>The kernel then does all the heavy lifting, and I suspect it\'s the example kernel you want.  But there\'s a long way to go between having a kernel that says, "Hello world" to having a kernel that loads a command interpretor, provides disk services, and loads and manages programs.</p>\n\n<p>You might want to consider subscribing to ACM to get access to their older literature - there are lots of articles in the late 80\'s and early 90\'s in early computing magazines about how to <a href="http://portal.acm.org/citation.cfm?id=87073.87079" rel="noreferrer">create alternative OSs</a>.  There are likely books that are out of print from this era as well.  You might be able to get the same information for free by looking up the indexes of those magazines (which are available on that site - click "index" near the magazine name) and then asking around for people with a copy.</p>\n\n<p>Lastly, I know that usenet is dead (for so sayeth the prophets of internet doom) but you\'ll find that many of the craggy old experts from that era still live there.  You should search google groups (they have dejanews\'s old repository) and I expect you\'ll find many people asking the same questions a decade or 1.5 ago that you\'re asking now.  You may even run across Linus Torvalds\' many queries for help as he was developing linux originally.  If searches don\'t bring anything up, ask in the appropriate newsgroup (probably starts with comp.arch, but search for ones with OS in the name).</p>\n'}, {'answer_id': 45834, 'author': 'basszero', 'author_id': 287, 'author_profile': 'https://Stackoverflow.com/users/287', 'pm_score': 3, 'selected': False, 'text': '<p>Already answer, but when I took Operating Systems in college we started with an early linux kernel and added simplistic modern features (basic file systems, virtual memory, multitasking, mutexes). Good fun. You get to skip some of the REALLY crazy low level assembly only stuff for mucking w/ protected mode and page tables while still learned some of the guts. </p>\n\n<p><a href="http://kerneltrap.org/node/14002" rel="noreferrer">http://kerneltrap.org/node/14002</a>\n<a href="http://kerneltrap.org/files/linux-0.01.tar.bz2" rel="noreferrer">http://kerneltrap.org/files/linux-0.01.tar.bz2</a></p>\n'}, {'answer_id': 122462, 'author': 'Steve T', 'author_id': 415, 'author_profile': 'https://Stackoverflow.com/users/415', 'pm_score': 4, 'selected': False, 'text': '<p>I wish there was one place to get all of the info about developing your own OS. The closest to come to that is <a href="http://wiki.osdev.org/Main_Page" rel="noreferrer">OS Dev Wiki</a> and <a href="http://forum.osdev.org/" rel="noreferrer">Forums</a>.  They offer a ton of good information regarding the setup, development, and device hardware information.  </p>\n\n<p>Also there are some great tutorials at <a href="http://www.osdever.net/" rel="noreferrer">BoneFide</a>, I\'ve used the getting started tutorial by <a href="http://www.osdever.net/bkerndev/index.php" rel="noreferrer">Bran</a>, and am now looking at a more recent one based on his called <a href="http://www.jamesmolloy.co.uk/tutorial_html/index.html" rel="noreferrer">Roll your own toy UNIX-clone OS</a>.</p>\n\n<p>I second checking out: "Operating Systems : Design and Implementation"</p>\n\n<p><strike>And if you want to develop on Windows, check out jolson\'s blog post</strike>.</p>\n\n<p>Edit:\nFor development on windows using Visual Studio, check out <a href="http://www.brokenthorn.com/Resources/OSDevIndex.html" rel="noreferrer">BrokenThorn\'s guide</a> or <a href="http://wiki.osdev.org/Visual_Studio" rel="noreferrer">OSDev\'s wiki</a>.</p>\n'}, {'answer_id': 217563, 'author': 'Richard T', 'author_id': 26976, 'author_profile': 'https://Stackoverflow.com/users/26976', 'pm_score': 5, 'selected': False, 'text': '<p>As someone who has written a real-time multi-tasking operating system from scratch...</p>\n\n<p><em>keyboard debounce routine, keyboard driver, disk driver, video driver, file system, and finally a boot-loader - and that\'s just to launch it for the first time with nothing to do!</em></p>\n\n<p>... I cannot emphasize enough how important it is to get familiar with the hardware! This is especially so if you really want to do it all yourself instead of just picking up a primitive system someone else has already laid out for you. For example, contact Intel and ask them for a CPU card for your type of CPU! This will lay it out for you - the "pin-outs", interrupts, opcodes, you name it!</p>\n\n<p>Remember the hardware makes it all possible. Study the hardware. You won\'t regret it.</p>\n\n<p>.</p>\n'}, {'answer_id': 217608, 'author': 'Paul Nathan', 'author_id': 26227, 'author_profile': 'https://Stackoverflow.com/users/26227', 'pm_score': 4, 'selected': False, 'text': '<p>Write a microcontroller OS. I recommend an x86 based microcontroller. A modern OS is just <em>huge</em>. Learn the basics first. </p>\n'}, {'answer_id': 627386, 'author': 'Dinah', 'author_id': 356, 'author_profile': 'https://Stackoverflow.com/users/356', 'pm_score': 3, 'selected': False, 'text': '<p>Here are some other Stack Overflow pages worth incorporating into this discussion:</p>\n\n<p><a href="https://stackoverflow.com/questions/340674/roadblocks-in-creating-a-custom-operating-system">Roadblocks in creating a custom operating system</a>\n<br /><a href="https://stackoverflow.com/questions/130065/os-development">Developing an operating system for the x86 architecture</a></p>\n'}, {'answer_id': 1097874, 'author': 'LB40', 'author_id': 80530, 'author_profile': 'https://Stackoverflow.com/users/80530', 'pm_score': 3, 'selected': False, 'text': '<p>Just coming from another question. I\'d like to mention <a href="http://www.scs.stanford.edu/07au-cs140/pintos/pintos.html" rel="noreferrer">Pintos</a>... I remembered my OS course with Nachos and Pintos seems to be the same kind of thing that can run on x86.</p>\n'}, {'answer_id': 1316006, 'author': 'Phil Miller', 'author_id': 90002, 'author_profile': 'https://Stackoverflow.com/users/90002', 'pm_score': 3, 'selected': False, 'text': '<p>My operating systems course in undergrad had us building a number of subsystems for <a href="http://www.eecs.harvard.edu/syrah/os161/" rel="noreferrer">OS/161</a>, a simple, BSD-like kernel that provides some of the basics while leaving the freedom to explore various design space decisions in implementing higher-level services.</p>\n'}, {'answer_id': 1316074, 'author': 'Tangurena', 'author_id': 136450, 'author_profile': 'https://Stackoverflow.com/users/136450', 'pm_score': 2, 'selected': False, 'text': '<p>One reasonably simple OS to study would be µC/OS. The book has a floppy with the source on it.</p>\n\n<p><a href="http://en.wikipedia.org/wiki/MicroC/OS-II" rel="nofollow noreferrer">http://en.wikipedia.org/wiki/MicroC/OS-II</a> </p>\n'}, {'answer_id': 1316091, 'author': 'Anders Rune Jensen', 'author_id': 13995, 'author_profile': 'https://Stackoverflow.com/users/13995', 'pm_score': 3, 'selected': False, 'text': "<p>I found Robert Love's Linux Kernel Development quite interesting. It tells you about how the different subsystems in the Linux kernel works in a very down-to-earth way. Since the source is available Linux is a prime candidate for something to hack on.</p>\n"}, {'answer_id': 1442573, 'author': 'tgiphil', 'author_id': 174763, 'author_profile': 'https://Stackoverflow.com/users/174763', 'pm_score': 2, 'selected': False, 'text': '<p>Check out the Managed Operating System Alliance (MOSA) Project at <a href="http://www.mosa-project.org" rel="nofollow noreferrer">www.mosa-project.org</a>. They are designing an AOT/JIT compiler and fully managed operating system in C#. Some of the developers are from the inactive SharpOS project. </p>\n'}, {'answer_id': 1442596, 'author': 'Tim S. Van Haren', 'author_id': 107009, 'author_profile': 'https://Stackoverflow.com/users/107009', 'pm_score': 2, 'selected': False, 'text': '<p>I\'ve toyed with <a href="http://www.gocosmos.org" rel="nofollow noreferrer"><strong>Cosmos</strong></a>, which is "an operating system project implemented completely in CIL compliant languages."  It\'s written in C#, so that was right up my alley.  For someone like myself who has never attempted to build an operating system, it was actually pretty cool to be able to get a "Hello World" operating system running in no time.</p>\n'}, {'answer_id': 1474843, 'author': 'Michael Foukarakis', 'author_id': 149530, 'author_profile': 'https://Stackoverflow.com/users/149530', 'pm_score': 3, 'selected': False, 'text': "<p>Start hacking away at Minix. It's a lot smaller than Linux (obviously) and it's designed with teaching purposes in mind (some, at least). Not Minix 3 though, that's a whole different story.</p>\n"}, {'answer_id': 6853083, 'author': 'jackjack48', 'author_id': 481171, 'author_profile': 'https://Stackoverflow.com/users/481171', 'pm_score': 2, 'selected': False, 'text': '<p>Check out this site: <a href="http://osix.net/modules/article/?id=359" rel="nofollow">http://osix.net/modules/article/?id=359</a></p>\n'}, {'answer_id': 6856910, 'author': 'Halberdier', 'author_id': 756299, 'author_profile': 'https://Stackoverflow.com/users/756299', 'pm_score': 2, 'selected': False, 'text': '<p><a href="http://en.wikipedia.org/wiki/Movitz" rel="nofollow">Movitz</a> is a Lisp environment written in Common Lisp and running "on the metal". Unfortunately, some links on the <a href="http://www.common-lisp.net/project/movitz/" rel="nofollow">Movitz main page</a> deny access, but you can find instructions on how to download and compile the source code from the <a href="http://trac.common-lisp.net/movitz/" rel="nofollow">trac page</a>. Also, a ready image can be found on the archive of <a href="http://www.emmett.ca/~sabetts/" rel="nofollow">this page</a>.</p>\n\n<p>IMHO this is utmost interesting, as it brings back the <a href="http://en.wikipedia.org/wiki/Lisp_machine" rel="nofollow">Lisp machine</a> concept on the currently available hardware. It failed commercially, but this does not prove to me that the idea was bad.</p>\n\n<p><a href="http://simson.net/ref/ugh.pdf" rel="nofollow">The Unix haters handbook</a> is a fun book that semi-seriously berates the concept of Unix and its derivatives. Many sections argument about how better the Lisp machine concept was.</p>\n'}, {'answer_id': 13984034, 'author': 'Srujan', 'author_id': 221337, 'author_profile': 'https://Stackoverflow.com/users/221337', 'pm_score': 2, 'selected': False, 'text': '<p>A simple and basic OS development <a href="http://nw08.american.edu/~mblack/teaching.html#OSPROJECT" rel="nofollow">tutorial</a> designed to be a semester\'s project. It guides you through to build an OS with basic components. Very good start for beginners. Related paper is <a href="http://nw08.american.edu/~mblack/papers/sigcse09.pdf" rel="nofollow">here</a>.</p>\n'}, {'answer_id': 14707510, 'author': 'BharatKhanna', 'author_id': 2039776, 'author_profile': 'https://Stackoverflow.com/users/2039776', 'pm_score': 1, 'selected': False, 'text': '<p>Intresting Question for the programmers. See it will take long long long time to build OS like Windows or Mac but if you want build a simple ones then you can try your best</p>\n\n<ol>\n<li>You need to focus on Assembly Language,C and C++. You should be expert in these languages.</li>\n<li>First read a good book on how OS works[Google it], then read all the info from <a href="http://wiki.osdev.org/" rel="nofollow" title="Wiki OS">Wiki OS</a></li>\n<li>Search in youtube "How to create your own OS in Assembly Language" watch the video, <a href="http://www.youtube.com/watch?v=Lgd5aV2LKrk" rel="nofollow" title="Youtube Video, how to create your own OS">Eg. Video</a></li>\n<li>Download Linux OS source code and compile it yourself and try to modify the code yourself</li>\n<li>Now you are an experienced OS editor now download <a href="http://www.minix3.org/index.html" rel="nofollow" title="Minix">Minix</a> and <a href="http://www.qnx.com/" rel="nofollow" title="QNX">QNX</a> and start developing with them and get their docs from here <a href="http://www.minix3.org/documentation/index.html" rel="nofollow" title="Minix Doc">Minix Doc</a> and  <a href="http://support7.qnx.com/download/download/20982/590.39_65_Quickstart_Guide_P6.pdf" rel="nofollow" title="QNX Doc">QNX Doc</a></li>\n</ol>\n\n<p>Now you have gained the master degree(Not completely just a little more to go) in creating OS now distribute this knownledge to your freinds and with their help try to create an OS as powerful as Mac, Linux or Windows</p>\n'}, {'answer_id': 16609092, 'author': 'James Moore', 'author_id': 1801491, 'author_profile': 'https://Stackoverflow.com/users/1801491', 'pm_score': 2, 'selected': False, 'text': '<p>Here\'s a paper called "<a href="http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf" rel="nofollow">Writing a Simple Operating System From Scratch</a>". It covers writing a bootloader, entering x86-32 protected mode, and writing a basic kernel in C. It seems to do a good job at explaining everything in detail.</p>\n'}, {'answer_id': 20443447, 'author': 'ddetoni', 'author_id': 3052084, 'author_profile': 'https://Stackoverflow.com/users/3052084', 'pm_score': 3, 'selected': False, 'text': '<p>I would like to include this repo <a href="https://github.com/SamyPesse/How-to-Make-a-Computer-Operating-System" rel="noreferrer">How-to-Make-a-Computer-Operating-System</a> by Samy Pesse. Is a work-in-progress. Very interesting.</p>\n'}, {'answer_id': 20962603, 'author': 'Jens A. Koch', 'author_id': 1163786, 'author_profile': 'https://Stackoverflow.com/users/1163786', 'pm_score': 4, 'selected': False, 'text': '<p>An excellent resource is the material of the MIT course 6.828: Operating System Engineering.</p>\n\n<p>XV6 - simple Unix-like teaching OS written in ANSI C for x86\n<a href="http://pdos.csail.mit.edu/6.828/2012/xv6.html" rel="noreferrer">http://pdos.csail.mit.edu/6.828/2012/xv6.html</a></p>\n\n<p>XV6 source - as a printed booklet with line numbers\n<a href="http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf" rel="noreferrer">http://pdos.csail.mit.edu/6.828/2012/xv6/xv6-rev7.pdf</a></p>\n\n<p>XV6 book - explains the main ideas of os design\n<a href="http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf" rel="noreferrer">http://pdos.csail.mit.edu/6.828/2012/xv6/book-rev7.pdf</a></p>\n\n<p>The material is compact: 92 pages source and 96 pages commentary.</p>\n\n<p>I like it more than the Minix book! It\'s a true gem!</p>\n'}, {'answer_id': 21608359, 'author': 'no92', 'author_id': 2166310, 'author_profile': 'https://Stackoverflow.com/users/2166310', 'pm_score': 2, 'selected': False, 'text': '<p>As mentioned above, the <a href="http://wiki.osdev.org" rel="nofollow">OSDev Wiki</a> is (by far) the best source for OS development. For those of you who speak German, the <a href="http://lowlevel.eu" rel="nofollow">lowlevel.eu</a> Wiki is also great. Something relatively unknown <a href="http://github.com/ersenal/Incitatus-OS" rel="nofollow">Incitatus OS</a>, a simple kernel with a tiny set of userspace apps. It\'s great to use for getting into the complicated topic of OS development.</p>\n'}, {'answer_id': 22424545, 'author': 'user69969', 'author_id': 1780689, 'author_profile': 'https://Stackoverflow.com/users/1780689', 'pm_score': 1, 'selected': False, 'text': '<p>When you have made a basic operating system it\'s actually hard to continue because there isn\'t many ressources on making GUIs or porting libraries. But i think taking a look at <a href="https://github.com/klange/toaruos" rel="nofollow">ToAruOS</a> would help a lot!</p>\n\n<p>The code under the surface of that OS is so damn simple! but at the same time he has ported things like cairo, python, (not yet but soon) sdl, made share memory and he has also made his own widget toolkit. It\'s all written in C.</p>\n\n<p>Another interesting OS would be <a href="https://github.com/jmolloy/pedigree" rel="nofollow">pedigreeOS</a>. It\'s made by JamesM (the man behind <a href="http://www.jamesmolloy.co.uk/tutorial_html/index.html" rel="nofollow">jamesM\'s kernel tutorial</a>. While it has more features than ToaruOS it\'s also bigger and more confusing.</p>\n\n<p>But anyway these 2 OS will help you a lot especially ToAruOS.</p>\n'}, {'answer_id': 24455029, 'author': 'earizon', 'author_id': 1197682, 'author_profile': 'https://Stackoverflow.com/users/1197682', 'pm_score': 2, 'selected': False, 'text': '<p>The <a href="https://github.com/copy/v86" rel="nofollow">x86 JS simulator</a> and <a href="https://github.com/ozaki-r/arm-js" rel="nofollow">ARM simulator</a> can also be very useful to understand how different pieces hardware works and make tests without exiting your favourite browser.</p>\n'}, {'answer_id': 24787914, 'author': 'ali', 'author_id': 1200555, 'author_profile': 'https://Stackoverflow.com/users/1200555', 'pm_score': 1, 'selected': False, 'text': '<p>When I started working on my basic operating systems I needed a basic guide like <a href="https://www.devimperium.com/tutorials/stepping_stones_for_a_basic_operating_system" rel="nofollow noreferrer">Stepping stones for a basic operating system</a>. It helped me not loose my head.</p>\n<p>That if you want to make it from absolutely nothing (pure assembly code)</p>\n'}]
['https://Stackoverflow.com/questions/43180', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/4050/']