#!/bin/sh # 20-persistent-mount.sh — Mount persistent data partition and bind-mount writable paths if [ "$KUBESOLO_NOPERSIST" = "1" ]; then log "Running in RAM-only mode — no persistent storage" # Create tmpfs-backed directories so KubeSolo has somewhere to write mkdir -p /var/lib/kubesolo /var/lib/containerd /etc/kubesolo /var/log /usr/local return 0 fi # Wait for device to appear (USB, slow disks, virtio) log "Waiting for data device: $KUBESOLO_DATA_DEV" WAIT_SECS=30 for i in $(seq 1 "$WAIT_SECS"); do [ -b "$KUBESOLO_DATA_DEV" ] && break sleep 1 done if [ ! -b "$KUBESOLO_DATA_DEV" ]; then log_err "Data device $KUBESOLO_DATA_DEV not found after ${WAIT_SECS}s" return 1 fi # Mount data partition mkdir -p "$DATA_MOUNT" mount -t ext4 -o noatime "$KUBESOLO_DATA_DEV" "$DATA_MOUNT" || { log_err "Failed to mount $KUBESOLO_DATA_DEV" return 1 } log_ok "Mounted $KUBESOLO_DATA_DEV at $DATA_MOUNT" # Create persistent directory structure (first boot) for dir in kubesolo containerd etc-kubesolo log usr-local network; do mkdir -p "$DATA_MOUNT/$dir" done # Ensure target mount points exist mkdir -p /var/lib/kubesolo /var/lib/containerd /etc/kubesolo /var/log /usr/local # Bind mount persistent paths mount --bind "$DATA_MOUNT/kubesolo" /var/lib/kubesolo mount --bind "$DATA_MOUNT/containerd" /var/lib/containerd mount --bind "$DATA_MOUNT/etc-kubesolo" /etc/kubesolo mount --bind "$DATA_MOUNT/log" /var/log mount --bind "$DATA_MOUNT/usr-local" /usr/local log_ok "Persistent bind mounts configured"