So I’ve recently been interested in learning to create my own OS, not a Linux distro or something of the sort, I mean completely from scratch.
There are some YouTube tutorials and such that go over these sorts of things, but they either use a bunch of libraries and other stuff you probably don’t need, (because how did people create their own OS if these things didn’t exist during their time?), they don’t go over how to do any of the things suggested in their videos, or are a complete line for line copy and paste tutorial.
I preferably want some instruction on how to do something of the sort, and wiki.osdev.org has some good articles that don’t support line-for-line copy/paste and go pretty in-depth on complex topics, but I want to hear from someone that has done this sort of thing before and can provide a good starting foundation and can explain to me some key features of an OS, (ex Kernel and stuff), and a summary of what exactly an OS is, in some more high-level context that a beginner can more-less understand.
What kind of experience do you need to have? I’ve read that you have to have an extremely good understanding of computer science concepts and low-level languages, with years of experience, but I’ve also seen people that have just started creating some pretty cool stuff with nowhere near as much experience as people say you need.
What languages or programs would you need to use? Is extensive knowledge of C or C++ required, and how much Assembly would be used, if it would even be used? I would prefer to install and use the least amount of stuff possible, like possibly skipping out on something like QEMU and booting from the BIOS, and only having to use VSCode and WSL if needed, (this is from a Windows 11 standpoint). And this is likely impossible, but would this sort of thing be possible from Replit itself, or at least being able to test/experiment with certain parts of the OS?
Once an OS has reached a good point for releasing it to the public, how would you release it, and provide bootable downloads, (ex: ISO image or something), for users to test? Is there any additional information or other stuff you would need to provide?
How would you go about creating some graphical interface, using as few libraries and external scripts as possible, and then implementing it into the OS, and providing good interactivity and ease of use?
Then, how would you provide support for some major programs and filetypes, without just adopting their own filetypes or using programs that automatically can understand such things? Would you have to convert from EXE until they were to provide a download for your OS at the start? If so, how would you even go about doing such a thing?
I would probably have posted this somewhere else, but I find Replit Ask to be one of the more supportive communities for asking questions. I would appreciate any help, even if you can only provide a single or fraction of an answer.