Hacker News new | ask | show | jobs
by gravypod 3590 days ago
The OSDev wiki is the best think to hit the internet since sliced bread (with cats faces pushed through them?) but it's far from a tutorial. It's a wiki.

While it is one of the best repositories of knowledge on the subject of low level development, it's not a step by step guide.

In the same way I don't recommend that people read Wikipedia to learn about human history I'd also not recommend reading osdev to learn about low level development.

It at it's heart is organized as a reference, not a text book.

I wish that someone would go through and accumulate all the knowledge, put it into a series based textbook with chapters, throw in some example code and VMs for many architectures, and sell it to me because I'd pay. I'd also push for those at my university to construct a class around the book as it would be one of the most fascinating and knowledge packed classes I'd think you could take. (Hint hint, nudge nudge writers and professors!)

But yes to date NOTHING beats osdev.

2 comments

I don't know but the Tanenbaum books."Operating Systems Design and Implementation" is old, but the appendix is the full C source code to Minix 3.0 if you buy the 3rd Edition. I had the 1st Edition with around 12K lines of C in the appendix. Great book, and I had Minix 1.5 running on my old Amiga around 1990. Minix was more portable than Linux, which came out around 4 year after Minix. I had my money on Minix when Linux came along, since Minix was a microkernel, and I thought it sounded like the better direction to take. Well, Linux won out, and funny enough microkernels came back in style anyway with MachTen, MkLinux, and QNX. QNX was very successful in the realtime OS world. I used it on two jobs. The newer Tanenbaum book: "Modern Operating Systems" I have not read, but if it is like the first one, I'd imagine it would be very educational too.
> I had my money on Minix when Linux came along, since Minix was a microkernel, and I thought it sounded like the better direction to take. Well, Linux won

well, I am too young to witnesses the things, but I read from Tannenbaum, that his main intention was to keep Minix so small, that his students were able to understand it ine one semester. And that seems like a big limitation to me ...

Small != a limitation in many cases.

I think small adds to understanding. In addition, the whole point is to keep the kernel small in microkernels, and most, if not all, userland stuff is implemented outside of the kernel, so small is good here.

You can fork and add to it if you want to expand the kernel.

I happen to have a bias for minimalism and small: Shen, Forth, PicoLisp, wasplisp (MOSREF pentesting environment), J programming language, etc...

I think there is too much bloat in web dev, backend, frontend, and PLs in general. I really appreciate it when I see somebody elegantly, and with little code or extra tooling solve a problem in a straight forward manner.

What would be a good step-by-step tutorial in your opinion?
If you'd like the links that really helped me, check out this:

http://www.osdever.net/bkerndev/Docs/title.htm

http://www.brokenthorn.com/Resources/OSDevIndex.html

https://github.com/stephenfewer/NoNameOS

https://anastas.io/osdev/memory/2016/08/08/page-frame-alloca...

https://github.com/kjiwa/x86-boot-sector-c

These are all useful. If you're more of a book worm check out Minix as said in other parts of this tree. Very very easy to read, interesting bits of history about OS development, and source code included! Nothing's useful without source code.

If you'd like to look up some general software books check out Programming the IBM PC, or something to that effect. It's commonly called The Pink Shirt Book. Has interesting stuff on IBM interrupts, coding standards, and bits on filesystems!

Let me plug in my own tutorial :) https://github.com/cfenollosa/os-tutorial