oven: persistent /kernel-build volume + skip no-op .config rewrites
Previously every native build copied the whole linux-$KVER tree from
/cache into an ephemeral $BUILD dir, so ccache helped per-file but every
link, modpost, kallsyms, and bzImage assembly pass ran fresh. Now the
kernel tree lives on a named Docker volume (ac-os-kbuild) mounted at
/kernel-build; docker-build.sh seeds it from /cache on first run and
keeps the .o files between oven runs. A .kver sentinel wipes the tree
when the kernel version bumps.
Also: cmp .config against the repo copy before overwriting — the blind
`cp` was touching .config's mtime every run, invalidating kbuild's own
dependency graph even when the config hadn't changed.
Expected win: code-only changes drop from ~10 min kernel rebuild to
~1-2 min (only changed .c files recompile + bzImage re-links with new
initramfs). Config changes still do the full rebuild.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>