[Documentation] Making an OS #41
-
Hello! I was wondering what guides you used to make an os. I am trying to make one myself but don't know where to start and how to add GUIs and a proper bootloader. Thank you! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
Hello! I moved the issue you opened about this to discussions since I figured it would fit better here 🙂 I can't say there were really specific guides that I used to get started. The place I would definitely reccommend checking out when getting started is the OSDev Wiki - it has plenty of guides for getting started, writing a simple bootloader, interfacing with basic hardware, etc. You can always copy and paste code from there if you don't quite understand what's going on - but I'd recommend consulting external resources (see: Your search engine of choice) in addition to the wiki to gain a deeper understanding. The OSDev wiki also has a great page with a list of books that might be useful. It's also worth mentioning that it really does help to have a good amount of experience in programming and at least a basic understanding of the fundamentals of computer science, C, and assembly before getting started - knowing what's actually going on in the silicon when you write code (at least, to a certain degree - I'm no computer engineer) is an invaluable thing to have. Once you start getting into the weeds, it becomes necessary to consult spec sheets and documentation for the whatever it is you're trying to interface with. It's also a good idea to read code from time to time from other open source operating system projects to see how they've implemented a particular feature - I like to look at Linux, SerenityOS, toaruOS, MINIX, and Darwin/Mach, to name a few. Once you get to the higher-level stuff like GUI and userspace applications - it's really up to you. I used a combination of my experience with various GUI toolkits and some reading about how the X windowing system works to figure out how I'd implement windowing, compositing, and GUIs in duckOS. Somewhere, there's a bunch of diagrams scribbled on a napkin that I did during downtime at work for how I'd design my IPC system 😄 Ultimately, for me, the fun in creating a hobby OS is figuring out how to interface with hardware, create all these components from scratch, and seeing all your hard work come together. I'm not sure if doing it the way I've done it is necessarily the best way, because I had no formal computer science education prior to starting it - and I haven't even finished my degree yet (which is only tangentially related to CS anyway). It's not an easy process, and it's not always fun (prepare to stay up until late hours of the night fixing bugs that were caused by your own sleep deprivation). But it's really rewarding - and I wish you luck :) |
Beta Was this translation helpful? Give feedback.
Hello! I moved the issue you opened about this to discussions since I figured it would fit better here 🙂
I can't say there were really specific guides that I used to get started. The place I would definitely reccommend checking out when getting started is the OSDev Wiki - it has plenty of guides for getting started, writing a simple bootloader, interfacing with basic hardware, etc. You can always copy and paste code from there if you don't quite understand what's going on - but I'd recommend consulting external resources (see: Your search engine of choice) in addition to the wiki to gain a deeper understanding. The OSDev wiki also has a great page with a list of books that might be useful.
…