install-image: un filesystem etiquetado hammer-work se monta en /work

Convención opcional, no requisito: la imagen no crea esa partición y si la etiqueta no existe el
arranque no hace nada ni avisa.

Existe por un caso concreto. Al mudar el store de la caja de producción al volumen, la partición
local del store —69,8 G de un disco de 76,3— quedó huérfana: re-etiquetada para que el `findfs` del
arranque no la confundiera con el volumen, y sin montar. La caja tenía 70 G de disco ocioso mientras
`/store` iba al 80 %.

`/work` es el destino natural: es donde un HUB pone lo pesado —`work/sources`, los tarballs, el
`CARGO_HOME`—, que en gioser son 85 G y que no cabe ni conviene en una raíz de 6 G.

En la caja: `sda4` re-etiquetada `hammer-work`, REFORMATEADA (traía los 61,5 G del store viejo,
anterior a la cosecha; control antes de borrar: el store vivo tiene 1579 artefactos y el respaldo
3140) y `/opt/takana/work` pasa a ser un enlace a `/work`. Verificado tras reiniciar: se monta solo,
68,1 G con 64,6 G libres, y los manifiestos siguen donde `build-state.py` los busca.

La caja usa ahora su disco entero: `/` 5,8 G · `/var/lib/hammer` 487 M · `/work` 68,1 G local ·
`/store` 97,9 G en el volumen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RomoxEGZUhaT4pob1QSX5x
This commit is contained in:
Sergio
2026-09-11 14:01:23 +00:00
co-authored by Claude Opus 5
parent 8ebcc99930
commit 77cda9a865
+9
View File
@@ -142,6 +142,15 @@ if [ -n "$_store" ] && [ -x /sbin/sfdisk ]; then
fi
[ -n "$_store" ] && /bin/busybox mount -t ext4 "$_store" /store || _say "no pude montar /store ($_store)"
[ -n "$_state" ] && /bin/busybox mount -t ext4 "$_state" /var/lib/hammer || _say "no pude montar /var/lib/hammer ($_state)"
# ── OPCIONAL: un filesystem etiquetado `hammer-work` se monta en /work ──────────────────────────
# Convención, no requisito: la imagen no crea esa partición. Existe para el caso de un HUB, donde el
# trabajo pesado —`work/sources`, los tarballs, el `CARGO_HOME`— no cabe ni conviene en la raíz. En
# gioser eso son 85 G. Si la etiqueta no existe, no pasa nada y no se avisa: no es un error.
_work=$(/bin/busybox findfs LABEL=hammer-work 2>/dev/null)
if [ -n "$_work" ]; then
/bin/busybox mkdir -p /work
/bin/busybox mount -t ext4 "$_work" /work || _say "no pude montar /work ($_work)"
fi
exec /usr/bin/arje-zero
INIT
chmod +x "$ROOT_TREE/sbin/init"