docs - refresh man pages

This commit is contained in:
daniel committed 2026-10-14 07:31:20 +02:00
1 parent 7eda8b1a8d
commit a463834e0a
21 files changed
+972 -524

No files matched your search

+7 -2
View File
@@ -111,9 +111,11 @@
<pre><code><strong>NAME</strong>
dhcp - obtain network configuration via DHCP
<strong>SYNOPSIS</strong>
dhcp
<strong>DESCRIPTION</strong>
The DHCP client automatically obtains an IP address, subnet mask,
default gateway, and other network parameters from a DHCP server
@@ -126,6 +128,7 @@
The client is run automatically by the init system at boot, but
may also be invoked manually from the shell.
<strong>PROTOCOL</strong>
The client performs the standard four-message DHCP exchange:
@@ -140,11 +143,13 @@
Each step has a 10-second timeout. If no response is received
the client exits with an error and restores the previous config.
<strong>OUTPUT</strong>
On success the client prints the assigned configuration:
IP Address, Subnet Mask, Gateway, DNS Server, Lease Time
<strong>OPTIONS</strong>
The DHCP client requests the following options from the server:
@@ -153,9 +158,9 @@
6 DNS Server
51 Lease Time
<strong>SEE ALSO</strong>
ifconfig(1), shell(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
ifconfig(1), <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+10 -2
View File
@@ -111,9 +111,11 @@
<pre><code><strong>NAME</strong>
edit - text editor for MontaukOS
<strong>SYNOPSIS</strong>
edit [filename]
<strong>DESCRIPTION</strong>
edit is an interactive text editor. When invoked with a filename,
it opens the file for editing. If the file does not exist, a new
@@ -122,8 +124,10 @@
When invoked without arguments, edit opens an empty buffer. You
will be prompted for a filename when saving.
<strong>KEYBOARD SHORTCUTS</strong>
<strong>Navigation</strong>
Arrow Keys Move cursor up/down/left/right
Home Move to start of line
@@ -131,18 +135,21 @@
Page Up Scroll up one page
Page Down Scroll down one page
<strong>Editing</strong>
Backspace Delete character before cursor
Delete Delete character at cursor
Enter Insert new line
Tab Insert 4 spaces
<strong>Commands</strong>
Ctrl+S Save file
Ctrl+Q Quit (warns if unsaved changes)
Ctrl+F Search for text
Ctrl+G Find next occurrence
<strong>DISPLAY</strong>
The top line shows the filename, a modified indicator [+],
and the current cursor position (Ln, Col).
@@ -152,13 +159,14 @@
Line numbers are displayed in a gutter on the left side.
Lines past the end of the file are marked with ~.
<strong>EXAMPLES</strong>
edit intro.1 Edit a file
edit Open a new empty buffer
<strong>SEE ALSO</strong>
cat(1), shell(1)</code></pre>
<strong>SEE ALSO</strong>
cat(1), <a href="shell.html">shell(1)</a></code></pre>
<hr>
<div class="center">
+9 -3
View File
@@ -111,10 +111,12 @@
<pre><code><strong>NAME</strong>
fetch - HTTP/HTTPS client for MontaukOS
<strong>SYNOPSIS</strong>
fetch [-v] &lt;url&gt;
fetch [-v] &lt;host&gt; &lt;port&gt; [path]
<strong>DESCRIPTION</strong>
fetch performs an HTTP/1.0 GET request and prints the response
body to the terminal. Supports both plain HTTP and HTTPS (TLS 1.2)
@@ -131,12 +133,14 @@
If no path is given, "/" is used.
<strong>OPTIONS</strong>
<strong>-v</strong>
<strong>-v</strong>
Verbose mode. Print connection info, trust anchor count, TLS
handshake progress, and the HTTP status/size header before
the body.
<strong>EXAMPLES</strong>
fetch https://icanhazip.com
Print your public IP address over HTTPS.
@@ -156,6 +160,7 @@
fetch 10.0.68.1 80 /
Fetch from a local server by IP (legacy syntax).
<strong>TLS SUPPORT</strong>
HTTPS connections use BearSSL for TLS 1.2. Server certificates
are validated against the system CA bundle at
@@ -164,12 +169,13 @@
Entropy for the TLS handshake is provided by RDTSC-seeded
random data via the SYS_GETRANDOM syscall.
<strong>KEYBOARD</strong>
Ctrl+Q Abort the request
<strong>SEE ALSO</strong>
ping(1), nslookup(1), tcpconnect(1), shell(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="ping.html">ping(1)</a>, <a href="nslookup.html">nslookup(1)</a>, tcpconnect(1), <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+24 -14
View File
@@ -111,26 +111,30 @@
<pre><code><strong>NAME</strong>
open, read, getsize, close, readdir - file I/O system calls
<strong>SYNOPSIS</strong>
<strong> int montauk::open(const char* path);</strong>
<strong> int montauk::read(int handle, uint8_t* buf, uint64_t offset, uint64_t size);</strong>
<strong> uint64_t montauk::getsize(int handle);</strong>
<strong> void montauk::close(int handle);</strong>
<strong> int montauk::readdir(const char* path, const char** names, int max);</strong>
<strong>int montauk::open(const char* path);</strong>
<strong>int montauk::read(int handle, uint8_t* buf, uint64_t offset, uint64_t size);</strong>
<strong>uint64_t montauk::getsize(int handle);</strong>
<strong>void montauk::close(int handle);</strong>
<strong>int montauk::readdir(const char* path, const char** names, int max);</strong>
<strong>DESCRIPTION</strong>
MontaukOS provides a Virtual File System (VFS) with read/write
support. Drive 0 is the boot ramdisk; additional drives may be
mounted from GPT partitions backed by FAT32 or ext2 (see
syscalls(2), STORAGE section). Files are accessed via paths in
<a href="syscalls.html">syscalls(2)</a>, STORAGE section). Files are accessed via paths in
the format "&lt;drive&gt;:/&lt;path&gt;".
<strong>open</strong>
Opens a file and returns a non-negative handle on success, or a
negative value on error (file not found, no free handles).
int h = montauk::open("0:/os/hello.elf");
<strong>read</strong>
Reads up to 'size' bytes starting at 'offset' into 'buf'.
Returns the number of bytes actually read, or negative on error.
@@ -140,16 +144,19 @@
uint8_t buf[512];
int n = montauk::read(h, buf, 0, 512);
<strong>getsize</strong>
Returns the total size in bytes of the file.
uint64_t sz = montauk::getsize(h);
<strong>close</strong>
Closes the file handle and frees kernel resources.
montauk::close(h);
<strong>readdir</strong>
Lists entries in a directory. Up to 'max' entry names (VFS cap
256, driver-backed listings such as 0:/os/ cap 128) are written
@@ -165,6 +172,7 @@
call, use montauk::readdir_at(path, names, max, startIndex) and
advance startIndex by the returned count until it returns 0.
<strong>READING PATTERN</strong>
The standard pattern for reading a file:
@@ -183,12 +191,13 @@
}
montauk::close(h);
<strong>WRITING, DELETING, RENAMING</strong>
<strong> int montauk::fcreate(const char* path);</strong>
<strong> int montauk::fwrite(int handle, const uint8_t* buf, uint64_t offset, uint64_t size);</strong>
<strong> int montauk::fdelete(const char* path);</strong>
<strong> int montauk::fmkdir(const char* path);</strong>
<strong> int montauk::frename(const char* oldPath, const char* newPath);</strong>
<strong>int montauk::fcreate(const char* path);</strong>
<strong>int montauk::fwrite(int handle, const uint8_t* buf, uint64_t offset, uint64_t size);</strong>
<strong>int montauk::fdelete(const char* path);</strong>
<strong>int montauk::fmkdir(const char* path);</strong>
<strong>int montauk::frename(const char* oldPath, const char* newPath);</strong>
fcreate creates a new file and returns a handle. fwrite writes
bytes at the given offset. fdelete removes a file, fmkdir
@@ -201,15 +210,16 @@
montauk::fs_mount), changes are written through to storage; use
montauk::fs_sync() to flush caches before power-off.
<strong>NOTES</strong>
Drive 0 is loaded at boot from a USTAR tar archive into RAM.
Other drives are mounted on demand from GPT partitions on
SATA/NVMe/USB block devices; see syscalls(2), STORAGE and
SATA/NVMe/USB block devices; see <a href="syscalls.html">syscalls(2)</a>, STORAGE and
DEVICES sections.
<strong>SEE ALSO</strong>
syscalls(2), spawn(2), malloc(3)</code></pre>
<strong>SEE ALSO</strong>
<a href="syscalls.html">syscalls(2)</a>, <a href="spawn.html">spawn(2)</a>, <a href="malloc.html">malloc(3)</a></code></pre>
<hr>
<div class="center">
+6 -2
View File
@@ -111,11 +111,13 @@
<pre><code><strong>NAME</strong>
fontscale - get or set terminal font scale
<strong>SYNOPSIS</strong>
fontscale
fontscale &lt;n&gt;
fontscale &lt;x&gt; &lt;y&gt;
<strong>DESCRIPTION</strong>
Controls the terminal font scale factor. The Flanterm terminal
emulator renders text at a configurable scale multiplier.
@@ -135,6 +137,7 @@
Valid scale values are 1 through 8. After rescaling, the screen
is cleared.
<strong>OUTPUT</strong>
fontscale
Scale: 1x1 (160 cols x 50 rows)
@@ -142,15 +145,16 @@
fontscale 2
Scale set to 2x2 (80 cols x 25 rows)
<strong>EXAMPLES</strong>
fontscale Show current scale and dimensions
fontscale 2 Double the font size
fontscale 3 2 3x horizontal, 2x vertical
fontscale 1 Reset to default size
<strong>SEE ALSO</strong>
shell(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+14 -6
View File
@@ -111,14 +111,17 @@
<pre><code><strong>NAME</strong>
fb_info, fb_map - direct framebuffer access
<strong>SYNOPSIS</strong>
<strong> void montauk::fb_info(montauk::abi::FbInfo* info);</strong>
<strong> void* montauk::fb_map();</strong>
<strong>void montauk::fb_info(montauk::abi::FbInfo* info);</strong>
<strong>void* montauk::fb_map();</strong>
<strong>DESCRIPTION</strong>
These syscalls allow userspace programs to access the linear
framebuffer directly for graphical output.
<strong>fb_info</strong>
Fills in an FbInfo structure with the framebuffer geometry:
@@ -129,15 +132,18 @@
The pitch is the number of bytes per scanline (may be larger
than width * 4 due to alignment). bpp is always 32.
<strong>fb_map</strong>
Maps the physical framebuffer into the process address space at
a fixed virtual address (0x50000000) and returns that address.
Maps the physical framebuffer into a dedicated region of the process
address space and returns its address. Programs must use the returned
pointer rather than assuming a particular virtual address.
uint32_t* pixels = (uint32_t*)montauk::fb_map();
Each pixel is a 32-bit value in 0xAARRGGBB format (blue in the
low byte). Writing to this memory directly updates the screen.
<strong>PIXEL FORMAT</strong>
Bits 31-24: Alpha (unused, typically 0xFF)
Bits 23-16: Red
@@ -146,6 +152,7 @@
Example: red = 0x00FF0000, green = 0x0000FF00, blue = 0x000000FF
<strong>EXAMPLE</strong>
Fill the screen with blue:
@@ -160,6 +167,7 @@
}
}
<strong>NOTES</strong>
After mapping, the cursor overlay is not composited. Programs
that use the framebuffer take full control of screen output.
@@ -167,9 +175,9 @@
Only one mapping per process is supported. Calling fb_map()
multiple times returns the same address.
<strong>SEE ALSO</strong>
syscalls(2), malloc(3)</code></pre>
<strong>SEE ALSO</strong>
<a href="syscalls.html">syscalls(2)</a>, <a href="malloc.html">malloc(3)</a></code></pre>
<hr>
<div class="center">
+64 -44
View File
@@ -128,56 +128,51 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
<ul class="doc-list">
<li>
<a href="intro.html">intro(1)</a>
<p>introduction to MontaukOS userspace</p>
</li>
<li>
<a href="shell.html">shell(1)</a>
<p>MontaukOS interactive command shell</p>
</li>
<li>
<a href="init.html">init(1)</a>
<p>MontaukOS init system</p>
</li>
<li>
<a href="dhcp.html">dhcp(1)</a>
<p>obtain network configuration via DHCP</p>
</li>
<li>
<a href="fetch.html">fetch(1)</a>
<p>HTTP/HTTPS client for MontaukOS</p>
</li>
<li>
<a href="ping.html">ping(1)</a>
<p>send ICMP echo requests</p>
</li>
<li>
<a href="nslookup.html">nslookup(1)</a>
<p>DNS hostname lookup</p>
</li>
<li>
<a href="fontscale.html">fontscale(1)</a>
<p>get or set terminal font scale</p>
</li>
<li>
<a href="edit.html">edit(1)</a>
<p>text editor for MontaukOS</p>
</li>
<li>
<a href="fetch.html">fetch(1)</a>
<p>HTTP/HTTPS client for MontaukOS</p>
</li>
<li>
<a href="fontscale.html">fontscale(1)</a>
<p>get or set terminal font scale</p>
</li>
<li>
<a href="init.html">init(1)</a>
<p>MontaukOS init system</p>
</li>
<li>
<a href="intro.html">intro(1)</a>
<p>introduction to MontaukOS userspace</p>
</li>
<li>
<a href="man.html">man(1)</a>
<p>display manual pages</p>
</li>
<li>
<a href="nslookup.html">nslookup(1)</a>
<p>DNS hostname lookup</p>
</li>
<li>
<a href="ping.html">ping(1)</a>
<p>send ICMP echo requests</p>
</li>
<li>
<a href="printctl.html">printctl(1)</a>
<p>configure printers and submit print jobs</p>
@@ -188,6 +183,26 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
<p>MontaukOS userspace print spooler daemon</p>
</li>
<li>
<a href="shell.html">shell(1)</a>
<p>MontaukOS interactive command shell</p>
</li>
<li>
<a href="sshd.html">sshd(1)</a>
<p>MontaukOS SSH-2 server</p>
</li>
<li>
<a href="vol.html">vol(1)</a>
<p>list mounted volumes</p>
</li>
<li>
<a href="wifi.html">wifi(1)</a>
<p>scan for wireless networks and inspect the Wi-Fi adapter</p>
</li>
<li>
<a href="wiki.html">wiki(1)</a>
<p>Wikipedia article viewer for MontaukOS</p>
@@ -200,8 +215,13 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
<ul class="doc-list">
<li>
<a href="syscalls.html">syscalls(2)</a>
<p>overview of MontaukOS system calls</p>
<a href="file.html">file(2)</a>
<p>file I/O system calls</p>
</li>
<li>
<a href="framebuffer.html">framebuffer(2)</a>
<p>direct framebuffer access</p>
</li>
<li>
@@ -210,13 +230,8 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
</li>
<li>
<a href="file.html">file(2)</a>
<p>file I/O system calls</p>
</li>
<li>
<a href="framebuffer.html">framebuffer(2)</a>
<p>direct framebuffer access</p>
<a href="syscalls.html">syscalls(2)</a>
<p>overview of MontaukOS system calls</p>
</li>
</ul>
@@ -230,6 +245,11 @@ Manual pages for MontaukOS, viewable in-system with the <a href="man.html">man(1
<p>userspace heap allocation</p>
</li>
<li>
<a href="rtlsdr.html">rtlsdr(3)</a>
<p>userspace RTL2832U and R820T2 radio driver</p>
</li>
</ul>
<h2>File Formats / Reference (Section 5)</h2>
+26 -12
View File
@@ -111,30 +111,44 @@
<pre><code><strong>NAME</strong>
init - MontaukOS init system
<strong>SYNOPSIS</strong>
Spawned automatically by the kernel as PID 0.
<strong>DESCRIPTION</strong>
init is the first userspace process started by the MontaukOS
kernel. It chains system services in sequence, then launches
the interactive shell.
kernel. It discovers system services from 0:/config/init.toml
and starts them in the order their tables appear in that file.
Each service is spawned as a child process. init waits for it
to exit before starting the next one. If a service fails to
spawn, init logs an error and continues to the next stage.
Each enabled service is spawned as a child process. Services may
run in the background or block startup until they exit. Disabled
services are logged and skipped.
Log output is timestamped and color-coded:
HH:MM:SS INFO init Starting dhcp
HH:MM:SS OK init dhcp finished (pid 1)
<strong>BOOT SEQUENCE</strong>
The following services are started in order:
1. 0:/os/dhcp.elf Obtain network configuration via DHCP
2. 0:/os/shell.elf Launch the interactive shell
<strong>CONFIGURATION</strong>
Each service is declared as a named TOML table:
[services.dhcp]
path = "0:/os/dhcp.elf"
enabled = true
wait = false
path is required. name controls the name shown in the boot log and
defaults to the table name. enabled and wait both default to true.
optional skips a service whose executable is not installed.
fallback names another configured service to start if spawning the
service fails. A service with fallback_only = true is available as
a fallback but is not started during the normal pass.
After all foreground services exit, init enters an idle loop.
After the shell exits, init enters an idle loop.
<strong>LOG LEVELS</strong>
init uses four log levels, each with a distinct color:
@@ -144,9 +158,9 @@
WARN Yellow Non-fatal warning
FAIL Red Service failed to start
<strong>SEE ALSO</strong>
dhcp(1), shell(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="dhcp.html">dhcp(1)</a>, <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+47 -55
View File
@@ -111,31 +111,22 @@
<pre><code><strong>NAME</strong>
intro - introduction to MontaukOS userspace
<strong>DESCRIPTION</strong>
MontaukOS is a hobbyist 64-bit operating system written in C++20,
currently at version 0.1.7 (API version 8). Userspace programs
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 (150 syscalls -- see syscalls(2)).
mechanism (roughly 190 syscall numbers, 0-189 - see <a href="syscalls.html">syscalls(2)</a>).
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).
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.
<strong>GETTING STARTED</strong>
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 &lt;montauk/syscall.h&gt;
for the full typed syscall API. GUI apps additionally use
win_create()/win_poll()/win_present() from montauk/Window.hpp
(see framebuffer(2)).
programs/src/ with a main.cpp file.
Build with:
@@ -144,64 +135,65 @@
System/CLI binaries appear in programs/bin/os/; GUI app bundles
(ELF + manifest.toml + icon) appear under programs/bin/apps/&lt;name&gt;/.
<strong>RAMDISK LAYOUT</strong>
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
(&lt;app&gt;.elf + manifest.toml + icon)
0:/os/ System/CLI binaries, os data
0:/apps/ App bundles
0:/config/ System-wide config TOMLs
0:/users/&lt;name&gt;/ Per-user home directories (created at
login), with Music/, Videos/, Pictures/,
config/ subdirectories
0:/users/&lt;name&gt;/ 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:/lib/ Lua and TinyCC toolchain payloads
0:/sdk/ Montauk SDK (native gcc/binutils, TinyCC,
Lua, headers and libraries), when installed
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/.
<strong>SHELL</strong>
The interactive shell is the primary way to interact with
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
first, then 0:/os/.
Type 'help' at the shell prompt for a list
of commands. Use 'man shell' for detailed shell documentation.
<strong>MAN PAGES</strong>
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
<a href="intro.html">intro(1)</a> This page
<a href="shell.html">shell(1)</a> Shell commands reference
<a href="init.html">init(1)</a> Init system
<a href="dhcp.html">dhcp(1)</a> DHCP client
<a href="fetch.html">fetch(1)</a> HTTP client
<a href="ping.html">ping(1)</a> ICMP ping
<a href="nslookup.html">nslookup(1)</a> DNS lookup
<a href="wifi.html">wifi(1)</a> Wi-Fi configuration
<a href="sshd.html">sshd(1)</a> SSH daemon
<a href="fontscale.html">fontscale(1)</a> Terminal font scaling
<a href="edit.html">edit(1)</a> Text editor
<a href="man.html">man(1)</a> The man command itself
<a href="printctl.html">printctl(1)</a> Printer control
<a href="printd.html">printd(1)</a> Print spooler daemon
<a href="wiki.html">wiki(1)</a> Wikipedia article viewer
<a href="legal.html">legal(7)</a> Copyright and legal information
<a href="tls-errors.html">tls-errors(5)</a> TLS/BearSSL error reference
<a href="syscalls.html">syscalls(2)</a> Overview of all syscalls
<a href="spawn.html">spawn(2)</a> Process spawning
<a href="file.html">file(2)</a> File I/O syscalls
<a href="framebuffer.html">framebuffer(2)</a> Framebuffer access
<a href="malloc.html">malloc(3)</a> Memory allocation
<a href="rtlsdr.html">rtlsdr(3)</a> RTL-SDR software radio API
<strong>SEE ALSO</strong>
shell(1), syscalls(2), malloc(3)</code></pre>
<a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a>, <a href="malloc.html">malloc(3)</a></code></pre>
<hr>
<div class="center">
+2 -1
View File
@@ -111,6 +111,7 @@
<pre><code><strong>NAME</strong>
MontaukOS legal/copyright information
<strong>DESCRIPTION</strong>
Copyright (c) 2025-2026 Daniel Hammer, et al.
(includes contributors to other projects, i.e. The Limine Bootloader. Please refer to any other project's own license.)
@@ -140,6 +141,7 @@
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
<strong>THIRD-PARTY COMPONENTS</strong>
MontaukOS is distributed together with third-party components that remain
under their own licenses, including:
@@ -166,7 +168,6 @@
Unsplash License
Full license texts and notices are on this system in 0:/os/licenses/.</code></pre>
<hr>
<div class="center">
+33 -24
View File
@@ -111,60 +111,69 @@
<pre><code><strong>NAME</strong>
malloc, mfree, realloc - userspace heap allocation
<strong>SYNOPSIS</strong>
<strong> void* montauk::malloc(uint64_t size);</strong>
<strong> void montauk::mfree(void* ptr);</strong>
<strong> void* montauk::realloc(void* ptr, uint64_t size);</strong>
<strong>void* montauk::malloc(uint64_t size);</strong>
<strong>void montauk::mfree(void* ptr);</strong>
<strong>void* montauk::realloc(void* ptr, uint64_t size);</strong>
<strong>DESCRIPTION</strong>
The userspace heap provides dynamic memory allocation on top of
the kernel's page-mapping syscall (SYS_ALLOC). Include the
header &lt;montauk/heap.h&gt; to use these functions.
anonymous virtual memory. The Montauk C++ API and libc's
malloc/free API use the same process-wide allocator.
<strong>malloc</strong>
Allocates 'size' bytes from the free list. Returns a 16-byte
aligned pointer, or nullptr on failure. When the free list is
empty, it requests more pages from the kernel via SYS_ALLOC
(minimum 16 KiB growth, initial seed of 64 KiB).
empty, it reserves more pages from the kernel. Physical pages
are committed as they are first touched.
char* buf = (char*)montauk::malloc(1024);
<strong>mfree</strong>
Returns the block to the userspace free list. No syscall is
made -- the memory stays mapped and is immediately reusable.
Returns the block to the userspace allocator. Arena blocks are
immediately reusable; large direct mappings are returned to the
kernel, including their virtual address range.
Passing nullptr is a safe no-op.
montauk::mfree(buf);
<strong>realloc</strong>
Resizes the allocation to 'size' bytes. Allocates a new block,
copies the smaller of old/new sizes, and frees the old block.
Resizes the allocation to 'size' bytes. A block with sufficient
capacity is retained; otherwise a new block is allocated, the
smaller of old/new requested sizes is copied, and the old block
is freed. Integer overflow fails without changing the old block.
If ptr is nullptr, behaves like malloc.
buf = (char*)montauk::realloc(buf, 2048);
<strong>IMPLEMENTATION</strong>
The allocator uses a linked free-list with first-fit search.
Blocks larger than needed are split. The allocation header is
16 bytes (magic + size). All allocations are 16-byte aligned.
The heap grows by requesting pages from the kernel via
SYS_ALLOC. These pages are never returned to the kernel (since
SYS_FREE is currently a no-op), but mfree makes them available
for future malloc calls within the process.
<strong>IMPLEMENTATION</strong>
The allocator uses segregated size-class bins and a coalescing
address-ordered overflow list. Headers retain both requested size
and actual block extent. A process-wide lock serializes C and C++
allocation calls. All returned pointers are 16-byte aligned.
Allocations of 256 KiB or more use direct page mappings so they
can be released promptly. Smaller allocations use growing arenas.
<strong>LOW-LEVEL PAGE API</strong>
For large allocations or when direct page control is needed:
void* montauk::alloc(uint64_t size); // SYS_ALLOC
void montauk::free(void* ptr); // SYS_FREE (no-op)
void montauk::free(void* ptr); // SYS_FREE
alloc() reserves zero-filled, read/write, non-executable pages.
Size is rounded up to 4 KiB. Freed ranges are reusable.
alloc() maps zeroed pages starting at 0x40000000 and growing
upward. Size is rounded up to 4 KiB page boundaries.
<strong>SEE ALSO</strong>
syscalls(2), file(2)</code></pre>
<a href="syscalls.html">syscalls(2)</a>, <a href="file.html">file(2)</a></code></pre>
<hr>
<div class="center">
+11 -5
View File
@@ -111,9 +111,11 @@
<pre><code><strong>NAME</strong>
man - display manual pages
<strong>SYNOPSIS</strong>
<strong> man topic</strong>
<strong> man section topic</strong>
<strong>man topic</strong>
<strong>man section topic</strong>
<strong>DESCRIPTION</strong>
The man command displays manual pages from the ramdisk in a
@@ -124,9 +126,10 @@
in order. If a section number is given, only that section is
checked.
<strong>KEY BINDINGS</strong>
<strong>Navigation</strong>
<strong>Navigation</strong>
j, Down Arrow Scroll down one line
k, Up Arrow Scroll up one line
Space, Page Down Scroll down one page
@@ -135,12 +138,14 @@
G, End Go to bottom
q Quit
<strong>SECTIONS</strong>
1 User commands and programs
2 System calls (kernel interface)
3 Library functions (userspace libraries)
7 Miscellaneous (legal, conventions)
<strong>FILES</strong>
Man pages are stored on the ramdisk at:
@@ -148,15 +153,16 @@
For example, man intro reads 0:/man/intro.1
<strong>EXAMPLES</strong>
man intro View the introduction
man 2 syscalls View syscall overview (section 2)
man malloc View malloc documentation
man legal View copyright information
<strong>SEE ALSO</strong>
intro(1), shell(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="intro.html">intro(1)</a>, <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+7 -2
View File
@@ -111,9 +111,11 @@
<pre><code><strong>NAME</strong>
nslookup - DNS hostname lookup
<strong>SYNOPSIS</strong>
nslookup &lt;hostname&gt;
<strong>DESCRIPTION</strong>
Resolves a hostname to an IPv4 address using the configured
DNS server and prints the result.
@@ -122,6 +124,7 @@
configured DNS server and waits up to 5 seconds for a reply.
Results are cached in an 8-entry kernel cache with TTL support.
<strong>OUTPUT</strong>
Server: 10.0.68.1
Name: example.com
@@ -132,18 +135,20 @@
Could not resolve: badhost.invalid
<strong>DNS CONFIGURATION</strong>
The DNS server address is obtained automatically via DHCP.
It can also be viewed and set with ifconfig. The default
is 10.0.68.1 (QEMU user-mode networking).
<strong>EXAMPLES</strong>
nslookup google.com
nslookup icanhazip.com
<strong>SEE ALSO</strong>
ping(1), fetch(1), dhcp(1), ifconfig(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="ping.html">ping(1)</a>, <a href="fetch.html">fetch(1)</a>, <a href="dhcp.html">dhcp(1)</a>, ifconfig(1), <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+6 -2
View File
@@ -111,9 +111,11 @@
<pre><code><strong>NAME</strong>
ping - send ICMP echo requests
<strong>SYNOPSIS</strong>
ping &lt;host&gt;
<strong>DESCRIPTION</strong>
Sends 4 ICMP echo requests to the specified host and prints
the round-trip time for each reply.
@@ -124,6 +126,7 @@
Each request has a 3-second timeout. Requests are sent at
1-second intervals.
<strong>OUTPUT</strong>
PING example.com (93.184.216.34)
Reply from 93.184.216.34: time=12ms
@@ -135,6 +138,7 @@
Request timed out
<strong>EXAMPLES</strong>
ping 10.0.68.1
Ping the gateway by IP address.
@@ -142,9 +146,9 @@
ping google.com
Ping by hostname (requires DNS).
<strong>SEE ALSO</strong>
nslookup(1), ifconfig(1), shell(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="nslookup.html">nslookup(1)</a>, ifconfig(1), <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+21 -19
View File
@@ -110,36 +110,38 @@
<pre><code><strong>NAME</strong>
printctl - configure printers and submit print jobs
<strong>SYNOPSIS</strong>
<strong>printctl</strong>
<em>command</em>
[<em>options</em>]
<strong>printctl</strong>
<em>command</em>
<em>[ options ]</em>
<strong>DESCRIPTION</strong>
<strong>printctl</strong>
<strong>printctl</strong>
manages the MontaukOS userspace print spooler and submits print jobs to IPP printers.
<strong>COMMANDS</strong>
<strong>set-printer <em>URI</em></strong>
Store the default printer URI.
<strong>set-printer URI</strong>
Store the default printer URI.
<strong>show-printer</strong>
Print the configured default printer URI.
<strong>show-printer</strong>
Print the configured default printer URI.
<strong>print <em>FILE</em> [--printer <em>URI</em>] [--name <em>JOB</em>] [--wait]</strong>
Queue a file for printing.
<strong>print FILE [--printer URI] [--name JOB] [--wait]</strong>
Queue a file for printing.
<strong>test-page [--printer <em>URI</em>] [--wait] [--no-wait]</strong>
Generate and queue a simple test page.
<strong>test-page [--printer URI] [--wait] [--no-wait]</strong>
Generate and queue a simple test page.
<strong>status [--verbose]</strong>
Show daemon state and queued, active, completed, and failed jobs.
<strong>status [--verbose]</strong>
Show daemon state and queued, active, completed, and failed jobs.
<strong>inspect <em>JOB-ID</em></strong>
Show full metadata and debug details for a queued, active, completed, or failed job.
<strong>probe [<em>URI</em>]</strong>
Probe the configured printer, print host and resolution details, and show IPP capability diagnostics.</code></pre>
<strong>inspect JOB-ID</strong>
Show full metadata and debug details for a queued, active, completed, or failed job.
<strong>probe [URI]</strong>
Probe the configured printer, print host and resolution details, and show IPP capability diagnostics.</code></pre>
<hr>
<div class="center">
+5 -4
View File
@@ -110,16 +110,17 @@
<pre><code><strong>NAME</strong>
printd - MontaukOS userspace print spooler daemon
<strong>SYNOPSIS</strong>
<strong>printd</strong>
<strong>printd</strong>
<strong>DESCRIPTION</strong>
<strong>printd</strong>
<strong>printd</strong>
monitors the print spool directories, claims queued jobs, and delivers them to IPP printers.
It is normally launched automatically by
<strong>init</strong>(1)
<strong>init (1)</strong>
and does not require direct user interaction.</code></pre>
<hr>
<div class="center">
+47 -12
View File
@@ -111,6 +111,7 @@
<pre><code><strong>NAME</strong>
shell - MontaukOS interactive command shell
<strong>DESCRIPTION</strong>
The MontaukOS shell is a command interpreter launched by init
after system services have started. It provides command
@@ -121,6 +122,7 @@
a command is not a builtin, the shell searches for a matching
ELF binary and executes it as a child process.
<strong>COMMAND RESOLUTION</strong>
When a non-builtin command is entered, the shell searches for
a matching binary in the following order:
@@ -144,16 +146,20 @@
Arguments after the command name are passed to the spawned
process.
<strong>BUILTINS</strong>
<strong>help</strong>
Display a categorized list of available commands.
<strong>ls [dir]</strong>
List files in the current directory, or in the specified
directory. Directory entries are shown with a trailing slash.
Examples: ls, ls man, ls os
<strong>cd [dir]</strong>
Change the working directory. With no argument, returns to the
logged-in user's home directory (0:/users/&lt;user&gt;); with /,
@@ -161,33 +167,42 @@
The shell prompt reflects the current directory.
Examples: cd os, cd .., cd
<strong>pwd</strong>
Print the current working directory as an absolute path
(e.g. "0:/os").
<strong>echo [-n] ...</strong>
Print the arguments. -n suppresses the trailing newline.
<strong>set [VAR=value]</strong>
With no argument, list all shell variables (built-in and
user-defined). With VAR=value, set a variable. With a bare
name, print that variable's value.
<strong>unset VAR</strong>
Remove a user-defined shell variable.
<strong>true / false</strong>
Return exit status 0 / 1 without doing anything. Useful with
&amp;&amp; and ||.
<strong>N:</strong>
A bare "&lt;number&gt;:" (e.g. "1:") switches the current drive to
drive N and resets the working directory to that drive's root.
<strong>exit</strong>
Terminate the shell process (with the last command's exit code).
<strong>SYNTAX</strong>
<strong>Variables</strong>
NAME=value Set a shell variable (no leading $)
$VAR or ${VAR} Expand a variable's value
@@ -196,11 +211,13 @@
home directory, current directory)
\$ Escape a literal '$'
<strong>Tilde expansion</strong>
A leading ~ expands to the session home directory
(0:/users/&lt;user&gt;) when followed by end-of-string, '/', or a
space.
<strong>Command chaining</strong>
cmd1 ; cmd2 Run cmd2 unconditionally after cmd1
cmd1 &amp;&amp; cmd2 Run cmd2 only if cmd1 succeeded (exit 0)
@@ -209,25 +226,29 @@
Single and double quotes protect ;, &amp;&amp;, and || from being
treated as separators.
<strong>Comments</strong>
A '#' outside of quotes starts a comment; the rest of the line
is ignored.
<strong>EXTERNAL COMMANDS</strong>
All external commands live in 0:/os/ (see COMMAND RESOLUTION).
Where a dedicated man page exists it is noted below; run
'man &lt;command&gt;' for details.
<strong>File commands</strong>
cat &lt;file&gt; Display file contents
edit [file] Text editor -- see edit(1)
edit [file] Text editor -- see <a href="edit.html">edit(1)</a>
copy &lt;src&gt; &lt;dst&gt; Copy a file
move &lt;src&gt; &lt;dst&gt; Move/rename a file
rm &lt;file&gt; Remove a file
touch &lt;file&gt; Create an empty file
<strong>System commands</strong>
man &lt;topic&gt; View manual pages -- see man(1)
man &lt;topic&gt; View manual pages -- see <a href="man.html">man(1)</a>
whoami Print the current username
info / mtkfetch Show system information
date Show current date and time
@@ -235,30 +256,39 @@
proclist List running processes
power CPU power/thermal status (power [watch [secs]])
clear Clear the screen and framebuffer
fontscale [n] Get or set terminal font scale -- see fontscale(1)
fontscale [n] Get or set terminal font scale -- see <a href="fontscale.html">fontscale(1)</a>
lua Lua interpreter
tcc TinyCC (in-system C compiler)
reset Reboot the system
shutdown Shut down the system
reset / reboot Request a supervised system reboot
shutdown / poweroff Request a supervised system shutdown
suspend Enter ACPI sleep
Interactive shutdown and reboot are shell builtins: they post a
capability-checked request and exit the console, allowing login.elf to
flush filesystems and perform the final power operation. They do not grant
CAP_POWER_CONTROL to the shell.
<strong>Network commands</strong>
ping &lt;host&gt; Send ICMP echo requests -- see ping(1)
nslookup &lt;host&gt; DNS lookup -- see nslookup(1)
ping &lt;host&gt; Send ICMP echo requests -- see <a href="ping.html">ping(1)</a>
nslookup &lt;host&gt; DNS lookup -- see <a href="nslookup.html">nslookup(1)</a>
ifconfig Show/set network configuration
tcpconnect &lt;host&gt; &lt;port&gt; Interactive TCP client
irc IRC client
dhcp DHCP client -- see dhcp(1)
fetch &lt;url&gt; HTTP/HTTPS client (TLS 1.2) -- see fetch(1)
wiki &lt;title&gt; Wikipedia article viewer -- see wiki(1)
dhcp DHCP client -- see <a href="dhcp.html">dhcp(1)</a>
fetch &lt;url&gt; HTTP/HTTPS client (TLS 1.2) -- see <a href="fetch.html">fetch(1)</a>
wiki &lt;title&gt; Wikipedia article viewer -- see <a href="wiki.html">wiki(1)</a>
httpd HTTP server
Network commands accept both IP addresses and hostnames.
Hostnames are resolved via the configured DNS server.
<strong>Bluetooth</strong>
btlist List connected Bluetooth devices
btbonds List bonded (paired) Bluetooth devices
<strong>Software-defined radio</strong>
sdr [freqMHz [rateHz]] Receive and report basic signal
statistics from an attached RTL-SDR dongle
@@ -270,22 +300,26 @@
disks, devexplorer, procmgr, powermgr, printers, timezone,
weather, wikipedia. There is no 0:/games/ directory.
<strong>TAB COMPLETION</strong>
Pressing Tab completes the word under the cursor against, in
order: executable names in 0:/os/, shell builtins, and file/
directory entries in the current directory. A single match is
completed inline; multiple matches are listed below the prompt.
<strong>INPUT</strong>
The shell uses non-blocking keyboard input via SYS_GETKEY (with
SYS_INPUT_WAIT to sleep between events) to support arrow key
detection. Lines are limited to 255 characters.
<strong>Editing</strong>
Backspace Delete character before cursor
Tab Tab-complete the current word
Enter Execute the command line
<strong>History</strong>
The shell stores the last 32 unique commands. Duplicate
consecutive entries are suppressed.
@@ -293,6 +327,7 @@
Up Arrow Recall previous command
Down Arrow Recall next command (or clear line)
<strong>PROMPT</strong>
The prompt displays the current drive and working directory:
@@ -300,9 +335,9 @@
0:/os&gt; _ (in os/ directory)
1:/&gt; _ (at root of drive 1)
<strong>SEE ALSO</strong>
man(1), intro(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="man.html">man(1)</a>, <a href="intro.html">intro(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+16 -5
View File
@@ -111,13 +111,16 @@
<pre><code><strong>NAME</strong>
spawn, waitpid - create and wait for processes
<strong>SYNOPSIS</strong>
<strong> int montauk::spawn(const char* path, const char* args = nullptr);</strong>
<strong> void montauk::waitpid(int pid);</strong>
<strong> int montauk::getargs(char* buf, uint64_t maxLen);</strong>
<strong>int montauk::spawn(const char* path, const char* args = nullptr);</strong>
<strong>void montauk::waitpid(int pid);</strong>
<strong>int montauk::getargs(char* buf, uint64_t maxLen);</strong>
<strong>DESCRIPTION</strong>
<strong>spawn</strong>
Loads the ELF64 binary at the given VFS path and creates a new
process. The path must include the drive prefix, for example:
@@ -136,6 +139,7 @@
Failure occurs when there are no free process slots (max 256),
the file cannot be found, or the ELF is invalid.
<strong>waitpid</strong>
Blocks the calling process until the process with the given PID
has exited. Internally, this yields the CPU in a loop:
@@ -146,6 +150,7 @@
it spawns a child and waits for it to complete before showing
the next prompt.
<strong>EXAMPLES</strong>
Spawn a program and wait for it:
@@ -157,6 +162,7 @@
montauk::print("child exited\n");
}
<strong>getargs</strong>
Copies the argument string into buf (up to maxLen bytes, always
null-terminated). Returns the number of characters copied, or
@@ -168,15 +174,20 @@
The argument string is set by the parent when calling spawn().
If no arguments were provided, the buffer will be empty.
A spawned child inherits a snapshot of its parent's environment. Libc
exposes it through getenv(), setenv(), and environ. posix_spawn() can
instead provide an explicit envp for the child.
<strong>NOTES</strong>
The _start() entry point receives no argc/argv. Use getargs()
to retrieve the argument string passed by the parent process.
Process exit codes are not yet collected by waitpid.
<strong>SEE ALSO</strong>
syscalls(2), file(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="syscalls.html">syscalls(2)</a>, <a href="file.html">file(2)</a></code></pre>
<hr>
<div class="center">
+538 -244
View File
File diff suppressed because it is too large. Load diff
+66 -62
View File
@@ -111,209 +111,213 @@
<pre><code><strong>NAME</strong>
tls-errors - BearSSL TLS and X.509 error codes
<strong>DESCRIPTION</strong>
MontaukOS uses BearSSL for TLS 1.2 connections. When a TLS
operation fails, an integer error code is reported. This page
lists all possible error codes.
<strong>SSL/TLS ENGINE ERRORS</strong>
<strong>0 BR_ERR_OK</strong>
<strong>0 BR_ERR_OK</strong>
No error.
<strong>1 BR_ERR_BAD_PARAM</strong>
<strong>1 BR_ERR_BAD_PARAM</strong>
Caller-provided parameter is incorrect.
<strong>2 BR_ERR_BAD_STATE</strong>
<strong>2 BR_ERR_BAD_STATE</strong>
Operation cannot be applied in the current engine state.
<strong>3 BR_ERR_UNSUPPORTED_VERSION</strong>
<strong>3 BR_ERR_UNSUPPORTED_VERSION</strong>
Incoming protocol or record version is unsupported.
<strong>4 BR_ERR_BAD_VERSION</strong>
<strong>4 BR_ERR_BAD_VERSION</strong>
Incoming record version does not match the expected version.
<strong>5 BR_ERR_BAD_LENGTH</strong>
<strong>5 BR_ERR_BAD_LENGTH</strong>
Incoming record length is invalid.
<strong>6 BR_ERR_TOO_LARGE</strong>
<strong>6 BR_ERR_TOO_LARGE</strong>
Incoming record is too large, or buffer is too small for the
handshake message to send.
<strong>7 BR_ERR_BAD_MAC</strong>
<strong>7 BR_ERR_BAD_MAC</strong>
Decryption found invalid padding, or the record MAC is
not correct.
<strong>8 BR_ERR_NO_RANDOM</strong>
<strong>8 BR_ERR_NO_RANDOM</strong>
No initial entropy was provided and none could be obtained
from the OS.
<strong>9 BR_ERR_UNKNOWN_TYPE</strong>
<strong>9 BR_ERR_UNKNOWN_TYPE</strong>
Incoming record type is unknown.
<strong>10 BR_ERR_UNEXPECTED</strong>
<strong>10 BR_ERR_UNEXPECTED</strong>
Incoming record or message has wrong type for the current
engine state.
<strong>12 BR_ERR_BAD_CCS</strong>
<strong>12 BR_ERR_BAD_CCS</strong>
ChangeCipherSpec message from the peer has invalid contents.
<strong>13 BR_ERR_BAD_ALERT</strong>
<strong>13 BR_ERR_BAD_ALERT</strong>
Alert message from the peer has invalid contents (odd length).
<strong>14 BR_ERR_BAD_HANDSHAKE</strong>
<strong>14 BR_ERR_BAD_HANDSHAKE</strong>
Incoming handshake message decoding failed.
<strong>15 BR_ERR_OVERSIZED_ID</strong>
<strong>15 BR_ERR_OVERSIZED_ID</strong>
ServerHello contains a session ID larger than 32 bytes.
<strong>16 BR_ERR_BAD_CIPHER_SUITE</strong>
<strong>16 BR_ERR_BAD_CIPHER_SUITE</strong>
Server wants to use a cipher suite that we did not advertise,
or we tried to advertise a cipher suite that we do not support.
<strong>17 BR_ERR_BAD_COMPRESSION</strong>
<strong>17 BR_ERR_BAD_COMPRESSION</strong>
Server wants to use a compression method that we did not
advertise.
<strong>18 BR_ERR_BAD_FRAGLEN</strong>
<strong>18 BR_ERR_BAD_FRAGLEN</strong>
Server's max fragment length does not match client's.
<strong>19 BR_ERR_BAD_SECRENEG</strong>
<strong>19 BR_ERR_BAD_SECRENEG</strong>
Secure renegotiation failed.
<strong>20 BR_ERR_EXTRA_EXTENSION</strong>
<strong>20 BR_ERR_EXTRA_EXTENSION</strong>
Server sent an extension type that we did not announce, or
used the same extension type more than once in ServerHello.
<strong>21 BR_ERR_BAD_SNI</strong>
<strong>21 BR_ERR_BAD_SNI</strong>
Invalid Server Name Indication contents (when used by the
server, this extension shall be empty).
<strong>22 BR_ERR_BAD_HELLO_DONE</strong>
<strong>22 BR_ERR_BAD_HELLO_DONE</strong>
Invalid ServerHelloDone from the server (length is not 0).
<strong>23 BR_ERR_LIMIT_EXCEEDED</strong>
<strong>23 BR_ERR_LIMIT_EXCEEDED</strong>
Internal limit exceeded (e.g. server's public key is too
large).
<strong>24 BR_ERR_BAD_FINISHED</strong>
<strong>24 BR_ERR_BAD_FINISHED</strong>
Finished message from peer does not match the expected value.
<strong>25 BR_ERR_RESUME_MISMATCH</strong>
<strong>25 BR_ERR_RESUME_MISMATCH</strong>
Session resumption attempted with a different version or
cipher suite.
<strong>26 BR_ERR_INVALID_ALGORITHM</strong>
<strong>26 BR_ERR_INVALID_ALGORITHM</strong>
Unsupported or invalid algorithm (ECDHE curve, signature
algorithm, hash function).
<strong>27 BR_ERR_BAD_SIGNATURE</strong>
<strong>27 BR_ERR_BAD_SIGNATURE</strong>
Invalid signature on ServerKeyExchange or CertificateVerify.
<strong>28 BR_ERR_WRONG_KEY_USAGE</strong>
<strong>28 BR_ERR_WRONG_KEY_USAGE</strong>
Peer's public key does not have the proper type or is not
allowed for the requested operation.
<strong>29 BR_ERR_NO_CLIENT_AUTH</strong>
<strong>29 BR_ERR_NO_CLIENT_AUTH</strong>
Client did not send a certificate upon request, or the client
certificate could not be validated.
<strong>31 BR_ERR_IO</strong>
<strong>31 BR_ERR_IO</strong>
I/O error or premature close on the underlying transport.
<strong>X.509 CERTIFICATE ERRORS</strong>
<strong>32 BR_ERR_X509_OK</strong>
<strong>32 BR_ERR_X509_OK</strong>
X.509 validation was successful (not an error).
<strong>33 BR_ERR_X509_INVALID_VALUE</strong>
<strong>33 BR_ERR_X509_INVALID_VALUE</strong>
Invalid value in an ASN.1 structure.
<strong>34 BR_ERR_X509_TRUNCATED</strong>
<strong>34 BR_ERR_X509_TRUNCATED</strong>
Truncated certificate.
<strong>35 BR_ERR_X509_EMPTY_CHAIN</strong>
<strong>35 BR_ERR_X509_EMPTY_CHAIN</strong>
Empty certificate chain (no certificate at all).
<strong>36 BR_ERR_X509_INNER_TRUNC</strong>
<strong>36 BR_ERR_X509_INNER_TRUNC</strong>
Inner element extends beyond outer element size.
<strong>37 BR_ERR_X509_BAD_TAG_CLASS</strong>
<strong>37 BR_ERR_X509_BAD_TAG_CLASS</strong>
Unsupported tag class (application or private).
<strong>38 BR_ERR_X509_BAD_TAG_VALUE</strong>
<strong>38 BR_ERR_X509_BAD_TAG_VALUE</strong>
Unsupported tag value.
<strong>39 BR_ERR_X509_INDEFINITE_LENGTH</strong>
<strong>39 BR_ERR_X509_INDEFINITE_LENGTH</strong>
Indefinite length encoding found.
<strong>40 BR_ERR_X509_EXTRA_ELEMENT</strong>
<strong>40 BR_ERR_X509_EXTRA_ELEMENT</strong>
Extraneous element in certificate.
<strong>41 BR_ERR_X509_UNEXPECTED</strong>
<strong>41 BR_ERR_X509_UNEXPECTED</strong>
Unexpected element in certificate.
<strong>42 BR_ERR_X509_NOT_CONSTRUCTED</strong>
<strong>42 BR_ERR_X509_NOT_CONSTRUCTED</strong>
Expected constructed element, but found primitive.
<strong>43 BR_ERR_X509_NOT_PRIMITIVE</strong>
<strong>43 BR_ERR_X509_NOT_PRIMITIVE</strong>
Expected primitive element, but found constructed.
<strong>44 BR_ERR_X509_PARTIAL_BYTE</strong>
<strong>44 BR_ERR_X509_PARTIAL_BYTE</strong>
BIT STRING length is not a multiple of 8.
<strong>45 BR_ERR_X509_BAD_BOOLEAN</strong>
<strong>45 BR_ERR_X509_BAD_BOOLEAN</strong>
BOOLEAN value has invalid length.
<strong>46 BR_ERR_X509_OVERFLOW</strong>
<strong>46 BR_ERR_X509_OVERFLOW</strong>
Value is off-limits (overflow).
<strong>47 BR_ERR_X509_BAD_DN</strong>
<strong>47 BR_ERR_X509_BAD_DN</strong>
Invalid distinguished name.
<strong>48 BR_ERR_X509_BAD_TIME</strong>
<strong>48 BR_ERR_X509_BAD_TIME</strong>
Invalid date/time representation in certificate.
<strong>49 BR_ERR_X509_UNSUPPORTED</strong>
<strong>49 BR_ERR_X509_UNSUPPORTED</strong>
Certificate contains unsupported features that cannot be
ignored.
<strong>50 BR_ERR_X509_LIMIT_EXCEEDED</strong>
<strong>50 BR_ERR_X509_LIMIT_EXCEEDED</strong>
Key or signature size exceeds internal limits.
<strong>51 BR_ERR_X509_WRONG_KEY_TYPE</strong>
<strong>51 BR_ERR_X509_WRONG_KEY_TYPE</strong>
Key type does not match that which was expected.
<strong>52 BR_ERR_X509_BAD_SIGNATURE</strong>
<strong>52 BR_ERR_X509_BAD_SIGNATURE</strong>
Signature is invalid.
<strong>53 BR_ERR_X509_TIME_UNKNOWN</strong>
<strong>53 BR_ERR_X509_TIME_UNKNOWN</strong>
Validation time is unknown (no time was set).
<strong>54 BR_ERR_X509_EXPIRED</strong>
<strong>54 BR_ERR_X509_EXPIRED</strong>
Certificate is expired or not yet valid.
<strong>55 BR_ERR_X509_DN_MISMATCH</strong>
<strong>55 BR_ERR_X509_DN_MISMATCH</strong>
Issuer/subject DN mismatch in the chain.
<strong>56 BR_ERR_X509_BAD_SERVER_NAME</strong>
<strong>56 BR_ERR_X509_BAD_SERVER_NAME</strong>
Expected server name was not found in the chain.
<strong>57 BR_ERR_X509_CRITICAL_EXTENSION</strong>
<strong>57 BR_ERR_X509_CRITICAL_EXTENSION</strong>
Unknown critical extension in certificate.
<strong>58 BR_ERR_X509_NOT_CA</strong>
<strong>58 BR_ERR_X509_NOT_CA</strong>
Not a CA, or path length constraint violation.
<strong>59 BR_ERR_X509_FORBIDDEN_KEY_USAGE</strong>
<strong>59 BR_ERR_X509_FORBIDDEN_KEY_USAGE</strong>
Key Usage extension prohibits the intended usage.
<strong>60 BR_ERR_X509_WEAK_PUBLIC_KEY</strong>
<strong>60 BR_ERR_X509_WEAK_PUBLIC_KEY</strong>
Public key found in certificate is too small.
<strong>62 BR_ERR_X509_NOT_TRUSTED</strong>
<strong>62 BR_ERR_X509_NOT_TRUSTED</strong>
Chain could not be linked to a trust anchor.
<strong>FATAL ALERTS</strong>
When a fatal alert is received from the peer, the error code
is 256 + the TLS alert value. When a fatal alert is sent to
@@ -342,9 +346,9 @@
For example, error 296 means a handshake_failure alert was
received (256 + 40 = 296).
<strong>SEE ALSO</strong>
fetch(1), syscalls(2)</code></pre>
<strong>SEE ALSO</strong>
<a href="fetch.html">fetch(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
+13 -4
View File
@@ -111,11 +111,13 @@
<pre><code><strong>NAME</strong>
wiki - Wikipedia article viewer for MontaukOS
<strong>SYNOPSIS</strong>
wiki &lt;title&gt;
wiki -f &lt;title&gt;
wiki -s &lt;query&gt;
<strong>DESCRIPTION</strong>
wiki fetches and displays Wikipedia articles in the terminal.
It connects to en.wikipedia.org over HTTPS (TLS 1.2) and
@@ -126,16 +128,18 @@
color-coded headings and word-wrapped text. Multi-word titles
are accepted as separate arguments and joined automatically.
<strong>OPTIONS</strong>
<strong>-f</strong>
<strong>-f</strong>
Full article mode. Display the complete article text instead
of just the summary. Section headings are color-coded.
<strong>-s</strong>
<strong>-s</strong>
Search mode. Search Wikipedia for articles matching the
query and display a numbered list of up to 10 results.
Press a number key to view that article's summary.
<strong>EXAMPLES</strong>
wiki Linux
Show a summary of the Linux article.
@@ -146,13 +150,16 @@
wiki -s operating system
Search for articles related to "operating system".
<strong>TLS SUPPORT</strong>
Connections use BearSSL for TLS 1.2. Server certificates
are validated against the system CA bundle at
0:/os/certs/ca-certificates.crt.
<strong>KEYBOARD</strong>
<strong>Article pager</strong>
j / Down Scroll down one line
k / Up Scroll up one line
@@ -162,16 +169,18 @@
G / End Jump to bottom
q Quit pager
<strong>Search results</strong>
1-9, 0 View article (0 = result 10)
q Quit search
<strong>General</strong>
Ctrl+Q Abort during network request
<strong>SEE ALSO</strong>
fetch(1), ping(1), nslookup(1), shell(1)</code></pre>
<strong>SEE ALSO</strong>
<a href="fetch.html">fetch(1)</a>, <a href="ping.html">ping(1)</a>, <a href="nslookup.html">nslookup(1)</a>, <a href="shell.html">shell(1)</a></code></pre>
<hr>
<div class="center">