<message>Add a new step-by-step guide for deploying the CM4 eMMC provisioning service on a new Proxmox instance, enhancing clarity for users. Update existing documentation to reflect changes in network configuration options, including the introduction of LAN subnet settings for DHCP and TFTP. Modify cloud-init scripts to ensure proper management of DNS settings and improve the handling of network interfaces. Additionally, enhance the toggle script for network boot to dynamically read the LAN gateway from configuration files, streamlining the setup process and improving user experience.
61 lines
2.0 KiB
Bash
Executable File
61 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Enable or disable network boot (PXE + TFTP) on the provisioning LXC.
|
|
# When disabled, TFTP is stopped and no boot server is advertised; DHCP still runs.
|
|
# Usage: toggle-network-boot-dhcp.sh enable | disable | status
|
|
# Run as root. Install to /opt/cm4-provisioning/toggle-network-boot-dhcp.sh
|
|
# LAN gateway for TFTP/next-server is read from /opt/cm4-provisioning/lan-subnet.conf (written by deploy-to-proxmox.sh).
|
|
|
|
set -e
|
|
PXE_CONF="/etc/dnsmasq.d/network-boot-pxe.conf"
|
|
MAIN_CONF="/etc/dnsmasq.d/network-boot.conf"
|
|
|
|
LAN_CONF="/opt/cm4-provisioning/lan-subnet.conf"
|
|
if [[ -f "$LAN_CONF" ]]; then
|
|
source "$LAN_CONF"
|
|
else
|
|
LAN_GW="10.20.50.1"
|
|
fi
|
|
|
|
# Remove enable-tftp / tftp-root from main config if present (legacy; these belong in PXE conf)
|
|
cleanup_main_conf() {
|
|
if [ -f "$MAIN_CONF" ] && grep -q 'enable-tftp\|tftp-root' "$MAIN_CONF" 2>/dev/null; then
|
|
sed -i '/^enable-tftp/d; /^tftp-root/d' "$MAIN_CONF"
|
|
fi
|
|
}
|
|
|
|
case "${1:-}" in
|
|
enable)
|
|
cleanup_main_conf
|
|
cat > "$PXE_CONF" << EOF
|
|
# PXE/network boot ENABLED - managed by toggle-network-boot-dhcp.sh
|
|
# TFTP server (only active when network boot is enabled)
|
|
enable-tftp
|
|
tftp-root=/srv/tftpboot
|
|
# BOOTP fields (siaddr = TFTP server, filename = boot file)
|
|
dhcp-boot=start4cd.elf,,${LAN_GW}
|
|
# DHCP options 66/67 (some PXE clients prefer these)
|
|
dhcp-option=66,${LAN_GW}
|
|
dhcp-option=67,start4cd.elf
|
|
EOF
|
|
systemctl restart dnsmasq 2>/dev/null || service dnsmasq restart 2>/dev/null || true
|
|
echo "Network boot enabled (TFTP next-server: $LAN_GW)."
|
|
;;
|
|
disable)
|
|
cleanup_main_conf
|
|
rm -f "$PXE_CONF"
|
|
systemctl restart dnsmasq 2>/dev/null || service dnsmasq restart 2>/dev/null || true
|
|
echo "Network boot disabled. DHCP still running but no TFTP or boot options."
|
|
;;
|
|
status)
|
|
if [ -f "$PXE_CONF" ] && grep -q 'enable-tftp' "$PXE_CONF" 2>/dev/null; then
|
|
echo "enabled"
|
|
else
|
|
echo "disabled"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Usage: $0 enable | disable | status" >&2
|
|
exit 1
|
|
;;
|
|
esac
|