1. 服务器/VPS/主机用户Telegram电报群: https://t.me/openos
    黑群晖 Synology Telegram电报群: https://t.me/nasfan
    排除公告

VMware黑群解决挂载NFS后PhotoStation和VideoStation无法索引的问题

本帖由 nobita2019-01-24 发布。版面名称:群晖 Synology DSM

  1. qmsn014030

    qmsn014030 New Member

    注册:
    2021-03-10
    帖子:
    4
    有人还在研究nfs挂载问题吗?
     
  2. qmsn014030

    qmsn014030 New Member

    注册:
    2021-03-10
    帖子:
    4
    确实无法重启和关机 应该是挂载目录无法卸载导致
     
  3. mysteryhyw

    mysteryhyw New Member

    注册:
    2020-01-12
    帖子:
    7
    我现在也很想知道怎么索引已经挂载的nfs共享
     
  4. DQPanda

    DQPanda New Member

    注册:
    2022-02-02
    帖子:
    2
    楼主想不到2022年了还有人在用这个吧,真的非常好用,赶快出update吧~~~求你了
     
  5. Cercky

    Cercky New Member

    注册:
    2022-08-23
    帖子:
    4
    出处

    仅转载!!!!!!!!!!!!!!!!!!!!!1


    http://www.gebi1.com/thread-300043-1-1.html











    9、制作补丁
    DSM6以上没有任何方法设置支持NFS索引,因为在系统代码里已经把这个限制死了,系统如果发现路径是NFS之类的远程路径,就直接拒绝建立索引,所以只能通过非常规手段来解决这个问题,通过逆向分析绕过这部分代码。
    另外,如果DSM运行在虚拟机里,系统无法读取硬盘的SMART信息,就会丧心病狂的向/var/log/messages输出日志,最终可能会塞爆磁盘空间!!所以我们也需要绕过这部分代码。
    经过逆向分析,只需要修改如下函数的返回值即可
    IndexIsPathRemoteMount return 0LL;
    IndexIsPathSupportEAWrite return 1LL;
    SYNOFSIsRemoteFS return edi == 6;
    SYNOGetFSType return 2LL;
    SmartDataRead return -1;
    SYNODiskTemperatureGet return -1;
    SYNODiskExceedUncThrCache return -1;
    这些函数分别位于/lib/libsynoindex.so、/lib/libsynosdk.so.6和/lib/libhwcontrol.so.1这三个文件中,至于如何提取这三个文件,方法比较简单,这里不再赘述。

    使用IDA对这些函数进行修改
    注意:此示例只针对ds918+的DSM6.2.3-25426版本。其他版本方法一样,但是反汇编的地址可能有所不同!!!
    载入libsynoindex.so,点击Exports页,找到IndexIsPathRemoteMount函数


    双击上面找到的IndexIsPathRemoteMount函数,进入到汇编代码,并把光标定位到xor esi, esi这一行


    选择菜单Edit->Keypatch->Patcher


    选择菜单后将弹出Patcher窗口,把xor esi, esi修改为xor eax, eax,然后点击Patch按钮


    Patch后如下图所示


    接着把mov rbp,rdi修改为jmp 0xAAA2,然后点击Patch按钮


    Patch后如下图所示


    找到IndexIsPathSupportEAWrite函数,并把光标定位到xor esi, esi这一行


    按照前面说的方法,Patch成下面这样


    选择菜单Edit->Patchprogram->Apply patches to input file...


    点击OK保存修改后的文件


    载入libsynosdk.so.6,找到SYNOFSIsRemoteFS,定位到cmp edi, 0Eh这一行


    按前面的方法进行Patch,Patch成如图所示


    找到SYNOGetFSType函数,把光标定位到test rdi, rdi这一行


    Patch后


    选择菜单Edit->Patchprogram->Apply patches to input file...,打开Apply patches to input file窗口,点击OK保存修改后的文件


    载入libhwcontrol.so.1文件,找到SmartDataRead函数,并把光标定位到test rdi, rdi这一行


    Patch后


    找到SYNODiskTemperatureGet函数,并把光标定位到jz short loc_3964D


    Patch后


    找到SYNODiskExceedUncThrCache函数,并把光标定位到mov [rsp+0B8h+var_A8], 0这一行


    Patch后


    保存修改后的文件


    至此总共获得3个Patch后的补丁文件,然后按前面所说的方法打补丁即可



    写在最后
    DSM6系统没有提供任何设置选项开启NFS索引支持,反而在代码里刻意屏蔽了对远程目录的索引,所以只能使用非常规手段来解决这个问题。本文使用的方法改变了DSM系统的部分行为,虽然暂时没发现有什么问题,但并不排除可能会引起不可预料的问题发生!!!