danielandClaude Fable 5 5db2bd4c7c feat: TLS runtime - PT_TLS loading and per-thread FS base
MontaukOS binaries could not use thread-local storage: the ELF loader
ignored PT_TLS and no FS base was ever programmed, so any %fs access
(initial-exec/local-exec TLS, e.g. libbfd's _Thread_local error state)
page faulted at address 0. This is the kernel prerequisite for
cc1plus/libstdc++ in the GCC port.

ELF loader: parse PT_TLS and build the main thread's TLS block above
the loaded image (x86-64 variant II ABI: block below the thread
pointer, TP = base + align_up(memsz, align), .tdata copied from the
template, .tbss zeroed, ABI self-pointer stored at [TP]). The
template description is kept on the process for thread spawns.

Scheduler: fsBase per thread, loaded into IA32_FS_BASE at every
dispatch site through a per-CPU cache - TLS-free processes cost one
MSR write per CPU ever, and userspace cannot desync the cache since
CR4.FSGSBASE stays off. SYS_THREAD_SPAWN gives each new thread its
own TLS block copied from the template (allocated from the process
heap; reclaimed at process teardown).

Ships tls-test.elf in the SDK (built by the devkit target): checks
.tdata values, .tbss zeroing, and the %fs:0 self-pointer, exiting
nonzero on failure. Boot-smoke verified; existing TLS-free programs
are unaffected.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-07-16 18:48:25 +02:00
2026-07-09 11:32:27 +02:00
2025-04-17 21:54:25 +02:00
2026-02-18 15:13:53 +01:00
2026-03-04 14:42:51 +01:00
2026-04-15 17:49:07 +02:00
2026-04-17 15:26:27 +02:00
2026-07-08 18:31:32 +02:00

The Montauk Operating System

MontaukOS is an operating system written in modern C++. It runs on bare metal and supports various applications, including DOOM, a Wikipedia client, and standard desktop utilities.

MontaukOS screenshot

Features

  • Modern preemptive multitasking kernel
  • Multi-user userspace with desktop environment and command line
  • PCI-e support and drivers for Intel GPU and e100e Ethernet for graphics and networking on real hardware
  • ACPI support with AML interpreter, including S3 sleep and ACPI shutdown
  • Support for USB including input devices (keyboard/mouse), along with PS/2 input support
  • Support for Intel High Definition (HDA) audio devices
  • Userspace and kernel audio support
  • Support for (some) Intel Bluetooth devices, userspace Bluetooth management app
  • Support for the GPT partition table
  • VFS using numbered drive identifiers with support for ext2 and FAT32 filesystems
  • Support for AHCI and NVMe SSD drives
  • Support for UEFI Runtime Services, including power management calls (shutdown/reboot)
  • Customizable desktop environment with 12+ graphical apps, including a terminal emulator, file manager, Wikipedia client, weather app, DOOM, and more
  • Modern icon pack (Flat Remix) used in desktop environment
  • Support for TrueType font, JPEG image, and SVG icon rendering
  • Networking including TCP/IP stack, UDP, DNS, DHCP and TLS via BearSSL
  • Command-line IRC client
  • Live viewable kernel log from GUI
  • Mandelbrot set renderer
  • PDF viewer app with full support for text (inc. baked-in TrueType fonts) and some graphics
  • Userspace Music app with support for MP3 and WAV files
  • 2D game engine and demo game with fantasy tileset

Goal

The goal of the MontaukOS project is to create a modern and unique operating system that runs on both emulators and on real hardware. The kernel and included userspace applications are written in modern C++.

History and methodology

Development started in early 2025, as a hand-written toy kernel. The first published Git commit was on Feb 27, 2025. In early 2026, Claude Opus 4.6 began being used to accelerate development of the kernel and userspace.

S
Description
The Montauk Operating System
Readme
52 MiB
Languages
C++ 53.9%
C 41.6%
HTML 2.3%
Makefile 0.8%
Roff 0.6%
Other 0.7%