release - 0.2.0

This commit is contained in:
daniel committed 2026-10-14 07:47:58 +02:00
1 parent a463834e0a
commit 0b0689a74e
5 files changed
+837 -2

No files matched your search

+166
View File
@@ -0,0 +1,166 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="MontaukOS manual page: rtlsdr(3) - userspace RTL2832U and R820T2 radio driver">
<title>rtlsdr(3) - MontaukOS Manual</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Open Sans', Arial, sans-serif;
max-width: 960px;
margin: 0 auto;
padding: 1em;
line-height: 1.5;
display: flex;
gap: 2em;
}
p { margin: 0 0 0.5em; }
h2 { margin: 0.5em 0; }
.sidebar {
width: 160px;
flex-shrink: 0;
}
.sidebar ul {
list-style: none;
padding: 0;
}
.sidebar li {
margin: 0.5em 0;
}
.sidebar a {
color: #0066CC;
text-decoration: none;
font-weight: 600;
}
.sidebar a:hover {
color: #004499;
text-decoration: underline;
}
.sidebar .current {
color: #004499;
}
.sidebar hr {
border: none;
border-top: 1px solid #999;
margin: 0.75em 0;
}
.main {
flex: 1;
min-width: 0;
}
a { color: #0000EE; }
a:visited { color: #0066CC; }
hr { border-style: solid; border-width: 1px 0 0 0; border-color: #999; }
pre { background: #f0f0f0; padding: 0.5em; overflow-x: auto; }
code { background: #f0f0f0; padding: 0 0.15em; }
pre code { padding: 0; }
.center { text-align: center; }
.box {
border: 1px solid #999;
padding: 0.5em;
margin: 0.5em 0;
}
@media (max-width: 700px) {
body {
flex-direction: column;
gap: 1em;
padding: 1em 0.75em;
}
.sidebar {
width: auto;
}
.sidebar ul {
display: flex;
flex-wrap: wrap;
gap: 0 1em;
}
.sidebar hr {
width: 100%;
}
}
</style>
</head>
<body>
<div class="sidebar">
<ul>
<li><a href="../../index.html">Home</a></li>
<li><a href="../../downloads.html">Downloads</a></li>
<li><a href="../../history.html">History</a></li>
<li><a href="../index.html">Documentation</a></li>
<li><a href="https://git.montaukos.org/daniel/MontaukOS/issues">Issue tracker</a></li>
<li><a href="https://git.montaukos.org/daniel/MontaukOS">Git</a></li>
</ul>
<hr>
<ul>
<li><a href="index.html" class="current">Man Pages</a></li>
</ul>
</div>
<div class="main">
<div class="center">
<h1>rtlsdr(3)</h1>
</div>
<hr>
<pre><code><strong>NAME</strong>
rtlsdr.lib - userspace RTL2832U and R820T2 radio driver
<strong>SYNOPSIS</strong>
#include &lt;rtlsdr/rtlsdr.h&gt;
<strong>DESCRIPTION</strong>
The library at
<strong>0:/os/rtlsdr.lib</strong>
drives supported Realtek RTL2832U USB receivers from userspace through the
generic process-owned USB API. Supported USB product IDs are 0bda:2832 and
0bda:2838. Samples are returned as interleaved unsigned 8-bit I/Q pairs.
Applications load the library with libloader, resolve the
<strong>rtlsdr_*</strong>
symbols declared in the header, enumerate devices, open one, configure it,
start bulk reception, read samples, stop, and close it. Claims are exclusive
and are released by the kernel if the process exits or the device disconnects.
<strong>API</strong>
<strong>rtlsdr_count</strong>
and
<strong>rtlsdr_get_device_info</strong>
enumerate compatible unbound USB interfaces.
<strong>rtlsdr_open</strong>
claims an interface and returns an opaque device pointer.
<strong>rtlsdr_set_center_freq,</strong>
<strong>rtlsdr_set_sample_rate,</strong>
<strong>rtlsdr_set_tuner_gain_mode,</strong>
<strong>rtlsdr_set_tuner_gain,</strong>
<strong>rtlsdr_set_freq_correction,</strong>
<strong>rtlsdr_set_agc_mode,</strong>
and
<strong>rtlsdr_set_direct_sampling</strong>
configure the receiver.
<strong>rtlsdr_start,</strong>
<strong>rtlsdr_read,</strong>
and
<strong>rtlsdr_stop</strong>
control non-blocking reception.
<strong>NOTES</strong>
Syscall numbers 140 through 148 are reserved former SDR slots and are not an
API. Device-specific control and tuner programming live entirely in this
library.</code></pre>
<hr>
<div class="center">
<a href="../index.html">Back to Documentation Index</a>
</div>
</div>
</body>
</html>
+191
View File
@@ -0,0 +1,191 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="MontaukOS manual page: sshd(1) - MontaukOS SSH-2 server">
<title>sshd(1) - MontaukOS Manual</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Open Sans', Arial, sans-serif;
max-width: 960px;
margin: 0 auto;
padding: 1em;
line-height: 1.5;
display: flex;
gap: 2em;
}
p { margin: 0 0 0.5em; }
h2 { margin: 0.5em 0; }
.sidebar {
width: 160px;
flex-shrink: 0;
}
.sidebar ul {
list-style: none;
padding: 0;
}
.sidebar li {
margin: 0.5em 0;
}
.sidebar a {
color: #0066CC;
text-decoration: none;
font-weight: 600;
}
.sidebar a:hover {
color: #004499;
text-decoration: underline;
}
.sidebar .current {
color: #004499;
}
.sidebar hr {
border: none;
border-top: 1px solid #999;
margin: 0.75em 0;
}
.main {
flex: 1;
min-width: 0;
}
a { color: #0000EE; }
a:visited { color: #0066CC; }
hr { border-style: solid; border-width: 1px 0 0 0; border-color: #999; }
pre { background: #f0f0f0; padding: 0.5em; overflow-x: auto; }
code { background: #f0f0f0; padding: 0 0.15em; }
pre code { padding: 0; }
.center { text-align: center; }
.box {
border: 1px solid #999;
padding: 0.5em;
margin: 0.5em 0;
}
@media (max-width: 700px) {
body {
flex-direction: column;
gap: 1em;
padding: 1em 0.75em;
}
.sidebar {
width: auto;
}
.sidebar ul {
display: flex;
flex-wrap: wrap;
gap: 0 1em;
}
.sidebar hr {
width: 100%;
}
}
</style>
</head>
<body>
<div class="sidebar">
<ul>
<li><a href="../../index.html">Home</a></li>
<li><a href="../../downloads.html">Downloads</a></li>
<li><a href="../../history.html">History</a></li>
<li><a href="../index.html">Documentation</a></li>
<li><a href="https://git.montaukos.org/daniel/MontaukOS/issues">Issue tracker</a></li>
<li><a href="https://git.montaukos.org/daniel/MontaukOS">Git</a></li>
</ul>
<hr>
<ul>
<li><a href="index.html" class="current">Man Pages</a></li>
</ul>
</div>
<div class="main">
<div class="center">
<h1>sshd(1)</h1>
</div>
<hr>
<pre><code><strong>NAME</strong>
sshd - MontaukOS SSH-2 server
<strong>SYNOPSIS</strong>
<strong>sshd</strong>
<strong>DESCRIPTION</strong>
<strong>sshd</strong>
accepts SSH-2 connections and gives each authenticated user a MontaukOS shell.
It is normally launched automatically by
<strong>init (1)</strong>
and does not require direct user interaction. Remote access is disabled by
default; enable it from Settings &gt; SSH Server, which sets
<em>services.ssh.enabled</em>
in
<em>0:/config/init.toml .</em>
The change takes effect on the next boot.
<strong>AUTHENTICATION</strong>
Passwords are the only supported method, checked against the MontaukOS account
database. A user must additionally be listed in the
<em>[allow]</em>
table of
<em>0:/config/ssh.toml</em>
before a login is accepted; users absent from that table are refused. The
Settings applet maintains this table.
Failed passwords are delayed, and a connection is dropped after eight attempts.
<strong>CONFIGURATION</strong>
<em>0:/config/ssh.toml</em>
Listening port
<em>( server.port ,</em>
default 22) and the per-user
<em>[allow]</em>
table.
<em>0:/config/ssh_hostkey.toml</em>
The RSA host key, generated on first start. Note that the filesystem has no
permission model, so this file is readable by any local process; keeping it
separate from
<em>ssh.toml</em>
limits exposure but is not access control.
<strong>DIAGNOSTICS</strong>
Messages go to the boot console only. They do not appear in
<strong>klog (1):</strong>
<strong>SYS_PRINT</strong>
writes the kernel terminal rather than the kernel log ring, and is discarded
entirely once the desktop suppresses console output. There is currently nowhere
to read them from on a running desktop.
<strong>PROTOCOL</strong>
Key exchange is diffie-hellman-group14-sha256 with an rsa-sha2-256 host key;
the transport uses aes128-ctr with hmac-sha2-256. Client-initiated rekeying is
supported. Only one session channel per connection is served, and connections
are handled one at a time.
<strong>LIMITATIONS</strong>
Public key authentication, port forwarding, X11 forwarding, SFTP and SCP are not
implemented.
<em>exec</em>
requests run the command by feeding it to an interactive shell, so the shell
prompt and the echoed command line appear in the output. Scripts that parse
remote command output should account for this.
<strong>SEE ALSO</strong>
<strong>shell (1),</strong>
<strong>init (1)</strong></code></pre>
<hr>
<div class="center">
<a href="../index.html">Back to Documentation Index</a>
</div>
</div>
</body>
</html>
+157
View File
@@ -0,0 +1,157 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="MontaukOS manual page: vol(1) - list mounted volumes">
<title>vol(1) - MontaukOS Manual</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Open Sans', Arial, sans-serif;
max-width: 960px;
margin: 0 auto;
padding: 1em;
line-height: 1.5;
display: flex;
gap: 2em;
}
p { margin: 0 0 0.5em; }
h2 { margin: 0.5em 0; }
.sidebar {
width: 160px;
flex-shrink: 0;
}
.sidebar ul {
list-style: none;
padding: 0;
}
.sidebar li {
margin: 0.5em 0;
}
.sidebar a {
color: #0066CC;
text-decoration: none;
font-weight: 600;
}
.sidebar a:hover {
color: #004499;
text-decoration: underline;
}
.sidebar .current {
color: #004499;
}
.sidebar hr {
border: none;
border-top: 1px solid #999;
margin: 0.75em 0;
}
.main {
flex: 1;
min-width: 0;
}
a { color: #0000EE; }
a:visited { color: #0066CC; }
hr { border-style: solid; border-width: 1px 0 0 0; border-color: #999; }
pre { background: #f0f0f0; padding: 0.5em; overflow-x: auto; }
code { background: #f0f0f0; padding: 0 0.15em; }
pre code { padding: 0; }
.center { text-align: center; }
.box {
border: 1px solid #999;
padding: 0.5em;
margin: 0.5em 0;
}
@media (max-width: 700px) {
body {
flex-direction: column;
gap: 1em;
padding: 1em 0.75em;
}
.sidebar {
width: auto;
}
.sidebar ul {
display: flex;
flex-wrap: wrap;
gap: 0 1em;
}
.sidebar hr {
width: 100%;
}
}
</style>
</head>
<body>
<div class="sidebar">
<ul>
<li><a href="../../index.html">Home</a></li>
<li><a href="../../downloads.html">Downloads</a></li>
<li><a href="../../history.html">History</a></li>
<li><a href="../index.html">Documentation</a></li>
<li><a href="https://git.montaukos.org/daniel/MontaukOS/issues">Issue tracker</a></li>
<li><a href="https://git.montaukos.org/daniel/MontaukOS">Git</a></li>
</ul>
<hr>
<ul>
<li><a href="index.html" class="current">Man Pages</a></li>
</ul>
</div>
<div class="main">
<div class="center">
<h1>vol(1)</h1>
</div>
<hr>
<pre><code><strong>NAME</strong>
vol - list mounted volumes
<strong>SYNOPSIS</strong>
vol
<strong>DESCRIPTION</strong>
Prints information about volumes present on the system.
Drive numbers (column "Vol") represent volumes rather than physical disk devices.
The boot ramdisk, if present, reports "-" for its size, disk, and partition.
<strong>OUTPUT</strong>
Vol Type Label Size Disk Part Partition
0:/ ramdisk MontaukOS - - - -
1:/ ext2 Montauk 118.4 GiB 0 0 Montauk
2:/ FAT32 EFI 512.0 MiB 0 1 EFI System
Disks:
0 NVMe Samsung SSD 990 PRO 1TB
<strong>COLUMNS</strong>
Vol Drive number, as written in paths ("1:/file.txt").
Type Filesystem type (ext2, FAT32, ramdisk).
Label Filesystem volume label, or "-" if unset.
Size Partition size, binary prefixes.
Disk Block device index (see disk legend below the table).
Part Partition index on that disk.
Partition GPT partition name, or "-" if unset.
<strong>SEE ALSO</strong>
disks(1), <a href="shell.html">shell(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
<a href="../index.html">Back to Documentation Index</a>
</div>
</div>
</body>
</html>
+230
View File
@@ -0,0 +1,230 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="MontaukOS manual page: wifi(1) - scan for wireless networks and inspect the Wi-Fi adapter">
<title>wifi(1) - MontaukOS Manual</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Open Sans', Arial, sans-serif;
max-width: 960px;
margin: 0 auto;
padding: 1em;
line-height: 1.5;
display: flex;
gap: 2em;
}
p { margin: 0 0 0.5em; }
h2 { margin: 0.5em 0; }
.sidebar {
width: 160px;
flex-shrink: 0;
}
.sidebar ul {
list-style: none;
padding: 0;
}
.sidebar li {
margin: 0.5em 0;
}
.sidebar a {
color: #0066CC;
text-decoration: none;
font-weight: 600;
}
.sidebar a:hover {
color: #004499;
text-decoration: underline;
}
.sidebar .current {
color: #004499;
}
.sidebar hr {
border: none;
border-top: 1px solid #999;
margin: 0.75em 0;
}
.main {
flex: 1;
min-width: 0;
}
a { color: #0000EE; }
a:visited { color: #0066CC; }
hr { border-style: solid; border-width: 1px 0 0 0; border-color: #999; }
pre { background: #f0f0f0; padding: 0.5em; overflow-x: auto; }
code { background: #f0f0f0; padding: 0 0.15em; }
pre code { padding: 0; }
.center { text-align: center; }
.box {
border: 1px solid #999;
padding: 0.5em;
margin: 0.5em 0;
}
@media (max-width: 700px) {
body {
flex-direction: column;
gap: 1em;
padding: 1em 0.75em;
}
.sidebar {
width: auto;
}
.sidebar ul {
display: flex;
flex-wrap: wrap;
gap: 0 1em;
}
.sidebar hr {
width: 100%;
}
}
</style>
</head>
<body>
<div class="sidebar">
<ul>
<li><a href="../../index.html">Home</a></li>
<li><a href="../../downloads.html">Downloads</a></li>
<li><a href="../../history.html">History</a></li>
<li><a href="../index.html">Documentation</a></li>
<li><a href="https://git.montaukos.org/daniel/MontaukOS/issues">Issue tracker</a></li>
<li><a href="https://git.montaukos.org/daniel/MontaukOS">Git</a></li>
</ul>
<hr>
<ul>
<li><a href="index.html" class="current">Man Pages</a></li>
</ul>
</div>
<div class="main">
<div class="center">
<h1>wifi(1)</h1>
</div>
<hr>
<pre><code><strong>NAME</strong>
wifi - scan for wireless networks and inspect the Wi-Fi adapter
<strong>SYNOPSIS</strong>
wifi [scan [seconds]]
wifi info
wifi debug
wifi connect &lt;ssid&gt; [passphrase]
wifi status
wifi disconnect
wifi saved
wifi forget &lt;ssid&gt;
<strong>DESCRIPTION</strong>
Drives the Intel Wi-Fi adapter. With no arguments, runs a five
second scan and lists the networks found, strongest signal first.
The driver supports Intel AX210-family devices whose RF type is
GF (marketed as AX211), which is what the bundled firmware image
covers. Other Intel wireless parts are left unclaimed.
<strong>COMMANDS</strong>
scan [seconds]
Sweep every regulatory-permitted channel and report the
networks seen. The duration is clamped to 1-20 seconds and
defaults to 5.
info
Adapter status: MAC address, firmware version, supported
bands, usable channel count and whether a scan is running.
debug
Everything info prints, plus RX/error counters, a scan with
per-BSS detail (BSSID, channel, RSSI, security) and band and
security tallies. Use this when a scan finds nothing.
connect &lt;ssid&gt; [passphrase]
Joins a network from the last scan: open, or WPA2/WPA3-PSK
with CCMP or GCMP. Blocks until the link is up or the attempt
fails, and says which it was. A passphrase given here is
remembered in 0:/config/wifi.toml; given only an SSID, the
remembered one is used. Run <a href="dhcp.html">dhcp(1)</a> afterwards for an address.
status
The network currently joined, with signal and cipher.
disconnect
Leaves the network and tears the firmware contexts down.
saved
Lists the networks in 0:/config/wifi.toml and whether the
desktop rejoins them by itself at startup.
forget &lt;ssid&gt;
Removes a network from 0:/config/wifi.toml.
<strong>OUTPUT</strong>
SSID SIGNAL RSSI CH BAND SECURITY
-------------------------------------------------------------------
homenet [####] -42 6 2.4GHz WPA2
homenet-5g [###.] -61 44 5GHz WPA3
guest [##..] -74 11 2.4GHz open
<strong>FIRMWARE</strong>
The adapter needs firmware from the ramdisk:
0:/os/firmware/intel/iwlwifi-so-a0-gf-a0-&lt;api&gt;.ucode
0:/os/firmware/intel/iwlwifi-so-a0-gf-a0.pnvm
Loading happens shortly after boot, off the boot-critical path,
so "wifi info" may briefly report "detected (firmware not loaded
yet)". The PNVM file carries regulatory data; without it the
firmware falls back to conservative built-in limits.
<strong>SAVED NETWORKS</strong>
0:/config/wifi.toml holds the networks the system may rejoin
without being asked, as [network.&lt;n&gt;] tables of ssid and psk, and
a wifi.autoconnect flag. The desktop writes it when "Remember this
network" is ticked, and reads it after the automatic scan it runs
at startup. Passphrases are stored as typed; anyone who can read
0:/config can read them.
<strong>GRAPHICAL USE</strong>
The desktop panel carries a Wi-Fi icon whenever a supported
adapter is present, separate from the Ethernet one. Its menu lists
the networks in range, asks for a passphrase when one is needed,
and shows the address once the link is up. The Network app has the
same list under its Wi-Fi tab, along with Forget.
<strong>DIAGNOSTICS</strong>
no supported Wi-Fi adapter found
No matching device, or its RF type is not GF.
radio disabled (RF-kill)
The hardware kill switch is off. No scanning is possible.
error
Firmware load or configuration failed; klog(1) has the
detail under the WiFi and WiFi-FW tags.
<strong>SEE ALSO</strong>
ifconfig(1), klog(1), <a href="dhcp.html">dhcp(1)</a>, <a href="syscalls.html">syscalls(2)</a></code></pre>
<hr>
<div class="center">
<a href="../index.html">Back to Documentation Index</a>
</div>
</div>
</body>
</html>
+93 -2
View File
@@ -120,6 +120,7 @@
<hr> <hr>
<ul> <ul>
<li><a href="#latest">Latest Release</a></li> <li><a href="#latest">Latest Release</a></li>
<li><a href="#v020">v0.2.0</a></li>
<li><a href="#v019">v0.1.9</a></li> <li><a href="#v019">v0.1.9</a></li>
<li><a href="#v018">v0.1.8</a></li> <li><a href="#v018">v0.1.8</a></li>
<li><a href="#v017">v0.1.7</a></li> <li><a href="#v017">v0.1.7</a></li>
@@ -141,13 +142,104 @@
<hr> <hr>
<h2 id="latest">Latest Release</h2> <h2 id="latest">Latest Release</h2>
<div class="box release-card" id="v020">
<h3>MontaukOS 0.2.0</h3>
<p class="release-meta">October 14, 2026</p>
<p>It is recommended that users run MontaukOS in a virtual machine rather than on real hardware.</p>
<h4>Links</h4>
<ul>
<li><a href="downloads/montauk-0.2.0-x86_64.iso">Download ISO</a> (30 MB) - recommended</li>
<li><a href="downloads/montauk-0.2.0-sdk-x86_64.iso">Download ISO with Montauk SDK</a> (196 MB) - includes gcc/g++/binutils toolchain</li>
<li><a href="license.html">License</a></li>
<li><a href="docs/tutorials/index.html">Tutorials</a></li>
<li><a href="docs/man/index.html">Manual pages</a></li>
</ul>
<blockquote>
For questions or comments, please mail to [email protected].
</blockquote>
<h4>New</h4>
<ul>
<li>Kernel capability model - processes run with a capability set, and protected paths and privileged syscalls are gated on it</li>
<li>Permission consent prompts - apps ask before first use of a protected capability, and answers are remembered</li>
<li>New Capabilities app for reviewing and managing app permissions</li>
<li>Unified system status codes; the shell and Files now print a readable message on failure</li>
<li>Text is now UTF-8 throughout, with Unicode key events and dead keys</li>
<li>Keyboard layout support, with English, Norwegian, Czech, Swedish, and Danish layouts</li>
<li>NumLock support</li>
<li>Battery percentage reporting via ACPI, with a battery indicator in the desktop panel</li>
<li>Display brightness control, including on hybrid graphics laptops, with a slider in the desktop panel</li>
<li>Discrete GPUs are powered down automatically on hybrid graphics laptops</li>
<li>ext2 block cache with readahead, speeding up disk-heavy work such as on-OS compilation</li>
<li>Userspace system logging: <code>klog</code> is now <code>syslog</code>, logs identify the user and program, and system services log through <code>montauk::service_log</code></li>
<li>The system log is written to disk (<code>0:/state/logs</code>) during shutdown</li>
<li>Desktop sessions now own the processes started in them, and those processes are ended on logout</li>
<li>Rust userspace support (<code>no_std</code>)</li>
<li>Futex syscalls (<code>SYS_FUTEX_WAIT</code>/<code>SYS_FUTEX_WAKE</code>) as groundwork for Rust std and pthreads</li>
<li>Process termination codes; <code>abort()</code> now ends the whole process from any thread</li>
<li><code>isatty()</code> now reports whether a terminal is actually attached</li>
<li>Settings panel and a Pure Black theme in Terminal (the default for Console sessions)</li>
<li>Syntax highlighting for C++, HTML, CSS, and JavaScript in <code>edit</code> and Text Editor</li>
<li>Expanded SVG renderer</li>
<li>New <code>vol</code> command for listing mounted volumes</li>
<li>Revamped desktop application categories</li>
<li>Fonts, icons, and manual pages moved to <code>0:/os</code>; persistent state now lives in <code>0:/state</code></li>
<li>RTL-SDR driver moved from the kernel to userspace</li>
</ul>
<h4>Fixed</h4>
<ul>
<li>Opening a directory as a file is now rejected on ext2 and FAT32, fixing on-OS gcc on installed systems</li>
<li>Fixed several syscall result and status code comparisons</li>
<li>Fixed a TLS layout bug for binaries whose TLS segment has an alignment below 16</li>
<li>A fault in one thread now ends the whole process instead of leaving its sibling threads running</li>
<li>Fixed an ACPI hardware ID endianness bug</li>
<li>Fixed a race in Wi-Fi event processing and other Wi-Fi bugs</li>
<li>DHCP no longer runs when no network device has an active link</li>
<li>Reduced idle CPU wakeups and deferred-work polling</li>
<li>Redirected consoles are now inherited by processes spawned with capabilities</li>
<li>Fixed numpad navigation</li>
<li>Fixed a timezone formatting bug</li>
<li>Fixed the login wallpaper startup delay</li>
<li>Fixed text overlap in file dialogs</li>
<li>Persisted kernel logs are no longer double-spaced</li>
<li>Files lists now scroll with the arrow keys, and volume labels are consistent</li>
<li><code>mbrtowc</code> added to libc</li>
</ul>
<h4>Known issues</h4>
<ul>
<li>Intel GPU may struggle to wake up from S3 sleep, causing a black screen requiring a reset. S3 sleep is highly experimental and users are discouraged from relying on it.</li>
<li>Due to licensing restrictions, the proprietary DOOM WAD cannot be shipped; the DOOM engine warns at launch when no compatible WAD file is present, and game content is unavailable until the user supplies one.</li>
</ul>
<h4>Included in ISO</h4>
<p>Two x86_64 images are published for this release. <code>montauk-0.2.0-sdk-x86_64.iso</code> additionally carries the Montauk SDK (gcc, binutils, etc.)</p>
<ul>
<li>MontaukOS SMP kernel</li>
<li>Userspace bootstrap (<code>0:/os/init.elf</code>) and other essential system utilities</li>
<li>MontaukOS desktop environment and graphical apps</li>
<li>NetSurf web browser (<code>0:/apps/netsurf</code>)</li>
<li>Manual pages (<code>0:/os/man</code>), readable via <code>man</code> command</li>
<li>Service and system configuration (<code>0:/config</code>: init.toml, capabilities.toml, ssh.toml, ntp.toml)</li>
<li>System CA certificates (<code>0:/os/certs/ca-certificates.crt</code>)</li>
<li>Intel Bluetooth controller and Wi-Fi (iwlwifi) firmware (<code>0:/os/firmware/intel</code>)</li>
<li>Third-party license texts and notices (<code>0:/os/licenses</code>)</li>
<li>Tiny C Compiler (<code>tcc</code>) with MontaukOS headers and libraries (<code>0:/sdk/tcc</code>)</li>
<li>Lua 5.4 interpreter (<code>lua</code>) with headers and static library (<code>0:/sdk/lua</code>)</li>
<li>Montauk SDK - native GCC/G++ and binutils (<code>0:/sdk</code>) - SDK image only</li>
<li>Flat Remix icon pack</li>
<li>JetBrains Mono, Noto Serif, Roboto, and C059 Roman (open Century Schoolbook) TrueType fonts</li>
<li>DOOM engine with SDL_mixer audio support (game data not included)</li>
<li>Experimental HTTP server (<code>httpd</code>) and default page (<code>0:/www/index.html</code>)</li>
<li>Default wallpaper - blossoms by Nikhil Kumar, Unsplash (<code>0:/os/wallpapers</code>)</li>
</ul>
</div>
<h2>Release Archive</h2>
<div class="box release-card" id="v019"> <div class="box release-card" id="v019">
<h3>MontaukOS 0.1.9</h3> <h3>MontaukOS 0.1.9</h3>
<p class="release-meta">August 13, 2026</p> <p class="release-meta">August 13, 2026</p>
<p>It is recommended that users run MontaukOS in a virtual machine rather than on real hardware.</p> <p>It is recommended that users run MontaukOS in a virtual machine rather than on real hardware.</p>
<h4>Links</h4> <h4>Links</h4>
<ul> <ul>
<li><a href="downloads/montauk-0.1.9-x86_64.iso">Download ISO</a> (29 MB) - recommended</li> <li><a href="downloads/montauk-0.1.9-x86_64.iso">Download ISO</a> (29 MB)</li>
<li><a href="downloads/montauk-0.1.9-sdk-x86_64.iso">Download ISO with Montauk SDK</a> (194 MB) - includes gcc/g++/binutils toolchain</li> <li><a href="downloads/montauk-0.1.9-sdk-x86_64.iso">Download ISO with Montauk SDK</a> (194 MB) - includes gcc/g++/binutils toolchain</li>
<li><a href="license.html">License</a></li> <li><a href="license.html">License</a></li>
<li><a href="docs/tutorials/index.html">Tutorials</a></li> <li><a href="docs/tutorials/index.html">Tutorials</a></li>
@@ -223,7 +315,6 @@
</ul> </ul>
</div> </div>
<h2>Release Archive</h2>
<div class="box release-card" id="v018"> <div class="box release-card" id="v018">
<h3>MontaukOS 0.1.8</h3> <h3>MontaukOS 0.1.8</h3>
<p class="release-meta">July 18, 2026</p> <p class="release-meta">July 18, 2026</p>