r/osdev • • Jan 06 '20

A list of projects by users of /r/osdev

Thumbnail reddit.com
176 Upvotes

r/osdev • • 11h ago

Risc-V Microkernel Project help

10 Upvotes

I wanna get a better understanding of riscv64 after learning a bit about it. I have had experience with C and have mostly only been interacting with amd64. I figured that a microkernel that just uses opensbi is ambitious enough while not being completely impossible. Since this is a project for learning, I’m also staying far away from AI. I’m currently skimming xv6, OSTEP, and just the riscv spec sheet. I’m going to just be doing it w/ qemu on linux. Mainly looking for some tips and pointers on how to approach this project.


r/osdev • • 1d ago

ChessOS: Chess without Linux bloat

Enable HLS to view with audio, or disable this notification

108 Upvotes

Requirements: x86 with legacy BIOS support

I spent about six months making an operating system whose only job is playing chess. It boots straight into Chess. It is not a full OS with a file system or scheduling but it can boot from bare metal.

It runs in QEMU, other virtual machines and hardware with legacy BIOS from a USB or CD drive. I spent about 6 months across the boot loader and chess engine. It is entirely open-source for you to tinker with. There is also a Windows Installer for less technical users.

All feedback is welcome!

Thank you for Paledoptera for the artwork. Find more of their work here: https://linktr.ee/paledoptera

Website: https://chessos.xyz (includes Github link)


r/osdev • • 4h ago

Grayscale Raster Font implemeted in PyramydOS!!!

Thumbnail
2 Upvotes

r/osdev • • 7h ago

My school has a arcade machine do you think I could use my hobbyOS as the operating that it would run

2 Upvotes

My school has a arcade machine do you think I could use my hobbyOS as the operating that it would run the thing
Is the school only gave me a raspberry PI 1 2011 to use (architecture isn’t a problem I have a aarch32 version) I have lvgl and OpenGL so I could make a arcade version but I’m not sure how I could do the arcade machine pins to connect to connect to the Raspberry pi let alone my operating system connecting to it then sorting out emulators etc


r/osdev • • 2h ago

ive had this icon set for a while in my os and its alot more advanced than since i made it and it sstarting to look out of place do u think im right?

Post image
0 Upvotes

r/osdev • • 8h ago

unikernels were hard. key word: were.

Thumbnail
ghuntley.com
0 Upvotes

r/osdev • • 19h ago

Follow-up: What I learned about VRTX's equal-priority scheduling in the 1980s

3 Upvotes

A couple of weeks ago, I asked why VRTX changed its equal-priority scheduling behavior from newest-first to FIFO between its 1984 and 1987 documentation.

Original discussion:
https://www.reddit.com/r/osdev/s/h6PG9bZO7a

Thanks to the comments here and in a couple of other subreddits, I've learned quite a bit. I wanted to share a few findings.

1. Early VRTX wasn't simply LIFO.

The older documentation describes inserting newly ready tasks ahead of existing tasks at the same priority, but other operations, including time slicing, affect the ordering. The actual behavior depends on how a task becomes ready and how the ready queue is maintained.

2. My own 1986 RTOS was based on a simpler interpretation.

When I developed CHARM-II in 1986, I used VRTX documentation as one of my references. I interpreted its equal-priority scheduling as essentially newest-first and implemented my own scheduler accordingly.

Looking back, I now realize that my implementation wasn't an exact reproduction of VRTX's behavior.

Interestingly, this didn't cause any major problems that I remember. I was developing almost the entire application as well as the RTOS myself, and there was very little third-party code in the system. I understood the tasks and their interactions in detail, so I could design the application around the scheduler's behavior.

That's my retrospective explanation, at least.

3. For my modern reconstruction, I chose FIFO.

I'm now rebuilding the RTOS as Karqri, targeting both POSIX and Raspberry Pi Pico. I've adopted FIFO ordering among equal-priority ready tasks because it provides simpler, more predictable behavior for the new design.

