From 49c5892a6955ad18bd99f670b5f17b5b45d6dbdd Mon Sep 17 00:00:00 2001 From: "Claude (noether)" Date: Sat, 9 May 2026 19:03:56 +0000 Subject: [PATCH] README: add bootstrap reference build (2026-05-09 fresnel); drop distcc from build hosts; close issue-3 followup --- README.md | 94 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 84 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 763f80c..37f25c2 100644 --- a/README.md +++ b/README.md @@ -167,11 +167,12 @@ Host Where Role Wake? Notes boltzmann Rock 5 ITX+ aarch64 primary always container kbuild-aarch64 fermi hertz LXD aarch64 fallback always matches kbuild-aarch64 profile kbuild-x86 data CT x86_64 on-demand wakes via His; idle 30 min → release -tesla hertz LXD distcc helper always manual hosts list -dcc1 dcw3 Pi 4 distcc helper always zeroconf (bridge-detach risk) -dcc2 dcw2 Pi 4 distcc helper always zeroconf ``` +Native make on the assigned build host. **No distcc** for kernel-agent +builds (`feedback_kernel_agent_no_distcc.md`, locked 2026-05-09). ccache +stays per-host. distcc remains in scope for userspace package builds. + ## Files / paths @@ -221,19 +222,92 @@ via `ka-snooze [--for ]`. - Refuse promote of patches lacking scope tag. +## Bootstrap reference build (2026-05-09 — fresnel) + +First end-to-end run, before any `ka-*` CLI exists. Documented here as the +canonical worked example so future ka-* implementations have a concrete +substrate to replay. Issue #3 (fresnel DTS persistence) closed by this +build. + +### Inputs + +- **Baseline:** mmind/linux-rockchip @ `v7.0` (Heiko Stübner / Collabora, + via kernel.org). +- **Patches** (scope `board/pinebook-pro`): + - `0001-arm64-dts-rk3399-pinebook-pro-add-OC-OPP-tables-1704-2184.patch` + - `0002-arm64-dts-rk3399-pinebook-pro-enable-hdmi-sound.patch` + - `0003-arm64-dts-rk3399-pinebook-pro-spi1-max-freq-10MHz.patch` +- **Manifest:** `fleet/fresnel.yaml` (tree=mmind v7.0, 3 patches above, + alongside-install vs `linux-eos-arm`). +- **.config source:** snapshot from fresnel `/usr/lib/modules/6.19.10-1-eos-arm/build/.config`, + recovered from the data backintime backup (May 7 snapshot) since the + laptop was off when the build started; `make olddefconfig` to fold in + v7.0 new symbols (one harmless `BOOTPARAM_SOFTLOCKUP_PANIC` warning, + ignored). + +### Manual substitute for each ka-* verb + +| Designed verb | What we did manually | +|---|---| +| `ka-promote fresnel-fourier --to board/pinebook-pro` | Authored 3 patches with proper headers/scope tags, pushed to `marfrit/kernel-agent/patches/board/pinebook-pro/` via Gitea contents API as `claude-noether`. | +| `ka-build fresnel` | On boltzmann: cloned linux v7.0 from kernel.org, ran `makepkg -s --skipchecksums --skippgpcheck` against `marfrit-packages/arch/linux-fresnel-fourier/PKGBUILD`. Native aarch64 (boltzmann is RK3588). One headers-pkg bug discovered (`ln -sr` on missing parent dir) and fixed mid-flight. Repackaged. | +| `ka-sign + push` | scp pkgs hertz → `sudo /opt/herding/bin/marfrit-publish-arch aarch64 ` per pkg. Script signs with key `92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C`, runs repo-add, rsyncs to nc. | +| `ka-install fresnel` (consent-via-action) | `sudo pacman -U /tmp/` over LAN scp (HTTPS to nc was throttled by fresnel's wifi). pacman post-transaction hook updated extlinux. mkinitcpio run manually because the standard hook trigger watches `vmlinuz` not `Image`. | +| Bar 1..3 verification | SSH heartbeat OK, `pacman -Q linux-fresnel-fourier` = `7.0-1`, post-reboot cluster0 1.704 GHz / cluster1 2.184 GHz confirmed. | + +### Files / locations involved + +- `git.reauktion.de/marfrit/kernel-agent/patches/board/pinebook-pro/` — patches +- `git.reauktion.de/marfrit/kernel-agent/fleet/fresnel.yaml` — manifest +- `git.reauktion.de/marfrit/marfrit-packages/arch/linux-fresnel-fourier/` — PKGBUILD + 3 patches + config + extlinux hook+script + mkinitcpio preset +- `boltzmann:~/src/kernel-agent-bootstrap/` — local build root (baseline clone, patches, build dir, artifacts) +- `hertz:/tmp/ka-publish/` — staging for sign+push (transient) +- `hertz:/sparfuxdata/kernel-agent-backups/fresnel/6.19.9-99-eos-arm/fresnel-boot-pre-install.tgz` — pre-install /boot snapshot (71MB, 7-day retention per design) +- `https://packages.reauktion.de/arch/aarch64/linux-fresnel-fourier-7.0-1-aarch64.pkg.tar.zst` — published artifact +- `fresnel:/boot/{Image,initramfs,dtbs}-fresnel-fourier{,/...}` — installed artifacts +- `fresnel:/boot/extlinux/extlinux.conf` — managed block tagged `>>> linux-fresnel-fourier (managed) >>>` … `<<<` + +### What was learned that ka-* should bake in + +- mkinitcpio's stock hook watches `vmlinuz`, not `Image`. ARM kernel installs + must explicitly run `mkinitcpio -p ` from the install hook, OR + ship a custom alpm hook with `Target = boot/Image-`. +- Headers PKGBUILD: `ln -sr "${_builddir}" "${pkgdir}/usr/src/${pkgbase}"` + needs a preceding `install -d "${pkgdir}/usr/src"`. Cargo-cult from + arch's `linux` package without checking that pacman pre-creates `/usr/src` + for kernels. +- HTTPS download from nc.reauktion.de can stall on slow wifi (fresnel @ 181 ms + ping). Same-LAN scp from hertz (which already has the published pkgs in + `/tmp/ka-publish/`) is the workaround. ka-install should detect and prefer + LAN-fanout. +- Manifest must carry the kernel suffix (`-fresnel-fourier`) explicitly so + alongside-install paths (`/boot/Image-`, `/boot/dtbs-/`, + `/boot/initramfs-.img`) don't collide with the EOS-stock paths. +- Backup target needs `install -d -o $USER -g $USER` first time per host — + `/sparfuxdata/kernel-agent-backups///` is created lazily. + +### Out of scope this round (explicit defer) + +- **vb2 dma_resv RFC v2** + panfrost IOMMU_CACHE for RK3399 — would have closed + the fresnel-fourier campaign criterion-4 readback transitive-proof gap, but + v2 isn't implemented (RFC v1 rejected upstream). Deferred to a follow-up + build once v2 lands. See `marfrit/dmabuf-modifier-triage#3`. +- **Replace** `linux-eos-arm` rather than coexist alongside — preserves easy + rollback at u-boot. Can flip to `provides=(linux-eos-arm) conflicts=(...)` + later once burn-in proves the OC kernel reliable. + + ## Open follow-ups (post-rollout) - Migrate `github.com/marfrit/misc_patches/genbook/kernel/` (9 patches against linux-6.19.9) into proper Coulomb/RockHard campaign repo with scope tags applied. Some patches will need splitting (e.g., 0010 suspend/resume is multi-scope and should split into soc:rk3588 + board:coolpi-cm5-genbook - pieces). + pieces). — Issue #1. - Migrate `besser/patches/` (~30 BES2600 staging series) into the scope-tagged - tree at `driver/bes2600/` with promote eligibility per series. -- fresnel: replace the loose `~/rk3399-pinebook-pro.dts` workflow with either - a pacman hook (cheap, restores OC after each kernel update) or a proper - `linux-eos-arm-fresnel` PKGBUILD that owns the DTB conflict (real fix). - The April 2026 silent-revert is the canonical reason kernel-agent exists. + tree at `driver/bes2600/` with promote eligibility per series. — Issue #2. - Decide whether boltzmann (BredOS-stock today) becomes a Neutron-managed custom kernel target or stays stock. Decision deferred per memory - `project_neutron.md`. + `project_neutron.md`. — Issue #4. +- ~~fresnel DTS persistence~~ — **closed** by the bootstrap reference build + above. Issue #3 closed.