代码转载自矿渣论坛,启停脚本前提是硬盘休眠,本站的三合一脚本已修复硬盘休眠。
PS:黑群晖通用修改休眠原理
主要解决的是:硬件比如风扇、LED灯缺失,将报错日志转移到内存
方法:root后修改/etc/init/syslog-ng.conf,添加如下代码
#scemd bind
touch /tmp/scemd.log.new || true
chmod 660 /tmp/scemd.log.new || true
chown system:log /tmp/scemd.log.new || true
mount -o bind /tmp/scemd.log.new /var/log/scemd.log || true
#
风扇起停脚本原理
通过查看硬盘温度状态控制风扇GPIO关闭,针对小猫是完全关闭风扇,针对中大猫是降半速。
下面代码添加到任务计划里面执行,控制面板—任务计划—新增—触发的任务—用户自定义的脚本
mkdir -p /tmp/jioben
cat > /tmp/ledfan/ledfan.sh <<EOF
#!/bin/sh
if [ ! -d /sys/class/gpio/gpio450 ] ; then
echo 450 > /sys/class/gpio/export
fi
echo out > /sys/class/gpio/gpio450/direction
i2cset -y -f 0 0x45 0x00 0x55
i2cset -y -f 0 0x45 0x01 0x01
i2cset -y -f 0 0x45 0x30 0x07
echo 1 > /tmp/ledfan/leds.flag
while true
do
sata="\$(hdparm -C /dev/sda |grep 'drive'|awk '{print \$4}')"
ledss="\$(cat /tmp/ledfan/leds.flag)"
if [ \$sata = standby ];then
sata_temp="1"
led="0x03"
leds="0"
fi
if [ \$sata = active/idle ];then
sata_temp="\$(smartctl -a /dev/hda -d ata | sed -n '/Temperature_Celsius/p' | awk '{print \$10}')"
led="0x72"
leds="1"
fi
if [ \$sata_temp -ge 50 ];then
if [ -f "/tmp/ledfan/led31.flag" ] && [ \$ledss = \$leds ];then
sleep 15
continue
fi
i2cset -y -f 0 0x45 0x32 0x00
i2cset -y -f 0 0x45 0x33 0x00
i2cset -y -f 0 0x45 0x31 \${led}
i2cset -y -f 0 0x45 0x37 0x44
i2cset -y -f 0 0x45 0x3a 0x55
i2cset -y -f 0 0x45 0x3d 0x66
i2cset -y -f 0 0x45 0x38 0x44
i2cset -y -f 0 0x45 0x3b 0x55
i2cset -y -f 0 0x45 0x3e 0x66
i2cset -y -f 0 0x45 0x39 0x40
i2cset -y -f 0 0x45 0x3c 0x40
i2cset -y -f 0 0x45 0x3f 0x40
i2cset -y -f 0 0x45 0x34 255
echo 1 > /sys/class/gpio/gpio450/value
rm -rf /tmp/ledfan/led*.flag
touch /tmp/ledfan/led31.flag
echo \${leds} > /tmp/ledfan/leds.flag
fi
if [ \$sata_temp -ge 36 ] && [ \$sata_temp -lt 50 ];then
if [ -f "/tmp/ledfan/led33.flag" ] && [ \$ledss = \$leds ];then
sleep 15
continue
fi
i2cset -y -f 0 0x45 0x31 0x00
i2cset -y -f 0 0x45 0x32 0x00
i2cset -y -f 0 0x45 0x33 \${led}
i2cset -y -f 0 0x45 0x37 0x44
i2cset -y -f 0 0x45 0x3a 0x55
i2cset -y -f 0 0x45 0x3d 0x66
i2cset -y -f 0 0x45 0x38 0x44
i2cset -y -f 0 0x45 0x3b 0x55
i2cset -y -f 0 0x45 0x3e 0x66
i2cset -y -f 0 0x45 0x39 0x40
i2cset -y -f 0 0x45 0x3c 0x40
i2cset -y -f 0 0x45 0x3f 0x40
i2cset -y -f 0 0x45 0x36 255
echo 1 > /sys/class/gpio/gpio450/value
rm -rf /tmp/ledfan/led*.flag
touch /tmp/ledfan/led33.flag
echo \${leds} > /tmp/ledfan/leds.flag
fi
if [ \$sata_temp -lt 36 ];then
if [ -f "/tmp/ledfan/led32.flag" ] && [ \$ledss = \$leds ];then
sleep 15
continue
fi
i2cset -y -f 0 0x45 0x31 0x00
i2cset -y -f 0 0x45 0x33 0x00
i2cset -y -f 0 0x45 0x32 \${led}
i2cset -y -f 0 0x45 0x37 0x44
i2cset -y -f 0 0x45 0x3a 0x55
i2cset -y -f 0 0x45 0x3d 0x66
i2cset -y -f 0 0x45 0x38 0x44
i2cset -y -f 0 0x45 0x3b 0x55
i2cset -y -f 0 0x45 0x3e 0x66
i2cset -y -f 0 0x45 0x39 0x40
i2cset -y -f 0 0x45 0x3c 0x40
i2cset -y -f 0 0x45 0x3f 0x40
i2cset -y -f 0 0x45 0x35 255
echo 0 > /sys/class/gpio/gpio450/value
rm -rf /tmp/ledfan/led*.flag
touch /tmp/ledfan/led32.flag
echo \${leds} > /tmp/ledfan/leds.flag
fi
sleep 15
done
EOF
bash /tmp/ledfan/ledfan.sh
本文来自转载,文中观点不代表本站立场,文章出自:https://bbs.nas66.com/thread-9023-1-1.html