diff --git a/crates/hammer-bootstrap/src/lib.rs b/crates/hammer-bootstrap/src/lib.rs index 4ed2da55..25b20e15 100644 --- a/crates/hammer-bootstrap/src/lib.rs +++ b/crates/hammer-bootstrap/src/lib.rs @@ -512,6 +512,9 @@ export PATH=/toolchain/usr/bin:/toolchain/usr/sbin:/toolchain/bin:/toolchain/sbi # build (bwrap --tmp-overlay) lo exige ⇒ ENODEV sin esto. Lo cargamos del toolchain (insmod=kmod, # vermagic del kernel destino). Idempotente: si ya está, insmod falla y lo ignoramos. insmod /toolchain/lib/overlay.ko 2>/dev/null || true +# NOTA: el initramfs debe empaquetarse con `cpio --owner=root:root`. Si los ficheros del toolchain +# quedan con el uid del que armó el builder (p. ej. 1000), ese uid no está mapeado en el userns de +# bwrap (que mapea sólo 0→0) y el copy-up de overlay falla con EACCES al crear /opt/zig. Ver §8c. export HAMMER_ROOTFS=/toolchain # el sandbox de build: el toolchain (variante a, desde Alpine) export HAMMER_WORK=/work export HAMMER_CACHE= diff --git a/docs/runbooks/stage1-vm-boot.md b/docs/runbooks/stage1-vm-boot.md index 0a165b09..34803326 100644 --- a/docs/runbooks/stage1-vm-boot.md +++ b/docs/runbooks/stage1-vm-boot.md @@ -301,7 +301,10 @@ Sin `--work-cache`, el rebuild fetchea por red (la seed card trae `networking: f `scripts/boot-builder-vm.sh` encapsula esto (kernel, MEM, KVM configurables): ```sh -( cd work/builder-rootfs && find . -print0 | cpio --null -o -H newc | gzip -1 ) > work/builder.cpio.gz +# --owner=root:root es OBLIGATORIO: si los ficheros viajan con el uid del que armó el builder +# (p. ej. 1000), ese uid no está mapeado en el userns de bwrap (mapea 0→0) y el copy-up de overlay +# del sandbox falla con EACCES (`Can't mkdir /opt/zig: Permission denied`). +( cd work/builder-rootfs && find . -print0 | cpio --null -o -H newc --owner=root:root | gzip -1 ) > work/builder.cpio.gz ./scripts/boot-builder-vm.sh # o el qemu crudo: qemu-system-x86_64 -m 6144 -no-reboot -nographic -cpu Broadwell \ -kernel /boot/vmlinuz-linux -initrd work/builder.cpio.gz -append "console=ttyS0 rdinit=/sbin/init"