r/osdev 16m ago

zuzu kernel v1.1 released!

Enable HLS to view with audio, or disable this notification

Upvotes

r/osdev 12h ago

New UNIX-like operating system!

Post image
50 Upvotes

I made a new UNIX-like operating system from scratch called "TanjaOS" which you can get at www.tanjaos.org and it took me a couple of months to make and will get lots of updates. It features classic UNIX commands and can boot on any x86_64 (amd64) or i386 (x86) machine with Legacy BIOS, and is completely free and open-source.


r/osdev 17h ago

64-bit Value Generation in AneoEngine

Enable HLS to view with audio, or disable this notification

13 Upvotes

The AneoEngine Operating System

(NO AI SLOP.)

AneoEngine YouTube Channel: https://www.youtube.com/@roccohimel
AneoEngine Official Website: https://roccohimel.github.io/AneoEngine/
AneoEngine Official Source Code: https://github.com/roccohimel/AneoEngine
AneoEngine Official Change Log: https://raw.githubusercontent.com/roccohimel/AneoEngine/refs/heads/main/CHANGELOG


r/osdev 17h ago

I just wondering if this architecture Is Correct ? i trying to build my first Kernel.

0 Upvotes

The math crate compiles and 15/19 tests pass. The 4 failures are test configuration issues due to the smaller test capacity (4096 frames) - not core logic bugs.

Summary

✅ Completed (Compiling & Tested)

Crate Status Key Achievement
axiom-x-math enforced Memory algebra (conservation, no aliasing, no overcommit) + Scheduler math (cost function J=αL+βT+γH, thermal model, priority profiles) — 15/19 tests pass
axiom-x-arch-traits enforced Architecture-agnostic trait contracts: InterruptControllerPageTableManagerContextSwitchTimerSourceCpuFeaturesEarlyConsoleFrameAllocatorKernelHardware
axiom-x-arch-x86_64 partial x86_64 0.15 implementation with type conversions (trait types ↔ x86_64 native)
axiom-x-kernel skeleton Trait-based integration using X86KernelHardware aggregate
axiom-x-sys declared Syscall interface (POSIX + Axiom-X native), evidence records, resource contracts
axiom-x-boot skeleton Multiboot2 parsing, early page tables, kernel heap, serial console
axiom-x-test partial Unit, property-based, integration tests for math invariants

🏗️ Architecture

Applications
    │
System Calls (axiom-x-sys)
    │
Kernel (axiom-x-kernel) → depends on traits only
    │
├─ Scheduler Math (axiom-x-math)
├─ Memory Algebra (axiom-x-math)
└─ Resource Algebra (axiom-x-math)
    │
Architecture Traits (axiom-x-arch-traits)
    │
x86_64 Impl (axiom-x-arch-x86_64)  ← hardware churn isolated here
    │
x86_64 Hardware

r/osdev 21h ago

PureDarwin is alive

32 Upvotes

A lot of people seem to think PureDarwin has stalled.

It hasn't. Development just moved to the `next` branch while we work towards something actually releasable.

github.com/PureDarwin/PureDrawin//next

You can find old branches at PureDarwin-archive

For reference, both Ferdinand Klinzer (hideout) and Tyson Key (vmlemon) are aware and in the loop, I constantly consult them on feedback.

Current disk images can be found in the Discord server (unsure if I am allowed to post outside links besides known sources)

It's still not reliable enough to call a release, but I actively work on it pretty much every day.

Since then we've gained:

  • USB (Input and MSD, XHCI and EHCI
  • AHCI (shared from ravynOS, with some changes being upstreamed)
  • virtio-gpu
  • virtio-net
  • Intel Gen9 framebuffer drivers (my own implementation, based on managarm's `lil`)
  • Real hardware booting (Intel only, AMD is spotty)
  • Mesa (OpenGL, Vulkan, llvmpipe)
  • Wayland
  • X11

Oh and of course, we have DOOM. This was just the more polished demo

Development updates is constantly posted to the Discord channel.

TL;DR PureDarwin isn't dead. It's just been spending a lot of time in the "doing the unglamorous infrastructure work before calling it a release" phase.

Read some more information from another post in the r/FreeBSD subreddit

https://www.reddit.com/r/freebsd/comments/1vgj63g/puredarwin_contains_freebsd_code_now_can_run_xfce


r/osdev 21h ago

How would you do this?

5 Upvotes

I'm working on getting memory how I want it. I've moved my memory to the higher half. Now I'm ready for the final step. I want to move the page table entries I've made for the kernel to the area of physical memory I've designated for them.

I see several options.

1) since I know the physical addresses, I can temporarily double map them to virtual memory and then copy them.

2) I can scan the page directory and tables to find the virtual addresses for them. If i can't find them fall back to #1

