.TH INTRO 1 .SH NAME intro - introduction to MontaukOS userspace .SH DESCRIPTION MontaukOS is a hobbyist 64-bit operating system written in C++20, currently at version 0.1.7 (API version 8). Userspace programs run in Ring 3, are loaded as static ELF64 binaries, and communicate with the kernel through the x86-64 SYSCALL/SYSRET mechanism (150 syscalls -- see syscalls(2)). Programs are compiled with a freestanding cross-compiler and linked at virtual address 0x400000. There is no standard C library for C++ programs -- all system interaction goes through the montauk:: syscall wrappers. A desktop environment with a window server, GUI apps, and Bluetooth/audio/networking stacks runs on top of the same syscall API. .SH GETTING STARTED To write a new system/CLI program, create a directory under programs/src/ with a main.cpp file. The entry point is: extern "C" void _start() { ... } There is no argc/argv. Use montauk::getargs() to retrieve any arguments passed by the parent process. Include for the full typed syscall API. GUI apps additionally use win_create()/win_poll()/win_present() from montauk/Window.hpp (see framebuffer(2)). Build with: cd programs && make System/CLI binaries appear in programs/bin/os/; GUI app bundles (ELF + manifest.toml + icon) appear under programs/bin/apps//. .SH RAMDISK LAYOUT The boot ramdisk is mounted as drive 0 with the following directory structure: 0:/os/ System/CLI binaries (shell, init, man, etc.), plus os-owned data: certs/, firmware/, licenses/, wallpapers/ 0:/apps/ GUI app bundles, one directory per app (.elf + manifest.toml + icon) 0:/config/ System-wide config TOMLs 0:/users// Per-user home directories (created at login), with Music/, Videos/, Pictures/, config/ subdirectories 0:/fonts/ Shared fonts 0:/icons/ Shared icons 0:/man/ Manual pages 0:/www/ Web server content 0:/lib/ Lua and TinyCC toolchain payloads 0:/boot/ Kernel, bootloader, ramdisk image There is no 0:/games/, 0:/common/, 0:/home/, or 0:/etc/ -- these were used by earlier single-user releases and no longer exist. Games and other GUI programs (including doom) ship as bundles under 0:/apps/. .SH SHELL The interactive shell is the primary way to interact with MontaukOS. Commands are resolved against the current directory first, then 0:/os/. Type 'help' at the shell prompt for a list of commands. Use 'man shell' for detailed shell documentation. .SH MAN PAGES The following man pages are available: intro(1) This page shell(1) Shell commands reference init(1) Init system dhcp(1) DHCP client fetch(1) HTTP client ping(1) ICMP ping nslookup(1) DNS lookup fontscale(1) Terminal font scaling edit(1) Text editor man(1) The man command itself printctl(1) Printer control printd(1) Print spooler daemon wiki(1) Wikipedia article viewer legal(7) Copyright and legal information tls-errors(5) TLS/BearSSL error reference syscalls(2) Overview of all syscalls spawn(2) Process spawning file(2) File I/O syscalls framebuffer(2) Framebuffer access malloc(3) Memory allocation .SH SEE ALSO shell(1), syscalls(2), malloc(3)