#!/usr/bin/env bash # Check if network boot is set as first priority on a Pi 4 / CM4 (reTerminal). # Run on the device: ./check-network-boot-priority.sh # Or from your machine: ssh pi@ 'bash -s' < scripts/check-network-boot-priority.sh set -e # BOOT_ORDER: 0x2 = network, 0x1 = SD/eMMC. 0x21 = network first, then local storage. WANT_BOOT_ORDER="0x21" get_config() { if command -v vcgencmd >/dev/null 2>&1; then vcgencmd bootloader_config 2>/dev/null || true fi if command -v rpi-eeprom-update >/dev/null 2>&1 && command -v rpi-eeprom-config >/dev/null 2>&1; then PEE="$(rpi-eeprom-update -l 2>/dev/null)" if [[ -n "$PEE" && -f "$PEE" ]]; then rpi-eeprom-config "$PEE" 2>/dev/null || true fi fi } BOOTCONF="$(get_config)" BOOT_ORDER="$(echo "$BOOTCONF" | grep -oE 'BOOT_ORDER=[0-9A-Fa-fx]+' | head -1 | cut -d= -f2)" if [[ -z "$BOOT_ORDER" ]]; then echo "Could not read EEPROM config (vcgencmd bootloader_config or rpi-eeprom-config)." echo "Is this a Raspberry Pi 4 or CM4 with rpi-eeprom / vcgencmd?" exit 1 fi echo "BOOT_ORDER=$BOOT_ORDER (current)" echo "Expected for network first: $WANT_BOOT_ORDER (0x2=network, 0x1=SD/eMMC; 0x21 = network then local)" if [[ "$(echo "$BOOT_ORDER" | tr '[:upper:]' '[:lower:]')" == "$(echo "$WANT_BOOT_ORDER" | tr '[:upper:]' '[:lower:]')" ]]; then echo "Result: Network boot is set as first priority." exit 0 fi echo "Result: Network boot is NOT first (current: $BOOT_ORDER). To set network first, set BOOT_ORDER=0x21 (e.g. via cloud-init first-boot or rpi-eeprom-config --edit)." exit 2