diff --git a/crates/hammer-bootstrap/src/lib.rs b/crates/hammer-bootstrap/src/lib.rs index 25b20e15..82dd6a5b 100644 --- a/crates/hammer-bootstrap/src/lib.rs +++ b/crates/hammer-bootstrap/src/lib.rs @@ -512,6 +512,17 @@ 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 +# Red para el vendoring de crates (los componentes Rust hacen `cargo vendor`, que baja de crates.io). +# NIC e1000 (qemu user-mode 10.0.2.0/24, módulo del kernel) + config estática + DNS de slirp. La VM +# sin NIC ⇒ todo esto es no-op (los componentes C no necesitan red). `ip` sale del toolchain (shim). +insmod /toolchain/lib/e1000.ko 2>/dev/null || true +if ip link show eth0 >/dev/null 2>&1; then + ip link set eth0 up + ip addr add 10.0.2.15/24 dev eth0 2>/dev/null || true + ip route add default via 10.0.2.2 2>/dev/null || true + printf 'nameserver 10.0.2.3\n' > /etc/resolv.conf + echo ">> red eth0: $(ip -4 -o addr show eth0 2>/dev/null | grep -o 'inet [0-9.]*' || echo down)" +fi # 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.