36 lines
1.5 KiB
Bash
Executable File
36 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Populate /opt/usbboot/mass-storage-gadget64 on the Proxmox host (no rpiboot build).
|
|
# Use when rpiboot works but you see "No 'bootcode' files found" — the gadget dir is empty.
|
|
# Usage: ./populate-gadget-on-host.sh [proxmox_host]
|
|
# Example: ./populate-gadget-on-host.sh root@10.130.60.224
|
|
|
|
set -e
|
|
PROXMOX="${1:-root@10.130.60.224}"
|
|
BUILD_DIR="/tmp/usbboot-gadget-$$"
|
|
cleanup() { rm -rf "$BUILD_DIR"; }
|
|
trap cleanup EXIT
|
|
|
|
echo "[$(date -Iseconds)] Cloning usbboot to fetch mass-storage-gadget64 ..."
|
|
mkdir -p "$BUILD_DIR"
|
|
git clone --depth=1 https://github.com/raspberrypi/usbboot "$BUILD_DIR/usbboot"
|
|
|
|
GADGET="$BUILD_DIR/usbboot/mass-storage-gadget64"
|
|
if [[ ! -d "$GADGET" ]]; then
|
|
echo "Error: mass-storage-gadget64 not found in clone."
|
|
exit 1
|
|
fi
|
|
# rpiboot needs at least bootfiles.bin or bootcode*.bin
|
|
if [[ ! -f "$GADGET/bootfiles.bin" && ! -f "$GADGET/boot.img" ]]; then
|
|
echo "Warning: clone has no bootfiles.bin or boot.img. Trying git lfs pull..."
|
|
(cd "$BUILD_DIR/usbboot" && git lfs pull 2>/dev/null) || true
|
|
fi
|
|
if [[ ! -f "$GADGET/bootfiles.bin" && ! -f "$GADGET/boot.img" ]]; then
|
|
echo "Error: mass-storage-gadget64 still has no boot files. Install git-lfs and retry, or run build-and-deploy-usbboot-to-host.sh for a full deploy."
|
|
exit 1
|
|
fi
|
|
|
|
echo "[$(date -Iseconds)] Syncing mass-storage-gadget64 to $PROXMOX:/opt/usbboot/ ..."
|
|
ssh "$PROXMOX" "mkdir -p /opt/usbboot"
|
|
rsync -a "$GADGET/" "$PROXMOX:/opt/usbboot/mass-storage-gadget64/"
|
|
echo "Done. Verify with: ssh $PROXMOX 'ls -la /opt/usbboot/mass-storage-gadget64/'"
|