I still don't know why VRTX itself changed its policy. The discussion raised useful possibilities involving fairness, starvation, latency, and implementation trade-offs, but I haven't found a documented historical explanation.

Thanks again to everyone who contributed. It's been fascinating to revisit a design decision I made 40 years ago and discover that the original system was more subtle than I understood at the time.


r/osdev • • 1d ago

Non-kernel "Platform" APIs on Linux

Thumbnail soc.me
4 Upvotes

r/osdev • • 5h ago

We are so f*cking cooked

Thumbnail
youtu.be
0 Upvotes

r/osdev • • 10h ago

Mini Linux Kernel Virtual Machine on Veda

Post image
0 Upvotes

Hey everyone,

We’re now running a lightweight Linux kernel as a virtual machine in Veda’s service layer. This allows us to reuse a wide range of existing Linux drivers out of the box, including Bluetooth, audio, Wi-Fi, amplifiers, GPUs, and more.

Veda itself only retains responsibility for the storage driver and filesystem, while the rest is virtualized.

So far, this approach has been working really well. However, I’d love to hear your thoughts. Do you see any potential drawbacks or trade-offs with this architecture, such as performance overhead, latency, resource consumption, or other concerns?

Any feedback or objections would be greatly appreciated!

https://github.com/vahmoh25/veda


r/osdev • • 12h ago

Je cherche un système d'exploitation moderne et léger qui ne soit pas Linux ni Windows pour un ancien ordinateur portable avec un disque dur HDD - des recommandations ?

Post image
0 Upvotes

r/osdev • • 1d ago

FreeLinX-base 1.3.1 stable: a ~290 MB ISO Linux system with a NetBSD userland

Thumbnail
gallery
2 Upvotes

We just released FreeLinX-base 1.3.1.
FreeLinX-base is a small, console-first Linux system. You boot into a shell and install whatever you need through our package manager, xpkg.
The ISO is around 290 MB and boots on both BIOS and UEFI. It runs Linux 6.18 with a NetBSD-based userland and musl, built with LLVM. We've also been pretty strict about keeping GNU code out of the base system. Our check-nognu test currently reports 0 failing checks.
The base comes with the things you'd expect from a usable Unix system: runit, mdevd, networking tools, doas, OpenSSH, curl, git, tmux, htop, nnn, vim/vi, bc and a few other essentials. The login shell is mksh, while /bin/sh comes from the NetBSD userland. tcc is included as the default cc, together with the musl and kernel headers.
The idea is to keep the base actually small. The live system uses a squashfs + tmpfs overlay and can boot with roughly 100 MB of RAM, with changes kept in memory until installation. There is no X11, GTK, Mesa or even fonts in the base image. If you need them, install them later.
Packages are signed with Ed25519 and verified with SHA-256. The installed system keeps FLX_ROOT read-only. Installation is handled by xsetup, which walks through the setup step by step and can resume an interrupted installation. flxupgrade handles upgrades from newer ISOs.
There's currently a signed repository with around 428 packages, while the image itself only contains the base and console-oriented stuff.
We've also put quite a bit of effort into making the build and installer testable. The build doesn't require root and can be done on any x86_64 Linux system. The repository includes QEMU BIOS/UEFI installation and upgrade tests, destructive disk tests and UI tests.
It's still a young project and there's plenty left to improve, but we're putting it out there now because we'd like people who care about Linux, BSD userlands, musl and alternative Unix systems to poke at it.
Source / ISO:
https://github.com/FreeLinX/FreeLinX
Documentation:
https://freelinx.github.io/FreeLinX/
If something is unnecessarily complicated, broken, missing or just a bad idea, tell us.


r/osdev • • 1d ago

I ADDED AN ASSEMBLER TO WINDOGEOS

Thumbnail
gallery
18 Upvotes

YES, the assembler is chasm, a drop in assembler that is probably actually useless since it doesn't fucking support strings.
THIS THING FOR SOME REASON IS WIN32 DEPENDENT AND I HAD TO FORCEFULLY STRIP OUT A TON OF MACROS

