/saga-redpill-tool-chain

这是一个测试项目,可能会有不可预测的事情发生(比如:毁损数据、烧毁硬件等等),请谨慎使用。

Primary LanguageShell

RedPill Tool Chain

构建

这是一个测试项目,可能会有不可预测的事情发生(比如:毁损数据、烧毁硬件等等),请谨慎使用

English

感谢 @haydibe 提供 RedPill Tool Chain

关于项目?

  • 基于RedPill-TTG源码制作
  • DS918+提供DSM7适配支持 ( 感谢 @jumkey )
  • DS3617xs提供DSM7适配支持 ( 感谢 @jimmyGALLAND )
  • DVA3221提供DSM7适配支持 ( 感谢 @dogodefi )
  • 整理社区扩展驱动 ( 感谢 @pocopico )
  • 部分引导提取自 @tinycore-redpill 项目
  • redpill_lkm_make_target字段的可选值有 dev-v6, dev-v7, test-v6, test-v7, prod-v6 或者 prod-v7, 需要注意后缀为-v6的值用于 DSM6 版本构建, 需要注意后缀为-v7的值用于 DSM7 版本构建. 默认使用的是 dev-v6dev-v7

PS: 由于toolkit dev缺少fs/proc所需的源代码,因此它们取自提取的DSM6.2.4内核源代码。 构建需要此单个文件夹的源代码,但不使用内核源代码构建redpill.ko模块。

如果您发现工具链的构建方式有问题或者有改进的想法,请让我知道。

对于所有其他问题:请向社区ddr提出——我知道的并不比其他人多。

如何使用?

  1. 复制sample_user_config.jsonds3615xs_user_config.json或者ds918p_user_config.json
  2. 编辑<platform>_user_config.json比如 918+ 就编辑 ds918p_user_config.json 文件
  3. 添加扩展驱动: 比如 ./redpill_tool_chain.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/mpt3sas/rpext-index.json
  4. 为你想要的平台和版本构建编译镜像:
    比如 ./redpill_tool_chain.sh build ds918p-7.0-41890
  5. 为你想要的平台和版本构建引导: 比如 ./redpill_tool_chain.sh auto ds918p-7.0-41890

./redpill_tool_chain.sh auto运行结束之后,将会在宿主机的./image文件夹中生成 RedPill引导镜像。

<platform>_user_config.json文件中的extensions字段保持为空,会自动打包所有已安装的自定义驱动。 自定义驱动请按需添加,尽量不要加载无关驱动,否则会因为扩展驱动太大导致打包失败。

依赖: docker


⚠️⚠️⚠️ 由于各版本环境不完全一致,制作策略会有细节变化,具体可以参考 工作流配置文件

Gtihub Actions 中查看执行结果,并下载生成的镜像

❗❗❗ 工作流配置文件 中引入的扩展都是推荐必装扩展


快捷说明

  • docker/Dockerfile 中补入了阿里云镜像
  • ./redpill_tool_chain.sh add <URL>添加扩展驱动
  • ./redpill_tool_chain.sh del <ID>删除扩展驱动
  • ./redpill_tool_chain.sh run <platform_version>自定义引导构建过程
  • 使用synoboot.sh写入引导

自定义扩展驱动管理

  • 安装 thethorgroup.virtio : ./redpill_tool_chain.sh add https://github.com/jumkey/redpill-load/raw/develop/redpill-virtio/rpext-index.json
  • 安装 thethorgroup.boot-wait : ./redpill_tool_chain.sh add https://github.com/jumkey/redpill-load/raw/develop/redpill-boot-wait/rpext-index.json
  • 安装 pocopico.mpt3sas : ./redpill_tool_chain.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/mpt3sas/rpext-index.json
  • 移除 pocopico.mpt3sas : ./redpill_tool_chain.sh del pocopico.mpt3sas
  • 安装 jumkey.dtb : ./redpill_tool_chain.sh add https://github.com/jumkey/redpill-load/raw/develop/redpill-dtb/rpext-index.json

获取更多扩展驱动...

构建工具链镜像

  • ./redpill_tool_chain.sh build ds3615xs-6.2.4-25556
  • ./redpill_tool_chain.sh build ds918p-7.0.1-42218

制作 redpill 引导镜像

  • ./redpill_tool_chain.sh auto ds3615xs-6.2.4-25556
  • ./redpill_tool_chain.sh auto ds918p-7.0.1-42218

清除旧的引导镜像和缓存

  • ./redpill_tool_chain.sh clean ds3615xs-6.2.4-25556
  • ./redpill_tool_chain.sh clean ds918p-7.0.1-42218
  • ./redpill_tool_chain.sh clean all

生成指定平台的序列号和MAC地址

  • ./redpill_tool_chain.sh sn ds918p
  • ./redpill_tool_chain.sh sn dva3221

查看帮助文本

./redpill_tool_chain.sh

Usage: ./redpill_tool_chain.sh <action> <platform version>

Actions: build, auto, run, clean, add, del, sn, pat

- build:    Build the toolchain image for the specified platform version.

- auto:     Starts the toolchain container using the previosuly build toolchain image for the specified platform.
            Updates redpill sources and builds the bootloader image automaticaly. Will end the container once done.

- run:      Starts the toolchain container using the previously built toolchain image for the specified platform.
            Interactive Bash terminal.

- clean:    Removes old (=dangling) images and the build cache for a platform version.
            Use ‘all’ as platform version to remove images and build caches for all platform versions.

- add:      To install extension you need to know its index file location and nothing more.
            eg: add 'https://example.com/some-extension/rpext-index.json'

- del:      To remove an already installed extension you need to know its ID.
            eg: del 'example_dev.some_extension'

- sn:       Generates a serial number and mac address for the following platforms
            DS3615xs DS3617xs DS916+ DS918+ DS920+ DS3622xs+ FS6400 DVA3219 DVA3221 DS1621+
            eg: sn ds920p

- pat:      For decoding PAT file.

Available platform versions:
---------------------
ds1621p-7.0.1-42218
ds1621p-7.1.0-42661
ds2422p-7.0.1-42218
ds3615xs-6.2.4-25556
ds3615xs-7.0.1-42218
ds3615xs-7.1.0-42661
ds3617xs-7.0.1-42218
ds3617xs-7.1.0-42661
ds3622xsp-7.0.1-42218
ds3622xsp-7.1.0-42661
ds918p-6.2.4-25556
ds918p-7.0.1-42218
ds918p-7.1.0-42661
ds920p-7.0.1-42218
ds920p-7.1.0-42661
dva3221-7.0.1-42218
dva3221-7.1.0-42661

Custom Extensions:
---------------------
jumkey.acpid2
thethorgroup.boot-wait
thethorgroup.virtio

Check global_settings.json for settings.

更多细节

编译DS920+DS1621+需要加入jumkey.dtb扩展并参考这里创建设备的二进制设备树

查看基于test.yml的使用示例