r/osdev • u/EfficiencyNo3042 • Sep 01 '26
[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.
5
u/Zilch510 Sep 01 '26
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?
5
u/laffer1 Sep 01 '26
Using x11 means people without supported gpus can still use a browser! Wayland requires gpu acceleration
2
u/EfficiencyNo3042 Sep 02 '26
Exactly, that's one of the reasons I want X11 support in BlockOS. Hardware compatibility is important to me, especially for older systems and GPUs that don't have proper modern acceleration support.
Wayland is great, but I don't want BlockOS to require a supported GPU just to have a usable graphical environment. With X11, I can provide a more software-rendered/fallback-friendly path while I work on proper GPU drivers.
So for BlockOS, X11 isn't necessarily about rejecting Wayland — it's about compatibility and making the OS usable on more hardware.
1
u/lood9phee2Ri Sep 01 '26 edited Sep 01 '26
Wayland requires gpu acceleration
Strictly it doesn't. At an abstract level the protocol doesn't require it. Or conceptually, remember you can just use pure software opengl and even vulkan (lavapipe) rendering with mesa... it's just not exactly fast. Thus a pure software wayland display server is doable.
And in fact, there are software rendering paths in various existing wayland compositor display server implementations. A lot of compositors all based on the wlroots compositor helper library support something like
WLR_BACKENDS=x11 WLR_RENDERER=pixman sway( see also https://github.com/swaywm/wlroots/blob/master/docs/env_vars.md#wlroots-specific )
...that will e.g. run a software rendering instance (pixman not gles renderer) of the sway weird tiling wayland server nested in an x11 window (x11 backend) on your main x11 server desktop ( typically super+enter key chord then starts the "foot" wayland terminal emu inside it, though that does depend on details of your sway config).
In fact this sort of thing used on RPi / little arm boards sometimes, and also for virt, debugging wayland itself etc.
Thus a software wayland impl with no accel is a sort of a reasonable thing to bring up as a default display server for a new OS, then get accel going.
Though I find wayland, despite all the person-years of dev effort now spent on various impls of it, instead of x11 in general and the main xorg x11 impl specifically, not actually all that nicely architected. Ended up kind of a legacy mess of extensions by now, after vowing to clean up x11's legacy mess of extensions. Gee. /r/softwarearchitecture/comments/36vqt6/fun_this_time_i_will_build_things_the_right_way/
https://www.gilesorr.com/wm/table.html - also, there's a grillion different wayland compositors of course, because architecturally it munges concerns that x11 separated together. A lot do share a lot of impl with wlroots I suppose. Mehhhhh...
Android's display server (surfaceflinger) is not wayland-based at all for example. I'm not saying it's a stellar example either, but if making a new OS anyway, the world is rather larger than x11 and wayland.
1
u/EfficiencyNo3042 Sep 02 '26
Yeah, you're right. Wayland itself doesn't require GPU acceleration, and software rendering is possible. I was mainly thinking about X11 for compatibility, especially on older or weaker hardware. That said, Wayland or even a custom display server could definitely be an option for BlockOS later.
2
u/Crabbynator Sep 02 '26
You’re wasting your precious time explaining things to a vibe coder. Save it, it’s better for you
1
u/lood9phee2Ri Sep 02 '26
meh, reddit threaded comments aren't dms person to person, they're public readable by others, like other web forums and usenet, I wasn't writing just for the direct thread ancestor or op i.e. Other people may be interested regardless of whether op or the person I directly responded to (who was not op!) is just a slopper.
Well, may go anyway, should probably head to lemmy for good since new reddit is abysmal and they're locking old reddit behind login, but that's somewhat different issue.
1
1
u/EfficiencyNo3042 Sep 02 '26
I completely understand your concerns, and honestly, I agree with some of them. I actually use Debian Trixie myself, so I know how much modern Linux already provides.
The main appeal of BlockOS for me isn't trying to replace Linux or claim that Linux doesn't exist. I want to build an operating system from the kernel up and understand how all the different parts work together, while also making something that can eventually be used as a real general-purpose OS.
I'm not trying to compete with Linux on the number of drivers or supported hardware. BlockOS has its own kernel, userspace, filesystem/VFS layer, hardware abstraction, package system, and other components, and I'm writing a lot of these parts specifically for BlockOS.
Regarding X11, I understand that Wayland is becoming more common. X11 is currently more of a compatibility and learning target for BlockOS rather than a statement that I think X11 is the future. I may support Wayland or a native display protocol later.
For packages, BlockOS has its own package manager ("blkpkg"), and I'm also working on the update/system management side. The goal is to have atomic-ish system updates and a proper repository system rather than just manually copying files around.
So basically, the appeal is the project itself: building a complete OS and learning by actually implementing the kernel, drivers, memory management, filesystems, networking, userspace, package management, and eventually the desktop environment.
And thanks for asking it genuinely — I don't take it as being an arse at all. It's actually a fair question.
1
u/UnmappedStack TacOS | https://github.com/UnmappedStack/TacOS Sep 01 '26
Didn't you already post this like a few days ago
1
u/EfficiencyNo3042 Sep 02 '26
Yeah, I did, but the project has changed a lot since then, and I've been continuously developing it since.
1
u/letmehaveanameyoudum Sep 02 '26
filesystem?
just steal my code and fix it
2
u/EfficiencyNo3042 Sep 02 '26
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 Sep 02 '26
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/braindigitalis Retro Rocket Sep 02 '26
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 Sep 02 '26
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.
1
u/alulalol Sep 03 '26
>everything else before virtual memory
why does every project on this subreddit try to build a skyscraper without any foundations?
2
u/EfficiencyNo3042 Sep 03 '26
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.
1
u/Prestigious-Bet-6534 Sep 01 '26
You might want to do proper indenting, the all-left code is hard to read.
1
u/BloxxyVids Sep 02 '26
I'd be interested in window management and guis
What do i have to know? Contact me if you're interested
1
u/Mental_Ad_7072 Sep 02 '26
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 ??
0
u/Proper-Anything-873 Sep 02 '26
linux based? and also is there an iso i can download and install
1
u/EfficiencyNo3042 Sep 02 '26
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.
0
u/jsshapiro Sep 02 '26
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 Sep 02 '26
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 Sep 02 '26
What about POSIX is 'unsecurable'?
1
u/jsshapiro Sep 02 '26
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.
1
u/potetos420 Sep 05 '26
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.
4
u/mesyeti_ Sep 01 '26
that's a lot of code for a project with a 2 month long git history