From 998e40c2e5203c6c96b58b4c8e2f8c66c8cc552e Mon Sep 17 00:00:00 2001 From: Jan De Landtsheer Date: Tue, 9 Sep 2025 16:23:09 +0200 Subject: [PATCH] zinit(init): remote flist fallback from zos.grid.tf when local manifests are missing firmware.sh: if no local firmware-latest.fl, fetch https://zos.grid.tf/store/flists/firmware-latest.fl using wget or busybox wget; then mount via rfs. modules.sh: if no local modules-6.16.5-arch1-1.fl, fetch https://zos.grid.tf/store/flists/modules-6.16.5-arch1-1-Zero-OS.fl using wget or busybox wget; then mount via rfs. Keep env overrides MODULES_FLIST/FIRMWARE_FLIST and RFS_BIN semantics. --- config/zinit/init/firmware.sh | 21 +++++++++++++++++++-- config/zinit/init/modules.sh | 21 +++++++++++++++++++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/config/zinit/init/firmware.sh b/config/zinit/init/firmware.sh index a2ecbd3..09e6b15 100644 --- a/config/zinit/init/firmware.sh +++ b/config/zinit/init/firmware.sh @@ -8,6 +8,7 @@ log() { echo "[rfs-firmware] $*"; } RFS_BIN="${RFS_BIN:-rfs}" TARGET="/usr/lib/firmware" +BASE_URL="${FLISTS_BASE_URL:-https://zos.grid.tf/store/flists}" # Allow override via env if [ -n "${FIRMWARE_FLIST:-}" ] && [ -f "${FIRMWARE_FLIST}" ]; then @@ -28,8 +29,24 @@ else fi if [ -z "${FL:-}" ]; then - log "firmware-latest.fl not found in known paths; skipping mount" - exit 0 + # Try remote fetch as a fallback + mkdir -p /etc/rfs + FL="/etc/rfs/firmware-latest.fl" + URL="${BASE_URL}/firmware-latest.fl" + log "firmware-latest.fl not found locally; fetching ${URL}" + + if command -v wget >/dev/null 2>&1; then + wget -q -O "${FL}" "${URL}" || true + elif command -v busybox >/dev/null 2>&1; then + busybox wget -q -O "${FL}" "${URL}" || true + else + log "no wget available to fetch ${URL}" + fi + + if [ ! -s "${FL}" ]; then + log "failed to fetch ${URL}; skipping mount" + exit 0 + fi fi # Ensure target directory exists diff --git a/config/zinit/init/modules.sh b/config/zinit/init/modules.sh index e05df37..155e0f3 100644 --- a/config/zinit/init/modules.sh +++ b/config/zinit/init/modules.sh @@ -9,6 +9,7 @@ log() { echo "[rfs-modules] $*"; } RFS_BIN="${RFS_BIN:-rfs}" KVER="$(uname -r)" TARGET="/lib/modules/${KVER}" +BASE_URL="${FLISTS_BASE_URL:-https://zos.grid.tf/store/flists}" # Allow override via env if [ -n "${MODULES_FLIST:-}" ] && [ -f "${MODULES_FLIST}" ]; then @@ -29,8 +30,24 @@ else fi if [ -z "${FL:-}" ]; then - log "modules-${KVER}.fl not found in known paths; skipping mount" - exit 0 + # Try remote fetch as a fallback (modules--Zero-OS.fl) + mkdir -p /etc/rfs + FL="/etc/rfs/modules-${KVER}.fl" + URL="${BASE_URL}/modules-${KVER}-Zero-OS.fl" + log "modules-${KVER}.fl not found locally; fetching ${URL}" + + if command -v wget >/dev/null 2>&1; then + wget -q -O "${FL}" "${URL}" || true + elif command -v busybox >/dev/null 2>&1; then + busybox wget -q -O "${FL}" "${URL}" || true + else + log "no wget available to fetch ${URL}" + fi + + if [ ! -s "${FL}" ]; then + log "failed to fetch ${URL}; skipping mount" + exit 0 + fi fi # Ensure target directory exists