目录

教你解决黑群晖 “抱歉,您所指定的页面不存在” 问题

起因就是黑群今天突然抽风了~

操作环境如下:

黑群晖 DSM 6.1.7-15284 Update 3

需要已开启 SSH

问题原因

https://img.pulnd.com/post/nas-defunct-trouble/NKDu34.png

基本上出现该问题是由于依赖文件的损坏或丢失造成的,具体就是/lib 目录下缺少 Web UI 运行所需要的 .so 系统文件(缺失文件可能每个人都不同,但解决的方法是相同的)

解决方法

下载镜像

群晖官方镜像地址

一定要下载与自己对应型号和版本的镜像

查看有问题的依赖文件

SSH进入 /var/log/upstart 目录,查看 synoscgi 运行日志

sudo -i # root权限
cd /var/log/upstart
cat synoscgi.log

比如我这里显示libsynopkg.so.1libsynoshare.so.6libsynostoragemgmt.so有问题(这个需要根据时间自己找哦,每个人的问题可能都不一样的,我这边是列出来方便给大家看)

1
2
3
    2020-06-19T09:04:09+0800 synoscgi_SYNO.Core.Package.Server_1_list: symbol lookup error: /lib/libsynopkg.so.1: undefined symbol: _ZN15SYNOPackageTool23PMSThirdPartyCheckLimitEPKcS1_
    2020-06-19T09:19:17+0800 /usr/syno/sbin/synoscgi________________________________________________________: error while loading shared libraries: /lib/libsynoshare.so.6: invalid ELF header
    2020-06-19T10:51:01+0800 /usr/syno/synoman/webman/modules/SystemInfoApp/SystemInfo.cgi: error while loading shared libraries: /lib/libsynostoragemgmt.so: invalid ELF header

提取原镜像中对应的依赖文件

用 7z 等压缩软件打开 .pat 镜像文件,再打开里面的 hda1.tgz 压缩包,继续打开里面的 hda1 文件,进入 /usr/lib ,找到对应的依赖文件,解压出来备用。(或者也可以一步步解压将文件全部解压出来再找,方便搜索,但是部分文件整体解压缩好像会出现问题)

覆盖依赖文件

需要使用root用户登录,所以要先开启群晖DSM的root权限

先SSH连接到DSM

1
2
    sudo -i
    synouser --setpw root password  //这里的password为root账户密码可自定义

再使用 WinSCP 用root用户登录到群晖,将上面解压出来的依赖文件上传覆盖到 /lib 目录下,再到SSH这边修改文件权限,避免出现权限错误导致依旧无法启动。

注意:这边文件名要跟你有问题的依赖文件对应,不是直接复制我的

1
2
3
    chmod 644 /lib/libsynopkg.so.1
    chmod 644 /lib/libsynoshare.so.6
    chmod 644 /lib/libsynostoragemgmt.so

https://img.pulnd.com/post/nas-defunct-trouble/NKDnCF.png

使用diff命令对比文件

这个步骤不懂可以跳过,如果后面没解决再回头来操作这个也可以

由于/lib 目录下还有大量的其他动态链接库,且之间相互关联,如果只是拿正常的文件替换该文件,问题可能还是无法得到根本解决。在覆盖后如果不放心,可以拿镜像包内的整个目录与DSM上的目录做一个比对。

比对文件差异的软件很多,这里我们以Linux/MacOS下默认提供的diff为例进行讲解。

在这里,我将解压出来的hda1目录拷贝到了DSM上的/mnt/image,然后执行以下命令:

1
    diff -c -a -b -B -r -q /mnt/image/hda1/lib /lib

执行后,该命令输出了以下结果(显示仅供参考):

1
2
    Files lib/libsynoshare.so.6 and lib/libsynoshare.so.6 differ
    Files lib/libsynopkg.so.1 and lib/libsynopkg.so.1 differ

说明/lib/libsynoshare.so.6还有/lib/libsynopkg.so.1文件出现了损坏。

验证是否成功

SSH里执行sudo reboot进行重启,再尝试访问web界面,如果还是不行可以再次查看synoscgi.log日志文件,根据时间看有什么新的记录。

其他问题

执行指令synoscgi

1
2
    ps -ef | grep synoscgi
    ps -ef | grep defunct

可以显示 synoscgi 及子进程运行情况和问题进程,根据显示的具体情况再去查找解决方案。

参考文章

[1]. 黑群晖 “抱歉,您所指定的页面不存在” 问题解决

[2]. 逐步深入解决DS3617xs黑群晖提示『您所指定的页面不存在』的故障

[3]. 群晖DSM开启ROOT权限及WinSCP使用ROOT登录