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