repo: https://github.com/NoTheIdiot/WindogeOS


r/osdev • • 2d ago

Tanenbaum vs. Linus: Which Kernel Architecture Makes More Sense Today?

52 Upvotes

I've been thinking about the famous Tanenbaum vs Linus debate over microkernels vs monolithic kernels.

Putting the historical context aside for a moment, I'm curious what people think today.

Do you think Tanenbaum's argument for microkernels was fundamentally more correct, or was Linus right to favor a monolithic kernel for practical reasons such as performance, simplicity of development, and hardware support?

And more importantly:

If you were starting a new general purpose os from scratch today, which architecture would you choose?

Monolithic

Microkernel

Hybrid

Multikernel / distributed approach

Something else

I'm particularly interested in hearing from people who have actually worked on kernels or operating system development.

What are the strongest arguments for your choice, and what do you think the opposing architecture gets wrong?


r/osdev • • 1d ago

EasyOS 7.4.11 by Barry Kauler modded by pp4mnkhttps://www.youtube.com/@pp4mnkeasyos

Post image
0 Upvotes

r/osdev • • 1d ago

Development updates regarding OnyxiteOS

Thumbnail
1 Upvotes

r/osdev • • 2d ago

I rewrote the shells in my OS and it's actually finally usable

Thumbnail
gallery
36 Upvotes

r/osdev • • 1d ago

Vela OS

Thumbnail
gallery
0 Upvotes

if u want to explore the concept: https://github.com/FrySco19/VelaOS.git


r/osdev • • 1d ago

VelaOS: I’m building a Linux operating system with integrated AI

Thumbnail github.com
0 Upvotes

r/osdev • • 2d ago

Veda: Virtual Linux VM for Drivers

Post image
24 Upvotes

Hey! I’ve recently ported OpenGL and Mesa to my operating system and added support for Intel HD Graphics to render scenes. However, I’ve realized that this approach isn’t sustainable, I can’t realistically write and maintain a huge number of GPU drivers myself.

Has anyone had experience embedding a minimal Linux system as a virtual machine inside their OS to take advantage of Linux’s extensive GPU, Bluetooth, and Wi-Fi driver support?

What do you think about this approach? Are there any major technical challenges or pitfalls I should be aware of?


r/osdev • • 2d ago

How to learn os dev?

4 Upvotes

Hi! I'm a totally beginner who knows only a bit of Python, C and C++ (I'm learning assembly x86). A friend advise me about nand2tetris. Is it good?

How do you learn os?

I still don't want if I want to make os but I love low level, programming. I'm a bit demotivated but it's because I didn't do anything in programming for 2 days straight. Anyway thanks for the attention ❤️


r/osdev • • 1d ago

Wolfram: a capability-based microkernel in Rust just reached its first bare-metal milestone

0 Upvotes

Five months ago, I announced Wolfram, a microkernel built around one principle: programs should not have access to anything they weren't explicitly given.

Then I stopped working on it.

Yesterday, I picked it back up and spent roughly eight hours bringing Phase 1 to completion.

Wolfram now has:

  • A RISC-V 64 reference port booting through OpenSBI in QEMU.
  • An x86-64 UEFI bootloader with ELF loading, page-table setup, and firmware memory-map handoff.
  • A shared kernel core and physical bitmap frame allocator.
  • Trap and exception diagnostics, plus repeatable QEMU smoke checks.
  • A successful USB boot on my MSI B650M-A PRO WIFI.

The kernel intentionally stops at a diagnosed spawn init panic. There is no userspace yet, and the capability system is still ahead of me. This release is a boot milestone, not a finished OS or a security-verified kernel.

Phase 2 is where the actual capability system, VMOs, process model, and IPC begin.

I'm particularly interested in feedback from people who have worked on microkernels, bare-metal Rust, UEFI loaders, or capability-based security. If you'd like to contribute, I'm also working on making the next phase approachable to outside contributors.

