site, branding: skeuomorphic marks, and the new Niveus components
The marks are now drawn the way Niveus draws its keys: one light from the upper left, gloss on the faces that catch it, a specular line on the edges that face it, and soft contact shadows. - Shift: shaded slabs, each casting onto the one below. shift-mask.svg is untouched, so the kernel's logo.h coverage mask is unchanged. - Uberblock: bevelled slots in a groove; the newest slot and the root glow. - USB stick: moulded body, steel connector, a lit activity LED. - Pride flag: cloth folds and a hem over the flag's own colours. The pages use the components the new Niveus added: both terminals are .nv-window frames, the origin and first-boot sequences are .nv-steps, the numbers are a .nv-stat-group, and each feature card has an .nv-tile glyph. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S1giNvrHTrPMPw7V6x1kQ4
This commit is contained in:
parent
a8215149a3
commit
c9790df04c
11 changed files with 623 additions and 321 deletions
|
|
@ -95,12 +95,19 @@
|
|||
<p class="nv-caption">GPL-2.0-or-later · runs from RAM · writes nothing to your disks</p>
|
||||
</div>
|
||||
|
||||
<div class="nv-card nv-card--flush console" aria-label="Boot log">
|
||||
<div class="console__bar">
|
||||
<span class="nv-badge nv-badge--success"><span class="nv-badge__dot"></span>ttyS0</span>
|
||||
<span class="nv-caption nv-text-tertiary">SchIFT</span>
|
||||
<div class="nv-window console" aria-label="Boot log">
|
||||
<div class="nv-window__titlebar">
|
||||
<span class="nv-window__controls" aria-hidden="true">
|
||||
<span class="nv-window__control nv-window__control--close"></span>
|
||||
<span class="nv-window__control nv-window__control--minimize"></span>
|
||||
<span class="nv-window__control nv-window__control--zoom"></span>
|
||||
</span>
|
||||
<span class="nv-window__title">SchIFT — ttyS0</span>
|
||||
<span class="nv-window__actions">
|
||||
<span class="nv-badge nv-badge--success"><span class="nv-badge__dot"></span>live</span>
|
||||
</span>
|
||||
</div>
|
||||
<pre class="nv-code console__log" id="bootlog" aria-live="polite"></pre>
|
||||
<pre class="nv-window__body nv-code console__log" id="bootlog" aria-live="polite"></pre>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
|
|
@ -118,53 +125,68 @@
|
|||
|
||||
<!-- A timeline, not a grid: these happened in this order, and the order is
|
||||
the point. The rail is what carries that; the labels are its steps. -->
|
||||
<ol class="timeline">
|
||||
<li class="timeline__step">
|
||||
<span class="nv-overline timeline__when">First</span>
|
||||
<h3 class="nv-title">64-bit, and more than one core</h3>
|
||||
<p class="nv-body nv-text-secondary">
|
||||
<ol class="nv-steps nv-steps--vertical origin">
|
||||
<li class="nv-steps__item" data-state="done">
|
||||
<span class="nv-steps__marker">1</span>
|
||||
<div class="nv-steps__body">
|
||||
<span class="nv-overline nv-text-tertiary">First</span>
|
||||
<h3 class="nv-steps__title">64-bit, and more than one core</h3>
|
||||
<p class="nv-steps__text">
|
||||
Four-level paging, a real SMP bring-up, per-CPU state and a trap path
|
||||
that survives both. This is the part that invalidates most of what a
|
||||
32-bit uniprocessor kernel assumes.
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="timeline__step">
|
||||
<span class="nv-overline timeline__when">Then</span>
|
||||
<h3 class="nv-title">Its own filesystem</h3>
|
||||
<p class="nv-body nv-text-secondary">
|
||||
<li class="nv-steps__item" data-state="done">
|
||||
<span class="nv-steps__marker">2</span>
|
||||
<div class="nv-steps__body">
|
||||
<span class="nv-overline nv-text-tertiary">Then</span>
|
||||
<h3 class="nv-steps__title">Its own filesystem</h3>
|
||||
<p class="nv-steps__text">
|
||||
xv6's log-structured filesystem was replaced by <b>SchFS</b>: a
|
||||
copy-on-write B-tree with an uberblock ring, extents and checksummed
|
||||
metadata. A crash leaves either the old tree or the new one.
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="timeline__step">
|
||||
<span class="nv-overline timeline__when">Then</span>
|
||||
<h3 class="nv-title">A Linux-shaped ABI</h3>
|
||||
<p class="nv-body nv-text-secondary">
|
||||
<li class="nv-steps__item" data-state="done">
|
||||
<span class="nv-steps__marker">3</span>
|
||||
<div class="nv-steps__body">
|
||||
<span class="nv-overline nv-text-tertiary">Then</span>
|
||||
<h3 class="nv-steps__title">A Linux-shaped ABI</h3>
|
||||
<p class="nv-steps__text">
|
||||
The syscall table adopted Linux numbering, which is what makes an
|
||||
unmodified musl and an unmodified toybox run. The table is one
|
||||
<code class="nv-code">.inc</code> file, and it is the seam the whole
|
||||
system is built around.
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="timeline__step">
|
||||
<span class="nv-overline timeline__when">Then</span>
|
||||
<h3 class="nv-title">Hardware, not emulation</h3>
|
||||
<p class="nv-body nv-text-secondary">
|
||||
<li class="nv-steps__item" data-state="done">
|
||||
<span class="nv-steps__marker">4</span>
|
||||
<div class="nv-steps__body">
|
||||
<span class="nv-overline nv-text-tertiary">Then</span>
|
||||
<h3 class="nv-steps__title">Hardware, not emulation</h3>
|
||||
<p class="nv-steps__text">
|
||||
A UEFI loader, xHCI and USB storage, an e1000 with a real TCP/IP stack,
|
||||
virtio-gpu and VBE framebuffers, and a device model where a driver never
|
||||
names its consumer.
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
<li class="timeline__step">
|
||||
<span class="nv-overline timeline__when">Now</span>
|
||||
<h3 class="nv-title">Drivers that are not in the kernel</h3>
|
||||
<p class="nv-body nv-text-secondary">
|
||||
<li class="nv-steps__item" aria-current="step">
|
||||
<span class="nv-steps__marker">5</span>
|
||||
<div class="nv-steps__body">
|
||||
<span class="nv-overline nv-text-tertiary">Now</span>
|
||||
<h3 class="nv-steps__title">Drivers that are not in the kernel</h3>
|
||||
<p class="nv-steps__text">
|
||||
A process can be handed a PCI device — its registers, its memory, its
|
||||
interrupts — and drive it. The GPU driver already runs that way. Nobody
|
||||
writes a driver for every device that exists; the answer is to stop
|
||||
requiring that they live inside.
|
||||
</p>
|
||||
</p>
|
||||
</div>
|
||||
</li>
|
||||
</ol>
|
||||
</section>
|
||||
|
|
@ -255,7 +277,7 @@
|
|||
<div class="nv-scroller features">
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title"><img class="cardmark" src="Assets/uberblock.svg" alt="">SchFS</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><img src="Assets/uberblock.svg" alt=""></span>SchFS</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -268,7 +290,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">SMP x86-64 kernel</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="6" y="6" width="12" height="12" rx="2"/><path d="M9 2v4M15 2v4M9 18v4M15 18v4M2 9h4M2 15h4M18 9h4M18 15h4"/></svg></span>SMP x86-64 kernel</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -280,7 +302,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">Networking</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="9"/><path d="M3 12h18M12 3c3 3.5 3 14.5 0 18M12 3c-3 3.5-3 14.5 0 18"/></svg></span>Networking</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -292,7 +314,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">UEFI boot</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3v8"/><path d="M6.3 6.3a8 8 0 1 0 11.4 0"/></svg></span>UEFI boot</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -303,7 +325,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">USB</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 21V4M12 4l-2.5 3M12 4l2.5 3M12 16l-5-3V10M12 14l5-3V9"/><circle cx="7" cy="9" r="1.5"/><rect x="15.5" y="7" width="3" height="3"/></svg></span>USB</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -314,7 +336,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">Virtual terminals</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="18" height="16" rx="2"/><path d="M7 9l3 3-3 3M12 15h5"/></svg></span>Virtual terminals</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -327,7 +349,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">schinit</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="5" r="2"/><circle cx="6" cy="19" r="2"/><circle cx="18" cy="19" r="2"/><path d="M12 7v5M12 12l-6 5M12 12l6 5"/></svg></span>schinit</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -340,7 +362,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">A real userland</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3l8 4.5v9L12 21l-8-4.5v-9z"/><path d="M4 7.5l8 4.5 8-4.5M12 12v9"/></svg></span>A real userland</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -353,7 +375,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">Drivers outside the kernel</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="7" width="10" height="10" rx="1.5"/><path d="M6 4v3M10 4v3M6 17v3M10 17v3M16 12h5M18.5 9.5L21 12l-2.5 2.5"/></svg></span>Drivers outside the kernel</h3>
|
||||
<span class="nv-badge nv-badge--success">runs</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -370,7 +392,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">Schcom</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm" style="--nv-tile-tint: var(--nv-color-warning)"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="4" width="13" height="10" rx="1.5"/><rect x="8" y="10" width="13" height="10" rx="1.5"/></svg></span>Schcom</h3>
|
||||
<span class="nv-badge nv-badge--warning">in progress</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -382,7 +404,7 @@
|
|||
|
||||
<article class="nv-card">
|
||||
<div class="nv-card__header">
|
||||
<h3 class="nv-card__title">SchAPI</h3>
|
||||
<h3 class="nv-card__title"><span class="nv-tile nv-tile--sm" style="--nv-tile-tint: var(--nv-color-text-tertiary)"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M8 4c-2 0-3 1-3 3v2c0 1.5-1 3-2 3 1 0 2 1.5 2 3v2c0 2 1 3 3 3M16 4c2 0 3 1 3 3v2c0 1.5 1 3 2 3-1 0-2 1.5-2 3v2c0 2-1 3-3 3"/></svg></span>SchAPI</h3>
|
||||
<span class="nv-badge">designed</span>
|
||||
</div>
|
||||
<div class="nv-card__body nv-text-secondary">
|
||||
|
|
@ -482,12 +504,16 @@
|
|||
</article>
|
||||
</div>
|
||||
|
||||
<div class="nv-card nv-card--flush console" aria-label="Evicting the GPU driver to userspace">
|
||||
<div class="console__bar">
|
||||
<span class="nv-badge nv-badge--success"><span class="nv-badge__dot"></span>tty1</span>
|
||||
<span class="nv-caption nv-text-tertiary">vgpud</span>
|
||||
<div class="nv-window console" aria-label="Evicting the GPU driver to userspace">
|
||||
<div class="nv-window__titlebar">
|
||||
<span class="nv-window__controls" aria-hidden="true">
|
||||
<span class="nv-window__control nv-window__control--close"></span>
|
||||
<span class="nv-window__control nv-window__control--minimize"></span>
|
||||
<span class="nv-window__control nv-window__control--zoom"></span>
|
||||
</span>
|
||||
<span class="nv-window__title">vgpud — tty1</span>
|
||||
</div>
|
||||
<pre class="nv-code console__log"><span class="nv-text-tertiary">$ </span>vgpud
|
||||
<pre class="nv-window__body nv-code console__log"><span class="nv-text-tertiary">$ </span>vgpud
|
||||
<span class="nv-text-accent">vgpud</span>: virtio-gpu at 00:03.0, currently held by virtio-gpu
|
||||
<span class="nv-text-accent">virtio-gpu</span>: released to userspace; screen is the VBE framebuffer
|
||||
<span class="nv-text-accent">vgpud</span>: claimed
|
||||
|
|
@ -513,20 +539,20 @@
|
|||
<h2 class="nv-heading">The size of it</h2>
|
||||
</div>
|
||||
|
||||
<div class="figures">
|
||||
<div class="nv-card figure">
|
||||
<b class="nv-display figure__value">46,961</b>
|
||||
<span class="nv-label nv-text-secondary">lines in <code class="nv-code">kernel/</code> and <code class="nv-code">include/</code></span>
|
||||
<dl class="nv-stat-group">
|
||||
<div class="nv-stat">
|
||||
<dt class="nv-stat__label">lines in <code class="nv-code">kernel/</code> and <code class="nv-code">include/</code></dt>
|
||||
<dd class="nv-stat__value">46,961</dd>
|
||||
</div>
|
||||
<div class="nv-card figure">
|
||||
<b class="nv-display figure__value">207</b>
|
||||
<span class="nv-label nv-text-secondary">syscalls, Linux numbering</span>
|
||||
<div class="nv-stat">
|
||||
<dt class="nv-stat__label">syscalls, Linux numbering</dt>
|
||||
<dd class="nv-stat__value">207</dd>
|
||||
</div>
|
||||
<div class="nv-card figure">
|
||||
<b class="nv-display figure__value">0</b>
|
||||
<span class="nv-label nv-text-secondary">patches carried against fastfetch</span>
|
||||
<div class="nv-stat">
|
||||
<dt class="nv-stat__label">patches carried against fastfetch</dt>
|
||||
<dd class="nv-stat__value">0</dd>
|
||||
</div>
|
||||
</div>
|
||||
</dl>
|
||||
</section>
|
||||
|
||||
<!-- ======================================================================
|
||||
|
|
|
|||
Loading…
Reference in a new issue