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.
63 lines
1.5 KiB
Bash
63 lines
1.5 KiB
Bash
#!/bin/sh
|
|
# rfs mount firmware flist over /usr/lib/firmware (plain S3 route inside the .fl)
|
|
# Looks for firmware-latest.fl in known locations; can be overridden via FIRMWARE_FLIST env
|
|
|
|
set -eu
|
|
|
|
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
|
|
FL="${FIRMWARE_FLIST}"
|
|
else
|
|
# Candidate paths for the flist manifest
|
|
for p in \
|
|
/etc/rfs/firmware-latest.fl \
|
|
/var/lib/rfs/firmware-latest.fl \
|
|
/root/firmware-latest.fl \
|
|
/firmware-latest.fl \
|
|
; do
|
|
if [ -f "$p" ]; then
|
|
FL="$p"
|
|
break
|
|
fi
|
|
done
|
|
fi
|
|
|
|
if [ -z "${FL:-}" ]; then
|
|
# 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
|
|
mkdir -p "$TARGET"
|
|
|
|
# Skip if already mounted
|
|
if mountpoint -q "$TARGET" 2>/dev/null; then
|
|
log "already mounted: $TARGET"
|
|
exit 0
|
|
fi
|
|
|
|
# Perform the mount
|
|
log "mounting ${FL} -> ${TARGET}"
|
|
exec "$RFS_BIN" mount -m "$FL" "$TARGET" |