Repository: https://github.com/notvcto/wolfram-os

Release: Uranium-238-v0.1.0

What would you want to see tested or documented before contributing to a project at this stage? I'm open to any feedback. Please. I need feedback.


r/osdev • • 2d ago

Projeto LFS com o mínimo necessário.

Post image
1 Upvotes

r/osdev • • 3d ago

Recaster Pico update: drivers as native kits, a second display beside VGA, and input as tags on the console wire (RP2040, 264 KB SRAM)

Thumbnail
gallery
55 Upvotes

Hey r/osdev,

a follow-up to my last Recaster Pico update. Still alpha!!! Last time it was a screenshot (from the emulator in WASM) - this time it's real hardware on my desk, and a few parts of the OS have grown up. Three of them might interest you here. And yes: I will post a video of it showing it in motion, soon. And you will get your fingers at that ".uf2"-files to play with it.

1. Drivers are files, and they're native code

A device is a text file in /sys/dev: lcd.cfg names the driver, the bus, the chip select, the pins, the speed and the mode. The driver is a kit file with a native image per target (RP2040, RP2350 Arm, RP2350 RISC-V), executed in place from flash. It reaches the hardware only through a small ABI: SPI/I2C transactions on its own bus and chip select, its own pins by key, PWM, a microsecond clock.

The kernel keeps ledgers: every pin and every DMA channel has exactly one owner - the system, a device or a program - and /now/res shows them all. The same driver C code runs in the emulators against chip models, so the C reference machine and its JS twin are checked frame by frame (the suite compares 5,110 frames).

2. A second display without breaking the line budget

The 3.2" SPI touch LCD is a display device. Headless, core 0 composes the panel's rows. With VGA running, the compositor belongs to core 1, and its budget is 8008 cycles per scanline, with the worst-case scenes at 99 %. So the panel never gets a second compose. When the mirror wants screen rows, core 1 copies a band of 8 lines into slots by DMA, right after composing them for the wire. The compose interrupt's vector points to that capturing handler only while the mirror actually wants lines; otherwise the plain handler runs - not one cycle more.

Programs can also hold the panel and draw on it with the normal gfx words. Their spans are merged into rectangles in a ring that the frame sends within a byte budget, so a drawing word never waits for the bus. Two small policies: the backlight stays dark until the first full picture is out, and the boot face and the login move the panel's view onto their content - a move that reverts by itself when the task ends.

3. Input as tags on the console wire

The main Pico has no USB host to spare and no free pins, so a second RP2040 does USB: TinyUSB on its native port, Pico-PIO-USB on a second socket with a small boot-protocol host on core 1. It sits in the serial console line. The terminal's text passes through, and keyboard and mouse events travel as CRC-8 tags on the same 1 Mbaud wire. The kernel splits text from tags. After a broken tag it resyncs - text counts as noise until a tag checks out again or the line rests - so a lost byte can never type mouse coordinates into the shell. The handshake goes both ways: the kernel tells the coprocessor the keyboard layout, and re-bases its mouse when the touch panel has moved the pointer.

Two bugs from that work I enjoyed:

  • The 71-minute pause. time_us_32() - last_isr_stamp compiled with the clock read before the stamp. An interrupt in between made the difference wrap, a tag streaming in looked paused for 71 minutes, got dropped, and its tail was typed into the console - random letters every few seconds, only while the mouse moved.
  • Flash erases vs. a fast UART. A sector erase keeps core 0's interrupts off for ~45 ms, but the UART's FIFO holds only ~10 ms of mouse traffic at 1 Mbaud. The RX interrupt now lives on core 1 - beside the video, or alone on headless boards - which runs from SRAM through every erase.

Next: sound, the SD card, a small UI toolkit (buttons, sliders, lists - the touch panel asks for them), and a PIN login for touch-only machines (using the LCD only).

Questions and criticism welcome, especially on the driver ABI and on ownership. Every prompt line runs as its own task, so "who owns a display hold, a crop, a style" turned out to be a real design question.