由于群晖的从DS920开始的机器不再使用esataportcfg和internalportcfg的synoinfo进行esata和内置sata的配置,所以修改这两个参数已经不能把内置sata改为esata了
新的机型采用dtb的方式进行配置,下面将讲述如何进行dtb配置

  1. 首先,先把需要设置成esata的盘位插上硬盘,进入RR(或者ARPL,下称引导)的编译引导环境(Configure),正常的配置好编译引导
  2. 进入系统安装(如果已经装好系统,用第二个启动项进入安装程序)用telnet连接,用户名root没有密码,执行下面的命令查看sata口信息

    cat /sys/block/sata数字/device/syno_block_info

    其中“数字”取决于群晖磁盘管理中显示的硬盘序号,可以ls /sys/block/sata*查看所有的
    pciepath对应下方配置中完整的pcie_root
    ata_port对于下方配置中的ata_port
    记下来,下面会用到

对应的 /sys/block/usb*则是usb盘的内容,如果你希望用usb硬盘盒改成内置硬盘来用,就请这样找出来在dts中进行类似的修改

  1. 在系统安装中,执行以下命令解析并查看dtb(进入dsm系统后没有dtc命令,所以只能在系统安装做)

    dtc -I dtb -O dts -o model.dts /run/model.dtb
    # 先多按几下回车方便查找 把下面这个命令输出的内容复制下来
    cat model.dts

    使用Visual Studio Code或者其他记事本,使用UTF-8编码保存刚刚复制的内容(用系统自带的记事本也行)并进行修改
    根据刚刚让你记下来的信息找到你的esata接口,并把它的internal_slot改成esata_port,并调整一下后面的数字,没有就自行增加一个

           esata_port@从1开始数接口数量 {
                 ahci {
                         pcie_root = "0000:刚刚让你记下的控制器id;
                         ata_port = <0x刚刚Ports里数的转16进制>;
                         internal_mode;
                 };
         };
    

    比如说pve里加的第一个虚拟硬盘就是 00:1e.0,01.0,07.0 和1,那你需要输入 0000:00:1e.0,01.0,07.00x01 (16进制会自忽略前面的0)
    esata_port是外置esata,internal_slot是内置口,请举一反三

    下面则是天钡r1用pve直通n100的物理sata控制器,1口是esata,0口是内置的例子(cpu风扇那边是0)

    /dts-v1/;
    
    / {
         compatible = "Synology";
         model = "synology_epyc7002_sa6400";
         version = <0x01>;
    
         esata_port@1 {
                 protocol_type = "sata";
    
                 ahci {
                         pcie_root = "0000:00:1c.0,00.0";
                         ata_port = <0x01>;
                 };
         };
    
         internal_slot@1 {
                 protocol_type = "sata";
    
                 ahci {
                         pcie_root = "0000:00:1c.0,00.0";
                         ata_port = <0x00>;
                 };
         };
    
         usb_slot@1 {
    
                 usb2 {
                         usb_port = "1-1";
                 };
    
                 usb3 {
                         usb_port = "1-1";
                 };
         };
    
         usb_slot@2 {
    
                 usb2 {
                         usb_port = "1-2";
                 };
    
                 usb3 {
                         usb_port = "1-2";
                 };
         };
    
         usb_slot@3 {
    
                 usb2 {
                         usb_port = "1-3";
                 };
    
                 usb3 {
                         usb_port = "1-3";
                 };
         };
    
         usb_slot@4 {
    
                 usb2 {
                         usb_port = "1-4";
                 };
    
                 usb3 {
                         usb_port = "1-4";
                 };
         };
    
         usb_slot@5 {
    
                 usb2 {
                         usb_port = "1-5";
                 };
    
                 usb3 {
                         usb_port = "1-5";
                 };
         };
    
         usb_slot@6 {
    
                 usb2 {
                         usb_port = "1-6";
                 };
    
                 usb3 {
                         usb_port = "1-6";
                 };
         };
    
         usb_slot@7 {
    
                 usb2 {
                         usb_port = "2-1";
                 };
    
                 usb3 {
                         usb_port = "2-1";
                 };
         };
    
         usb_slot@8 {
    
                 usb2 {
                         usb_port = "2-2";
                 };
    
                 usb3 {
                         usb_port = "2-2";
                 };
         };
    
         usb_slot@9 {
    
                 usb2 {
                         usb_port = "2-3";
                 };
    
                 usb3 {
                         usb_port = "2-3";
                 };
         };
    
         usb_slot@10 {
    
                 usb2 {
                         usb_port = "2-4";
                 };
    
                 usb3 {
                         usb_port = "2-4";
                 };
         };
    
         usb_slot@11 {
    
                 usb2 {
                         usb_port = "2-5";
                 };
    
                 usb3 {
                         usb_port = "2-5";
                 };
         };
    
         usb_slot@12 {
    
                 usb2 {
                         usb_port = "2-6";
                 };
    
                 usb3 {
                         usb_port = "2-6";
                 };
         };
    };

