Add DHCP leases management to dashboard and UI
Implement a new API endpoint to retrieve current DHCP leases from dnsmasq, enhancing the dashboard's functionality for monitoring network devices. Update the home.html template to display DHCP lease information in a structured table format, including IP, MAC, hostname, and expiry details. Introduce buttons for enabling and disabling DHCP network boot, improving user interaction. Enhance JavaScript to fetch and display lease data dynamically, ensuring users have real-time visibility of network activity.
This commit is contained in:
40
emmc-provisioning/scripts/check-network-boot-priority.sh
Normal file
40
emmc-provisioning/scripts/check-network-boot-priority.sh
Normal file
@@ -0,0 +1,40 @@
|
||||
#!/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@<device-ip> '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
|
||||
@@ -12,6 +12,12 @@ if [[ -n "$TARGET" ]]; then
|
||||
REPO_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
echo "Syncing lxc config and script to $TARGET ..."
|
||||
rsync -a "$REPO_DIR/lxc/" "$TARGET:/tmp/cm4-network-boot-lxc/" --exclude='.git'
|
||||
if [[ -f "$REPO_DIR/network-boot-initramfs/initrd.img" ]]; then
|
||||
echo "Copying initrd.img to $TARGET ..."
|
||||
scp "$REPO_DIR/network-boot-initramfs/initrd.img" "$TARGET:/tmp/cm4-network-boot-lxc/initrd.img"
|
||||
else
|
||||
echo "Note: network-boot-initramfs/initrd.img not found (run build.sh first); skipping."
|
||||
fi
|
||||
scp "$SCRIPT_DIR/setup-network-boot-on-lxc.sh" "$TARGET:/tmp/cm4-network-boot-lxc/setup.sh"
|
||||
ssh "$TARGET" "bash /tmp/cm4-network-boot-lxc/setup.sh"
|
||||
echo "Done."
|
||||
@@ -68,6 +74,18 @@ else
|
||||
echo "TFTP root already has boot files (start4cd.elf present), skipping fetch."
|
||||
fi
|
||||
|
||||
# 3b) Copy provisioning initrd.img to TFTP root if provided
|
||||
if [[ -f /tmp/cm4-network-boot-lxc/initrd.img ]]; then
|
||||
cp /tmp/cm4-network-boot-lxc/initrd.img /srv/tftpboot/initrd.img
|
||||
echo "Copied initrd.img to /srv/tftpboot"
|
||||
if [[ -f /srv/tftpboot/config.txt ]] && ! grep -q 'initramfs initrd.img' /srv/tftpboot/config.txt 2>/dev/null; then
|
||||
echo "" >> /srv/tftpboot/config.txt
|
||||
echo "# Provisioning initramfs (network-boot-initramfs)" >> /srv/tftpboot/config.txt
|
||||
echo "initramfs initrd.img followkernel" >> /srv/tftpboot/config.txt
|
||||
echo "Added initramfs line to config.txt"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 4) IP forwarding (LAN clients use WAN)
|
||||
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-cm4-network-boot.conf
|
||||
sysctl -p /etc/sysctl.d/99-cm4-network-boot.conf 2>/dev/null || sysctl -w net.ipv4.ip_forward=1
|
||||
@@ -105,4 +123,4 @@ systemctl restart dnsmasq
|
||||
echo "Network boot setup done."
|
||||
echo " - DHCP + TFTP on eth1 (10.20.50.1), range 10.20.50.100-200"
|
||||
echo " - NAT: 10.20.50.0/24 -> eth0 (internet)"
|
||||
echo " - TFTP root: /srv/tftpboot (RPi boot files from GitHub)"
|
||||
echo " - TFTP root: /srv/tftpboot (RPi boot files; initrd.img if provided)"
|
||||
|
||||
Reference in New Issue
Block a user