82 lines
2.4 KiB
Bash
Executable File
82 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
MOUNT_POINT=$1
|
|
|
|
# Function to fetch firmware dependencies
|
|
fetch_dependencies() {
|
|
FIRMWARE_URL="https://github.com/raspberrypi/firmware/raw/master/boot"
|
|
REQUIRED_FILES="bootcode.bin start.elf"
|
|
|
|
for f in $REQUIRED_FILES; do
|
|
if [ ! -f "$f" ]; then
|
|
echo "File '$f' not found. Downloading from official repo..."
|
|
if command -v wget >/dev/null 2>&1; then
|
|
wget -q --show-progress "$FIRMWARE_URL/$f" -O "$f"
|
|
elif command -v curl >/dev/null 2>&1; then
|
|
curl -L -o "$f" "$FIRMWARE_URL/$f"
|
|
else
|
|
echo "Error: Neither wget nor curl found. Cannot download $f."
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
if [ -z "$MOUNT_POINT" ]; then
|
|
if command -v lsblk >/dev/null 2>&1; then
|
|
echo "Scanning for mounted removable storage..."
|
|
OPTIONS=()
|
|
MOUNTPOINTS=()
|
|
while IFS= read -r line; do
|
|
eval "$line"
|
|
if [ "$RM" == "1" ] && [ -n "$MOUNTPOINT" ]; then
|
|
OPTIONS+=("$NAME ($SIZE) mounted at $MOUNTPOINT")
|
|
MOUNTPOINTS+=("$MOUNTPOINT")
|
|
fi
|
|
done < <(lsblk -P -o NAME,SIZE,MOUNTPOINT,RM)
|
|
|
|
if [ ${#OPTIONS[@]} -eq 0 ]; then
|
|
echo "No mounted removable devices found."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Select the SD card partition to deploy to:"
|
|
select opt in "${OPTIONS[@]}"; do
|
|
if [ -n "$opt" ]; then
|
|
MOUNT_POINT="${MOUNTPOINTS[$((REPLY-1))]}"
|
|
break
|
|
else
|
|
echo "Invalid selection."
|
|
fi
|
|
done
|
|
else
|
|
echo "Usage: $0 <path_to_sd_card_mount_point>"
|
|
echo "Example: $0 /media/user/RASPIBOOT"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
if [ ! -d "$MOUNT_POINT" ]; then
|
|
echo "Error: Mount point '$MOUNT_POINT' not found or is not a directory."
|
|
exit 1
|
|
fi
|
|
|
|
fetch_dependencies || exit 1
|
|
|
|
distrobox enter "pi-synth-dev" -- ./build.sh || exit 1
|
|
|
|
echo "Deploying to $MOUNT_POINT..."
|
|
|
|
for f in kernel.img bootcode.bin start.elf; do
|
|
if [ ! -f "$f" ]; then
|
|
echo "Error: Required file '$f' not found. Make sure you have run ./build.sh and downloaded the firmware."
|
|
exit 1
|
|
fi
|
|
echo "Copying $f..."
|
|
cp "$f" "$MOUNT_POINT/"
|
|
done
|
|
|
|
echo "Deployment complete. Unmounting..."
|
|
sync # Ensure all writes are finished
|
|
umount "$MOUNT_POINT"
|
|
echo "SD card is safe to remove." |