Hacker News new | ask | show | jobs
by endorphine 1348 days ago
Interesting. I would like to build an OS or just a kernel myself, as a means to demystify, learn and have fun.

Where does one start? Any resources to recommend? Another comment suggests xv6, is that sufficient or do I need complementary stuff (e.g. I started reading "Code: The Hidden Language of Computer Hardware and Software")?

FWIW I have systems (Linux) experience as I worked in DevOps before.

3 comments

It would be awesome if the guys who did From Nand to Tetris [0] would do something similar for operating systems. For those who have never heard of Nand to Tetris, it's an informal course that takes you from low-level gates (NAND gates) to build up a processor/memory/computer, assembler, compiler, and then be able to program and run games like Tetris on it. It's outstanding and highly recommended.

[0] https://www.nand2tetris.org

I've read other people praising this here on HN. Thanks for reminding me that, I'll give it a go!
Same. I'm looking for challenging projects to improve my skills. I've learned a lot from implementing language interpreters. I'm guessing OS implementation can be equally rewarding.

I've looked at the Minix and Xinu books, which are probably the most practical books available. But these appear to be describing existing code instead of guiding you to code along. Anyone knows good resources that guide you from scratch?

Check "Operating System Design Book Series": https://www.fysnet.net/osdesign_book_series.htm

Just remember I own the first 2 books, and haven't finished studying it. Oh well :p

Lots of books on operating systems and concepts. Check your local library. Otherwise https://wiki.osdev.org/Main_Page
Thanks. That seems as a good resource and would probably stumble on that when I learn more specific things to search for.
FYI I've created an Ask HN thread about this: https://news.ycombinator.com/item?id=33174341
Thanks. Hopefully some hidden gems show up. :-)
Take an emulator of a platform of your choice and work your way to have it display something that you like it to display without booting any existing image before