Files
keru/profile.html
Astral 4a32fab414
Deploy website to GitHub Pages / deploy (push) Failing after 3s
migrate website from KeruOS web to its own repo
2026-09-01 12:06:36 +02:00

61 lines
3.6 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Profile system — Keru OS</title>
<meta name="description" content="How Keru's profile system works: the installer writes a profile, Kama reads it, and the whole build is driven by it.">
<link rel="stylesheet" href="assets/css/style.css">
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><text y='.9em' font-size='90'>ける</text></svg>">
</head>
<body>
<nav class="top" data-nav></nav>
<header class="pagehead">
<p class="crumbs"><a href="index.html">home</a> / <a href="docs.html">docs</a> / profile</p>
<h1>Profile system</h1>
<p>The contract between "what you chose" and "what gets built."</p>
</header>
<section>
<div class="wrap">
<div class="prose">
<p>Keru's profile system is the hand-off between your decisions and the build. It's a small, open design:</p>
<h3>The flow</h3>
<ol>
<li><strong>You choose.</strong> The installer (<code>installer/install.sh</code>) walks each swappable and records your picks.</li>
<li><strong>It writes a profile.</strong> Your choices become <code>make.conf</code> — plain, readable, human-editable.</li>
<li><strong>The pipeline reads it.</strong> <code>scripts/build-root.sh</code> sources the profile and drives Kama with those exact settings.</li>
<li><strong>The system appears.</strong> Kama boots the toolchain, builds the base, brings your chosen kernel/init/sudo/net, and finalizes the filesystem your profile named.</li>
</ol>
<h3>What the profile owns</h3>
<table>
<tr><th>Layer</th><th>What it holds</th></tr>
<tr><td>Swappables</td><td><code>INIT</code>, <code>LIBC</code>, <code>TARGET_FS</code>, <code>KERNEL</code>, <code>SUDO</code>, <code>NET</code>.</td></tr>
<tr><td>Base set</td><td><code>BASE_PACKAGES</code> — what every system gets (<code>base toolchain openssh</code>).</td></tr>
<tr><td>System config</td><td><code>LOCALE</code>, <code>TIMEZONE</code>, <code>KEYMAP</code>.</td></tr>
<tr><td>Build env</td><td><code>CFLAGS</code>, <code>CXXFLAGS</code>, <code>LDFLAGS</code>, <code>JOBS</code>, <code>MAKEFLAGS</code>.</td></tr>
<tr><td>Mirrors & cache</td><td><code>SOURCE_MIRROR</code>, <code>ROOT</code>, <code>CACHEDIR</code>.</td></tr>
<tr><td>Kama behavior</td><td><code>PURGE_TEMP_DEPS</code>, <code>FAIL_FAST</code>.</td></tr>
</table>
<h3>Hand-tuning is a feature</h3>
<p>The installer is convenient, not precious. The profile it writes is just a text file — change <code>INIT=s6</code>, tweak <code>CFLAGS</code>, add a package to <code>BASE_PACKAGES</code>, and rebuild. The "craft your system" ethos extends past install into the profile itself.</p>
<div class="callout">The profile makes Keru reproducible and legible in one stroke: the same <code>make.conf</code> is the full description of the system. Read, edit, rebuild.</div>
<p><a href="make-conf.html">make.conf reference</a> · <a href="build-pipeline.html">Build pipeline</a> · <a href="docs.html">← Docs</a></p>
</div>
</div>
</section>
<footer data-footer></footer>
<noscript><div style="text-align:center;padding:16px">See the <a href="sitemap.html">sitemap</a> for all pages.</div></noscript>
<script src="assets/js/include.js" data-base="."></script>
</body>
</html>