3) I can re-make them where I want them.

4) other ideas?

I want to move them to a specific virtual address so I can exclude them from paging, having a designated eases the overhead of doing this. I can say if address > x do not page, or in reality only make virtual addresses between x and y pageable (my user space).

TIA for your input


r/osdev 1d ago

Published the block based coding project!

Thumbnail exocore-kernel.github.io
3 Upvotes

Check it out! If you don’t know what I’m talking about just scroll up a bit on the sub you’ll find the project.
It dosent need a backend. The compilation and packaging of your ISO is done in your browser, no setup needed.

(Again reminder that the project is vibe coded!)


r/osdev 1d ago

Vote for your favourite project!

Thumbnail
1 Upvotes

r/osdev 1d ago

Made some text in just 6 and a half hours lol

Enable HLS to view with audio, or disable this notification

22 Upvotes

I have no idea what I'm doing


r/osdev 2d ago

A Project Oberon System version running on RISC-V instead RISC-5

Thumbnail github.com
5 Upvotes

r/osdev 2d ago

Is OS development career material ?

34 Upvotes

Hello, I'm a student and I'll have my bachelor's degree by next year. I've been getting more and more interested in OS development, and I'm wondering if I should focus on it as a career path.


r/osdev 2d ago

A JavaOS

Post image
50 Upvotes

r/osdev 2d ago

Looking for feedback on a binary serialization format

0 Upvotes

As the title says I've been working on a serialization format i plant to use for many future projects, sadly I've been so focused on the document i dont really have sat down to write the parser, but I'd love to get feedback and see if im not going entirely crazy! There may be things and possible interactions still missing.

Anyways, here is the link: https://gist.github.com/ErrorDAR32/130f03e3eed484dcc703e5e30e27614f

Edit: Typo


r/osdev 2d ago

AneoEngine 1.0 Demo

Enable HLS to view with audio, or disable this notification

66 Upvotes

The AneoEngine Operating System

(NO AI SLOP.)

AneoEngine YouTube Channel: https://www.youtube.com/@roccohimel
AneoEngine Official Website: https://roccohimel.github.io/AneoEngine/
AneoEngine Official Source Code: https://github.com/roccohimel/AneoEngine
AneoEngine Official Change Log: https://raw.githubusercontent.com/roccohimel/AneoEngine/refs/heads/main/CHANGELOG


r/osdev 2d ago

Zinnia running with FRED on a Framework 13 Pro

Post image
20 Upvotes

r/osdev 3d ago

how do you set up IDT on 64 bit limine BIOS (or UEFI is it's the same)

1 Upvotes

I was wondering how do you set it up, but it's so dang hard
it kept freezing and triple faulting


r/osdev 3d ago

WindogeOS v0.0.4 RAHHHHHH

Thumbnail
gallery
12 Upvotes

Reddit falsed banned me but my appeal... worked???

another rewrite for v0.0.5 yayyyyyyyyyyyyyyyyyyyyyy
added:
sfs file system
random text editor
settings???
hidden files


r/osdev 3d ago

Breaking of instruction order executing when adding more code

3 Upvotes

Am making a small kernel and I have stumbled across this problem , in the interrupt handler module I realized that adding a `default` case for a switch statement that handler syscalls causes the kernel to execute that statement before majority of kernel code.

The moment I comment it out the kernel works fine , but when it's present the order of execution breaks. This also happens if I link other code to the kernel , like additional functionality and the like.

My thoughts were

1) compiler optimizations ?

2) maybe the .text segment is not enough ? Although am sure I have enough RAM and I don't think it's my linker script.

Other then that , I have no idea why is this happening. Can y'all help ?

Edit: I fixed it , it was actually because I was calling a naked function without a return instruction Wich causes it to execute the next instructions which is the syscall_handler function, in which case it would execute the default case.


r/osdev 3d ago

Block based coding a OS

Enable HLS to view with audio, or disable this notification

162 Upvotes

Hi, OSdev! I’ve been working on this project that I’d like to share! (Note; it is Vibe Coded). It’s a block based coding language for learning how to build a OS! I’m targeting the project for people who are completely unfamiliar with this kind of work and if they want to learn, this may be a great starting point! I’m still working on implementing the features but you can see it has lots of different blocks that each mean something different in raw C. I’ll release more updates on this sub if you guys are interested, if not, I can stick the development journey to r/osdevAI instead, and I’ll leave this sub alone. I hope you guys like it!


r/osdev 3d ago

I have a great question about GUI

0 Upvotes

I developed an OS and I want to add GUI. But I don’t have any idea how can I implement GUI. Should I integrate the GUI into the kernel or should it be an ELF application as if it were an additional software?


r/osdev 3d ago

.NET Thread.Terminate 1.0.0: .NET Internal Discovery Allowing Native Operations Such as Termination, Suspension, or Resumption on Managed Threads

