export interface NasConfigOptions { serial_number: string; hostname: string; domain: string; pool_name: string; raid_level: "raidz1" | "raidz2" | "mirror" | "stripe"; drive_bays: number; // 4 to 8 enable_spire: boolean; enable_supercap_daemon: boolean; fan_profile: "silent" | "balanced" | "performance"; } export function generateZfsProvisioningScript(opts: NasConfigOptions): string { const baysCount = Math.max(1, Math.min(8, isNaN(opts.drive_bays) ? 8 : opts.drive_bays)); const drives = Array.from({ length: baysCount }, (_, i) => `/dev/disk/by-path/pci-0000:01:00.0-sas-phy${i}-lun-0`).join(" "); const cleanSerial = (opts.serial_number || "NAS-6U-2026-0001").replace(/["$`\\]/g, ""); const cleanHostname = (opts.hostname || "nas-core").replace(/["$`\\]/g, ""); const cleanDomain = (opts.domain || "atyg.org").replace(/["$`\\]/g, ""); const cleanPool = (opts.pool_name || "tank0").replace(/["$`\\]/g, ""); return `#!/usr/bin/env bash # ============================================================================== # Open-Source 6U Tri-Mode Storage Array — Automated Provisioning Script # Chassis Serial: ${cleanSerial} # Hostname: ${cleanHostname}.${cleanDomain} # Target Environment: TrueNAS SCALE / Debian 12 (Kernel 6.6+ LTS) # ============================================================================== set -euo pipefail echo "🚀 Provisioning 6U Tri-Mode Storage Array [${cleanSerial}]..." # 1. System Hostname & Identity hostnamectl set-hostname "${cleanHostname}.${cleanDomain}" # 2. RP2040 OpenBMC UART Initialization echo "🔧 Configuring RP2040 UART Telemetry on /dev/ttyS2 (115200 baud)..." stty -F /dev/ttyS2 115200 raw -echo cat << 'RP2040_CONF' > /etc/systemd/system/rp2040-bmc.service [Unit] Description=RP2040 OpenBMC Supervisor & Fan PID Daemon After=network.target [Service] Type=simple ExecStart=/usr/local/bin/rp2040-bmc-daemon --port /dev/ttyS2 --profile ${opts.fan_profile || "balanced"} --supercap-plp=${opts.enable_supercap_daemon ?? true} Restart=always RestartSec=3 [Install] WantedBy=multi-user.target RP2040_CONF systemctl daemon-reload systemctl enable --now rp2040-bmc.service || true # 3. ZFS Pool Creation & Universal U.3 Tri-Mode Allocation echo "💾 Initializing ZFS Pool [${cleanPool}] (${opts.raid_level || "raidz2"} across ${baysCount} U.3 bays)..." zpool create -f -o ashift=12 \\ -O compression=zstd \\ -O atime=off \\ -O xattr=sa \\ -O acltype=posixacl \\ "${cleanPool}" ${opts.raid_level || "raidz2"} ${drives} # 4. Supercapacitor PLP Emergency Flush Watchdog if [ "${opts.enable_supercap_daemon ?? true}" = "true" ]; then echo "⚡ Enabling LTC3350 Emergency Supercapacitor Flush Watchdog..." cat << 'PLP_CONF' > /etc/udev/rules.d/99-ltc3350-plp.rules # LTC3350 PFI Power-Fail Interrupt on GPIO4_C2 SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="change", RUN+="/usr/local/bin/emergency-sync-flush.sh" PLP_CONF udevadm control --reload-rules || true fi echo "✅ Provisioning Complete for [${cleanSerial}]! Array is ONLINE." `; }