77 lines
1.8 KiB
Bash
77 lines
1.8 KiB
Bash
#!/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 ==="
|