UNRAID 6.11 安装完美的黑群晖 DSM7.X(虚拟化核显、Nvme 补丁等)
友情提示:家有老婆孩子者、上班工作忙者、有房贷车贷者,慎入尝试。可以先收藏,有生之年没准有机会尝试。如果确定要尝试,耐心跟着步骤看完,有很多坑我帮你踩完了,可以留言互相讨论。
安装了 UNRAID 之后,都说虚拟机安装黑群晖 DSM7.X 系列会有很多 BUG,比如网卡不识别等,所以一开始我没打算安装黑群晖,家里还有台蜗牛星际A 款已经稳定工作 3 年多了,还是 DSM6.2.3。
下载 DSM7.X 引导
后来 UNRAID 当做数据存储中心,别的没太多问题,主要是各种服务需要自己配置安装,比如 webdav,比如 Rsync,又没有像 cloudsync 这种原生的数据同步备份工具,都需要自己装 docker 配置,比如 Resilio Sync 等,让我缺失一点安全感。所以我打算在QSRL 这个 10 代平台的基础上,用 UNRAID 尝试安装双万兆网卡的黑群晖,试试是否成功。主板自带的 2.5G 网卡和 SSD 硬盘就留给 UNRAID 了,本身我最喜欢的还是 UNRAID 上的 docker 和虚拟机,这是 UNRAID 的亮点。
首先感谢 GXNAS 的播客,网上搜 GXNAS,置顶可以看到引导文件。根据习惯还是下了DS918-7.X 的引导文件,里面写了支持 Intel 1G/10G 主流网卡,我主板上安装的 INTEL X540T2 双 10G 网卡也许就能兼容。
这个引导文件是给物理机准备的,如果是 UNRAID 虚拟机安装,那么第 6 点 DiskIdxMap=00 SataPortMap=1 SasIdxMap=0 这 3 个参数都必须删除,所以下载镜像后我们要去修改引导文件里的 grub.cfg文件。
本来用 DiskGenius 就可以去修改文件并复制回去覆盖,但是现在复制回去需要 DiskGenius 的会员,也就是 200 元起步,以前我记得不用的,所以我换了一个软件 PassMark OSFMount 一样可以实现,点击下面装载新的。
点击第一行右边 3 个点,装载 img 格式的 DS918 镜像文件,点击下一步。
这个镜像里有 3 个分区,其实是选择分区 0 就可以,如果不知道选哪个,就点那个蓝色的全选按钮,全部装载吧,点下一步。
去掉只读驱动器选项,因为涉及到要修改 grub.cfg 文件,点击装载。
打开我的电脑就会发现多了一个磁盘,找到 grub.cfg 文件,用写字板打开。
滑到下面,找到 DiskIdxMap=00 SataPortMap=1 SasIdxMap=0 这 3 个参数,全部删除,这个目的是解决群晖安装找不到硬盘的问题。
然后因为我们是虚拟机安装,不是物理机的 U 盘安装,所以半洗白不需要修改 pid、uid,只需要修改 sn、mac 为群晖认可的格式,sn 和 mac 的来源就自己解决了,某宝或者 DSM 里套娃装 DSM 获取半洗白的 sn、mac。如果实在没有就不去管了,不影响安装DSM 使用。这个半洗白的目的是解决 photos 里的视频缩略图可以显示,以及视频播放可以转码的问题。
保存一下grub.cfg文件,然后回到 OSFMount 里卸载并退出,这样我们就得到了一个修改好的适合 UNRAID 虚拟机安装的半洗白群晖镜像。
UNRAID 设置
有两块 18T 硬盘我打算都直通给黑群晖,之前我在 UNRAID 里已经用过了这两块硬盘,所以要把 UNRAID 里的共享文件夹删掉,很多人都不知道在哪,点进共享文件夹,在共享设置下面有个不起眼的删除框,勾选后点击删除。
注意共享文件夹为空后才会出现删除的选项,所以要先清空数据。
将阵列停止后,把磁盘 2 和磁盘 3 都选为无设备,这个时候阵列会提示缺失硬盘无法启动。
在工具-新配置这里,勾选所有的内容,这样已有的数据不会被影响。然后勾选是的,再点应用。可以去启动阵列了。
然后到工具-系统设备里直通硬盘,2 块 512G 的京造硬盘可以直接勾选,18T 的硬盘和 480G 的固态硬盘都属于 group4,480G 的 SSD 被使用了就没办法勾选了,等会手动直通 18T 硬盘。
还有 X540T2 的双 10G 网卡需要直通,因为之前在网络设置里和 2.5G 主板网口做了桥接,当交换机用,现在要解除桥接后才能直通。在设置-网络里第一个绑定成员里,取消 eth1、eth2 的勾选框,点击应用。
回到刚才的系统设备里,X540T2 就可以勾选直通了,一次勾选 2 个是联动的,反正 2 个网口都给黑群晖吧。点击下面的VFIO 按钮后,重启 UNRAID。
点击终端,输入
ls /dev/disk/by-id
查看尚未分配给阵列的硬盘 ID,如
ata-WUH721818ALE6L4_3GG3AUSE,记住这个 ID,在创建群晖虚拟机的硬盘位加上/dev/disk/by-id/的前缀,如下:/dev/disk/by-id/ata-WUH721818ALE6L4_3GG3AUSE
/dev/disk/by-id/ata-WUH721818ALE6L4_3GGUMJTE
把黑群晖的引导放在 domains 文件夹里,建议把驱动文件里的中文名字都删掉,截图里忘记删了,到此前期准备工作结束。
正式安装虚拟机黑群晖
在虚拟机-添加虚拟机这里安装。
点击小企鹅 Linux 图标。
配置按图来填写,CPU 我给了 4 个核心估计够了,32G 的内存分 8G 给黑群晖,机器选 Q35,BIOS 是 OVMF,USB 控制器为 3.0(qemu XHCI)。
第一个手动磁盘选择引导文件,下方总线选 USB,然后点击左侧绿色小加号,2nd 和 3nd 磁盘就是添加 18T 的磁盘,手动输入刚才准备的路径,不同的磁盘名称不一样。
/dev/disk/by-id/ata-WUH721818ALE6L4_3GG3AUSE
显卡默认是虚拟的,VNC 启动。
勾选之前直通的 2 个 X540T2 设备,另外两个 shenzhen 开头的估计就是京造的 2 个 NVME 固态硬盘,本来也是深圳出品,还有 USB 设备其实也可以直通,但是主板背后那么多 USB,最好插一个 USB 设备来识别,不过这里不勾选,后期也有办法给虚拟机使用 USB 设备。
这里我们不勾选创建后驱动虚拟机,因为要修改一些参数,来实现将核显直通给虚拟机的群晖使用,先点击创建。
给 DS918 添加虚拟化核显
这一段教程全部来自于 B 站的乌客wuke的视频,感谢他的分享,我在这里总结一下图文步骤,方便大家查看。
在 UNRAID-应用,搜索 intel-gvt-g 插件,下载安装,这个插件可以将核显直通给虚拟机,是动态分布的,也就是说 UNRAID 本身也还在用这个核显,emby 还能解码。
前提条件,主板上显卡设置 iGPU 为主要显卡,保持激活,可以在 HDMI 接口插上 HDMI 线,并分配最大预显存,大部分是分配 1G,我的主板显示 512M。UNRAID 为 6.9.2 以上。
安装好了后,在 UNRAID-插件里找到 intel-gvt-g,点击。
看到这个页面别慌张,重启一下 UNRAID。
重新打开插件,可以看到核显可以选择了,选择一个虚拟机就是 DS918,前面的模式选择第一个,点击 ASSGUB VM 添加。
回到虚拟机,点击企鹅图标,点击编辑。
右上角将表单视图转换为 xml 代码模式。
滑到最下面将 bus 和 slot 两个参数改为 0x00 0x02,作用是将核显调用到正确的位置。
然后是删除代码,看图中是从 controller 的 pcie-root 这一行开始,到 bridige 上面的 </controller> 结束,这一段全部删掉,目的是为了去掉其他总线 0 设备 2的设备,避免位置冲突,删除后点击更新。
回到虚拟机窗口,点击 DS918 的图标,点击开始。
看到 DS918 状态变成已启动后,点击图标,点击 VNC 可以看一下是否正常。
弹出的 VNC 页面可以看到自动加载了,正在安装。
通过
https://finds.synology.com/ 可以进行查找安装,也可以下载群晖助手,耐心等一会就看到了。勾选协议下一步,一直下一步。
耐心等待加载,可以看到安装按钮,点击安装。
这个版本的引导文件支持在线安装,所以我选择第一个,也可以自己下载 pat 文件进行手动安装。
这里就识别到硬盘 4 和硬盘 5 了,两块 18T 硬盘,如果找不到硬盘的,记得回头看之前 3 个参数有没有在 grub.cfg 里删除。
开始等待安装,如果提示下载网络失败,想一想自己是不是在路由器里开了什么代理,关闭。
成功到达 DSM7.1 的页面。
给DS918 取个名字,设置账号和密码,现在密码都变复杂了,要大小写了,也是为了安全。
选择更新模式,为了保险,我选择手动安装。
半洗白和黑是没有 Synology 账户的,只有正版和全洗白才有,这里我就选择跳过。
不勾选,直接选择提交。
至此黑群晖 DSM7.X 就安装完毕了。
我们来看一下核显是不是成功加载了,打开控制面板-终端机和 SNMP,启动 SSH。
mac 上通过终端来访问,Windows 可以用 putty,输入命令,id 是群晖的登录名。
ssh id@192.168.199.15
输入密码,是看不见的,回车。
继续输入
sudo -i
ls /dev/dri
如果显示 card0 renderD128 就代表核显成功了,大部分情况都是如此,但是我这里没显示,那就是失败了,原因是我是 QSRL,10 代 CPU,继续查找原因。
根据 GXNAS 的分享,QSRL 是 10400,核显是 9BC8,需要继续把核显文件放到取回文件夹里。
在他的博客继续下载核显补丁。
回到电脑的 ssh 登录到群晖虚拟机,这里的目的是修改 root 账号密码,方便我们将文件上传到群晖内,普通用户权限是不能上传文件的,下面的账号密码就是登录群晖一开始的账号和密码,自己修改。
按 i 修改 sshd_config 文件里的内容如图,将#去掉,后面改 yes,修改完按 Esc,输入:wq保存退出
回到电脑的 ssh 登录到群晖虚拟机,这里的目的是修改 root 密码,方便我们将文件上传到群晖内,普通用户权限是不能上传文件的,下面的账号密码就是登录群晖一开始的账号和密码,自己修改。
synouser --setpw root 密码
reboot
重启黑群晖。
通过 WinsSCP 连接黑群晖的地址,用 root 账号登录才能传文件,密码是刚刚自己修改的密码。将 i915-9BC8.ko 改名为 i915.ko 后,替换到/usr/lib/modules 里的i915.ko 文件,注意是改名替换,我之前只是上传,导致失败,只能留一个。
这个时候再去查看,已经显示核显成功了。
不过核显成功后,我的 photos 里的人脸识别依然没有用,除此之外其他的都解决了,photos 里的视频缩略图都正常了,DS vedios 都可以正常播放解码视频,我查了一下还真有失败的情况。
GXNAS 博主也收集统计了许多人脸识别失败的情况,但是没看到 i5-10400T 的型号,我的是 QSRL,其实就是i5-10400T,也许也跟体质有关吧,又或者 ES 不显版 CPU 和正式版 CPU 还是有一定的区别,不想纠结了,大不了 CPU 解码来识别人脸。以下是 CPU 解码的代码,核显成功了就不用输入了,核显失败非要解码的话就输入吧。
mv /var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-model.so.1.0 /var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-model.so.1.0.bak
wget https://cdn.jsdelivr.net/gh/jinlife/Synology_Photos_Face_Patch@main/libsynophoto-plugin-model.so -O /var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-model.so.1.0
chmod 755 /var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-model.so.1.0
chown SynologyPhotos:SynologyPhotos /var/packages/SynologyPhotos/target/usr/lib/libsynophoto-plugin-model.so.1.0
虚拟机群晖不能正确关机
很多人遇到了群晖虚拟机点击关机,或者重启后,实际在 UNRAID 里并没有关机或者重启,并且在 UNRAID 页面下,对虚拟机进行关闭和重启也没有反应,只有点强制关闭才可以关机。
这个情况在我第一次安装虚拟机的情况也遇到了,网上介绍的办法是,下载 POWERBUTTON_6.2-0002.SPK ,在套件中心手动安装一次。因为我多次重复安装虚拟机,一直没试,同样的固件,最后一次稳定后,居然恢复正常,可以正确开关机了,所以这个方法我没测试过。
虚拟机黑群晖无法识别 Nvme 硬盘
这部分资料来自于人生观,最开始是一个韩国人的博客解决了,经过大佬的翻译后比较好理解。
依然是通过 SSH 访问黑群晖,输入
ls /dev/nvm*
来查看Nvme 是否被黑群晖识别,可以看到2 个硬盘nvme0n1、nvme1n1。
分别输入
udevadm info /dev/nvme0n1
udevadm info /dev/nvme1n1
在图中可以看到硬件地址,比如0000:00:03.2 这种。
SSH登录群晖 并 输入命令 sudo -i 进入root 模式,输入
cp -f /usr/lib64/libsynonvme.so.1 /volume1/homes/libsynonvme.so.1
然后就到 homes 里找到libsynonvme.so.1进行修改。
用二进制编辑器 C32asm 打开,打开libsynonvme.so.1文件,显示为十六进制模式。
点击上面的搜索,或者 Ctril+F,搜索 918,因为我的固件是 918,会定位到右边看到可以修改的地方。
将 0000:00:13.1.0000:00:13.2 改为 0000:00:03.2.0000:00:03.5,后者是我的另外一个 Nvme 的位置,光标移动到要修改的位置直接输入即可,会自动覆盖之前的数字,修改后显示为红色,点击保存。
将修改好的libsynonvme.so.1 文件拷贝回homes,替换掉之前的文件。
回到 ssh 终端页面,输入
cp -f /volume1/homes/libsynonvme.so.1 /usr/lib64/libsynonvme.so.1
然后一定要输入,不能漏了
sudo chmod 0644 /usr/lib64/libsynonvme.so.1
如果出现拒绝访问,则输入sudo -i,切换成 root 模式,再输入一遍即可,重启黑群晖,重启可能会失败,多试几次,强制断电重启也可以。
重启后终于识别到 2 条 Nvme 固态硬盘。
CPU显示正确型号
这个就属于强迫症了,没显示也不影响,几乎所有的引导装好的群晖,CPU 都显示为 J3355,很老的 CPU 了。以下分享参考CSDN 的李佑辰。
下载CPU 驱动显示程序。解压后将文件上传到群晖内文件夹,我是放到 homes 里。
继续 ssh登录,输入
sudo -i
cd /volume1/homes
tar xvf ch_cpuinfo.tar
chmod 755 ch_cpuinfo
./ch_cpuinfo
弹出新的菜单,第一次运行就选 1,然后选择 y 回车。
重启群晖虚拟机后,进入控制面板-信息中心,看到 CPU 显示为正确的型号,因为我是 QSRL,所以是 ES 不显版,虚拟机也是分配的 2 核心四线程,强迫症舒服了。
USB 按需挂载模式
之前给群晖直通硬件时,没有直通 USB,其实后期也可以关闭虚拟机,编辑直通 USB 再开启,还有个办法是用插件来给虚拟机加载 USB 接口,我的主板 USB 比较多,我怕弄混了,所以我选择插件的模式。
在 UNRAID-插件里输入代码安装
https://github.com/dlandon/libvirt.hotplug.usb/raw/master/libvirt.hotplug.usb.plg
点击 Libvirt Hotplug USB 图标进入。
选择虚拟机,选择要挂载的 USB 设备,点击 ATTACH 挂载,就成功了,并且不需要重启虚拟机。
回到群晖虚拟机里,可以看到外接移动硬盘顺利挂载了,这种方式很灵活。
虚拟机群晖无法关机
搜索找到关机补丁,下载后方到 NAS 里的文件夹,比如我放在 homes 下面。
在群晖的文件管理器里找到 install.sh的位置,邮件点击属性查看,记住位置。
登录 ssh 到群晖,输入:
sudo su
cd /volume1/homes/
chmod 755 install.sh
sh install.sh
再次点击关机,群晖可以正常关机了。
一些忠告
其实在研究 NAS 的过程中并不轻松,我也没有 linux 基础和网络基础,一切都是不停的搜索,学习,耐心试错。装好了发现一个问题,解决后又出现新的问题,网页打开的页数接近 30 多个,还要在大脑里罗列问题顺序,一个个解决。我这个人又有点较真,打游戏也喜欢完美收集隐藏要素,做完分支任务。这个 NAS 也是,黑群晖不能核显其实也可以算了,反正 UNRAID 的 emby 能用解码就可以;黑群晖关机按钮失败也可以算了,反正外面可以强制关闭;Nvme 固态找不到就算了,反正万兆环境都不便宜,2.5G 也够用……但是较真让我一点点都要解决,也花了不少时间。甚至物理机群晖都比虚拟机群晖要简单点。
因此如果你在试验的过程中,出现了同样的错误,或者一直失败,不要急躁,大不了就不解决,放弃算了。我尽可能的写详细,一个是为我自己做个备忘录,时间久了我也不记得,再就是方便后来的学习者,也是网上前辈给我铺的路一样。所以NAS 如果 DIY 完美了,会很有成就感,但是如果折腾不好,也很浪费时间,这是实话,有时候将就一下也可以。UNRAID、turenas、黑裙白裙、黑威白威,没有哪个是最完美的 NAS,在我用过这么多都可以数得出许多缺点,只要自己能装成功,用起来就行了,还有许多时间可以去做点别的事。
本文系作者 @河马 原创发布在河马博客站点。未经许可,禁止转载。
暂无评论数据