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
Links
- Documentation (Doxygen and co)
-
Code forges
- Main repository on self-hosted Gitlab — this one also has the issue tracker
- Mirror on GitHub
- Repository for this page
- Communication
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)