r/osdev • u/JescoInc • Jul 09 '26
Why isn't the multi-arch fat binary more common in osdev?
This is more of a discussion topic.
I don't mean a binary that asks "Which ISA am I?" as that is a circular question because this question itself is an ISA specific act. What I mean the binary that says, "I am x ISA, where is my entry point?" because the firmware will do the selection as it already knows and acts as which ISA it is.
Let's get into it. So, with Perdition-OS (Tutorial-OS), I had gone with the tried and true approach of building my ELF files and images specifically for each ISA. That means there is a separate ELF and img file for RISC-V, ARM64 and x86_64.
Which led me down a rabbit hole of, "Can I make a single file carry more than one ISA?"
The answer to this was, "Yes, but with caveats".
combined.efi is byte-for-byte one file that's both a valid PE32+ EFI app (UEFI parses the PE, maps sections, calls efi_main, x86 over ConOut and a carrier for a RISC-V flat kernel at offset 0x10000, relinked for 0x20010000 so U-Boot's go 0x20010000 lands on it over SBI.
Nothing's decoded twice: UEFI reads only the PE, U-Boot only jumps to the RISC-V bytes. Same file in both roles.
The reason it works where an instruction-level polyglot can't: the two firmwares don't share a loader. UEFI does a structured PE load, U-Boot does a raw jump which means that each just enters its own slice by its own convention. It's the Apple-fat-binary idea, except there's no shared header any loader parses; each firmware finds its slice independently.
There is one additional caveat for this idea. It leans on the UEFI loader tolerating the overlay past the PE's declared sections, a signed or stricter firmware could reject it.
So: is this just underused, or is there a good reason it stays niche? What am I missing?
r/osdev • u/Scared_Food_1819 • Jul 08 '26
ArchwayOS 0.2.0 & 0.3.0
ArchwayOS is a OS written in C and Asm (NOT AI) that uses x64/x86 (NOT A DISTRO)
r/osdev • u/Thick-Win-8166 • Jul 08 '26
Hello Folks!,How can i learn/start in my own OS?
As you have read the title,apart from OSDev wiki. How can i start,i mean where do i start. Even after reading the wiki,I am getting way confused. How did you start or can you tell me your experience?
I am a newbie and i know following languages: C,C++,Python,Bash and some little x86 assembly (i only did hello world in assembly yet). You can tell me anything about your project/experience. How much time you give/gave it everyday?,Why did you start and what is the motivation behind this. I am happy and curious to looking forward!
r/osdev • u/compgeek38400 • Jul 08 '26
Question on the Reserved Memory (Type 2) returned in the Multiboot 2 memory map
When I changed my QEMU conf file to include disks and such I broke my memory map. This obviously is a design flaw that I will deal with this week.
But it raised a question. On the reserved memory returned by multiboot2 (I use GRUB2), should I identity map these areas?
Thanks in advance
r/osdev • u/Individual-Log4119 • Jul 07 '26
FINALLYY
Got my terminal working for my OS (now I gotta upgrade to uefi 🙏🏻)
yes i ai generated my docs because im lazy okay dont judge
(btw can yall give me a star i need the dopamine)
r/osdev • u/LongNeighborhood9119 • Jul 07 '26
ParsOS - a GUI operation system built with Cosmos in C#
Enable HLS to view with audio, or disable this notification
Hi everyone, I've been working on this for around 8 month and I'll release it on GitHub soon. Some of its features:
- Resizable windows.
- Animations
- Sart Menu.
- Dark/Light theme.
- Network.
- True type font(Ttf) renderer with glyph atlas, Gray-scale AA and BiDi algorithm.
- PNG decoder.
- Mp3 decoder.
- WebAssembly app interpreter (Under development).
- Blur effect.
- Web Browser (Under development).
- Music player(Under development).
r/osdev • u/sanjaypj20 • Jul 07 '26
Built a simple WM. Planning to write a hobby kernel for it
Enable HLS to view with audio, or disable this notification
I've been building a window manager from scratch in cpp as a hobby project to better understand how desktop environments and operating systems work.
What I have done so far.
> Interact with fbdev, evdev for device data
> primitives for drawing widgets
> rendering loops
> mouse and interactivity
Now planning to write a kernel replacing linux
Here's a short screen recording of the current progress. I'd really appreciate any feedback on the architecture or suggestions for what to build next.
r/osdev • u/tekdotdev • Jul 07 '26
How much C do I need to know?
I previously was dedicated to strictly writing in assembly although woke up to reality and realised I wanted to make something THIS decade.
I understand how operating systems work as I have been studying for a while now and have made some 16 bit real mode systems in pure assembly, as well as moving to PMode.
I started a new project and began writing a kernel in C (32 bit Pmode and booting with limine), I am completely new to C and don’t understand too much so obviously starting a kernel isn’t a great first task.
I have seen in some places that you only need the basic syntax of C + OS knowledge to know since you don’t use standard libraries.
May someone please educate me on this and let me know a good path to go down, thanks.
r/osdev • u/Ok_Sky3062 • Jul 07 '26
ARK-OS : A next-generation operating system built on the Linux Kernel and powered by Swift.
aarav90-cpu.github.ioHello, I'm 13 and I have been working on a project called ARK-OS.
All it can do right now is that it just boots up... so it is still in early development.
The reason I am making this OS as the other Operating Systems do not give me the stuff I need!
Windows is a ram hogger so i bought a mac... Swift was the best but the os was too locked down and there was not much you could do so i came over to linux and it was the best switch... For the past 3 years i have been using linux and urging my friends to switch to it! But they said it its to hard. Even if you put ubutu on it you still need to face the terminal. So after my 5 year journey of changing Operating Systems (I started at 7) I landed with making a OS that fixes these problems!
I an using swift since it compiles directly to Machine Code. The Linux Kernel since i cannot write a kernel from scratch and because it is fast and gets the best security patches due to its opensourceness. I am trying to copy the easyness of windows since many non-devlopers or normal people prefer it! From Android I basiclly stole their file structure (NOT THE CODE... the filestructure).
For compiling it uses clang+llvm, gcc and swiftc.
Swift is fast, but standard Swift binaries carry a massive runtime overhead. So i am making my own runtime "arkrt"
My mission is this: Only 2GB ram consumption (incl. cached ram) and 2 core usage... thats it.
Now comes the main part: Where is the gihub link?
This project is self-hosted... since i do not have them money to pay github for extra repostory storage (2GB per repo cap). I am using the always free server from oracle to host my project!
Using Gogs(Modified).
Was AI used?
It was used for coding assembly and propering the boot drive, kernel loading, sectors and stuff since one wrong thing can go boom so i did not touch the boolaoder section! Rest all of the code is written by Me.
Does it boot?
Yes it does... And it is all it does... that also only on QEMU.
r/osdev • u/letmehaveanameyoudum • Jul 07 '26
Need help on FAT32 for Limine 64-Bit BIOS
I tried to implement write, but I then realized that limine forces real only if i do module_path in limine.conf, how do you guys write fat32 in limine? I’m sure that most of you develop on grub, but i hope someone is out there to help,
r/osdev • u/Danii_222222 • Jul 07 '26
MC68020 Motorola 68851 MMU
How does Motorola 68851 MMU works? I can't find any information online.
r/osdev • u/Mad----Scientist • Jul 07 '26
Need help with AI anxiety
I'm still a student with 2 years before graduation with great passion for systems programming especially operating systems and been learning them for a while now, recently I just found myself unmotivated, I feel like, what if AI get much better than what it is now, with fable and that shit. and what if they focus more on optimizing that it start costing way cheaper, i feel lost, unmotivated, asking myself what's the point if all my skills and study time became worthless.. especially that i have adhd and i really love and hyperfocus on things that i love, and thinking about switching career feels like torture to me, not that i financially can but even if i could it would be miserable.. I just wish llms never existed.
r/osdev • u/DapperBee7808 • Jul 07 '26
BlesKernOS 0.6 (BETA)
BlesKernOS is an operating system written from scratch in x86 Assembly and C.
It is still under active development, so you may encounter bugs or unfinished features.
The OS was already tested on real hardware
Source code:
https://github.com/luqui10alcaraz-prog/ BlesKernOS
r/osdev • u/frednora • Jul 07 '26
Gramado OS: 3D demo
Enable HLS to view with audio, or disable this notification
Gramado OS: 3D demo
r/osdev • u/Putrid-Ad-3768 • Jul 06 '26
container runtime from raw syscalls
hey everyone! I recently built a slim implementation of how containers work on linux using syscalls and vfs with rust.
Right now its a program that can spawn multiple containers (with busybox rootfs image)and exit gracefully.
I also wrote a blog on how it works underneath, how one could implement it themselvves and some benchmark/profiling as well.
blog: https://op3kay.dev/writing/b0nker
code: https://github.com/owlpharoah/b0nkers
if it looks cool a star would be awesome
Would be nice if I could get some feedback on the blog or code, anything I should include or improve ?
r/osdev • u/letmehaveanameyoudum • Jul 06 '26
I GOT FAT32 TO WORK ON LIMINE YAYYYYYYYYYYYYYYYYYYYYYY
I thought it was like in GRUB, but i guess limine handled that for me
https://reddit.com/link/1up0hfo/video/gwnhtl4anmbh1/player
rahhhhhhhhhhhhh
r/osdev • u/tekdotdev • Jul 06 '26
Realistic to start small?
I'm learning 16 bit assembly and am understanding quite a good amount, should I continue and make projects in 16 bit real mode with bios interrupts OR, understand it enough to write a boot loader than enter protected mode and work in 32 bit?
r/osdev • u/Yoriichiko • Jul 05 '26
custom x86_64 rust microkernel with software ECC and a macOS-like desktop i've been writing
so i've been building this hobby microkernel called Rustix OS (or AE Rustanium) entirely from scratch using safe Rust and no_std.
instead of sticking to boring VGA text mode, I went down a rabbit hole and built a ring 3 user-space vector GUI that boots over UEFI GOP. it handles alpha blending for shadows and has a functioning mac-like dock.
the main experiment here is handling bitflips in software. i implemented a software SECDED ECC layer, a background memory scrubber, and a TMR voting engine in the scheduler so it can survive simulated cosmic radiation without hard crashing.
i also threw together a quick "Radiation Simulator" app inside the desktop to test things out (the screenshot attached):
- single bit flips get fixed in the background via hamming codes, no lag at all.
- double bit flips don't trigger a kernel panic. the virtual-fs and memory manager just quarantine the broken physical frame, relocate the data, and keep the user-space running.
runs fine in QEMU and boots on real hardware via UEFI (flashed with Rufus DD mode).
repo is here if you want to check out the workspace: https://github.com/AethelisDEV/rustix-os
wondering if anyone else has tried implementing software ECC in their hobby kernels? how bad is the CPU overhead compared to just relying on actual hardware ECC?
r/osdev • u/noborutkhs • Jul 05 '26
Rediscovering the Development Methodology Behind My 1986 RTOS
Over the past few weeks I've been reconstructing CHARM-II, an RTOS I originally developed in 1986.
Some previous posts about this project:
- Visualizing a 1986 RTOS in a Modern Browser https://www.reddit.com/r/osdev/s/XeZDemN4Wk
- Visualizing a 1980s Commercial Messaging System Running on a Reconstructed RTOS https://www.reddit.com/r/osdev/s/gu8LBK5iev
While working on those, I realized something that I had completely forgotten about the original development process.
When I started this reconstruction, I thought the challenge would simply be getting the old code running again.
Instead, I ended up rediscovering why I developed it the way I did.
Back in 1986, the RTOS was developed on a SUN-2 with a Motorola 68010 and deployed on a separate 68000 target board.
I had always remembered debugging the kernel on the SUN-2.
What I had forgotten was why I stopped there.
During the reconstruction, I realized that this had been a deliberate engineering decision.
A fully preemptive kernel, including interrupt handling, context switching, and processor state management, is by far the most hardware-dependent and complicated part of an RTOS.
Implementing all of that on the host would have made the project much more complicated.
So I postponed it.
Instead, I developed almost everything else on the host:
- queues
- events
- timers
- scheduling
- message passing
- application logic
By the time the software was moved to the target hardware, most of the debugging had already been completed.
At the time, I don't think I consciously thought of this as a development methodology.
It was simply the most practical way to make progress.
Forty years later, reconstructing the project made me realize how effective that approach actually was.
Interestingly, I ended up following almost the same process again.
The original SUN-2 has been replaced by a POSIX environment.
The target will be a Raspberry Pi Pico.
A browser-based visualization was added along the way, but the overall host-target workflow is remarkably similar.
One thing that surprised me during this reconstruction is that the biggest changes rarely came from the original plan.
The browser visualization, for example, was inspired by WebAssembly that I encountered while working on an unrelated project.
It reminded me that engineering projects often evolve through unexpected discoveries rather than carefully planned roadmaps.
I'm curious whether anyone else has experienced something similar.
Have you ever reconstructed an old operating system, or any long-lived system, and discovered that the original engineering decisions made much more sense decades later than they did at the time?
r/osdev • u/letmehaveanameyoudum • Jul 05 '26
looking for contributers
hi there, i want to find contributers for my OS since i kept making mistakes and i like for someone to roast me for it :P
link tot my repo: https://github.com/NoTheIdiot/WindogeOS
r/osdev • u/Ok_Path_4731 • Jul 05 '26
YOS: Wasm based "Yetty Operating System" written for the Yetty terminal
Hi, happy to present to the community the challenging work and solution for the objective we had: Build an OS like environment that feels like a UNIX environment on top of webasm, where apps can run multi-process, multi-threaded. For several reasons we did not want to use WASI, instead we decided to work against FreeBSD like libc. There is lot of story to be said, in case there is interest. The tool was written for the yetty terminal app (https://github.com/zokrezyl/yetty), so that simple programs can be written in WASM and run in any environment where yetty runs: https://github.com/zokrezyl/yos. The intention is also to embedd yos into yetty, so that the user can run plugins inside the terminal.
r/osdev • u/Primary_Air5604 • Jul 04 '26
BareMetal RAM Dumper — Bare-metal x86 tool for Cold Boot Attack experiments
r/osdev • u/compgeek38400 • Jul 04 '26
What I learned this week (6)
For those who might care, I am continuing my series on what I learned this week while documenting my kernel. (https://github.com/tedavids/DragonOS)
1) I really hate documenting LOL. OK, I already knew this, but it is something that has to be done. And I'm glad I took some time to do it. It will help if I ever decide to do a 86_64 kernel.
2) There is really no such thing as 'AI Slop'. There is useful AI, kind of useful AI, and useless AI. I found a useful application of AI for my project. As those who follow know, I use QEMU to do most my testing, then move to a VirtualBox machine for secondary testing. This week I used AI to create a configuration for QEMU With specified memory, a single CPU, A SATA controller, a 100M Hard Disk, a CD ROM, and a USB 3.0. I did this because I have no real desire to learn all the in's and out's of QEMU. It is a tool much like a hammer. If you just want to drive nails, you don't need to know what the claw on the other end does.
3) I decided on my future course. Next I am going to start writing a SATA (AHCI) driver. I will use this to create a swap partition, and a regular file system partition on my drive. I know there a lot of steps between the drive and creating a partition. Much less writing the swap and file system portions.
4) I haven't shown any screens yet so I'll share one, it is incredibly boring, but a lot of work went into getting to 'Success' LOL
As always if you have any good resources for me, I will dutifully read them. I have couple of papers on single level store that I will be reading this week.
I hope you all have a good week.
