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.
This commit is contained in:
Nexoniarz 2026-08-09 17:25:42 +02:00
commit dbb88064c1
4 changed files with 58 additions and 1 deletions

View file

@ -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.

View file

@ -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.

View file

@ -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

View file

@ -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*