82 lines
2.9 KiB
Groff
82 lines
2.9 KiB
Groff
.TH INTRO 1
|
|
.SH NAME
|
|
intro - introduction to MontaukOS userspace
|
|
|
|
.SH 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).
|
|
|
|
.SH 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>/.
|
|
|
|
.SH 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
|
|
|
|
.SH 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.
|
|
|
|
.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
|
|
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
|
|
|
|
.SH SEE ALSO
|
|
shell(1), syscalls(2), malloc(3)
|