DSM 7.X 引导编译

发布于 2022-04-12  2738 次阅读


群晖的DSM 7.1正式版已经发布了,是时候编译一个来玩了(虽然RC的时候我就已经作死升级了主力机星际蜗牛,不过并没有发现什么Bug,一切正常。群晖的系统还是可以信赖的,毕竟发展到今天都更新到7.1了)。


本文将以使用pocopico在GitHub上的Redfill-Load库编译DSM7.1-42661 918+举例,其他型号引导的编译方法大同小异。而使用tinycore-redpill库来编译将在之后再写一篇文章来讲。需要注意的是,这种方法似乎无法编译3615以及3617的引导,如有需要,请使用tinycore-redpill库编译。

注意!!! 网络下载部份要自行处理(需要连接Github下载文件,国内的网络访问GitHub。。。懂得自然懂,我自己是全局加上修改GitHub的host-->参考这个,或者这个), 不然有可能会因为某些原因下载不到或是失败,最终导致编译报错。

网络上说会无法识别 Realtek NIC 和 HBA 卡(这点我没有测试)。应该只能继续使用 Intel NIC 和内部/外部 SATA,目前实测 Rtl8111 可以正常识别并使用 Intel 网卡也是可以使用的。

2022/04/10更新:测试虚拟机网卡工作正常,2.5G网卡工作正常,sas补丁未测试,关机键补丁工作正常,极少部分遇到端口错误无法安装

本人主力机星际蜗牛B单工作正常,网卡为Intel I211,硬盘为6*sata 1T

Photos套件补丁请移步:https://github.com/jinlife/Synology_Photos_Face_Patch,已支持0263版本

注意!AME套件2.0需配合DSM7.1正式版(42261)使用,官方说明如下:

注意事项
从 Advanced Media Extensions (AME) 2.0 及以上版本开始,您必须登录 Synology Account 才能授权下载 HEVC 及 AAC Codec。
相容性与安装
此版本兼容 DSM 7.1 及以上版本。
新功能
支持 AAC 格式

测试发现未洗白无登录账户默认无法使用解码,涉及套件为photos以及video station。

2022/04/13更新:https://github.com/AlexPresso/VideoStation-FFMPEG-Patcher能部分取代AME的功能,或者可以看看这篇文章:https://wp.gxnas.com/11491.html

2022/04/17更新:

Video Station 播放格式,需要使用Wrapper_VideoStation修正,除了HEVC不行外其他AAC都以可以正常播放。

定时开关机功能:定时关机是可以用的,,定时开机就必须去主机板的BIOS设定,并减8小时为单位设定。例如上午11点开机,那么BIOS里就设定3点开机即可,这个时间差异是因为UTC 与RTC 问题。
不是不能解决,只是解决了也不能让黑群晖使用定时开机功能所以就不予理会了(建议使用智能插座代替)。
解决方法:
开启群晖ssh功能,使用PuTTY软件(没有的去百度现在)登入管理员帐号,输入sudo -i,回车后输入密码进入ROOT 模式。
(1)查看初始系统时间:
date

(2)该时间为UTC时区:
host# cp /usr/share/zoneinfo/GMT /etc/localtime

(3)查询现在时区时间:
host# date

(4)修改时区时间:
host# date -s XX:XX (输入你要设定的时:分24小时制)。

(5)验证是否更改生效:
host# date

注意:需关闭群晖网络自动时间较正,因为它会把GMT又改回去。


