#!/usr/bin/env bash # On the LXC TFTP server, replace the serial-specific cmdline with one that has # provisioning_rescue=1 so the device drops to a shell and can run /rescue-eeprom.sh. # Usage: ./enable-rescue-cmdline-on-lxc.sh [LXC_HOST] [SERIAL] # Example: ./enable-rescue-cmdline-on-lxc.sh root@10.20.30.153 0d1ddbda set -e LXC="${1:-root@10.20.30.153}" SERIAL="${2:-0d1ddbda}" echo "Enabling rescue cmdline for serial $SERIAL on $LXC ..." ssh "$LXC" "bash -s" "$SERIAL" << 'REMOTE' SERIAL="$1" CD="/srv/tftpboot/$SERIAL" ROOT_CMDLINE="/srv/tftpboot/cmdline.txt" if [[ ! -d "$CD" ]]; then echo "Error: $CD does not exist. Create the serial dir first (see NETWORK-BOOT-TROUBLESHOOTING.md)." exit 1 fi rm -f "$CD/cmdline.txt" # One line: root cmdline + space + provisioning_rescue=1 ( cat "$ROOT_CMDLINE" 2>/dev/null | tr -d '\n'; echo -n ' provisioning_rescue=1' ) > "$CD/cmdline.txt" echo "Rescue cmdline written to $CD/cmdline.txt" echo "Reboot the device; from the rescue shell run: /rescue-eeprom.sh" REMOTE echo "Done. Reboot the reTerminal; then run /rescue-eeprom.sh in the rescue shell."