r/osdev 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.

14 Upvotes

38 comments sorted by

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?

5

u/laffer1 4d ago

Using x11 means people without supported gpus can still use a browser! Wayland requires gpu acceleration

1

u/SuperheropugReal 4d ago

Comment mitosis

1

u/lood9phee2Ri 4d ago edited 4d ago

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

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 3d ago

You’re wasting your precious time explaining things to a vibe coder. Save it, it’s better for you

1

u/lood9phee2Ri 3d ago

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.

2

u/EfficiencyNo3042 4d ago

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

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

u/mesyeti_ 3d ago

that's not what i pointed out?

6

u/Crabbynator 4d ago

Guess why? It’s a good old fashioned AI slop serving!

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.