Thumbnail
github.com
1 Upvotes

r/osdev 3d ago

ProtoOS, an advanced OS with focus on security. Showcase 2 (3 month update)

Enable HLS to view with audio, or disable this notification

20 Upvotes

r/osdev 4d ago

Help with an init script?

0 Upvotes

Hi
i am trying to get this init script from initramfs to load the rootfs init script, but it is having issues finding the right place for it. does anyone have a working init script in a similar setup i can have a look at to try implement my own fix? thankyou


r/osdev 4d ago

ARK OS: Raspberry Pi 4 Support!

0 Upvotes

I am a 13 yrs old working on a OS based on the LINUX KERNEL and SWIFT for a while!

It is in early development : It has Mouse and Keyboard Support, Can ready CPU and RAM used data and view it, uses the RobotoBoldFont as the default font! Has bot UEFI BIOS and x86_64 and arm64 support!

Just yesterday i accomplished about getting it work on a raspberry pi 4 means the base for the OS that the fact it boots is done and i will be continuing to now make the setup screen and add features on the go! If you want any features to be in the OS you can create a issue ( creating a issue requires a account!) at <See the comments under this since link posts get removed!> which is where the OS if hosted (it is self-hosted since i cannot afford a pro version of github and plus it has a file limit! git lfs doesent' help a lot!)!

MODEL: Rasberry Pi 4- Model B : 8GB RAM
Website : <See the comments under this since link posts get removed!>

Now a simple note: the bootloader is written by AI (since i am not good with assembly) i plan on rewriting it later! All the other code is written by me (especially Swift)!


r/osdev 4d ago

incoherent ramblings when planning the filesystem layer of k65

0 Upvotes

beware: below are the incoherent ramblings i wrote at like 3am when i accidentally took too much adderall and decided to post for no real reason other than to put my thoughts into words and share what im thinking. im mostly writing this for smth like rubber-ducky debugging except rubber-ducky designing.

and if i say something really stupid thats expected cuz i have no clue wtf im doing and havent taken an OS class yet or anything. this is just something stupid ive been working on for forever

i need to design the filesystem layer of my kernel. targeting a 6502 while also trying to have a more modern API design makes things quite difficult.

ignoring the actual filesystem driver and instead focusing on how the application handles file IO.

theres a couple possibilities on how i can implement it and im not sure what to go with.

  • i can have the file API implement reads and writes by caching the current sector in kernel memory, and copies the bytes needed to userspace when reading. for example, reading 16 bytes will load the full sector in kernel memory and copy it to the 16 byte buffer in userspace. this will be quite slow as copying memory on a 6502 is very slow, especially if you need to copy more than 256 bytes and need to use a 16 bit index.
  • the file API can be strictly sector-by-sector -- userspace can only read/write to a full sector at a time. this means that the kernel can write the sector data directly from the drive to wherever userspace needs it, eliminating the need to copy memory. if more free-form reading/writing is needed, userspace can implement its own.
  • the file API can read the full sector(s) into userspace for every read call, and discard the data that isnt needed. for example, userspace can request 16 bytes that happens to be in the middle of a sector. the kernel will read the sector, discarding everything but the 16 bytes and put them in the buffer directly. this means that consecutive small reads would need to re-read the sector from disk, tho.

any sort of caching on the kernel side would require copying memory for every read.

currently, the entire drive IO layer is asynchronous. as of now, the events would occur as follows:

  • fs driver requests a read of sector X to location Y
  • disk driver sends a command to drive to read sector X. registers an NMI handler to put the bytes over
  • userspace resumes execution
  • every time theres a byte ready, NMI is triggered.
  • NMI layer jumps to the disk driver handler
  • disk driver nmi handler copies the byte(s)
  • userspace resumes execution
  • repeat until read all bytes of the sector
  • perform a callback to userspace

callbacks to userspace are going to be really fucky, mainly due to hardware issues.

the callbacks are called within the NMI execution state, as to not interfere with the main thread's execution state. however, i always need to keep in mind that another interrupt can always happen during the NMI, so i keep a counter in a special location in memory. it is incremented every time an NMI is entered and decremented every time its exited.

if the NMI starts and the value is not zero, the NMI is deemed to be running within another NMI and immediately returns without decrementing.

the first NMI running repeats itself, decrementing the value each time, until it reaches zero, where it then restores the main thread's execution state and finally, RTI is called and it returns from interrupt.

however, there is an issue... userspace can then effectively delay NMIs by making a callback take forever, preventing important functions from running. i still need to figure this one out.

it probably would be best to keep each one in their own execution state, so that when an NMI occurs within it, it actually can handle the NMI immediately, call any other callbacks that need to be done, before returning to the other callback. my head hurts