-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfreebsd-research.html
More file actions
83 lines (79 loc) · 4.94 KB
/
Copy pathfreebsd-research.html
File metadata and controls
83 lines (79 loc) · 4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">
<title>FreeBSD Research · Joe Maloney</title>
<style>
body {
font-family: -apple-system, "Helvetica Neue", Helvetica, Arial, sans-serif;
max-width: 760px;
margin: 40px auto;
padding: 0 20px;
color: #222;
line-height: 1.6;
}
header {
border-bottom: 1px solid #ccc;
padding-bottom: 16px;
margin-bottom: 24px;
}
h1 { font-size: 1.8em; margin: 0 0 4px; }
header p { margin: 0; color: #666; }
h2 {
font-size: 1.25em;
margin-top: 2em;
border-bottom: 1px solid #eee;
padding-bottom: 4px;
}
ul { padding-left: 20px; }
li { margin-bottom: 8px; }
a { color: #0366d6; text-decoration: none; }
a:hover { text-decoration: underline; }
.guides li { margin-bottom: 12px; }
.guides .desc { color: #666; font-size: 0.92em; display: block; }
footer {
margin-top: 3em;
padding-top: 16px;
border-top: 1px solid #eee;
color: #888;
font-size: 0.9em;
}
</style>
</head>
<body>
<header>
<h1>FreeBSD Research</h1>
<p><a href="index.html">← Back to home</a> · <a href="https://github.com/pkgdemon">github.com/pkgdemon</a></p>
</header>
<h2>FreeBSD Research</h2>
<ul class="guides">
<li>
<a href="freebsd-livecd-plan.html?v=20260514">FreeBSD Live ISO — implementation report & remaining options</a>
<span class="desc">Working livecd: cd9660 + mkuzip + gunion overlay + init_chroot pivot. Measured at 396 MiB minimal / 3.8 GiB with KDE Plasma 6. Lessons learned and three concrete paths to RAM-scaled writable headroom.</span>
</li>
<li>
<a href="freebsd-squashfs-research.html?v=20260514">SquashFS on FreeBSD — architecture research</a>
<span class="desc">Why a Linux-style squashfs livecd is hard on FreeBSD today: GSoC 2023 kernel work, geom_uzip vs squashfs vs tarfs, gunion vs unionfs, reboot -r vs init_chroot.</span>
</li>
<li>
<a href="freebsd-livecd-gunion-reroot-plan.html?v=20260514">freebsd-livecd-gunion-reroot — experimental architecture <span class="pill info">DEFERRED</span></a>
<span class="desc">Combine gunion (block-level RAM overlay) with <code>reboot -r</code> reroot to eliminate the kernel/userspace namespace split. Deferred — the simpler symlink trick (<code>cdroot/boot/firmware → /sysroot/boot/firmware</code>) verified working on real hardware, addressing the firmware-loading problem without architectural rewrite. Plan preserved as a reference if some future need genuinely requires kernel-and-userspace-share-a-root semantics.</span>
</li>
<li>
<a href="gershwin-livecd-unionfs-plan.html?v=20260514">gershwin-on-freebsd: init_chroot + unionfs livecd rework + bsdtar installer — plan</a>
<span class="desc">Fixes "admin can't log in after install" at its source. Replaces gershwin-on-freebsd's piecemeal nullfs + rc.d-neutering <code>init_script</code> with the <code>init_chroot</code> + in-kernel-unionfs (tmpfs upper / uzip lower) pivot — the whole root becomes one writable union, the real rc.d scripts run, nothing is neutered. Ports the <code>/boot/firmware → /sysroot/boot/firmware</code> symlink; splits <code>loader.conf</code> into a live-only tier and an everywhere <code>loader.conf.d/gershwin.conf</code>. Changes <code>gershwin-system</code>'s installer to copy the pristine uzip with <code>bsdtar --acls --xattrs --fflags</code> from a read-only mount of <code>/dev/md0.uzip</code>, instead of a broken <code>cp -a</code> tree copy — full metadata fidelity, off unionfs entirely, no live-session cruft. Net: minimal divergence between the livecd and the installed system.</span>
</li>
<li>
<a href="gershwin-native-installer-backend-plan.html?v=20260514">gershwin native installer backend — <code>Copier.framework</code> scoping plan <span class="pill pill-warn">Scoping</span></a>
<span class="desc">Follow-up to the livecd plan: a fully-native, cross-platform GNUstep file-level copier to eventually replace the interim <code>bsdtar</code> installer step. A <code>Copier.framework</code> (libs-base citizen) + CLI — <code>GSFileCopier</code> / <code>GSCopyOptions</code> / <code>GSFileMetadata</code> / <code>GSInodeMap</code> / <code>GSExcludeMatcher</code> — with a ~600-800 line platform shim (<code>extattr_*</code>/<code>acl_*_link_np</code>/<code>lchflags</code> on FreeBSD, <code>*xattr</code>/<code>acl_*_file</code>/<code>FS_IOC_*FLAGS</code> on Linux). No incremental deps since the ISO always ships GNUstep. Documents the load-bearing per-file operation ordering, the unpreservable bits (<code>ctime</code>, <code>birthtime</code>), and a local-only v1 scope.</span>
</li>
</ul>
<footer>
<p><a href="index.html">← Back to home</a></p>
</footer>
</body>
</html>