bootstrap: builder carga overlay.ko — el sandbox de build lo exige en la VM
El run en la VM avanzó hasta `configure` y ahí bwrap falló: `Can't make overlay mount … No such device`. Causa raíz: el kernel trae overlay como MÓDULO (CONFIG_OVERLAY_FS=m) y el initramfs arranca sin módulos cargados ⇒ ENODEV. El sandbox de hammer-build usa `bwrap --tmp-overlay` (raíz efímera sobre el toolchain), así que necesita overlayfs. Fix: rebuild-stage1 hace `insmod /toolchain/lib/overlay.ko` tras el shim del loader (overlay no tiene deps; vermagic del kernel destino). El toolchain suma `kmod` (insmod/modprobe). El `overlay.ko` es específico del kernel (no de Alpine): se inyecta aparte en el builder (.dev-fs/alpine/lib/overlay.ko), documentado en bootstrap-devfs.sh. Progreso del run: shim OK ⇒ bwrap/git/curl corren ⇒ fetch OK ⇒ configure arranca; overlay era el siguiente muro. 28 tests verdes. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
64894d863c
commit
cf15995623
@@ -507,7 +507,11 @@ set -eu
|
|||||||
/bin/mkdir -p /lib
|
/bin/mkdir -p /lib
|
||||||
/bin/cp -f /toolchain/lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
|
/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 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_ROOTFS=/toolchain # el sandbox de build: el toolchain (variante a, desde Alpine)
|
||||||
export HAMMER_WORK=/work
|
export HAMMER_WORK=/work
|
||||||
export HAMMER_CACHE=
|
export HAMMER_CACHE=
|
||||||
|
|||||||
@@ -121,7 +121,11 @@ else
|
|||||||
# hammer-build con su propio toolchain. En el host estas tres las aporta el sistema, pero en la
|
# 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
|
# 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.
|
# 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=""
|
missing=""
|
||||||
for pkg in $NEEDED; do
|
for pkg in $NEEDED; do
|
||||||
# apk info -e devuelve el paquete si está instalado, vacío si no.
|
# apk info -e devuelve el paquete si está instalado, vacío si no.
|
||||||
|
|||||||
Reference in New Issue
Block a user