以下是安装方法

  1. 将 pocopico Redfill-Load GitHub 下载到单独的 Linux
    这里有一个韩文的Linux系统,看得懂或不介意的可以下载使用(需使用魔法,建议直接使用Ubuntu)。 https://drive.google.com/file/d/19XwxRTDcJwMPlJ7gLQIr9argi_jeSTtE/view
    用户名:toolc 密码:P@ssw0rd
    或准备好自己要用的 Linux 系统,例如我使用了Ubuntu。
    下载 https://github.com/pocopico/redpill-load
    git clone https://github.com/pocopico/redpill-load
    解压 redpill-load-master.zip 到系统根目录:
    tar /redpill-load-master.zip
    赋予管理员权限:
    chmod -R 777 redpill-load-master
    (这一步如果不会熟练使用Linux命令下载解压的,或者代码下载解压报错的,可以安装一个服务器管理面板,例如说国内常用的宝塔面板,安装教程:https://www.bt.cn/bbs/thread-79460-1-1.html,可视化编辑文件。如果连面板都不会用。。。。。。建议还是直接下载别人编译好的文件吧。)
  2. 编译环境准备,安装相应库
    以下这六项只需要执行一次, 会安装到系统里。日后除非你现在在用的Linux环境重置了(例如重新安装了Linux系统), 不然都无需再次执行。代码每次复制一行运行一行:
    sudo apt-get update
    sudo apt install docker.io
    sudo apt install jq
    sudo apt install curl
    sudo apt install device-tree-compiler
    sudo apt-get install bsdiff
  3. 为DS918+准备user_config.json
    cd /redpill-load-master
    touch user_config.json

    vi user_config.json
    然后输入i,然后回车进入编辑模式,粘贴下面的代码。粘贴完按esc键,输入:,再输入wq!,然后回车,这样就保存退出了。
    {
    "extra_cmdline": {
    "pid": "0x3333",
    "vid": "0x3333",
    "sn": "123456",
    "mac1": "123456",
    "SataPortMap": "2",
    "DiskIdxMap": "00"
    },
    "synoinfo": {
    "internalportcfg" : "0xffff",
    "maxdisks" : "16",
    "support_bde_internal_10g" : "no",
    "support_disk_compatibility" : "no",
    "support_memory_compatibility" : "no"
    },
    "ramdisk_copy": {}
    }


    参数说明:
    vid、pid:U盘的序号,使用ChipGenius可以查到,改成自己的
    netif_num:网卡的数量,对应要编辑好mac1、mac2等等
    sn、mac:自己找洗白码
    synoinfo:引导安装过程修改/etc.defaults/synoinfo.conf中的参数
    maxlanport:修改synoinfo里面网卡的数量
    ramdisk_copy:拷贝文件到引导目录内

    以上参数是我自己使用的,这部分请自行修改,或者去复制相同机型的参数也行。其中SataPortMap和DiskIdxMap这两个如果没有改好会导致启动时报错:在端口xx检查到错误)。SN和MAC以及pid和vid可以在生成img文件后再更改。
  4. 调整 buildpat-918p-7.1-42661.sh 权限以及解密pat文件
    注意!直接从pocopico库下载的文件中只含有RC版(42621)的解码文件,不含有正式版(42661)的解码文件,因此需要自己创建:
    以创建42661for918举例:
    cd redpill-load-master/buildpat
    touch buildpat-918p-7.1-42661.sh
    按i键进入编辑模式,粘贴以下内容:
    curl -L https://cndl.synology.cn/download/DSM/release/7.1/42661/DSM_DS918%2B_42661.pat -o ds.pat
    mkdir synoesp
    curl --location https://cndl.synology.cn/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat --output oldpat.tar.gz
    tar -C./synoesp/ -xf oldpat.tar.gz rd.gz
    cd synoesp
    xz -dc < rd.gz >rd 2>/dev/null || echo "extract rd.gz"
    echo "finish"
    cpio -idm <rd 2>&1 || echo "extract rd"
    mkdir extract && cd extract
    cp ../usr/lib/libcurl.so.4 ../usr/lib/libmbedcrypto.so.5 ../usr/lib/libmbedtls.so.13 ../usr/lib/libmbedx509.so.1 ../usr/lib/libmsgpackc.so.2 ../usr/lib/libsodium.so ../usr/lib/libsynocodesign-ng-virtual-junior-wins.so.7 ../usr/syno/bin/scemd ./
    ln -s scemd syno_extract_system_patch
    cd ../..
    mkdir pat
    #tar xf ds.pat -C pat
    ls -lh ./
    sudo LD_LIBRARY_PATH=synoesp/extract synoesp/extract/syno_extract_system_patch ds.pat pat || echo "extract latest pat"
    cd pat
    tar -czvf archive.tar.gz ./
    mv archive.tar.gz ../ds918p_42661.pat
    cd ../
    rm -r ds.pat oldpat.tar.gz pat synoesp


    然后和上面一样保存退出即可。

    buildpat-920p-7.1-42661.sh的内容如下:
    curl -L https://cndl.synology.cn/download/DSM/release/7.1/42661/DSM_DS920%2B_42661.pat -o ds.pat
    mkdir synoesp
    curl --location https://cndl.synology.cn/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat --output oldpat.tar.gz
    tar -C./synoesp/ -xf oldpat.tar.gz rd.gz
    cd synoesp
    xz -dc < rd.gz >rd 2>/dev/null || echo "extract rd.gz"
    echo "finish"
    cpio -idm <rd 2>&1 || echo "extract rd"
    mkdir extract && cd extract
    cp ../usr/lib/libcurl.so.4 ../usr/lib/libmbedcrypto.so.5 ../usr/lib/libmbedtls.so.13 ../usr/lib/libmbedx509.so.1 ../usr/lib/libmsgpackc.so.2 ../usr/lib/libsodium.so ../usr/lib/libsynocodesign-ng-virtual-junior-wins.so.7 ../usr/syno/bin/scemd ./
    ln -s scemd syno_extract_system_patch
    cd ../..
    mkdir pat
    #tar xf ds.pat -C pat
    ls -lh ./
    sudo LD_LIBRARY_PATH=synoesp/extract synoesp/extract/syno_extract_system_patch ds.pat pat || echo "extract latest pat"
    cd pat
    tar -czvf archive.tar.gz ./
    mv archive.tar.gz ../ds920p_42661.pat
    cd ../
    rm -r ds.pat oldpat.tar.gz pat synoesp


    buildpat-3622p-7.1-42621.sh的内容如下:
    curl -L curl -L https://global.download.synology.com/download/DSM/release/7.1/42621/DSM_DS3622xs%2B_42621.pat -o ds.pat
    mkdir synoesp
    curl --location https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat --output oldpat.tar.gz
    tar -C./synoesp/ -xf oldpat.tar.gz rd.gz
    cd synoesp
    xz -dc < rd.gz >rd 2>/dev/null || echo "extract rd.gz"
    echo "finish"
    cpio -idm &1 || echo "extract rd"
    mkdir extract && cd extract
    cp ../usr/lib/libcurl.so.4 ../usr/lib/libmbedcrypto.so.5 ../usr/lib/libmbedtls.so.13 ../usr/lib/libmbedx509.so.1 ../usr/lib/libmsgpackc.so.2 ../usr/lib/libsodium.so ../usr/lib/libsynocodesign-ng-virtual-junior-wins.so.7 ../usr/syno/bin/scemd ./
    ln -s scemd syno_extract_system_patch
    cd ../..
    mkdir pat
    #tar xf ds.pat -C pat
    ls -lh ./
    sudo LD_LIBRARY_PATH=synoesp/extract synoesp/extract/syno_extract_system_patch ds.pat pat || echo "extract latest pat"
    cd pat
    tar -czvf archive.tar.gz ./
    mv archive.tar.gz ../ds3622xsp_42621.pat
    cd ../
    rm -r ds.pat oldpat.tar.gz pat synoesp


    创建好文件后,就可以运行了:
    chmod +x buildpat-918p-7.1-42661.sh
    ./buildpat-918p-7.1-42661.sh

    这样就重新创建了未加密的 ds918p_42661.pat
    (注意!最后安装DSM的时候pat文件不能使用这个pat,否则会报错安装失败!此文件仅用于编译img,安装请从官方下载pat文件安装)。
  5. 将重新生成的 ds918p_42661.pat 文件移动到cache文件夹中
    sha256sum ds918p_42661.pat
    (此步用于生成DS918p_42661.pat 的 sha256sum数值, 那个数值就是要代换的值, 复制下来备用)。
    mv ds918p_42661.pat ../cache
    cd ..
  6. 修改 config.json 档里的 SHA256 值校准 (在 /redpill-load-master/config/DS918+/7.1.0-42661)
    vi config.json
    在下列字串 修改sha256数值:
    "id": "ds918p_42661",
    "pat_url": "https://global.download.synology.com/download/DSM/release/7.1/42621/DSM_DS918+_42661.pat",
    "sha256": "e7fa975757d5faa6a275b68b130e7fd552263157a39bc71507ea6f2f466bb359"

    (用步骤5的数值代换掉"sha256"后面的引号中的那一长串)。
  7. 加入 redfill-linux-v4.4.180+
    在以下路径下载文件后,将解压后的redpill.ko重命名为 redpill-linux-v4.4.180+.ko
    https://github.com/pocopico/rp-ext/blob/main/redpill/releases/redpill-4.4.180plus.tgz
    复制到 /redpill-load-master/ext/rp-lkm 目录。
  8. 增加扩展驱动(具体添加的引导看文件名,每一行代码代表添加一个驱动,不要一次性全复制了!)
    chmod +x ext-manager.sh
    ---------------虚拟机用扩展 ---------------
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/e1000e/rpext-index.json
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/e1000/rpext-index.json
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/vmxnet3/rpext-index.json
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/redpill-load/master/redpill-virtio/rpext-index.json

    ---------------网卡驱动扩展---------------
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/r8125/rpext-index.json
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/r8152/rpext-index.json (这个错误问题很多, 斟酌使用)
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/r8169/rpext-index.json
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/r8168/rpext-index.json
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/igb/rpext-index.json

    ---------------一定要装区---------------
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/redpill-load/master/redpill-acpid/rpext-index.json
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/redpill-load/master/redpill-misc/rpext-index.json

    ---------------选择区(视需求加入)---------------
    ./ext-manager.sh add https://raw.githubusercontent.com/pocopico/rp-ext/master/mpt3sas/rpext-index.json
    注意!尽量只添加自己需要的驱动!!否则有可能会造成img里的驱动包装档过大而失败!
  9. 编译 DS918 开机引导
    chmod +x build-loader.sh
    ./build-loader.sh DS918+ 7.1.0-42661
  10. 检查构建的镜像,复制本地PC,并记录USB
    redpill-DS918+_7.1.0-42661_**********.img 结果存在于 /redpill-load-master/images 目录中(******为随机生成的)。
  11. 备注:
    DS920 编译的部份还需要针对要安装的主机取得设备树(device-tree-compiler 也就是dtc,会输出为dts)并转译为dtb (一种二进位档)
    在加上dtb 扩展编译后才可以引导并找到硬盘
    这个编译方式, 目前大概主流的编译引导器都有支持,只是指令可能不一样而已
    而且因为他是硬件位址线直接对应sata,也跟着导致它不能加入其它扩展(加入会变成找不到硬盘)
    这部份相当麻烦,因为必须具备硬件位址分析能力,要会看总位址线分布方式,不然改不出符合的dts
    当然也就会转不出正确的dtb 档案
    目前需要使用dtb 档案的机种为DS920 跟DS1621+ 两款,全部都编译成功,也都具有acpid 功能
    同时,需要注意的是,编译一次后如需再次编译,删除custom/extensions里面的redpill-boot-wait目录!!!

部分引导和解码sh:链接: https://pan.baidu.com/s/1Eikh5eYCG4OPJQZ44SbQQw?pwd=p4ir 提取码: p4ir 复制这段内容后打开百度网盘手机App,操作更方便哦

本文仅用于研究学习使用,严禁用于实际生产和商业用途。本站所有软件均来源于网络,软件著作权归作者所有,请在下载后24h内删除。请支持正版!


以上! 祝各位好运!!

(教程如有纰漏,或者有疑问,欢迎在评论区指出)

点击数:1503


"收余恨,免娇嗔,且自新,改性情,休恋逝水,苦海回身,早悟兰因."