Page 1 of 1
Finding resources for modern systems
Posted: Mon Jan 15, 2024 12:07 pm
by RedFox
I want to develop an operating system and have only recently gotten into the field. I must say I really enjoy it, but most resources, be it on this wiki or in general, seem to refer to the legacy BIOS protocol.
I've completed a few tutorials and have gotten a grip on the basics. Now, I would like to develop a small OS that I could expand over time into something useful. I've started out, but I'm currently having trouble finding resources.
There are a lot of tutorials and research papers writing bootloaders, kernels and all that stuff for older systems using BIOS instead of UEFI and the 32-bit x86 architecture instead of the 64-bit x86_64 architecture.
Am I missing something? Maybe I haven't searched well enough. Maybe I should work harder and try and figure all that stuff out by myself? Am I just lazy?
I'm just starting out, so excuse me if I appear stupid or lazy.
Thank you in advance!
Re: Finding resources for modern systems
Posted: Mon Jan 15, 2024 11:45 pm
by ArnaudLcm
Hey!
To clarify your point, I would like to suggest not starting with something too ambitious. Instead of trying to have a 'useful' operating system (meaning that you innovate), you should probably start by having a working operating system.
Regarding resources/tutorials, I think you should first clarify what you are looking for.
Here are some hints:
- What is the language you want to use (you have to be proficient with it) ?
- What architecture do you initially target ?
- What core features do you want to implement ? I don't think it's a good idea to be UEFI compliant initially.
Re: Finding resources for modern systems
Posted: Tue Jan 16, 2024 3:19 am
by Octocontrabass
RedFox wrote:most resources, be it on this wiki or in general, seem to refer to the legacy BIOS protocol.
Outside of bootloaders, you don't need to interact with the firmware at all, so for the most part you can pretend "BIOS" is equivalent to "UEFI" and ignore both. Unfortunately, some bootloaders seem to think VGA is a good idea, so you might have to specifically ask for a linear framebuffer to completely get away from the firmware. Of course, you're not writing a bootloader, so you don't have to worry about firmware. Right?
RedFox wrote:There are a lot of tutorials and research papers writing bootloaders, kernels and all that stuff for older systems using BIOS instead of UEFI and the 32-bit x86 architecture instead of the 64-bit x86_64 architecture.
Beware: most tutorials are garbage.
As I already mentioned, the differences between BIOS and UEFI are mostly irrelevant. The differences between 32-bit and 64-bit are more substantial, but they're still the same CPU, so you can at least learn the basic concepts from any 32-bit-specific resource and then use the CPU manuals (and ABI manuals!) to learn how 64-bit is different.
Re: Finding resources for modern systems
Posted: Tue Jan 16, 2024 8:33 am
by RedFox
I think I just simply got confused...
I started writing my own stuff on top of the Meaty Skeleton
https://wiki.osdev.org/Meaty_Skeleton project.
There I confused the bootstrap assembly with the bootloader.
Also it used legacy grub and I had grub2 on my system, resulting in grub not creating the image and failing. I figured out that my virtual machine's BIOS did the loading for me, which made me further believe the boostrap assembly being the bootloader.
I don't really want to write my own bootloader for now, and I think I'd be fine with something simple and EFI-capable like GRUB2, ELILO or something like that.
Thank you for clarifying everything, I'll research bootloaders to choose one and will certainly look into framebuffers.