tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Sutichaykuna

bootstrap: red en el builder para el vendoring Rust (cargo vendor)

Los componentes Rust hacen `cargo vendor` (baja de crates.io); la VM no tenía red
⇒ `failed to sync`. rebuild-stage1 ahora levanta una NIC e1000 (qemu user-mode
10.0.2.0/24): insmod del módulo e1000.ko (como overlay, =m y no cargado), config
estática de eth0 (10.0.2.15, gw 10.0.2.2) y DNS de slirp (10.0.2.3). Best-effort:
sin NIC es no-op (los componentes C no necesitan red). El workspace no tiene deps
git, así que crates.io basta. e1000.ko se inyecta en el builder (.dev-fs/alpine).

Driver de boot: añade `-netdev user -device e1000` y sube el techo a 4h (builds
Rust bajo TCG).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

09034a5e2ba65da3fe1e8d30f4db05d56513b5b7 · ruwaq Sergio · (4 killa ñawpaq) · tayta f6dcf1028 · kay commitpi sach'ata qhaway

Semántico sayk'uy · 1

crates/hammer-bootstrap/src/lib.rs

1 qillqakuna · +11 −0

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.