producto E2E: hidratación no-clobber (clobber ciego de /usr/lib rompe el sshd musl)

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.
This commit is contained in:
2026-07-11 06:23:03 -04:00
parent d9bd5220f0
commit f1ae579ff4
+10 -1
View File
@@ -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)