#!/usr/bin/env bash set -e echo "=== UGREEN LED/Disk Fix after Proxmox Kernel Update ===" KERNEL="$(uname -r)" echo "Detected kernel: $KERNEL" MODULE_NAME="led-ugreen" MODULE_FILE="led-ugreen.ko" MODPATH="/lib/modules/$KERNEL" echo "" echo "=== Checking kernel headers ===" if [ ! -d "$MODPATH/build" ]; then echo "❌ Kernel headers missing for $KERNEL" echo "→ Installing pve-headers-$KERNEL" apt update apt install -y "pve-headers-$KERNEL" else echo "✓ Kernel headers present" fi echo "" echo "=== Checking if module exists on disk ===" FOUND=$(find "$MODPATH" -name "$MODULE_FILE" 2>/dev/null || true) if [ -z "$FOUND" ]; then echo "❌ Module file not found in $MODPATH" echo "→ DKMS build required" else echo "✓ Module exists at:" echo "$FOUND" fi echo "" echo "=== Checking DKMS status ===" dkms status ugreen-led/0.1 || true echo "" if [ -z "$FOUND" ]; then echo "=== DKMS: Building and installing ugreen-led for kernel $KERNEL ===" dkms remove ugreen-led/0.1 -k "$KERNEL" --force 2>/dev/null || true dkms build ugreen-led/0.1 -k "$KERNEL" dkms install ugreen-led/0.1 -k "$KERNEL" else echo "Skipping DKMS rebuild (module already present)" fi echo "" echo "=== Running depmod ===" depmod -a "$KERNEL" echo "" echo "=== Loading module ===" modprobe -v "$MODULE_NAME" echo "" echo "=== Probing UGREEN LEDs ===" UGREEN_PROBE="/root/ugreen_leds_controller/scripts/ugreen-probe-leds" [ -x "$UGREEN_PROBE" ] && "$UGREEN_PROBE" || echo "⚠️ Probe script not found" echo "" echo "=== Restarting services ===" systemctl daemon-reload systemctl start ugreen-netdevmon@enp2s0 systemctl start ugreen-diskiomon systemctl enable ugreen-diskiomon echo "" echo "=== Status ===" systemctl status --no-pager ugreen-netdevmon@enp2s0 || true systemctl status --no-pager ugreen-diskiomon || true echo "" echo "=== Done ==="