intro(1)


NAME
    intro - introduction to MontaukOS userspace


DESCRIPTION
    MontaukOS is a 64-bit operating system written in C++20,
    currently at version 0.2.0 (API version 11). Userspace programs
    run in Ring 3, are loaded as static ELF64 binaries, and
    communicate with the kernel through the x86-64 SYSCALL/SYSRET
    mechanism (roughly 190 syscall numbers, 0-189 - see syscalls(2)).

    Programs are built with the x86_64-montauk cross toolchain and
    linked at virtual address 0x400000. MontaukOS has its own C
    library along with the Montauk API (montauk:: wrappers).


GETTING STARTED
    To write a new system/CLI program, create a directory under
    programs/src/ with a main.cpp file.

    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/<name>/.


RAMDISK LAYOUT
    The boot ramdisk is mounted as drive 0 with the following
    directory structure:

        0:/os/          System/CLI binaries, os data
        0:/apps/        App bundles
        0:/config/      System-wide config TOMLs
        0:/users/<name>/ User home directories
        0:/state/       Mutable system runtime state
        0:/tmp/         Scratch space
        0:/fonts/       Shared fonts
        0:/icons/       Shared icons
        0:/man/         Manual pages
        0:/www/         Web server content
        0:/sdk/         Montauk SDK (native gcc/binutils, TinyCC,
                        Lua, headers and libraries), when installed
        0:/boot/        Kernel, bootloader, ramdisk image


SHELL
    The interactive shell can be used 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.


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
        wifi(1)         Wi-Fi configuration
        sshd(1)         SSH daemon
        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
        rtlsdr(3)       RTL-SDR software radio API


SEE ALSO
    shell(1), syscalls(2), malloc(3)

Back to Documentation Index