2024-07-12 14:42:10    1544    0    0

声明:本文仅供技术学习测试使用,转载请注明出处,不得用于任何商业行为

前期准备

1. 安装 AME 并激活

2. Patch synocodectool

脚本来自:https://github.com/wirgen/synocodectool-patch

执行下面的脚本:

  1. #!/bin/bash
  2. wget https://raw.githubusercontent.com/wirgen/synocodectool-patch/master/patch.sh
  3. chmod +x patch.sh
  4. ./patch.sh -p

执行输出如下,这里需要输入:2,然后按回车

  1. Detected DSM version: 7.2 64570-1
  2. Patch for DSM Version (7.2 64570-1) AVAILABLE!
  3. Available binaries to patch/restore:
  4. 1) /usr/syno/bin/synocodectool
  5. 2) /volume1/@appstore/VideoStation/bin/synocodectool
  6. 3) /volume1/@appstore/CodecPack/bin/synocodectool
  7. 4) Quit
  8. Please choose which binary you want to patch/restore:

最终输出如下:

  1. Detected DSM version: 7.2 64570-1
  2. Patch for DSM Version (7.2 64570-1) AVAILABLE!
  3. Available binaries to patch/restore:
  4. 1) /usr/syno/bin/synocodectool
  5. 2) /volume1/@appstore/VideoStation/bin/synocodectool
  6. 3) /volume1/@appstore/CodecPack/bin/synocodectool
  7. 4) Quit
  8. Please choose which binary you want to patch/restore:2
  9. Detected valid synocodectool. Creating backup..
  10. Patching...
  11. Patche
2023-12-24 06:02:54    6343    1    0

本文仅为研究学习驱动和测试用途,暂不提供编译好的驱动下载。

前几篇文章介绍了英特尔核显、英伟达独显在群晖下安装驱动,这次我们来研究 AMD 的显卡。

先说结论:在群晖 SA6400 上,移植 AMD 官方提供的显卡驱动是可行的,理论上这几年的 AMD 核显,包括:680M780M,同时也能支持独立显卡,对比 PCI ID 最高支持到 RX 6900XT

测试硬件

