r/kerneldevelopment

Ethereal's new taskbar and desktop UI looks amazing (no AI used + from-scratch)
▲ 127 r/kerneldevelopment+1 crossposts

Ethereal's new taskbar and desktop UI looks amazing (no AI used + from-scratch)

Ethereal's new UI for version 2.0.0 is coming along great! Here you can see the new taskbar, start menu, and desktop icons (+ a new wallpaper)

Neutron powers everything you see here (minus the Terminal and About Ethereal box, those are todo). The wallpaper chooser, the file explorer, hell even the desktop icons. It provides a mostly fluent and good looking desktop experience.

Total feature list:

  • Built on a custom UI framework known as Neutron which uses a widget-tree model to layout and draw while remaining fully resizable and clean
  • The new taskbar, with support for listing applications. Celestial sends events to the "root window" (there can only be one) for new windows, focus events, etc. The taskbar even has this awesome fade animation that plays
  • The background icons are (as obvious) incomplete. They have this really weird box blur shadow thing I cobbled together from random codepieces to give them an outline. Otherwise, white text would look like garbage
  • Over 6 wallpapers have been created by the lovely artist
  • The start menu supports sub-folders (once separate icons are made, it will be more visible - for now Demos is the sub-folder here, containing the demos for Ethereal)
  • Menus for Alt-Tab keybinds, an application quick-launch menu, as well as other things are fully supported.
  • A minimal (possibly TUI) text editor and (definitely GUI) image viewer are planned for 2.0.

Both of these are still in beta so they haven't been pushed yet, but they are almost ready to be.

As always - Ethereal is a from-scratch x86_64 UNIX-like monolithic modular kernel and contains no artificial intelligence code. The repo is licensed under BSD 3-clause and can be found here:

https://github.com/sasdallas/Ethereal

u/Professional_Cow3969 — 3 days ago

My journey into kernel development as a beginner

Hey everyone 👋

I'm a beginner in kernel development and recently decided to seriously start learning how operating systems work under the hood.

I've done normal application/backend development before, but kernel development feels completely different. 😅

Right now I'm trying to understand things like:

CPU architecture and registers

Boot process

How the kernel actually gets loaded

Kernel entry

GDT / IDT

Interrupts

Paging and virtual memory

Physical memory management

Heap allocation

Scheduling

Processes and system calls

Drivers and filesystems

My long-term goal is to eventually build my own small kernel from scratch, rather than just following tutorials and copying code.

At the moment, pointers, memory, assembly, and low-level concepts are definitely making my brain work overtime 😂

I'm planning to learn slowly and understand why things work instead of just getting something to boot.

For people who have experience with OS/kernel development:

What would you recommend a beginner focus on first?

And what are some mistakes you wish you had avoided when you started learning kernel development?

Would love to hear your advice! 🚀

reddit.com
u/Turbulent_Key_2999 — 2 days ago
▲ 18 r/kerneldevelopment+2 crossposts

Submit your projects to be shown off in my weekly OSDev newsletter (RSS + website exists)

I decided to start a small news site dedicated to stories about OSDev published every friday, starting next week. Please submit your projects!
SUBMIT: https://forms.gle/7ZRNJ9RGSjnp3rx5A
RSS: https://news.thatosdeveloper.us/feed.xml
Website: https://news.thatosdeveloper.us

NOTE: The base site is still being revamped as its based on an old jekyll theme and of course many things are subject to change. Also for now comments use Disqus though this may be changed at some point in time.

EDIT: Though a mailing list will be setup to send out emails every Sunday at 0900 (9AM). And posts will happen at least once a week though more may happen over time.

u/TheNullDeref — 3 days ago
▲ 5 r/kerneldevelopment+1 crossposts

What I've learned the last few weeks

Sorry about my abscense, I've been on my vacation/holiday.

I've done a lot of learning the last few weeks. Here are the highlights

  1. I'm completely redoing my memory management. I'm working on a Physical Memory Manager (PMM), AND a virtual memory manager (VMM). Completely redoing how I deal with paging. I came to realize that except for reserved and my video physical memory, I really don't care where it gets assigned. Also, again except for video and reserved physical memory, it can all be swapable.

My PMM keeps track of the following items: a) does the memory exist; b) is it available, for example I define my video memory as not available, it is allocated early on, and I don't want the PMM deallocating it; c) Is it allocated to a virtual address yet; d) in concert with c, is it sharable (multi-allocated); e) is it swappable, I don't want to swap video and reserved memory for example.

My VMM keeps track of the following: a) is it swapped out (future); b) is it read only, such as my kernel code and .rodata; c) is it kernel memory, not sure if I really need this, but I had spare bits, I might want to use this in my swapping algorithm; d) is it shared.

Much of what I had in my paging .c file, has moved to my PMM and VMM. I'm hoping to finish this this week.

Once I have those three areas done, I will redo my heap and then make my github code public.

I'd also like some advice, I have two things I'm thinking about doing next: 1) adding threading, I'm not actually sure what I'd do with it right now as I don't really have a block device to save swapped blocks to; 2) adding support for user space, this would allow me to put things like most of my video and my shell into user space, this would also justify doing threading next; or 3) adding support for SATA, this would justify threading (for swap), but I might want to put it in user space then it would be restartable.

