Jim's Blog
Toggle navigation
Jim's Blog
Home
About Me
Archives
Tags
支持 11 代英特尔核显硬解的黑群晖 SA6400 开发历程(附测试启动镜像)
2023-02-14 04:20:10
31901
0
0
jim
> 未经授权,禁止转载 > 授权转发如下: > Tank:https://www.mi-d.cn/4666 > 老高:https://www.bilibili.com/video/BV1eT411D7zb > 网站评论使用 Disqus,需要评论请科学上网。 # 置顶信息 推荐我的黑群晖 **i225&i226** 驱动:https://github.com/jim3ma/synology-igc **捐赠群有共享最新的 SA6400 7.2 引导,欢迎捐赠,二维码见文章末尾。** 独家支持的功能: * 支持常见的 LSI 2308&3008 直通卡 * 支持英特尔处理器虚拟化 * 支持 VideoStation 硬解 * 支持 12&13 代核显硬解、SR-IOV * 支持 ESXi 直接引导黑群晖 * 支持 NVMe&U2 纯固态启动 ## 更新记录 > 群晖已经发布了 DSM 7.2,本文发布的 SA6400 引导只支持 7.1,不支持升级到 7.2,请务必不要手动升级。 * 2023-02-15: 更新 PVE 创建虚拟机需要的配置 * 2023-02-15: 更新支持的核显设备 ID 列表 * 2023-02-17: 更新 igc 驱动,支持 i226 网卡 * 2023-02-18: 更新 usb 键盘驱动 * 2023-02-18: 更新螃蟹网卡驱动 * 2023-02-20: 新增 vmware 虚拟显卡 vmwgfx 驱动,VirtIO GPU 驱动 * 2023-02-24: 更新默认配置,强制开启 SHR 模式支持 * 2023-03-06: 更新 arpl 到 1.1-beta2a,支持 NVMe SSD 缓存,可在存储页面直接添加缓存 * 2023-03-20: 修复 r8168 驱动因为 oob 被群晖自动卸载的问题 > 实测 NVMe SSD 支持添加为存储池,具体方法请自行研究 ## 已知问题 * 公开版本目前不支持 DSM 7.2。 * 目前 DSM 7.1 部分 HBA 不可用,例如:Adaptec HBA 系列,包括 HBA 1000-8i,由于群晖修改了加载硬盘的逻辑,逆向后已修复。需要 HBA 卡的,可选择 LSI 系列的卡,同时 DSM 7.1 不支持 expander(内核代码问题,加 expander 会宕机),DSM 7.2-64561 支持 expander。 * VMM 无法运行,原因是群晖官方没有编译 kvm-intel 模块。目前已经移植了 kvm-intel 模块,主要适配 9 代以后的消费级 CPU,年末公开。 * PVE + N5105 下虚拟机概率性直接退出,无明显异常 目前群友推测可能是 CPU BUG 所致,可以自行在 PVE 下安装微码补丁,参考英特尔官方文档:https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/tree/main#late-load-update,或者这里:https://blog.lucien.ink/archives/536/ * 某些网卡无法获取 IP,可能是驱动不全导致的,请自行检查 arpl 的驱动,并手动添加一下 * 部分机器因为兼容性或者性能问题,/dev/console 建立的比较晚,导致 redpill.ko 加载失败,最终导致无法找到硬盘 有发现新问题可留言,或者加 arpl 汉化群(https://github.com/wjz304/arpl-zh_CN/releases),或者捐赠后加内部群咨询均可。 # 导言 常见的群晖机器,例如 **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.10** 内核做为 LTS 版本,最高支持到英特尔 **11** 代核显,不过可惜的是由于是 **AMD** 的机器,群晖就没有开启关于核显相关的所有驱动。 # 开发工作 从上面的描述来看,想要 **11** 代核显硬解的话,就需要做到一下两步: 1. 移植 **redpill lkm**,支持 **SA6400** 的 **5.10** 内核 2. 重新编译关于所有核显相关的驱动 ## redpill-lkm5 那先解决第一步,移植 **redpill lkm**,主流的 loader 是 **popopico** 的 `TCRP` 和 **fbelavenuto** 的 `arpl`,在 xpenology 论坛(https://xpenology.com/)有讨论支持 SA6400 开发的事情,也加入了 jumkey 他们的讨论群,经过和各位大哥的共同讨论开发,新开了 **redpill lkm5** 仓库,支持了群晖的 5.10 内核,可以正常安装 SA6400。 移植的代码,主要有: * hook sys_execve,拦截群晖安装过程中的校验行为 * hook 群晖服务器电源状态获取,总是返回成功  ## 核显驱动 这一步就非常繁琐了,在固定配置的内核下,添加没有编译进去的核显驱动,就需要先手动打开所有的依赖,然后把需要固化却没有固化在内核里的代码给重新导出,核显驱动的依赖在内核里应该是最多了,编译起来非常繁琐,这里就跳过了,如果对这方面感兴趣的,可以留言,后面可以添加一下经验之谈。 移植的代码,主要涉及到: * 重写部分内核函数,补齐核显依赖的代码,安装模块时,自动替换掉原函数 * 强制导出部分内核未导出的函数,并更换名称 * 修改驱动里使用的函数名称,并重新编译各个驱动 看一下具体重新编译和移植的内核模块:  ## 支持的核显列表 理论上 11 代之前的核显默认都支持的,以下是当前支持的 11 代核显列表 | 代号 | 设备 ID | 代号 | 设备 ID | 代号 | 设备 ID | 代号 | 设备 ID | | --- | --- | --- | --- | --- | --- | --- | --- | | Jasper Lake | 4E51 | Elkhart Lake | 4541 | Tiger Lake | 9A60 | Rocket Lake | 4C80 | | Jasper Lake | 4E55 | Elkhart Lake | 4551 | Tiger Lake | 9A68 | Rocket Lake | 4C8A | | Jasper Lake | 4E57 | Elkhart Lake | 4555 | Tiger Lake | 9A70 | Rocket Lake | 4C8B | | Jasper Lake | 4E61 | Elkhart Lake | 4557 | Tiger Lake | 9A40 | Rocket Lake | 4C8C | | Jasper Lake | 4E71 | Elkhart Lake | 4571 | Tiger Lake | 9A49 | Rocket Lake | 4C90 | | | | | | Tiger Lake | 9A59 | Rocket Lake | 4C9A | | | | | | Tiger Lake | 9A78 | | | | | | | | Tiger Lake | 9AC0 | | | | | | | | Tiger Lake | 9AC9 | | | | | | | | Tiger Lake | 9AD9 | | | | | | | | Tiger Lake | 9AF8 | | | ## 启动镜像 在测试 **redpill-lkm5** 的时候就制作过测试镜像,不过为了更通用,后面重新整理并优化了一下,这里基于 **fbelavenuto** 的 `arpl` 来做启动盘,附上相关优化和变动: * 内置 SA6400 默认配置 * 内置常见的网卡驱动 * 内置虚拟机下常见的键盘驱动(用于终端控制) * 内置 USB 键盘和鼠标驱动(用于终端控制) * 升级 SA6400 到 7.1.1 Update 4 * 自动加载显卡驱动(包括 pve 里面默认的显卡) * 支持显示终端直接操作(使用 **fbelavenuto** 的 arpl-addons:console) * ~~默认开启 dbgutils,正常安装后,请自行去除后,重新构建 loader~~ * addon 中新增 shr,支持 SHR 模式 # 镜像下载与安装 ## 下载地址 > 仅供测试,不对任何系统损坏、数据丢失负责。 > 请注意官方 SA6400 是不支持 SHR 模式,本文章内的镜像通过参数,开启了 SHR 模式,实测可正常使用,具体情况请自测。官方文档显示 SHR 和 RAID 之间不支持相互迁移,真实是否支持迁移请自测。 > 推荐虚拟机直通核显测试,稳定后再尝试物理机安装。 ### 1. 镜像下载地址 所有镜像打包一起,请自行选择最新的版本测试。 下载链接见文章最后。 > * 默认终端可用,输入 root,直接回车即可操作,方便查看问题,群晖的日志基本上都在 /var/log 目录下。 > * 默认开启 dbgutils addon,此工具会复制启动日志到启动盘并开启 telnet,方便排查问题,包括:无法获取 IP,无法找到硬盘等等,成功安装后,可取消该 addon,arpl 下具体日志文件夹路径为:/mnt/p1/logs/dsm,有需要排查问题的请打包发送此文件夹下所有日志。 > * 无法找到 IP 的问题,大概率是网卡驱动的问题,默认驱动使用 https://github.com/fbelavenuto/arpl-modules/tree/main/epyc7002-5.10.55,请自行编译替换相关驱动。 ### 2. 系统下载地址 下载链接见文章最后。 ## PVE 安装步骤 注意:默认编译的 **redpill-lkm5** 没有 sata 启动盘的支持。请选择 U 盘或者模拟 U 盘启动。 模拟 U 盘的虚拟机需要的特殊配置: 1. 选择机型为 q35 2. 启用 SeaBIOS,或者选择 UEFI 后进入 BIOS 关闭安全启动 3. 选项 (Options) 下的启动顺序(Boot Order)全部取消 4. 在 `/etc/pve/qemu-server/虚拟机id.conf` 里添加下面这行(注意修改镜像路径): ``` args: -device 'nec-usb-xhci,id=usb-bus0,multifunction=on' -drive 'file=/path/to/arpl-sa6400.img,media=disk,format=raw,if=none,id=drive-disk-bootloader' -device 'usb-storage,bus=usb-bus0.0,port=1,drive=drive-disk-bootloader,id=usb-disk-bootloader,bootindex=999,removable=on' ``` ~~安装的时候,可以先不直通显卡,等正常安装好后,再关机,添加直通显卡。这样的好处是,可以虚拟机界面直接敲命令去 debug。~~ 不出意外,显卡可以正常驱动,USB 键盘也可以使用,如果都无法使用,可添加串口查看日志,参考:https://www.openos.org/threads/pve.3673/ 其他请参数 arpl 的构建步骤。 这里内置了 e1000、e1000e、igb、igc、ixgb、ixgbe、ixgbevf、r8152、r8168 驱动,如果网卡是这些驱动支持的话,进入菜单后,直接选择构建(“Build the loader”),然后启动(“Boot the loader”)即可。 相关截图: * 构建与启动   * PVE 上可直接操作,安装模式下,输入 root 后回车即可 > 仅限安装模式(Junior mode)下,root 免密登录,安装群晖系统后,请自行从 Web 页面添加用户用户命令行登录。   * 安装系统  * 系统信息  ## 核显硬解测试 之前在硬酷 R1 上测试过,相关驱动可硬解,具体安装、硬解测试可参考老高的视频:https://www.bilibili.com/video/BV1eT411D7zb # 关于 12&13 代英特尔核显和英伟达显卡 12&13 代英特尔核显目前代码已经移植完毕,N100 上测试通过,除了不可接显示器外,核显硬解测试通过,2024 年会公开,也可通过捐赠后优先获取。 英伟达显卡官方已经开源了驱动,可以自行编译(需自己移植一个内核函数),测试可以正常加载。 # 捐贈 如果你觉得此篇文章对你有帮助,可以捐助我们,以鼓励项目能持续发展,更加完善。 ## PayPal https://paypal.me/jim3ma ## 微信二维码  ## 交流群(精力有限,仅限捐赠超过 100RMB 的用户,抱歉) > 申请进群请填写捐赠时间(具体到分钟)和用户昵称,方便核实  # 附录 ## 1. 镜像下载地址 链接: https://pan.baidu.com/s/1Qz6nrsJWFXzO75LQso7ItA?pwd=3333 提取码: 3333 国外分流:https://ttttt.link/f/64182de86e818 ## 2. 系统下载地址 https://cndl.synology.cn/download/DSM/release/7.1.1/42962-4/DSM_SA6400_42962.pat
Pre:
如何创建一个纯 NVMe 固态的黑群晖
Next:
硬酷 R1 LACP 万兆 iperf3 简单测试
0
likes
31901
新浪微博
微信
腾讯微博
QQ空间
人人网
Please enable JavaScript to view the
comments powered by Disqus.
comments powered by
Disqus
Table of content