<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>NineLives devlog</title>
  <subtitle>Short notes as things get decided.</subtitle>
  <link rel="self" type="application/atom+xml" href="https://ninelives.getfelix.dev/devlog/feed.xml"/>
  <link rel="alternate" type="text/html" href="https://ninelives.getfelix.dev/devlog/"/>
  <id>https://ninelives.getfelix.dev/devlog/</id>
  <updated>2026-10-28T00:00:00Z</updated>
  <entry>
    <title>Linux or our own kernel?</title>
    <link rel="alternate" type="text/html" href="https://ninelives.getfelix.dev/devlog/linux-or-our-own-kernel/"/>
    <id>https://ninelives.getfelix.dev/devlog/linux-or-our-own-kernel/</id>
    <published>2026-10-28T00:00:00Z</published>
    <updated>2026-10-28T00:00:00Z</updated>
    <author><name>Gabriel Loewen</name></author>
    <summary>The first open question, with the case for each side. Nothing is chosen yet.</summary>
    <content type="html">&lt;p&gt;The first question anyone asks is whether NineLives will have its own kernel. There are good Rust crates now, and booting, paging and a basic scheduler are weeks of work, not years. It isn&#39;t decided. I opened &lt;a rel=&quot;external&quot; href=&quot;https://github.com/GetFelix/ninelives/discussions/22&quot;&gt;a discussion&lt;/a&gt; to work it out, and this is the short version of both sides.&lt;/p&gt;
&lt;h2 id=&quot;the-case-for-stock-linux&quot;&gt;The case for stock Linux&lt;/h2&gt;
&lt;p&gt;What is new in NineLives sits above the kernel: workloads that survive losing a machine, atomic upgrades, system programs that keep their state in the log. None of that obviously needs a new kernel, and all of it is plenty of work. The first thing I want to see is three VMs, one killed, and nothing lost.&lt;/p&gt;
&lt;p&gt;The hard part of a kernel is what comes after boot.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drivers.&lt;/strong&gt; NVMe, real network cards, whatever each cloud exposes. Most of Linux is drivers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage.&lt;/strong&gt; Felix&#39;s durability depends on &lt;code&gt;fsync&lt;/code&gt;, &lt;code&gt;pread&lt;/code&gt; and preallocation behaving exactly as documented. A new kernel would have to earn that trust first.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Networking.&lt;/strong&gt; Felix runs on tokio and QUIC over UDP. A scratch kernel needs a network stack and a port of that runtime.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security and many cores.&lt;/strong&gt; Every fix would be ours to write.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-case-for-a-kernel-of-our-own&quot;&gt;The case for a kernel of our own&lt;/h2&gt;
&lt;p&gt;A kernel built for NineLives could give a smaller trusted base, deterministic scheduling that makes replay stronger, and syscalls designed around the log. With today&#39;s crates, booting, paging and a basic scheduler are weeks of work. And nobody else is building an OS with a replicated log at the center, so there&#39;s a real research story. The cost is everything after boot, listed above.&lt;/p&gt;
&lt;p&gt;There are middle paths. &lt;a rel=&quot;external&quot; href=&quot;https://github.com/asterinas/asterinas&quot;&gt;Asterinas&lt;/a&gt; aims to be compatible with Linux at the syscall level, so felixd could run on it unchanged, which makes it an experiment rather than a rewrite. &lt;a rel=&quot;external&quot; href=&quot;https://github.com/hermit-os/kernel&quot;&gt;Hermit&lt;/a&gt; is a unikernel, and a node that only runs Felix and felixd could be a single image. &lt;a rel=&quot;external&quot; href=&quot;https://gitlab.redox-os.org/redox-os/redox&quot;&gt;Redox&lt;/a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https://github.com/theseus-os/Theseus&quot;&gt;Theseus&lt;/a&gt; are worth studying for their ideas on recovery. &lt;a rel=&quot;external&quot; href=&quot;https://rust-for-linux.com/&quot;&gt;Rust for Linux&lt;/a&gt; is the route if something ever has to live inside Linux.&lt;/p&gt;
&lt;h2 id=&quot;what-i-don-t-know-yet&quot;&gt;What I don&#39;t know yet&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Is the first goal a cluster that survives losing a machine, or a kernel designed around the log? The answer probably decides this.&lt;/li&gt;
&lt;li&gt;Would starting on Linux make it harder to move later, or can felixd lean on so little of the kernel that it doesn&#39;t matter?&lt;/li&gt;
&lt;li&gt;Is Asterinas close enough to Linux that trying it is an experiment rather than a rewrite?&lt;/li&gt;
&lt;li&gt;Are single-purpose nodes enough, or does every machine need a general-purpose OS?&lt;/li&gt;
&lt;li&gt;What would we give up in debugging, tooling and hardware support?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you have a view on any of these, or know a project I missed, &lt;a rel=&quot;external&quot; href=&quot;https://github.com/GetFelix/ninelives/discussions/22&quot;&gt;reply in the discussion&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
</feed>