As always your opinions are always welcome.

Hopefully this will be useful for the people searching after me.

Thanks for reading!

reddit.com
u/compgeek38400 — 4 days ago
▲ 0 r/kerneldevelopment+1 crossposts

ARKM Kernel: A Custom Built 12 Core 64-Bit Microkernel architecture with AMP, ACPI hardware architecture.

I am two types of kernel user; one is Android whose kernel is Linux and second is Windows whose kernel is Windows NT. I can feel the issues both of these have; both fight for stability when something cause system to get crashed and I feels BSOD and this is so annoying when you are working on something harder which needs system to be stable. This same came with me while training an AI model on my own system and Windows get crashed. So, I thought why not to try to build a kernel when never get this issue, but after some time while building I learnt nothing can be 100% stable but then I thought if this is not possible then why not to create a layer of problems which cause system to crash at system level. I had built this ARKM: Advanced Robotics Kernelling Machine, which is a custom built 12 core 64-bit Microkernel architecture with AMP which means Asymmetric Multiprocessing, ACPI which means Advanced Configuration and Power Interface into the core architecture of ARKM and due to this the stability of kernel became sky high. I had used the AMP architecture as follows:

  • Core 0 (BSP) → Kernel shell, interrupts, global scheduler.
  • Core 1 → Idle stability loop + diagnostics.
  • Core 2 → GPU compositor for zero‑latency graphics.
  • Core 3 → Isolated Ring 3 user‑space applications.

Its Benefits came as: Deterministic performance, no contention, guaranteed responsiveness (e.g., compositor never lags even if apps crash).

Now if I talk about how ACPI changed the architecture then it also follows the steps:

  • Hardware Discovery → ARKM parses ACPI tables (RSDP, MADT) to locate the Local APIC and enumerate CPU cores.
  • Power Management → Provides standardized methods for sleep states, CPU throttling, and device power control.
  • Interrupt Routing → ACPI helps ARKM configure APICs and IOAPICs for multicore interrupt handling.
  • Scalability → Makes ARKM capable of dynamically waking up Application Processors (APs) and bringing them into 64‑bit long mode.

Now if I talk about the 12 cores architecture it has then there is also a specialty behind it which is also as follows:

  • Core 0 (BSP) → Kernel shell, interrupts, timers, global scheduler.
  • Core 1 → Idle loop + diagnostics (keeps stability checks running).
  • Core 2 → Dedicated compositor (graphics/UI rendering at zero latency).
  • Core 3 → Ring 3 sandbox apps (user programs run isolated here).
  • Remaining Cores (4–11) → Can be assigned to parallel workloads, background services, or specialized tasks (e.g., networking stack, storage drivers, AI routines).

I am still building it. I also have a screenshot which if possible then i will embed to this post as visual proof for ARKM.

My Aim is if I had bought a machine, then it must work according to me. I am also creating it under my future Company AROM so that I don't want to rely on any other kernel.

ARKM is just 2 to 10 KM behind the finish line. ARKM will now come with Full-fledge Kernel and with a Server Kernel with POSIX tech Linux have just for attract the user and developers of Linux on ARKM and we are developing our own also this Linux POSIX architecture will act as bridge between present world and future world.

Support me IF you want to dive into the future tech or want to explore it.

https://preview.redd.it/h1l07ojj6rjh1.png?width=1276&format=png&auto=webp&s=00e867e5160d740be56152c42d4e560c312404e3

Visuals Of ARKM

reddit.com
u/Technicalcube123 — 4 days ago
▲ 12 r/kerneldevelopment+1 crossposts

Am I just slow compared to other people my age in software?

I graduated in 2011, so it’s been about 15 years since undergrad.
But if I actually count the years I professionally worked as a software engineer, it’s only around 8 years.
In between, I did a master’s, spent around four years trying to build a YouTube career, had gaps, changed directions, and worked on different R&D projects. Eventually, I reached Senior Software Engineer.
For probably the last 8 years, though, I’ve been almost obsessively interested in systems programming. I just keep studying it and going deeper. Even when I fail interviews, my reaction is basically to go back, figure out what I didn’t know, study it, build something around it, and try again.
For whatever reason, I haven’t gotten tired of it. I’m still sticking with systems programming and still want to see how far I can take it.
But sometimes I look at people who graduated around the same time as me and wonder where I stand.
A lot of people from the 2011 batch now have 14–15 years of continuous experience. Some are Staff Engineers, Principal Engineers, Architects, Engineering Managers, etc.
Meanwhile, 15 years have passed for me, but I only have around 8 years of actual professional software experience.
So I’m genuinely curious:

Am I slow compared to people in my age group?
I’m not really looking for the standard “everyone has their own journey” answer. I’m curious how experienced engineers actually see this.
Has anyone here lost several years to a master’s, trying a completely different career, starting a business, unemployment, career gaps, family stuff, or just making questionable career decisions?
Did those missing years actually hurt you long term?
Or once you become genuinely good at a technical specialization, does anyone even care that someone your age has 8 years of professional experience while another person has 15?
Especially interested in hearing from people who went deep into systems/low-level engineering later in their careers.

