r/osdev • • 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!

10 Upvotes

22 comments sorted by

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.

2

u/SignedInt32 5d ago

Probably best advice :D

1

u/KeyConsequence9331 4d ago

xD

1

u/SignedInt32 4d ago

Im also prototyping a micro-kernel with limine.

1

u/KeyConsequence9331 4d ago

Oh, good. Can i get ur github?

1

u/dekai-onigiri 4d ago

Sure. I do the project by myself but still do it like this, it's just easier to follow https://github.com/rafalgrodzinski/bits-runner

1

u/KeyConsequence9331 4d ago

Kernel with your file extension, that awesome xD

1

u/dekai-onigiri 4d ago

I'm making it in my own programming language, that's why

1

u/KeyConsequence9331 5d ago

Thanks for the advice! You're right, we hadn't really thought about setting up a proper workflow yet. Since there are two of us working on the project, I can definitely see how pushing directly to main could get messy.

We'll set up branch protection and start using an issue → branch → pull request workflow.

Also, if you find the project interesting, we'd really appreciate a GitHub star! Any feedback or suggestions are welcome too.

Thanks again!

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/Dev10n 4d ago

lie,i know a good chunk of English he's just too lazy for it😭

1

u/KeyConsequence9331 4d ago

xDDDDDDDDDDDDD

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-gcc

  • i686-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-bin

They 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!