From f1ae579ff4acb0c4cdea89dcb1c4eb9508706efa Mon Sep 17 00:00:00 2001 From: sergio Date: Sat, 11 Jul 2026 06:23:03 -0400 Subject: [PATCH] =?UTF-8?q?producto=20E2E:=20hidrataci=C3=B3n=20no-clobber?= =?UTF-8?q?=20(clobber=20ciego=20de=20/usr/lib=20rompe=20el=20sshd=20musl)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revierte el experimento de shadow-por-clobber: pisar /usr/lib con libs del base-system deja arje-zero+hammerd arrancando pero sshd/login mudo (ABI musl del producto disturbado). No-clobber preserva el producto entero y añade los binarios nuevos (probado VERDE). La sombra de applets busybox (sed/ps/ip→full) es política del ensamblado del producto (mecanismo 'adelgazar busybox' de coreutils), que re-linkea el NOMBRE sin tocar /usr/lib — follow-up de empaque documentado en el script. --- scripts/product-base-system-boot-test.sh | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/product-base-system-boot-test.sh b/scripts/product-base-system-boot-test.sh index 33b0b60b..97fa7eb1 100755 --- a/scripts/product-base-system-boot-test.sh +++ b/scripts/product-base-system-boot-test.sh @@ -28,7 +28,16 @@ cp -a "$PDIR"/. "$RFS"/; chmod -R u+w "$RFS"; rm -rf "$RFS/.hammer" # --- hidratar el base-system encima (no-clobber: preserva configs del producto) --- BASE_SYSTEM="bash git sudo doas util-linux shadow kbd procps-ng iproute2 iputils dhcpcd e2fsprogs dosfstools parted rsync sed tzdata vim dbus ca-certificates gnupg lsof strace pciutils usbutils mandoc" -echo "==> hidratando base-system encima del producto (cp -an, preserva /etc del producto)" +# Hidratación NO-CLOBBER: añade los binarios nuevos del base-system (bash/git/gpg/useradd/vim/…) pero +# NO pisa nada del producto — ni configs (/etc/passwd, /etc/shadow, /etc/ssh) ni libs/applets. Preserva +# el ABI musl del sshd del producto y su login (un clobber ciego de /usr/lib lo ROMPE: arje-zero+hammerd +# arrancan pero sshd/login queda mudo — comprobado 2026-07-10). +# +# NOTA de empaque (fuera de alcance de este test): los nombres que colisionan con applets de busybox +# (sed/ps/ip/mount/vi) resuelven a BUSYBOX por precedencia de PATH; los binarios full ESTÁN a sus rutas. +# Hacer que ganen es política del ensamblado del producto (el mismo mecanismo "adelgazar busybox" que ya +# apunta /usr/bin/ls→coreutils), que debe re-linkear el applet name a la versión full SIN tocar /usr/lib. +echo "==> hidratando base-system encima del producto (cp -an, preserva el producto entero)" hyd=0 for n in $BASE_SYSTEM; do d=$(ls -dt store/*-"$n" 2>/dev/null | head -1)