本次的测试硬件是找公司内安全大佬借来的,型号为 MOREFINE M600(R9-6900HX)(https://morefine.com/products/morefine-m600-mini-pc-amd-6900hx-6800u-6600u),群晖型号选择 SA6400,懂得都懂。

配置方面不再赘述了,可以点击上面链接查看,主角是 AMD R9-6900HX 的核显:680M

PVE 环境准备

1. 更新 grub 配置

本次测试基于 PVE 8.1.3,系统安装从 NVMe 盘上,由于某些原因,需要在 /etc/default/grub 里设置:

  1. GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on nvme_core.default_ps_max_latency_us=0 pcie_aspm=off"

update-grub 后方才稳定使用。

2. 禁用默认的驱动

  1. echo "blacklist amdgpu" >> /etc/modprobe.d/blacklist.conf
  2. echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf

3. 导出 vbios

下载 vbios.c 编译并执行

  1. wget https://cdn.jim.plus/synology/scripts/vbios.c
  2. gcc vbios.c -o vbios
  3. ./vbios
  4. cp vbios_*.bin /usr/share/kvm/

4. 新建虚拟机

创建好测试的虚拟机后,设置直通核显,并编辑 /etc/pve/qemu-server/10*.conf

  1. hostpci0: 000000.0,pcie=1,romfile=vbios_1
2023-10-30 13:15:49    4029    0    0

16 系列到 40 系列驱动基于英伟达开源驱动编译:https://github.com/NVIDIA/open-gpu-kernel-modules.git,10 系列及以下基于同版本号的英伟达官方闭源驱动编译。

如果出现文件下载不了或者慢的问题,请自行解决

说明

驱动仅使用于 SA6400 7.2&7.2.1 系统,其他版本请勿尝试。

相关测试:https://jim.plus/blog/post/jim/12-13-gen-intel-cpu-with-synology-sa6400-and-gpu-transcode-test

安装步骤

1. 执行下面的脚本安装依赖:

如果执行 opkg 命令报错 opkg: command not found 的话,请先安装 EntWare:https://github.com/Entware/Entware/wiki/Install-on-Synology-NAS

  1. # 下载依赖,依赖的版本和驱动需要一一对应,必须下载指定版本
  2. wget https://download.nvidia.com/XFree86/Linux-x86_64/535.54.03/NVIDIA-Linux-x86_64-535.54.03-no-compat32.run
  3. # 准备必要的依赖项
  4. opkg update
  5. opkg install ldconfig
  6. cp -l /bin/kmod /bin/depmod
  7. # 默认的 /tmp 是没有 exec 权限的,这里重新挂载一下
  8. mount -o remount,exec /tmp
  9. sh NVIDIA-Linux-x86_64-535.54.03-no-compat32.run \
  10. --no-kernel-modules \
  11. --no-dkms \
  12. --no-systemd \
  13. --no-questions

英伟达的依赖安装会有询问,一路按回车即可

2. 下载独显驱动:

根据自己的显卡型号选择不同的驱动包,都是基于 NVIDIA-Linux-x86_64-535.54.03-no-compat32.run 编译的驱动。

10 系列的驱动当前仅仅是编译通过,没有实体显卡测试过,有问题请群里反馈

  • 10 系列或者
2023-07-16 06:42:44    14744    0    0

更新记录

FLEX 电源线不匹配,3080 独显暂时没法测试,后续再更新。

去买了一个海韵 PX-1300 电源来测试

  • 2023-08-22 更新 Emby 硬解测试
  • 2023-08-21 更新 3080 12G 独显驱动安装和 Jellyfin 硬解测试
  • 2023-07-16 更新核显驱动安装与硬解测试

备注:这里测试的时候,转码的码率没有统一,有待重新测试纠正。

测试硬件

  • 主板:华硕 ProArt Z790-CREATOR WIFI
  • 板载接口:AQC 113C 10G 网卡,i226 2.5G 网卡,双口雷电 4
  • 处理器:Intel® i3 13100
  • 内存:金士顿 64G
  • 电源:全汉 FSP Flex-500G、海韵 PX-1300
  • 硬盘:SanDisk X400 256G
  • 引导 U 盘:SanDisk CZ880 128G

ASUS ProArt Z790.png

测试用到的驱动列表

驱动名称 描述
atlantic AQC 网卡驱动
amdgpu AMD 显卡驱动
igc 英特尔 I225、I226 网卡驱动
i915 英特尔核显驱动
iptable 系列 netfilter 相关驱动
nvidia 系列 英伟达显卡驱动
thunderbolt 雷电设备驱动
vfio 系列 硬件直通相关驱动

安装核显驱动

这里的驱动编译自:https://github.com/intel/linux-intel-lts,在此感谢英特尔为 Linux 5.10 内核移植了 12 代核显驱动,本文中使用的驱动是从 Linux 5.15 内核移植了 13&14 代核显驱动到 Linux 5.10 内核。

引导中的核显驱动是主线 Linux 5.10 内核自带的,支持到 11 代,这里要更新到支持 12&13&14 代的

2023-04-12 23:51:37    10863    0    0

目标:纯 NVMe 固态的群晖

已知的群晖系统中,M.2 NVMe 只能做为存储池,并且不支持首次安装系统作为存储池,同时想使用 M.2 存储池的话,还得是特殊机型,目前来说,最后一点非常好解,可选的方案有:

  • 手动创建 M2 存储池,链接:Github
  • 手动修改 M2 盘的属性后,存储管理页面创建
  • Patch libhwcontrol.so 后,存储管理页面创建

那么目前来说,纯 NVMe 固态的群晖缺少的一环是:安装系统的时候,直接安装到 M.2 NVMe 固态,本文将粗略的讲解如何实现这一点的。

过程探索

虚拟群晖额外的环境准备如下:

  • 创建虚拟 NVMe SSD 盘(qemu-img create -f raw nvme0.raw 64G
  • 虚拟机添加 NVMe 参数(-drive file=nvme0.raw,if=none,format=raw,id=nvme0 -device nvme,drive=nvme0,serial=nvme0

本文测试环境添加了两块虚拟盘

1. 安装页面

按照上面的操作,仅添加虚拟的 NVMe SSD 盘的时候,安装页面会显示如下图的找不到盘的提示,我们这里看一下截图右边的网络请求,查看所有的异步请求,发现倒数第二个里有硬盘相关的信息,我们就从这里查看下去。

sa6400-nvme-install-no-disk.png

2. 进 ramdisk

查看 get_state.cgi 输出

get_state.cgi 是 nginx 代理的 cgi 程序,这个文件在 ramdisk 里其实上是一个 shell 脚本,我们先看一下输出,第 4 行直接说了没有磁盘:

  1. {
  2. "success": true,
  3. "data": {
  4. "has_disk": false,
  5. "dsinfo": {
  6. "product": "Synology NAS",
  7. "model": "SA6400",
  8. "internet_ok": "false",
  9. "internet_install_ok": false,
  10. "internet_migrate_ok": true,
  11. "internet_reinstall_ok": true,
  12. "internet_install_ve
2023-02-14 04:20:10    68608    0    0

未经授权,禁止转载
授权转发如下:
Tank:https://www.mi-d.cn/4666
老高:https://www.bilibili.com/video/BV1eT411D7zb
网站评论使用 Disqus,需要评论请科学上网。

置顶信息

本文仅提供基于 SA6400 7.1 的英特尔 11 代核显驱动安装教程,如存在无法硬解等情况,可以发送内核日志以及套件或者容器日志,以供分析排查问题。

目前已经有其他大佬开源了基于 intel-gpu-i915-backports 的核显驱动:https://xpenology.com/forum/topic/69865-i915-driver-for-sa6400/,喜欢自己动手的朋友可以按照文章自行尝试安装核显驱动,如果有安装疑问或者不可使用等情况,也可以捐赠进群交流,使用本博客的驱动。

本博客提供的核显驱动是基于 linux-intel-lts 构建。捐赠群有共享最新的 SA6400 7.2 相关的直通卡、优化后的核显驱动,欢迎捐赠(100 RMB+)进群,二维码见文章末尾。

当前捐赠群友获取支持的驱动特性和功能:

  • 支持 12&13&14 代核显硬解、SR-IOV
  • 支持常见的 LSI 2308&3008 直通卡(优化已贡献给了 RR 引导)
  • 支持英特尔处理器虚拟化
  • 支持 ESXi 直接引导群晖(部分优化已贡献给了 RR 引导)
  • 支持 NVMe&U2 纯固态启动
  • 支持绿联 DX4600 风扇自定义转速

导言

常见的群晖机器,例如 DS920+DS918+,系统内核一直是 4.4 的,而这个内核自带的核显驱动最高支持到 9 代,魔改后可以支持 10 代,这是极限了,11 代以后的核显一直无解。

去年 10 月,曙光出现了,群晖更新了 SA6400 的工具链(https://archive.synology.com/download/ToolChain/toolchain/7.1-42661)和安装包(https://archive.synology.com/download/Os/DSM/7.1.1-42962),从工具链来看,支持的系统为:AMD x86 Linux Linux 5.10.55 (epyc7002) ,是新的 5.10 内核,而 5

2022-12-07 12:11:41    1395    0    0

测试设备

  • 硬酷 R1 N6005 16G
    r1

  • 威联通 QSW-M2116P
    qsw

设置 Bond

  • 创建新的 Bond

1.png

  • 添加所有网卡到 Slaves
  • 设置本地 IP 和网关
  • 设置 LACP
  • 设置 Hash 规则:layer3+4

2.png

设置交换机

设置后重启 R1,保证 LACP 生效

3.png

R1 上 Bond 网卡信息

ethtool.png

iperf3 测试

R1 接收 16 线程稳定跑满万兆,R1 发送 32 线程稳定跑满万兆

  • R1 接收 16 线程,CPU 20%

4.png

  • R1 发送 32 线程,CPU 10%

5.png

总结

这里仅仅是为了测试 R1 万兆可行性,日常要打满万兆,需要对应的应用支持多线程,例如文件同步使用 rcloneiscsi 开启多径传输等等,单线程肯定最高只有 2.5G 的。

2022-11-28 02:37:00    1787    0    0

1. 使用 Charles 获取 API Token

随便用客户端创建个 Docker 容器,查看 Token:

  1. 'http://192.168.3.125:9999/containers/create?name=hack&ugreen_nas_model=docker&api_token=xxxxGJkMTIyMzM0Y2YxYTBlZTJmZGI2MDhlODE0YjM4YzhiODhkYg%3D%3D'

Token 示例:

  1. xxxxGJkMTIyMzM0Y2YxYTBlZTJmZGI2MDhlODE0YjM4YzhiODhkYg%3D%3D

2. 创建 Hack 容器

创建容器配置 container.json

container.json 文件内容如下:

  1. {
  2. "_query": {
  3. "name": "hack"
  4. },
  5. "name": "hack",
  6. "AttachStdout": false,
  7. "AttachStderr": false,
  8. "ExposedPorts": {},
  9. "Tty": true,
  10. "OpenStdin": true,
  11. "Env": [
  12. "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
  13. ],
  14. "Cmd": [
  15. "/bin/sh"
  16. ],
  17. "Healthcheck": {},
  18. "Image": "alpine:latest",
  19. "Volumes": null,
  20. "Entrypoint": null,
  21. "OnBuild": null,
  22. "Labels": null,
  23. "HostConfig": {
  24. "PidMode": "host",
  25. "Privileged": true,
  26. "Devices": [
  27. {
  28. "CgroupPermissions": "mrw",
  29. "PathInContainer": "/dev/dri/renderD128",
  30. "PathOnHost": "/dev/dri/renderD128"
  31. },
  32. {
  33. "CgroupPermissions": "
2022-02-23 03:16:55    630    0    0
> https://docs.docker.com/registry/spec/auth/token/ ## 分步骤 ### 1. 获取认证地址 ``` curl -i -I https://harbor/v2/library/alpine/manifests/latest ``` ``` HTTP/1.1 401 Unauthorized Content-Length: 152 Con
2021-12-22 01:51:22    512    0    0
# Linux ## Update UEFI ``` # find and fix Windows update-grub2 ``` ## Add UEFI ⌘ ``` # efibootmgr -c -L "