如果在pve中增加一块sata0虚拟盘作为启动盘(引导盘用scsi0),设置为槽1,那就是这样

/dts-v1/;

/ {
        compatible = "Synology";
        model = "synology_epyc7002_sa6400";
        version = <0x01>;

        esata_port@1 {
                protocol_type = "sata";

                ahci {
                        pcie_root = "0000:00:1c.0,00.0";
                        ata_port = <0x01>;
                };
        };

        internal_slot@1 {
                protocol_type = "sata";

                ahci {
                        pcie_root = "0000:00:1e.0,01.0,07.0";
                        ata_port = <0x00>;
                };
        };

        internal_slot@2 {
                protocol_type = "sata";

                ahci {
                        pcie_root = "0000:00:1c.0,00.0";
                        ata_port = <0x00>;
                };
        };

        usb_slot@1 {

                usb2 {
                        usb_port = "1-1";
                };

                usb3 {
                        usb_port = "1-1";
                };
        };

        usb_slot@2 {

                usb2 {
                        usb_port = "1-2";
                };

                usb3 {
                        usb_port = "1-2";
                };
        };

        usb_slot@3 {

                usb2 {
                        usb_port = "1-3";
                };

                usb3 {
                        usb_port = "1-3";
                };
        };

        usb_slot@4 {

                usb2 {
                        usb_port = "1-4";
                };

                usb3 {
                        usb_port = "1-4";
                };
        };

        usb_slot@5 {

                usb2 {
                        usb_port = "1-5";
                };

                usb3 {
                        usb_port = "1-5";
                };
        };

        usb_slot@6 {

                usb2 {
                        usb_port = "1-6";
                };

                usb3 {
                        usb_port = "1-6";
                };
        };

        usb_slot@7 {

                usb2 {
                        usb_port = "2-1";
                };

                usb3 {
                        usb_port = "2-1";
                };
        };

        usb_slot@8 {

                usb2 {
                        usb_port = "2-2";
                };

                usb3 {
                        usb_port = "2-2";
                };
        };

        usb_slot@9 {

                usb2 {
                        usb_port = "2-3";
                };

                usb3 {
                        usb_port = "2-3";
                };
        };

        usb_slot@10 {

                usb2 {
                        usb_port = "2-4";
                };

                usb3 {
                        usb_port = "2-4";
                };
        };

        usb_slot@11 {

                usb2 {
                        usb_port = "2-5";
                };

                usb3 {
                        usb_port = "2-5";
                };
        };

        usb_slot@12 {

                usb2 {
                        usb_port = "2-6";
                };

                usb3 {
                        usb_port = "2-6";
                };
        };
};

如果后续再加一条计划任务,就能实现开机自动把机械盘加入10分钟后分离,既能备份,也能保证硬盘休眠
md0是系统盘,md1是swap虚拟内存,sata1是机械(1不是槽1,而是跟上面第1点的那个)

sleep 600
hdparm -S 120 /dev/sata1
hdparm -S 120 /dev/sata2
mdadm /dev/md0 --re-add /dev/sata1p1
sleep 600
mdadm /dev/md0 -f sata1p1
#mdadm /dev/md1 -f sata1p2

