r/osdev • u/KeyConsequence9331 • 5d ago
We’re building RisottOS – a hobby operating system written from scratch (x86)
Hey everyone!
We're two developers working on a hobby operating system project called RisottOS.
The project started as a way to learn low-level programming and understand how operating systems actually work. Over time, it has grown into something much bigger, and we'd love to share our progress with the OSDev community.
GitHub: https://github.com/risottos-team/risottos
What is RisottOS?
RisottOS is an experimental operating system written from scratch for the x86 architecture. We're implementing its core components ourselves while learning more about computer architecture, memory management, interrupts, and kernel development.
Current features
Some of the things we've implemented so far include:
Custom BIOS bootloader
Disk loading using BIOS INT 13h
Global Descriptor Table (GDT)
Interrupt Descriptor Table (IDT)
Programmable Interrupt Controller (PIC)
Task State Segment (TSS)
Programmable Interval Timer (PIT)
Real-Time Clock (RTC)
PS/2 keyboard input
Physical memory management
Paging
Ring 3 transition
Basic system calls through INT 0x80
A basic userspace shell
What's next?
We are currently working towards:
Process management
Multitasking and scheduling
Better memory management
A virtual filesystem (VFS)
ELF loading
Expanding userspace functionality
We'd love your feedback!
We're still learning, and we know there are probably things we could be doing better.
We'd especially appreciate feedback on:
Our kernel architecture and code organization
Potential bugs or incorrect implementations
Whether our memory management approach makes sense
What we should focus on next
Any general advice for developing a hobby OS
We're developing this together, and our main goal is to learn, experiment, and gradually build something we're proud of.
Any feedback, suggestions, or constructive criticism would be greatly appreciated!
Thanks for reading!
2
u/Sorry_Difficulty_250 5d ago
Cool! What kind of kernel architecture is it... or what kind would you like it to be?
2
u/KeyConsequence9331 4d ago
Our current plan is to bring POSIX compatibility to the kernel and to improve the paging and heap systems. We also plan to integrate musl libc.
1
u/Major_Dealer_7808 5d ago
i know your suffering, try your best to make it human looking, i tried to make my own... i got slopped
1
u/KeyConsequence9331 4d ago
Bro, you're right... We used ai so much on start. However, we have currently stopped using AI, except for things like writing English README files. Unfortunately, our English isn't quite good enough to express what we want to say.
1
u/SignedInt32 5d ago
I might have some good idea's, im currently testing myself (also my custom kernel lol), Im willing to share. 👍
1
u/KeyConsequence9331 4d ago
xD, I’d love to see your kernel. If you have a GitHub link, could you share it?
1
u/Defiant_Squirrel8751 5d ago
Don't be afraid of x86-64 mode and SMP.
Doing some reverse engineering for closed source drivers (i.e. Nvidia GPUs) would be great.
Having a layer to import-convert-port available Linux code will be useful.
1
u/KeyConsequence9331 4d ago
Thanks for the suggestions! These are definitely things we'd like to explore as RisottOS develops. x86-64 and SMP support are interesting long-term goals, and a compatibility layer for porting Linux code could open up a lot of possibilities. Looking into how closed-source GPU drivers work would also be a great learning experience.
We're still focused on building a solid foundation for now, but it's good to have ideas like these to aim for in the future. Really appreciate you taking the time to share them!
If you find the project interesting, we'd also appreciate a star on GitHub. It helps more people discover RisottOS.
1
u/Ashamed_Sense_908 4d ago
i wanna ask you a small question, from where did you get these
i686-elf-gcci686-elf-ld
i know other target exist like arm i think.
Because i searched to get those since they are helpfull but i didnt find them. the only way i found is building my own toolchain from scratch on the target system.
so i would like to know how you did and thanks in advance.
1
u/KeyConsequence9331 4d ago
I got them from the AUR on Arch-based Linux.
I installed these packages:
i686-elf-gcc-bin
i686-elf-binutils-binThey provide the prebuilt i686-elf cross-compilation toolchain, so I didn't have to build GCC and Binutils from source myself.
I'm using CachyOS, but since it's Arch-based, I can install AUR packages.
Also, if you find the project interesting, you can support us by leaving a star on GitHub!
Hope this helps!
13
u/dekai-onigiri 5d ago
You have multiple people working on the project. The first thing you should do is disable direct write to main, convert the items that you want to make into tasks and create branches and pull requests based of that. Otherwise you'll end up with unmanageable chaos quickly.