用过Unraid的用户应该都知道,他自己本身就是一个Nas系统,Docker支持的也都比较好,只是Unraid自带的市场软件太零散,没有群晖好,且完全没有手机APP应用。例如相片备份,安卓和IOS手机都装群晖的Photos 即可。文件浏览也可以装群晖的手机 DS File ,很方便。个人主要是想用群晖的多个手机APP,比较好用,还免费。 个人也比较喜欢Unraid的硬盘休眠功能,因为大多数时候只有缓存盘在运转,机械盘极少运行。家用主要使用了Unraid硬盘休眠+群晖的手机APP。
人脸识别分析
关于群晖7.0里面的Photos人脸识别功能,有些朋友能用,有些朋友不能用。据研究,里面的关键原因就是调用显卡内GPU芯片的计算功能,跟洗白没关系。也跟Redpill的引导没关系,是跟CPU,NAS型号还有显卡有关。
群晖的人脸识别是用的OpenCV库的DNN的神经网络,需CPU和GPU芯片的计算能力。
为什么有些朋友能用,有些不能用?
目前Redpill只支持918+和DS3615xs,群晖的软件Photos组件会先查询当前的CPU和NAS型号,例如查到是918+,官方是Appololake的J3455的CPU,就会去调用内置HD500显卡来进行人脸识别。这个都要看cv库能不能兼容,CPU和GPU任何一个不兼容就无法识别了。但是如果是DS3615xs,是一个i3-4130的CPU,2013年的老CPU,显卡是8代显卡,这个显卡太老而不被cv库支持。所以cv库不会去调用GPU代码,直接用CPU来人脸识别,所以成功率比918+高。
免责声明:以下内容都是推测实验,如有雷同,纯属巧合,如有错误,那因为是猜的。建议各位看看就好,如果有文件丢失损坏,与我无关,请做好备份,这里只是实验和猜测。
推测1:Unraid, PVE等建立的918+虚拟机群晖的人脸识别功能,把GPU直通弄好就行。因为用虚拟机建群晖,CPU都会虚拟成J3455,只要管GPU能兼容就行了。
推测2:在物理机上直接装918+,如果CPU跟J3455相差甚远,即使有GPU,也可能代码走的分支和建立的神经网络模型不匹配而无法使用。所以物理机最好用J3455的CPU,跟真实918+一样,那绝对支持。其他的CPU和核显得看朋友们的实验结果。可能主要支持的还是Intel带核显的CPU。
推测3:建立的DS3615xs虚拟机随便就有人脸识别,不管GPU直通不直通。那是因为DS3615xs在虚拟机里面虚拟了i3的老CPU,cv库不会调用GPU,装DS3615xs的虚拟机应该都会有人脸识别。
推测4:在物理机上直接装DS3615xs,大概率也有人脸识别。没有那就是差异太大,代码和驱动没办法兼容了。
综上:用虚拟机建群晖,CPU都不是问题,918+只要看GPU,如果是DS3615xs,那都不是问题。用物理机就可能情况比较复杂,能不能用需要看实际测试结果。
原因分析差不多了,那对症下药,咱们在J4125软路由上建立的918+虚拟机也能有人脸识别功能,只要直通GPU显卡即可。
用DS3615xs更简单,只要虚拟机能装成功,那肯定有人脸识别。
DS918+是定位家用(有硬件解码功能,硬盘组合默认用SHR方式)
DS3615xs的定位是企业用(没有硬解功能只能软解,硬盘组合默认用RAID方式)
建立DS918+虚拟机
1. 准备最新的RedPill的Loader。
2. 准备最新的群晖918+安装镜像pat文件。
3. Unraid的缓存盘建议够大,我已经换成1T的固态硬盘了。
引导及相关文件下载地址:点我下载 提取码: 9i0i
下面介绍的是推荐做法,建议洗白后支持VideoStudio等转码功能,直通GPU后支持人脸识别功能。
关于洗白用的序列号SN和网卡MAC地址,可以先建立一个群晖的虚拟机,再在群晖里面的VMM再建一个同型号的虚拟机。有一个免费的VirtualDSM可以用。可以生成虚拟的,可以洗白的SN和MAC出来。拿来用即可。
准备好了,开始建虚拟机。将redpill-DS918+_7.0.1-42218.img文件上传到Unraid的isos共享目录下,然后按下图建Linux虚拟机,用isos内的img引导文件安装:
上面关键的选择是选i440fx-5.1, Bios选SeaBIOS,USB控制器选3.0 (qemu XHCI). 主要虚拟网盘选redpill驱动文件,USB类型。 第二虚拟盘建一个SATA的虚拟硬盘或直通硬盘。
这里先选用VNC虚拟显卡建立运行虚拟机,装好系统后再直通显卡,以免出未知问题,当然如果熟练后,可以直接直通显卡装虚拟机。网卡选virtio-net或virtio都行。建议virtio-net,比较稳定。
设置好后,运行虚拟机安装即可。等IP连上路由器后,用网页安装7.0.1版本的pat文件即可。
安装成功之后,进行一些硬盘初始配置后,可以先装好Synology Photos套件,然后关闭虚拟机。准备直通显卡。先将显卡驱动vbios_gvt_uefi.rom上传到Unraid的共享isos目录。
修改虚拟机配置,将VNC显卡改成物理显卡,并且BIOS选择上传的rom,这个rom很关键,否则有可能改成物理显卡后,人脸识别就会使群晖系统崩溃。
再次启动虚拟机。这时可以用Photos上传一些图片试试人脸识别功能了。 这个人脸识别很慢的,传几张图片后可能要等几分钟才能识别出来。
不需要工具,直接用命令方式洗白方法
下面记录一些洗白步骤,不用下载一些工具软件,纯手动输入命令即可:
我的群晖虚拟机IP是192.168.0.188, 用户是jh123
1. 在群晖控制面板里面打开SSH功能。
2. Windows 10内打开命令行,输入 ssh jh123@192.168.0.188
3. 第一次连接,需要输入yes,同意ssh连接。然后输入密码登录群晖ssh,输入命令 sudo -i ,再次输入密码进入管理员模式。
4. 一条条输入如下命令,或者拷贝粘贴到Windows命令行里面一条条运行。
sudo -i
cd ..
mkdir -p /tmp/boot
cd /dev
mount -t vfat synoboot1 /tmp/boot/
cd /tmp/boot
ls
cd boot
cd grub
vi grub.cfg
5. 这时会打开配置文件。按向下方向键找到 sn和mac, 到了linux /zImage那里按向右方向键移动修改,这一句很长,主要靠向左向右方向键移动。 这里用的DS3615xs的图片,一样的。注意这里修改的是USB Verbose启动项,除非用SATA启动, 那就修改下面的SATA项。
6. 输入 i 进入修改模式。 修改mac1后为洗白的mac地址,sn后面为序列号。
7. 修改完毕后, 按 ESC 键退出修改模式, 输入 :wq 保存修改即可。
8. 输入reboot重启群晖。重启后因为用了新的mac地址,IP可能会变成新IP。需要重新查看并登录。
验证洗白
继续用SSH命令行登录群晖。
输入如下命令
sudo -i
cat /usr/syno/etc/codec/activation.conf
如果没有这个文件,那需要安装VideoStation, 并且运行
synocodectool --activate_codec h264_enc --pkgname videostation
或者不用装VideoStation,直接用photos验证。
synocodectool --activate_codec h264_dec --pkgname photos
再次运行cat /usr/syno/etc/codec/activation.conf 命令。如果出现类似如下内容, success后面是true,即表示洗白成功。VideoStation就有转码功能了。
建立DS3615xs虚拟机
1. 准备最新的RedPill的Loader。
2. 准备最新的群晖DS3615xs安装镜像pat
下载地址:点我下载 提取码: 9i0i
这里说下2nd虚拟磁盘的类型,选的qcow2,这个类型表示虚拟硬盘占的空间是动态逐渐增加的,刚开始可能只有几G。如果选raw,则是一次性占用500G硬盘。
其他的配置都跟918+差不多一样的。直通的那个USB网卡可以无视。DS3615xs不用显卡直通,一直用VNC虚拟显卡即可。
装好群晖后,洗白的方式一样。
如果没有使用VideoStation的需求,只有用Synology Photos照片备份的需求,建议装DS3615xs就好了。918+要多占一个显卡。如果显卡无法驱动,还需要使用下面的魔改文件。魔改的文件在Photos升级版本后还得再次修改,比较麻烦。
我这里用的Unraid 6.9.1版本,如果是6.9.2版本,有个intel-GVT-g的插件,可以将物理显卡共享虚拟给多个虚拟机用。我这里没测试,有兴趣的朋友可以玩玩。 我觉得6.9.1比6.9.2版本稳定,所以就降级了。
魔改人脸识别补丁
如果就想用人脸识别,不管是虚拟机还是物理机,有核显还是没有,是Intel还是AMD,是918+还是DS3615xs。 可以使用以下补丁解决。点些查看文章