Bootstrap yourself to write an OS from scratch
github.com
github.com
On an unrelated topic, I wonder whether this popping up in the front page is indirectly related to this comment [1] I posted here yesterday. Many, many times I read interesting comments on HN posts, forget about the topic, and a day or two later, another closely related post appears on the front page. I suppose these comments generate follow-up research that ends up in other interesting articles being discovered and shared. Is it just me? Have you observed this as well? Is HN actually becoming some sort of hacker collective consciousness?
[0] http://www.gabrielgambetta.com/computer-graphics-from-scratc...
Many, many times :)
I notice what you have noticed often. There are waves of a certain theme that clearly show other people posting things after researching something that they first saw here.
It also bothers me to treat upvoting "comments" this way.. I want it to stay under the "upvoted submissions" link on my profile. So I googled "computer graphics from scratch site:news.ycombinator.com" and upvoted the first submission that linked to your page.
I guess what I'm getting at is that method somehow feels wrong to me. Anyone have suggestions for "read-it-later" type bookmarks?
I've been blogging for wel over a decade for the audience of 1. He is perfectly in tune with the author and immensely enjoys everything I post. Sometimes the audience grows by 100% for a short while but after clicking around the categories and the insane amount of hierachic tags he never visits more than 5 citations.
It is highly amusing when he suggests to make the website even better. As if that is possible.
When google droped it I explained that I make the website and they may index it or chose not to. Their ideas how to improve the site and their attempt to force me was like they live on a different planet. They use to do organic ranking? I thought it facinating how they thought they could do that without accounting for my interests.
Point being: you want one of these websites just to have people (consumers) hate on it.
Do try to keep the personal notes as if addessing an audience. When you read those 10 years from now you say out loud: woah this guy is clearly a genius. By that time your 20k "bookmarks" (from now on called blog posts) will have a search engine allowing you to swiftly deeplink buddies into your mind so that they can have conversations under it that become similar treasures the decade after that.
No link to my blog here :)
Something similar happened to me, so I started storing my bookmarks under revision control. I don't add to them too often, so committing & pushing is a process that reminds me to not bookmark things unless they're _really_ interesting.
[1] - https://www.amazon.com/Tricks-Programming-Gurus-Advanced-Gra...
Michael Abrash’s Graphics Programming Black Book http://www.jagregory.com/abrash-black-book/
Computer Graphics: Principles and Practice: Principles and Practices https://www.amazon.co.uk/Computer-Graphics-Principles-Practi...
U r special and unique. Just like everyone else...
I've an interest in writing a hobbyist OS, and I completely agree. Also, (almost) everything focuses on BIOS, rather than UEFI. And again, (almost) everything focuses on calling things from C, with a minimal amount of assembly, rather than doing everything from assembly.
I'd like to see a resource which walks through an honest-to-goodness minimal UEFI application written in assembly. At the moment, I think that I'll need to write it myself …
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/os/i...
efi is a firmware framework, so using an sdk here makes sense. otherwise you need to find out the offsets to the firmware functions yourself. BIOS uses interrupts for this but not sure how uefi does it sorry, i never tried!
I will say that once you land in kernel land C is really nice. it saves a lot of typing. But i started out using pure assembly as it made more sense typing these instructions based on the manuals, c can be a bit too obscure to translate too if you're starting out. (still have trouble :') sometimes ...) Also stuff like loading CR3 with new page table pointer etc. just isn't possible atall in C. (you can inline it with asm volatile (); but inline asm is tedious in itself...)
i'd reccomend using GRUB bootloader, then you can write a loader stub in there which moves the CPU into 64 bit mode and is in ELF format, so you can also compile the os itself in ELF format. I used to use binary blobs from nasm, but i had a world of trouble generating C code into binary blobs. The linking procedure to link a 32 bit loader into a 64 bit kernel is a bit tedious but once it's working you can have 1 script which only does some generation of .o files and links it all together instead of catting binary blobs together and using hardcoded offsets to load them into memory etc. (that was a fun adventure, but really caused me a lot of headache more than anything :D)
if you want to do your own bootloader, consider that you should really write an ELF parser. i dont like the idea of sticking with some file format that's made by other people, but if you want to do it in your own executable format then you need to figure out to write a compiler / assembler for that format which is a lot of work. hence the choice to make an elf parser will get you started easier. if you want to just use nasm -fbin to make everything binary blobs you need to figure out how you will load everything and create mappings in pages to contain data. hardcode a lot of things which the linker/loader usually does for you. i think this will be the next level :D
i can't imagine a better project for learning about how computers really works :D reccomened for anyone interested in computers!
The next thing I wanted to work on was some type of process manager that would allow for multiple processes to run, each in a protected memory space. That's when it started to get pretty hairy and that little learning project bogged down. As I recall, my decision paralysis mostly stemmed from the fact that there were successive generations of ways to handle memory allocation and protection on the i386/x86_64 families, and the clear way that I should implement my little OS branched off into a lot of choices with ramifications that I was hesitating to commit to.
I'd love to go back and pick that project up where I left off. I'll muscle past that learning curve, but are there any good guides out there with more information on how modern 64-bit process management (including memory protection) is accomplished?
That's surprising, since just about every CS program offers/requires an OS course. Does anyone know what took MIT so long?
> This book is will be especially beneficial to students who’ve just finished their first C/C++ course.
That's what I was looking for.
If you want to hack on your main operating system, then yeah, you'll probably want to switch to Linux, but I wouldn't do that yet.
If you were on Windows, that would be a different story.
That uses a very simple educational architecture designed for ease of learning, though. If you prefer a good introductory resource for real-world operating systems, I just finished Georgia Tech's Intro to OS graduate course[1] and found it very accessible as well, and now feel reasonably comfortable with the theory when reading about OS topics elsewhere.
[0] http://www.nand2tetris.org/
[1] https://www.udacity.com/course/introduction-to-operating-sys...
I am still waiting to write my compiler in haskell [0] and to learn linux inside out [1]