如果是物理机,亲测nvme不能作为esata_port,不用尝试了

/dts-v1/;

/ {
        compatible = "Synology";
        model = "synology_epyc7002_sa6400";
        version = <0x01>;
        power_limit = "100";

        esata_port@1 {
                protocol_type = "sata";

                ahci {
                        pcie_root = "0000:00:17.0";
                        ata_port = <0x01>;
                };
        };

        internal_slot@2 {
                protocol_type = "sata";

                ahci {
                        pcie_root = "0000:00:17.0";
                        ata_port = <0x00>;
                };
        };

        nvme_slot@1 {
                pcie_root = "0000:00:1c.0,00.0";
                port_type = "ssdcache";
        };

        usb_slot@1 {

                usb2 {
                        usb_port = "1-1";
                };

                usb3 {
                        usb_port = "1-1";
                };
        };

        usb_slot@2 {

                usb2 {
                        usb_port = "2-1";
                };

                usb3 {
                        usb_port = "2-1";
                };
        };

        usb_slot@3 {

                usb2 {
                        usb_port = "3-1";
                };

                usb3 {
                        usb_port = "3-1";
                };
        };

        usb_slot@4 {

                usb2 {
                        usb_port = "3-2";
                };

                usb3 {
                        usb_port = "3-2";
                };
        };

        usb_slot@5 {

                usb2 {
                        usb_port = "3-3";
                };

                usb3 {
                        usb_port = "3-3";
                };
        };

        usb_slot@6 {

                usb2 {
                        usb_port = "3-4";
                };

                usb3 {
                        usb_port = "3-4";
                };
        };

        usb_slot@7 {

                usb2 {
                        usb_port = "3-5";
                };

                usb3 {
                        usb_port = "3-5";
                };
        };

        usb_slot@8 {

                usb2 {
                        usb_port = "3-6";
                };

                usb3 {
                        usb_port = "3-6";
                };
        };

        usb_slot@9 {

                usb2 {
                        usb_port = "3-7";
                };

                usb3 {
                        usb_port = "3-7";
                };
        };

        usb_slot@10 {

                usb2 {
                        usb_port = "3-8";
                };

                usb3 {
                        usb_port = "3-8";
                };
        };

        usb_slot@11 {

                usb2 {
                        usb_port = "3-9";
                };

                usb3 {
                        usb_port = "3-9";
                };
        };

        usb_slot@12 {

                usb2 {
                        usb_port = "3-10";
                };

                usb3 {
                        usb_port = "3-10";
                };
        };

        usb_slot@13 {

                usb2 {
                        usb_port = "3-11";
                };

                usb3 {
                        usb_port = "3-11";
                };
        };

        usb_slot@14 {

                usb2 {
                        usb_port = "3-12";
                };

                usb3 {
                        usb_port = "3-12";
                };
        };

        usb_slot@15 {

                usb2 {
                        usb_port = "4-1";
                };

                usb3 {
                        usb_port = "4-1";
                };
        };

        usb_slot@16 {

                usb2 {
                        usb_port = "4-2";
                };

                usb3 {
                        usb_port = "4-2";
                };
        };

        usb_slot@17 {

                usb2 {
                        usb_port = "4-3";
                };

                usb3 {
                        usb_port = "4-3";
                };
        };

        usb_slot@18 {

                usb2 {
                        usb_port = "4-4";
                };

                usb3 {
                        usb_port = "4-4";
                };
        };
};
  1. 强制关机重启或在telnet中 reboot ,进入引导,用浏览器访问引导的web配置界面,选择“高级”中的“自定义dts文件”上传你刚刚编辑好的文件,并进行一次编译,再正常启动即可完成对esata的配置

    另外也可以直接对系统中的dtb进行覆盖,但是可能会导致你的修改被系统覆盖而无法生效,所以不推荐,除非你是白的

    sudo dtc -I dts -O dtb -o model.dtb model.dts
    cp -f model.dtb /etc/model.dtb
    cp -f model.dtb /etc.defaults/model.dtb