From dbb88064c10cdb51243a4eef1d4eb020edfc0d69 Mon Sep 17 00:00:00 2001 From: Nexoniarz Date: Sun, 9 Aug 2026 17:25:42 +0200 Subject: [PATCH] docs: correct the layout block, and note what a copy leaves behind README's layout predated the BIOS/UEFI split. moving-to-linux.md now says what is gitignored and therefore absent from a clone: dist/ holds 61 MB of upstream tarballs, so copy it or let the build re-fetch them -- make ports verifies each against a known SHA-256 either way. --- .claude/memory/MEMORY.md | 1 + .claude/memory/schos-linux-machine.md | 43 +++++++++++++++++++++++++++ README.md | 2 +- docs/moving-to-linux.md | 13 ++++++++ 4 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 .claude/memory/schos-linux-machine.md diff --git a/.claude/memory/MEMORY.md b/.claude/memory/MEMORY.md index a73b732..b439161 100644 --- a/.claude/memory/MEMORY.md +++ b/.claude/memory/MEMORY.md @@ -1,6 +1,7 @@ - [SchOS rename + git](schos-rename-and-git.md) — Schunix is SchOS and the kernel is SchIFT; the tree is under local git, and the two bugs the rename caused. - [Cross-platform build](schos-cross-platform-build.md) - Windows, Linux, macOS and BSD all build it; clang everywhere, and the four host assumptions that used to break. - [Memory sync](schos-memory-sync.md) - memory lives in the repo at .claude/memory/; tools/memory-sync.sh moves it between machines. +- [The Linux machine](schos-linux-machine.md) - Fedora laptop at /home/nexoniarz/Documents/SchOS; the three things only it can test. - [Performance and init](schos-performance-and-init.md) - BSIZE must equal SCHFS_BLKSIZE (4-34x), and why Ctrl-C could kill pid 1. - [Trusting bootcheck](schos-bootcheck-trust.md) - it silently stopped running; count the [ok] lines, never just grep FAIL. - [schinit](schos-schinit.md) - process 1 is launchd-shaped; job manifests, and why setsid() cost the shell its terminal. diff --git a/.claude/memory/schos-linux-machine.md b/.claude/memory/schos-linux-machine.md new file mode 100644 index 0000000..b24e4b2 --- /dev/null +++ b/.claude/memory/schos-linux-machine.md @@ -0,0 +1,43 @@ +--- +name: schos-linux-machine +description: The Fedora laptop, its project path and memory key, and the three things only it can test +metadata: + node_type: project +--- + +Nexoniarz works from **two machines** and moved the project to the second on +2026-08-09. + +| | Windows desktop | Fedora laptop | +|---|---|---| +| path | `D:\DEV\SchOS` | `/home/nexoniarz/Documents/SchOS` | +| memory key | `D--DEV-SchOS` | `-home-nexoniarz-Documents-SchOS` | + +Fedora 44, Ryzen 5 7000-series, RTX 4050, 16 GB DDR5. The GPU is irrelevant to +the build — QEMU runs headless for tests. + +`tools/posix/setup-fedora.sh` installs the toolchain (`--check` to only report). +`docs/moving-to-linux.md` is the procedure. Memory moves with +[[schos-memory-sync]]: `import` after arriving, `export` and commit after a +session that learned something. + +**Three things only the Linux machine can do**, and they are the reason the move +matters: + +1. **`make ports`** builds musl, toybox and mksh from source. Windows cannot do + it at all — the build skips ports and uses whatever is staged in `sysroot/`, + which is why `sysroot/bin/sh` still carries the pre-rename symbol + `__schunix_tp`. +2. **The SchFS round-trip test** needs symlinks and hard links, which Git Bash + cannot create, so it skips on Windows. **It has never actually run** — the + one part of SchFS with no coverage. +3. **KVM.** A Ryzen box has SVM, so QEMU runs at native speed. Deliberately not + the Makefile default: the suite's timings were set under TCG. + +**PowerShell has no Fedora package**, and `tools/windows/bootcheck.ps1` is the +test suite. pwsh runs it on Linux fine; it comes from Microsoft's repo or the +GitHub tarball. Nothing else needs it. + +**Never push.** There is no git remote and there should not be one until +Nexoniarz says otherwise — see [[nexoniarz-sharing-preference]]. "Push to git" +in this project means commit locally. diff --git a/README.md b/README.md index 57a7761..580b67a 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ make schfs-check # SchFS B-tree, object and image suites kernel/ arch/ core/ dev/ drivers/ fs/ net/ proc/ sys/ fs/schfs/ the filesystem -- same source the host tools compile include/ kernel and userland headers -boot/ bootblock and stage 2 (VBE splash, boot menu) +boot/ bios/ (MBR, stage 2, VBE splash) uefi/ (PE loader) lib/ cmd/ first-party userland runtime and programs ports/ third-party software built from source tools/ windows/ (.ps1) posix/ (.sh) python/ (.py) and .c/.pl diff --git a/docs/moving-to-linux.md b/docs/moving-to-linux.md index 83ec12c..ac4ddfa 100644 --- a/docs/moving-to-linux.md +++ b/docs/moving-to-linux.md @@ -18,6 +18,19 @@ git log --oneline | head -3 # should show the same commits git status # should be clean ``` +### What is not in the repo + +`build/`, `sysroot/` and `dist/` are all gitignored, so `rsync -a` of the +working tree carries them but a `git clone` would not. Two are worth thinking +about: + +- **`dist/`** holds the upstream tarballs — musl, toybox, mksh, the DOOM WADs, + `usb.ids`. 61 MB of other people's release artefacts. Copy it to save the + download, or let the build fetch them again; `make ports` calls `curl` and + verifies each against a known SHA-256, so a re-download is safe either way. + Without a network connection, copy it. +- **`sysroot/`** is assembled by the build. + `build/` and `sysroot/` are ignored and do not need copying — `make` rebuilds them. **One exception**: `sysroot/bin/` holds musl, toybox and mksh, which cannot be built on Windows and so were staged there once. On Linux they *can*