LF OS - enter the next line!

About

LF OS is an operating system initially started as a hobby but with some ideas and goals that could make it a rather serious competitor on the market — if they can ever be implemented.

To shortly describe the goal: get a new operating system, that can run distributed on several computers to make them work as one - never again "which computer has those files I need right now?" or "I don't have enough resources on this computer to run yet another service on it". Think of it a bit like a mix of a normal operating system but clustering built right into it. Oh and those different computers could be very different hardware, think desktop at home, laptop for travel, smartphone wherever you are.

All of this in a free software project, trying to be as modern as possible (focus on newer hardware interfaces like NVMe instead of IDE, 64bit CPUs and UEFI instead of i386 and BIOS booting, ..), async I/O as default, ..

Oh and this is a safe space for queer folks and minorities in general; or as safe as I can make it.

Try it!

Have a download link for the latest build of the main branch! (it's commit #f00acab!)

Instructions how to try it on your physical machine! Or even install it as another boot option!

Maybe have an embedded VNC console for a VM spawned on my infra on the fly just for you!

Technical

Status

Lots of development still happening, currently mostly memory management rewrite — to get to having mmap

Architecture

Microkernel yada yada

Distributed system foo bar

Random graphs in between more text

Drivers and services on 1-n machines building a single system

Message queues! Shared memory!! Processes handling page faults in certain memory regions for OTHER processes!

Components

Custom bootloader

LF OS kernel

Lots of LLVM!

Newlib *sigh*

Funny interaction diagrams

Sideprojects

Working on LF OS resulted in some neat stuff you might have a use for in other projects as well!

GSP - GdbServer Profiler

Profile anything you can attach gdb to remotely; basically it single-steps through the code and logs the instruction pointer. Can be configured with a start and end symbol, contains a tool to symbolize an instruction pointers log and docs how to make a flamegraph from that.

Just look at its code and README already

tiny-stl - because we don't have enough C++ STL implementations yet

Honestly, just read the rant in the repo.

fatcreate - create FAT filesystem images from a set of files

What if we had tar but generating a FAT32 disk image instead? Bootable even? Makes build processes that have a disk image as artifact a whole lot nicer; replacing mtools-based flows consisting of several steps.

Single C file in the repository under util/fatcreate.c.

pmalloc - allocate physical memory in Linux userspace

Sometimes you wanna develop drivers for MMIO hardware and test them in linux userspace, for easier debugging, knowing the rest of the system is at least somewhat stable and co .. but you need to allocate some memory to use with that device, pinned to a given physical address and you also have to actually know that physical address ...

pmalloc is a library to do exactly that - curiously developed to test a driver in linux userspace, that will then be in LF OS kernel ... strange mixed world sometimes.

What other entities said

Somehow that feels wrong but makes sense when explained

@aurora_luna@tech.lgbt while sitting next to me at 39C3 day 1 (well, technically 2)