Enhance the dashboard API with new endpoints for managing DHCP network boot options, allowing devices to enable or disable network boot via POST requests. Update the device action handling to include a 'reboot' action, specifically for network devices. Modify the home.html template to display the current state of network boot and provide a button for disabling it. Update provisioning scripts to disable network boot after deployment or backup completion, ensuring devices boot from eMMC on the next startup. Improve user feedback and error handling throughout the changes.
37 lines
1.2 KiB
Bash
37 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
# Enable or disable DHCP network-boot options (option 66/67) on the provisioning LXC.
|
|
# Does not stop the DHCP server or TFTP; only stops advertising netboot so devices boot from local storage.
|
|
# Usage: toggle-network-boot-dhcp.sh enable | disable
|
|
# Run as root (or with sudo). Install to /opt/cm4-provisioning/toggle-network-boot-dhcp.sh
|
|
|
|
set -e
|
|
PXE_CONF="/etc/dnsmasq.d/network-boot-pxe.conf"
|
|
SNIPPET_CONTENT="# PXE options - do not edit; managed by toggle-network-boot-dhcp.sh
|
|
dhcp-option=66,10.20.50.1
|
|
dhcp-option=67,start4cd.elf
|
|
"
|
|
|
|
case "${1:-}" in
|
|
enable)
|
|
echo "$SNIPPET_CONTENT" > "$PXE_CONF"
|
|
systemctl reload dnsmasq 2>/dev/null || service dnsmasq reload 2>/dev/null || true
|
|
echo "Network boot (DHCP options) enabled."
|
|
;;
|
|
disable)
|
|
rm -f "$PXE_CONF"
|
|
systemctl reload dnsmasq 2>/dev/null || service dnsmasq reload 2>/dev/null || true
|
|
echo "Network boot (DHCP options) disabled. Devices will get DHCP but boot from local storage."
|
|
;;
|
|
status)
|
|
if [ -f "$PXE_CONF" ]; then
|
|
echo "enabled"
|
|
else
|
|
echo "disabled"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Usage: $0 enable | disable | status" >&2
|
|
exit 1
|
|
;;
|
|
esac
|