群晖入门到进阶系列(三):DSM 优化

  本文针对类似 Alliot 这种强迫症患者对 DSM 进行一些系统级的小优化,主要内容有:屏蔽系统更新、CPU 显示补丁、硬盘休眠、断网自动关机。没有这方面的需求的朋友可以暂且跳过本文。

屏蔽系统更新

  众所周知,黑群晖在更新系统的时候由于引导不适配很容易导致翻车,因此,为了防止自己手贱,将群晖的更新域名通过 hosts 指向一个错误的 IP,让其系统无法获取更新来达到屏蔽更新的目的。

修改 hosts

  ssh 连接并群晖获取 root 权限,编辑 /etc/hosts 文件,将 update.synology.com 指向任意一个错误的 IP:

1
2
3
4
5
6
sudo -i  

vi /etc/hosts # 按 i 进入插入模式,在底行加入如下:
127.0.0.1 update.synology.com

# 之后按 ESC,切换为大写,输入 ZZ,即可保存

去掉桌面与控制面板更新提示

法一:

在前面屏蔽系统更新的基础上,ssh 连接并群晖获取 root 权限,删除提醒文件:

1
2
rm -rf /var/update/check_result/last_notified/*
rm -rf /var/update/check_result/update

即可。

法二:

  这是一个曲线救国的方法,通过替换图标文件来达到隐藏更新提示的目的。 ssh 连接并群晖获取 root 权限 逐行执行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cp /usr/syno/synoman/webman/modules/AdminCenter/images/default/1x/badge_control_panel.png /usr/syno/synoman/webman/modules/AdminCenter/images/default/1x/badge_control_panel.png.bak  
cp /usr/syno/synoman/webman/modules/AdminCenter/images/default/2x/badge_control_panel.png /usr/syno/synoman/webman/modules/AdminCenter/images/default/2x/badge_control_panel.png.bak
wget -O /usr/syno/synoman/webman/modules/AdminCenter/images/default/1x/badge_control_panel.png http://static.iots.vip/transparent.png
wget -O /usr/syno/synoman/webman/modules/AdminCenter/images/default/2x/badge_control_panel.png http://static.iots.vip/transparent.png

cp /usr/syno/synoman/synoSDSjslib/images/default/1x/dsm5_notification_num.png /usr/syno/synoman/synoSDSjslib/images/default/1x/dsm5_notification_num.png.bak
cp /usr/syno/synoman/synoSDSjslib/images/default/2x/dsm5_notification_num.png /usr/syno/synoman/synoSDSjslib/images/default/2x/dsm5_notification_num.png.bak
wget -O /usr/syno/synoman/synoSDSjslib/images/default/1x/dsm5_notification_num.png http://static.iots.vip/transparent.png
wget -O /usr/syno/synoman/synoSDSjslib/images/default/2x/dsm5_notification_num.png http://static.iots.vip/transparent.png

cp /usr/syno/synoman/synoSDSjslib/images/default/1x/dsm5_badge_num.png /usr/syno/synoman/synoSDSjslib/images/default/1x/dsm5_badge_num.png.bak
cp /usr/syno/synoman/synoSDSjslib/images/default/2x/dsm5_badge_num.png /usr/syno/synoman/synoSDSjslib/images/default/2x/dsm5_badge_num.png.bak
wget -O /usr/syno/synoman/synoSDSjslib/images/default/1x/dsm5_badge_num.png http://static.iots.vip/transparent.png
wget -O /usr/syno/synoman/synoSDSjslib/images/default/2x/dsm5_badge_num.png http://static.iots.vip/transparent.png

完成后需要注销登录,并清理浏览器缓存才可看到效果。
群晖-注销登录.png

CPU 显示补丁

  群晖控制面板信息中心中显示的 CPU 信息是根据系统型号对应的硬件信息写死的,比如白群晖 918+ 的 CPU 是 J3455,不管你黑群晖使用的什么 CPU,918+ 系统显示的都是 J3455,可以通过 FOXBI 大佬的补丁来让其正确显示:
ssh 连接并群晖获取 root 权限 逐行执行如下命令:

1
wget -N --no-check-certificate http://static.iots.vip/sh/ch_cpuinfo.sh && sh ch_cpuinfo.sh  

按照提示输入 1 回车 y 回车,之后注销登录,并清理浏览器缓存即可看到效果如图:
群晖-CPU信息.png

硬盘休眠

  先说明,群晖的休眠只能实现所有硬盘休眠,所有硬盘唤醒,因此,在 Alliot 看来,群晖硬盘休眠并不好,总有一些文件在读写(比如日志),频繁的休眠、唤醒反而容易导致硬盘寿命下降。
  不过,非要休眠也不是没有办法,konglang_616 大佬找出的问题原因在此:黑群硬盘休眠问题的一种解决思路 ,主要就是因为黑裙的硬件等原因,/var/log/scemd.log 这个日志文件一直有输出,所以将该日志文件移到内存即可。
  ssh 连接并群晖获取 root 权限 执行如下命令:

1
sed -i 's/var\/log/dev\/shm/' /etc.defaults/syslog-ng/patterndb.d/scemd.conf

重启即可。

断网自动关机

  由于我的 UPS 不带通讯功能,无法接入群晖停电自动关机,因此,利用 shell 脚本不停的 ping 路由器,当路由器无法 ping 通时,延时一段时间后调用 poweroff 关闭群晖,实现断网自动关机。
  ssh 连接并群晖获取 root 权限 执行如下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cd / # 切换目录到 / 

# 以下内容全部复制,粘贴执行
tee netcheck.sh <<-'EOF'
#!/bin/env bash
MonitorIP=192.168.1.1
DelayTime=180s
if `ping $MonitorIP -W 2 -w 2 -c 2 >/dev/null`;then
echo `date +'%Y-%m-%d %H:%M:%S'`
echo "Power on."
else
echo `date +'%Y-%m-%d %H:%M:%S'`
synologset1 sys warn 0x11600036
sleep $DelayTime
if `ping $MonitorIP -W 2 -w 2 -c 2 >/dev/null`;then
synologset1 sys warn 0x11600035
else
synologset1 sys warn 0x11600037
poweroff
fi
fi
exit 0
EOF

回到 DSM 网页,打开“控制面板”,选择“任务计划”,新增“用户定义的脚本”,如下图配置:
群晖-计划任务自定义任务.png
群晖-计划任务断网关机.png
在“任务设置”的“用户自定义脚本”中填入:

1
bash /netcheck.sh >> /netcheck.log

确定并保存即可。

解决DSM6.2添加第三方套件源无效位置的问题

  这是由于群晖内部的 CA 根证书库到期导致的,更新替换一下即可:
ssh 连接并群晖获取 root 权限

1
2
sudo mv /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt.bak
sudo curl -Lko /etc/ssl/certs/ca-certificates.crt https://curl.se/ca/cacert.pem