reddit.com
u/Acrobatic_Union_6555 — 12 days ago
▲ 40 r/kerneldevelopment+1 crossposts

finished rewriting a lot of the BoredOS netstack

Hey reddit!

I've spent the last few weeks rewriting the network stack for my hobby OS, BoredOS.

Before i start yapping about what i changed, i'll quickly explain the netstack. BoredOS uses the lwIP stack to handle IPv4, Ipv6 (experimental), TCP, UDP and ICMP. The nice thing about LwIP is that i only have to supply hardware driver ring buffers, VFS fd's, some splinlock synchro, socket wait queues and a few syscalls.

Previously i was using a custom sysfs file interface to handle network traffic.. Which was quite shit imo. It didn't fit standard C lib calls or allow multiplexing network I/O alongside regular files. I replaced this monstrosity with a BSD socket layer and standard POSIX system calls like: socket, bind, connect, listen, accept, send, recv, select, poll, sendmsg, and recvmsg. Wiring sockets directly into the VFS fd table allows read/write and close to work on net sockets the same way they do on regular files and pipes.

BoredOS previously also had DHCP and DNS baked into the kernel with some very messy way of interacting with them, these have now all been moved into userspace with my own versions of standard fbsd netutils.

For packet handling, i moved processing out of the hardware interrupt handlers into a dedicated kernel worker thread. Processing packets directly in interrupt context was increasing interrupt latency and causing frame drops in heavy bursts, therefore hardware ISRs now just dump incoming frames into ring buffers and wake up a dedicated kernel worker thread via a wait queue. The worker thread sleeps when idle, wakes up on IRQs to drain the buffers into lwIP, and manages background timers for TCP retransmissions and ARP timeouts. For socket storage, i added kernel ring buffers backed by spinlocks and wait queues to handle blocking and non-blocking backpressure properly.

To allow my netutils and custom protocols to run without needing to ensloppify the kernel, i wrote a virtual TUN and TAP device driver. It supports layer 3 IP tunneling feeding into lwIP and Layer 2 Eth frame mode through TUNSETIFF ioctls. I also added raw socket support with AF_PACKET so userland packet sniffers can capture and inject raw ethernet frames directly. Of course meant for the skids to larp that they're hacking something xD.

For device management i added BSD style interface naming like em0 for intel gigabit cards, re0 and re1 for RealTek cards, vtnet0 for VirtIO, and tun0 for virtual devices.

With all these changes i also managed to speed up the stack by a LOT. Previously i was limited to a few Mbit/s and i am now able to push 800 Mbit/s in QEMU emulating an E1000 nic (maybe VirtIO is even faster? too lazy to test though) which basically maxes out the host machine connection.

EDIT:
Forgot to attach the gh:
https://github.com/BoredOS

u/christiaansp — 14 days ago
▲ 4 r/kerneldevelopment+3 crossposts

Anthares OS Beta Released

We are pleased to announce the release of the new Anthares OS Beta. This marks the beginning of a new phase for the project.

You can download it and learn more about the project on our website:
https://devsanthares.gitlab.io/anthares-os-site/

Beta Highlights

Project-wide Translation System

  • Added translations for English, German, and Russian (as a thank you to the countries that downloaded the project the most), in addition to the original Portuguese language.

Deepside Dock Improvements

  • Various bug fixes.
  • New tabs with additional features.
  • Existing tabs redesigned with improved system information and functionality.
  • New Élise Area featuring a graphics card manager for NVIDIA and AMD GPUs.

Graphics Card Management

Manage your graphics card with features such as:

  • GPU overclocking.
  • Fan speed control.
  • Screenshot and screen recording.
  • Brightness, contrast, and saturation controls.
  • In-game overlay support (RivaTuner from MSI Afterburner).
  • Launch games with GameMode.
  • Monitor GPU frequency, power consumption, temperature, and much more.

Ponto Inicial (P.I.) Improvements

  • Bug fixes.
  • New applications added.
  • Improved installation workflow.

Élise Improvements

  • Added operating system analysis and repair tools.
  • New RAM management features.
  • New firewall configuration and management system.
  • Improved file organization workflow and user interface.
  • New execution rules for individual tasks.

Unicode Center Store

  • Bug fixes.
  • New applications and games added to the catalog.
  • Improved application publishing workflow.
  • Enhanced automation for publication management.
  • Internal improvements for organizing and handling user and developer requests.
  • Anonymous login support.
  • New Library section for downloading and installing application updates.
  • New Support section.
  • Added helpful tips throughout the interface to make features easier to understand.
  • And much more.

Operating System Improvements

  • Reduced size of Unicode Tec applications.
  • Reduced ISO image size.
  • Removed unnecessary applications from the default installation for a lighter system.
  • Removed unnecessary background services during boot for improved performance.
  • New default wallpaper.

To see the current status of the project, visit our website.

If you have any questions or would like to get in touch, please visit the Community page on our website.

u/Creative_Tip_5134 — 12 days ago