diff --git a/crates/hammer-bootstrap/src/lib.rs b/crates/hammer-bootstrap/src/lib.rs index ac01ba7e..4ed2da55 100644 --- a/crates/hammer-bootstrap/src/lib.rs +++ b/crates/hammer-bootstrap/src/lib.rs @@ -507,7 +507,11 @@ set -eu /bin/mkdir -p /lib /bin/cp -f /toolchain/lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1 export LD_LIBRARY_PATH=/toolchain/lib:/toolchain/usr/lib -export PATH=/toolchain/usr/bin:/toolchain/usr/sbin:/toolchain/bin:/usr/bin:/bin:/sbin +export PATH=/toolchain/usr/bin:/toolchain/usr/sbin:/toolchain/bin:/toolchain/sbin:/usr/bin:/bin:/sbin +# overlay es módulo (CONFIG_OVERLAY_FS=m) y el initramfs arranca sin módulos cargados: el sandbox de +# 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 export HAMMER_ROOTFS=/toolchain # el sandbox de build: el toolchain (variante a, desde Alpine) export HAMMER_WORK=/work export HAMMER_CACHE= diff --git a/scripts/bootstrap-devfs.sh b/scripts/bootstrap-devfs.sh index 6a833a48..395f32dc 100755 --- a/scripts/bootstrap-devfs.sh +++ b/scripts/bootstrap-devfs.sh @@ -121,7 +121,11 @@ else # hammer-build con su propio toolchain. En el host estas tres las aporta el sistema, pero en la # VM el toolchain ES el único userland capaz, así que deben vivir aquí: `bwrap` anida el sandbox # de build, `git` rematerializa las fuentes git (git archive del mirror), `curl` baja tarballs. - NEEDED="make autoconf automake m4 patch coreutils libtool pkgconf bash binutils rust cargo linux-headers bubblewrap git curl" + # `kmod` aporta insmod/modprobe: en la VM el sandbox de build usa overlay (módulo del kernel, + # CONFIG_OVERLAY_FS=m) y el initramfs arranca sin módulos cargados, así que el builder debe poder + # cargarlo. El `overlay.ko` en sí es específico del kernel destino (no de Alpine): se inyecta + # aparte en el builder (ver docs/runbooks/stage1-vm-boot.md §8c). + NEEDED="make autoconf automake m4 patch coreutils libtool pkgconf bash binutils rust cargo linux-headers bubblewrap git curl kmod" missing="" for pkg in $NEEDED; do # apk info -e devuelve el paquete si está instalado, vacío si no.