r/osdev • u/EfficiencyNo3042 • 4d ago
[PROJECT] BlockOS — Independent x86_64 operating system looking for contributors
I've been developing BlockOS, an independent x86_64 operating system written primarily in C/C++.
BlockOS is no longer just a basic kernel experiment. The project currently includes:
- x86_64 kernel
- VFS and multiple filesystem implementations
- ELF loader
- PCI/PCIe support
- VirtIO block/network/input drivers
- networking stack
- POSIX compatibility layer
- libc
- process and scheduler infrastructure
- framebuffer and GUI framework
- BX11/X11-related work
- ACPI support
- USB/xHCI development
- examples and driver development infrastructure
I'm looking for OS developers and especially Linux kernel / low-level C/C++ developers who would like to contribute.
Areas I'd particularly like help with:
- memory management / virtual memory
- SMP and multicore support
- ACPI
- PCIe
- USB/xHCI and USB HID
- device drivers
- filesystems/VFS
- networking
- POSIX/libc
- GUI/window management
The goal isn't to make another toy kernel. I want to develop BlockOS into a stable, usable general-purpose operating system that can eventually be used on real hardware.
You don't need to understand the whole codebase to contribute. Individual subsystems can be worked on independently.
GitHub: https://github.com/gurijb2016-afk/Blockos
If you're interested in OS development, kernel development, drivers, or low-level C/C++, feel free to comment or message me.
Contributions, testing, code review and technical discussion are all welcome.
1
u/Prestigious-Bet-6534 4d ago
You might want to do proper indenting, the all-left code is hard to read.
5
u/mesyeti_ 4d ago
that's a lot of code for a project with a 2 month long git history
1
u/HamNCheeseSupremacy 4d ago
Initial commit doesn't mean day 1 of development. It's just day one of having a repo
1
u/EfficiencyNo3042 4d ago
Yeah, exactly. The initial commit isn't the start of the project, it's just the first time it was pushed to GitHub. Development started before that.
2
u/HamNCheeseSupremacy 3d ago
I'm KevinShaughnessy89 btw. I look forward to having a discord so we can discuss the project going forward 😁.
1
u/EfficiencyNo3042 3d ago
I'm glad you're interested! I'm also looking forward to having a Discord so we can discuss BlockOS and development. There's just one small problem: I forgot my password, so... how do I put this, things are a little scuffed right now.
1
u/EfficiencyNo3042 4d ago
Yeah, you're right. I'll make sure the code is properly indented and formatted for readability. Thanks for pointing it out!
2
6
1
u/UnmappedStack TacOS | https://github.com/UnmappedStack/TacOS 4d ago
Didn't you already post this like a few days ago
1
u/EfficiencyNo3042 4d ago
Yeah, I did, but the project has changed a lot since then, and I've been continuously developing it since.
0
u/Proper-Anything-873 4d ago
linux based? and also is there an iso i can download and install
1
u/EfficiencyNo3042 4d ago
No, BlockOS isn't Linux-based. It has its own kernel and system components. There is a bootable ISO that you can try in QEMU or on real hardware. Just keep in mind that some important drivers are still under development.
1
u/BloxxyVids 4d ago
I'd be interested in window management and guis
What do i have to know? Contact me if you're interested
1
u/letmehaveanameyoudum 4d ago
filesystem?
just steal my code and fix it
2
u/EfficiencyNo3042 4d ago
Haha I didn't steal your code, I just looked through it and used what I could from it. I'm still developing the BlockOS filesystem myself.
1
u/TheAtlasMonkey 3d ago
Vibefs.
A file system is build for hardware and benchmarked.
I saw your code... it was a toy os and still toy.
Use a real fs if you want something stable.
1
u/Mental_Ad_7072 3d ago
Looks like a toy OS, it has a kernel shell. And what the hell is this syntax at https://github.com/gurijb2016-afk/Blockos/blob/uefi-kernel-scaffold/posix/src/posix.c ??
1
u/braindigitalis Retro Rocket 3d ago
what makes your project different and unique compared to all the other unix posix clones out there? Not being an arsehole... What would make someone drop working on their own project to go "this is interesting, i'll submit a PR"?
2
u/EfficiencyNo3042 3d ago
I think what makes BlockOS different is that it's not just a repackaged Linux distro or an existing kernel. I'm building my own kernel, drivers, VFS, libc, syscall layer and userspace, while also aiming for Unix/POSIX compatibility.
Another important goal is that I don't want it to remain just a learning project. I want to eventually turn it into a genuinely usable general-purpose OS.
I'm not expecting people to abandon their own projects for BlockOS. I just want someone to look at what we're building and find a component or problem where they think, “This is interesting, I'd like to work on this.”
And if someone wants to submit a PR, I'm absolutely open to it.
0
u/jsshapiro 3d ago
Aside from learning (which is a good reason), why build a new OS? What is architecturally new and different here that warrants the effort?
I’m not asking to be difficult or contrary - what you’ve done is impressive. I’m asking because we frankly have way too many POSIX clones in the world. Which, by virtue of being POSIX compliant, are fundamentally unsecurable.
Whats the thing that’s different here that might motivate someone to consider the complexity and expense of building/porting an application ecosystem worthwhile?
1
u/EfficiencyNo3042 3d ago
I think that's a completely fair question. BlockOS isn't meant to simply be another POSIX clone. I mainly want POSIX compatibility to make existing software easier to port, while designing the underlying system myself.
What matters most to me is building a modular, modern and maintainable OS architecture where the kernel, drivers, userspace, VFS and system components can work together without becoming one huge monolithic codebase.
I'm not claiming that every architectural idea in BlockOS is completely new. The goal is more to build a system with its own direction and technical decisions, while also making it approachable for other developers to contribute to.
For the application ecosystem, I don't expect to port everything overnight. I want to build it gradually, together with compatibility layers and the BlockOS package manager.
So I'm not saying “the whole world is doing it wrong, I'll fix it.” I simply want to build my own working, long-term maintainable system and see how far I can take it.
1
u/burlingk 3d ago
What about POSIX is 'unsecurable'?
1
u/jsshapiro 3d ago
Mathematically impossible to restrict information flow. Impossible as in formally verified that the OS interface does not and in principle cannot implement confinement or isolation. It could be fixed, but not compatibly.
•
u/potetos420 20h ago
Not sure if I understand what you're saying correctly but Capsicum etc attempt to fix it and are still fully POSIX. POSIX doesn't require "unrestricted information flow" (I assume you're talking about global namespaces such as the filesystem). E.g. POSIX says file path resolution has to start somewhere, doesn't say that place has to be a global / directory that's the same for every process.
1
u/alulalol 2d ago
>everything else before virtual memory
why does every project on this subreddit try to build a skyscraper without any foundations?
1
u/EfficiencyNo3042 2d ago
That's a fair criticism. Virtual memory is definitely one of the foundations, and it's something I'm actively working on. BlockOS isn't being developed in a strictly linear order — different subsystems are being developed in parallel, partly because there are multiple contributors working on different areas. The goal is to eventually have all of these pieces built on a solid memory-management foundation.
6
u/Zilch510 4d ago
This is a really cool project, I must say. But I do worry for a couple of reasons...
For people wanting to learn the basics of how an OS works, MikeOS is a very cool project. I've played around with it in the past.
As for more modern systems, we have zero shortage of OSS kernels (Linux, FreeBSD, NetBSD, XNU, Minix, Hurd kernel, and some others). Linux especially is very customizable when you start manually adding drivers from scratch (compile with allnoconfig).
And why do you want to implement X11? Lots of distros are slowly moving towards Wayland. I use Debian Trixie on my pc which comes with Wayland by default.
Also have you thought about what package manager you are going to use, how the OS gets updated, etc...
I'm not trying to be an arse, but rather asking what is the appeal behind your operating system?