谁能写个DSM添加驱动的教程


Recommended Posts

我的脚本好像解决不了你的做法麻烦的问题,我的做法,是手工编译后,将原始的img/pat文件复制到linux(虚拟机,用于编译系统的)上,然后运行脚本后生成新的img/pat文件,然后将新的img写入u盘,然后再去插入机器中启动,然后清除原来的数据盘上的数据后重新安装pat文件.

 

你可以考虑将zImage文件和modules直接复制到你的目标机器(用ssh就好了),然后替换掉你数据盘上面的那些文件,不过估计这时候你的u盘上的相应文件没有更新,不知道会不会有影响. 如果要更新U盘的内容就是将其也mount上来,但是我曾经mount过一次,始终是只读的,我就没有弄了.

 

另外你上面说的vendor文件没有用,不知道有没有影响.我所知道的是vendor里面至少含有了mac地址和序列号等信息,如果你的主机每次重启后ip地址和mac地址都变化的话,那么就需要vendor文件以及将vendor里面的mac地址改成你的网卡的mac地址.

 

我的脚本等我弄完了我再传上来吧.现在还在弄.

 

关于你的u盘的问题,我试验了一下,我的也是被认为是系统内部的盘,我不知道你想要将u盘认为是什么类型的盘.因为我没有正式的DSM系统,不知道u盘上去了,在系统中被认为是啥类型的盘. 如果能找到相关的文档也行.

 

这个帖子有演示插入U盘的效果 viewtopic.php?f=11&t=619

vendor的作用只是mac地址的话,那就不影响了。我在grub menu文件里面已经加载了mac地址和相关信息。

我现在重新编译的内核只是替换了启动盘的zImage文件,没有替换pat里面的zImage,因为我解压pat,替换,然后打包,就不能通过dsm安装了,说是文件损坏。现在用网上的pat和我自己的img启动和安装都没问题,所以一直都没改动pat文件了。

 

期待你的脚本~

Link to post
Share on other sites

有可能能找到为啥USB没有被识别为外部移动盘了. 不同的系统上需要不同的配置,可能在楼上的那个n40l上就没有问题,因为不同主板的sata的口子个数不一样,而且不同的口子可能在这个主板上是ESATA,而另外的主板上是内部SATA.

 

相关情况可以参考这个文档,我还没有完全弄清楚.

http://forum.qnap.com/viewtopic.php?f=9 ... &start=273

Link to post
Share on other sites

我的脚本好像解决不了你的做法麻烦的问题,我的做法,是手工编译后,将原始的img/pat文件复制到linux(虚拟机,用于编译系统的)上,然后运行脚本后生成新的img/pat文件,然后将新的img写入u盘,然后再去插入机器中启动,然后清除原来的数据盘上的数据后重新安装pat文件.

 

你可以考虑将zImage文件和modules直接复制到你的目标机器(用ssh就好了),然后替换掉你数据盘上面的那些文件,不过估计这时候你的u盘上的相应文件没有更新,不知道会不会有影响. 如果要更新U盘的内容就是将其也mount上来,但是我曾经mount过一次,始终是只读的,我就没有弄了.

 

另外你上面说的vendor文件没有用,不知道有没有影响.我所知道的是vendor里面至少含有了mac地址和序列号等信息,如果你的主机每次重启后ip地址和mac地址都变化的话,那么就需要vendor文件以及将vendor里面的mac地址改成你的网卡的mac地址.

 

我的脚本等我弄完了我再传上来吧.现在还在弄.

 

关于你的u盘的问题,我试验了一下,我的也是被认为是系统内部的盘,我不知道你想要将u盘认为是什么类型的盘.因为我没有正式的DSM系统,不知道u盘上去了,在系统中被认为是啥类型的盘. 如果能找到相关的文档也行.

 

这个帖子有演示插入U盘的效果 viewtopic.php?f=11&t=619

vendor的作用只是mac地址的话,那就不影响了。我在grub menu文件里面已经加载了mac地址和相关信息。

我现在重新编译的内核只是替换了启动盘的zImage文件,没有替换pat里面的zImage,因为我解压pat,替换,然后打包,就不能通过dsm安装了,说是文件损坏。现在用网上的pat和我自己的img启动和安装都没问题,所以一直都没改动pat文件了。

 

期待你的脚本~

你改一下你的/etc.defaults/synoinfo.conf文件中的usbportcfg的值为0xf0000,看一下行不?改前确保你有办法将该文件恢复的方法(万一系统起不来的话),其他值你也可以尝试,我现在不知道这个值多大为好.

Link to post
Share on other sites

你改一下你的/etc.defaults/synoinfo.conf文件中的usbportcfg的值为0xf0000,看一下行不?改前确保你有办法将该文件恢复的方法(万一系统起不来的话),其他值你也可以尝试,我现在不知道这个值多大为好.

我现在值是0xfff00000,我留意到还有个参数 esataportcfg="0xff000" ,internalportcfg="0xfff"

 

我将usbportcfg改成0xf0000也不行.我主板4个sata,1个esata口,4个板载usb,2个外接usb

 

google一下这个值的作用先,如果有相关资料,麻烦分享以下。

 

Thanks a lot..

Link to post
Share on other sites

你改一下你的/etc.defaults/synoinfo.conf文件中的usbportcfg的值为0xf0000,看一下行不?改前确保你有办法将该文件恢复的方法(万一系统起不来的话),其他值你也可以尝试,我现在不知道这个值多大为好.

我现在值是0xfff00000,我留意到还有个参数 esataportcfg="0xff000" ,internalportcfg="0xfff"

 

我将usbportcfg改成0xf0000也不行.我主板4个sata,1个esata口,4个板载usb,2个外接usb

 

google一下这个值的作用先,如果有相关资料,麻烦分享以下。

 

Thanks a lot..

没搞明白这个值是怎样算的。

这里有个帖http://211.78.87.227/viewtopic.php?f=93&t=20661&sid=01dec53c105633686d17d6a771a55e03&start=270

internalportcfg="0x1f" = 1f (hex) = 00011111 (bin) = five internal SATA ports enabled (on mask 0-4)

esataportcfg="0xc0" = c0 (hex) = 11000000 = two ESATA ports (6-7) (bacause 0-6 - internal ICH9R sata ports).

0~4的值=1f?

 

搞不明白,有高人指点一下么?

Link to post
Share on other sites

你改一下你的/etc.defaults/synoinfo.conf文件中的usbportcfg的值为0xf0000,看一下行不?改前确保你有办法将该文件恢复的方法(万一系统起不来的话),其他值你也可以尝试,我现在不知道这个值多大为好.

我现在值是0xfff00000,我留意到还有个参数 esataportcfg="0xff000" ,internalportcfg="0xfff"

 

我将usbportcfg改成0xf0000也不行.我主板4个sata,1个esata口,4个板载usb,2个外接usb

 

google一下这个值的作用先,如果有相关资料,麻烦分享以下。

 

Thanks a lot..

没搞明白这个值是怎样算的。

这里有个帖http://211.78.87.227/viewtopic.php?f=93&t=20661&sid=01dec53c105633686d17d6a771a55e03&start=270

internalportcfg="0x1f" = 1f (hex) = 00011111 (bin) = five internal SATA ports enabled (on mask 0-4)

esataportcfg="0xc0" = c0 (hex) = 11000000 = two ESATA ports (6-7) (bacause 0-6 - internal ICH9R sata ports).

0~4的值=1f?

 

搞不明白,有高人指点一下么?

 

你的机器只有4个SATA?这个可能不一定,要去看你的BIOS里面配置,另外看你的主板芯片,如果只有4个在主板上,你要弄清楚主板上的那几个的编号,注意不是写在主板上的号码,而是内部电路连接的顺序,然后假设你是4个sata,而且是sata1到sata4,而esata是sata5,那么你可以只有来得到internelportcfg= 0000 1111(bin), 其中后面4个1是代表你4个sata,转成hex就是0x0f了。esata也就是0001 0000(bin)。转成hex就是0x10了。

 

上述的值比较好办,我在想usbportcfg不知道是如何设置的,到现在还没有找到啥说明。今天再看看吧。

Link to post
Share on other sites

你的机器只有4个SATA?这个可能不一定,要去看你的BIOS里面配置,另外看你的主板芯片,如果只有4个在主板上,你要弄清楚主板上的那几个的编号,注意不是写在主板上的号码,而是内部电路连接的顺序,然后假设你是4个sata,而且是sata1到sata4,而esata是sata5,那么你可以只有来得到internelportcfg= 0000 1111(bin), 其中后面4个1是代表你4个sata,转成hex就是0x0f了。esata也就是0001 0000(bin)。转成hex就是0x10了。

 

上述的值比较好办,我在想usbportcfg不知道是如何设置的,到现在还没有找到啥说明。今天再看看吧。

 

主板南桥Intel 82801IR I/O Controller Hub (ICH 9R)

资料 :http://www.intel.com/content/dam/doc/datasheet/io-controller-hub-9-datasheet.pdf

The first controller (Device 31: Function 2) supports ports 0 -3 and the second controller (Device 31: Function 5) supports ports 4 and 5. When using a legacy operating system, only one controller (Device 31: Function 2) is available that supports ports 0 - 3. In AHCI or RAID mode, only one controller (Device 31: Function 2) is utilized enabling all six ports

我现在用AHCI模式,估计是6个sata接口。但资料没说明这里面是否包含了esata :oops:

 

The ICH9 contains two Enhanced Host Controller Interface (EHCI) host controllers which support up to twelve USB 2.0 high-speed root ports.

usb端口估计最大支持12个。

 

 

synoinfo默认的配置是12个sata,这可以解释为什么插入u盘也当作sata盘来处理。

 

按照这种二进制的算法,那原本的配置应该可以推算:

默认值

internalportcfg="0xfff" =>00000000000000000000111111111111(bin)

esataportcfg="0xff000" =>00000000000011111111000000000000(bin)

usbportcfg="0xfff00000" =>11111111111100000000000000000000(bin)

 

bin的位数是32位,三组数据结合起来,看到1的位置刚好从右到左排满。

 

如果这个排列成立,我的主板应该是

internalportcfg="{hex}" =>00000000000000000000000000111111(bin)

esataportcfg="{hex}" =>00000000000000000000000011000000(bin)

usbportcfg="{hex}" =>11111111111111111111111100000000(bin)

 

或者总数支持20个外设

 

internalportcfg="{hex}" =>00000000000000111111(bin)

esataportcfg="{hex}" =>00000000000011000000(bin)

usbportcfg="{hex}" =>11111111111100000000(bin)

 

这个假设建立在,先排sata口,再排esata口,然后才到usb。排完sata口,剩余的端口都当作usb用也ok,这样的话估计esata就可以使用ntfs格式。

 

未经过验证,晚上回去试下。如果xu_john现在有条件,可以帮忙验证下 :grin:

 

ps,bin转换hex 工具 http://www.ximizi.com/JinZhi_ZhuanHuan.php

Link to post
Share on other sites
未经过验证,晚上回去试下。如果xu_john现在有条件,可以帮忙验证下 :grin:

我在我的机器上测试过了如下配置

esataportcfg="0x40"

usbportcfg="0xff80"

internalportcfg="0x03f"

 

那就是表明我的内部磁盘一共是6块. 然后 只有一个esata口子,另外是usb口子.结果是我的一块额外插入的u盘如愿显示为usb设备了,但是发现也有一个estat盘了.经验证,这个esata是我的dom盘.不知道为啥会这样,我得去看看我的机器的配置信息了,估计是internal和esata写错了.

Link to post
Share on other sites
未经过验证,晚上回去试下。如果xu_john现在有条件,可以帮忙验证下 :grin:

我在我的机器上测试过了如下配置

esataportcfg="0x40"

usbportcfg="0xff80"

internalportcfg="0x03f"

 

那就是表明我的内部磁盘一共是6块. 然后 只有一个esata口子,另外是usb口子.结果是我的一块额外插入的u盘如愿显示为usb设备了,但是发现也有一个estat盘了.经验证,这个esata是我的dom盘.不知道为啥会这样,我得去看看我的机器的配置信息了,估计是internal和esata写错了.

 

用工具看了一下,发现这个机器上就6个SATA口,都作为内部SATA了,所以没有ESATA了,我尝试一下esataportcfg="0x00"吧.

Link to post
Share on other sites

用工具看了一下,发现这个机器上就6个SATA口,都作为内部SATA了,所以没有ESATA了,我尝试一下esataportcfg="0x00"吧.

恩,没有问题,只是启动U盘也设置成了USB了.应该没有啥问题,这个问题大概就这样了吧.

Link to post
Share on other sites

用工具看了一下,发现这个机器上就6个SATA口,都作为内部SATA了,所以没有ESATA了,我尝试一下esataportcfg="0x00"吧.

恩,没有问题,只是启动U盘也设置成了USB了.应该没有啥问题,这个问题大概就这样了吧.

oh,yeah~终于搞掂.

用什么工具查看sata口?

 

下一步搞搞硬盘休眠~ :lol:

Link to post
Share on other sites

用工具看了一下,发现这个机器上就6个SATA口,都作为内部SATA了,所以没有ESATA了,我尝试一下esataportcfg="0x00"吧.

恩,没有问题,只是启动U盘也设置成了USB了.应该没有啥问题,这个问题大概就这样了吧.

oh,yeah~终于搞掂.

用什么工具查看sata口?

 

下一步搞搞硬盘休眠~ :lol:

Everest看配置,不知道休眠如何,另外一个问题是希望将启动的u盘不要自动挂载上来.

另外你的NFS能用吗?我的好像自己编译的内核有问题,一些符号没有带上去,不能工作.

Link to post
Share on other sites

Everest看配置,不知道休眠如何,另外一个问题是希望将启动的u盘不要自动挂载上来.

另外你的NFS能用吗?我的好像自己编译的内核有问题,一些符号没有带上去,不能工作.

 

没有测试过NFS,平时用不到。在mac上用samba是可以的。

关于启动的u盘,我更多希望能在硬盘上启动,完全把u盘脱离掉。在硬盘的第一分区写入grub,估计可以用硬盘启动,但不知道怎样弄。

Link to post
Share on other sites

没有测试过NFS,平时用不到。在mac上用samba是可以的。

关于启动的u盘,我更多希望能在硬盘上启动,完全把u盘脱离掉。在硬盘的第一分区写入grub,估计可以用硬盘启动,但不知道怎样弄。

 

硬盘能启动,把启动映像写到硬盘上去就行了。问题是DSM初始化这个硬盘会破坏掉启动分区。不初始化这个硬盘空间不能被使用。

Link to post
Share on other sites

没有测试过NFS,平时用不到。在mac上用samba是可以的。

关于启动的u盘,我更多希望能在硬盘上启动,完全把u盘脱离掉。在硬盘的第一分区写入grub,估计可以用硬盘启动,但不知道怎样弄。

 

硬盘能启动,把启动映像写到硬盘上去就行了。问题是DSM初始化这个硬盘会破坏掉启动分区。不初始化这个硬盘空间不能被使用。

我的目标是,一个硬盘既做系统盘,又做启动盘。

其实它启动是通过grub的menu找到指定分区中的zImage,加载内核后,会找其他硬盘是否安装了系统,如果有就加载安装系统的硬盘。原理上,应该可以把zImage和initr放在系统盘里面的。当然,是装好dsm系统后,再进行设置。

Link to post
Share on other sites

没有测试过NFS,平时用不到。在mac上用samba是可以的。

关于启动的u盘,我更多希望能在硬盘上启动,完全把u盘脱离掉。在硬盘的第一分区写入grub,估计可以用硬盘启动,但不知道怎样弄。

 

硬盘能启动,把启动映像写到硬盘上去就行了。问题是DSM初始化这个硬盘会破坏掉启动分区。不初始化这个硬盘空间不能被使用。

那是不是这个硬盘就不能放数据了?那样的话,比较不爽啊.

Link to post
Share on other sites

没有测试过NFS,平时用不到。在mac上用samba是可以的。

关于启动的u盘,我更多希望能在硬盘上启动,完全把u盘脱离掉。在硬盘的第一分区写入grub,估计可以用硬盘启动,但不知道怎样弄。

 

硬盘能启动,把启动映像写到硬盘上去就行了。问题是DSM初始化这个硬盘会破坏掉启动分区。不初始化这个硬盘空间不能被使用。

我的目标是,一个硬盘既做系统盘,又做启动盘。

其实它启动是通过grub的menu找到指定分区中的zImage,加载内核后,会找其他硬盘是否安装了系统,如果有就加载安装系统的硬盘。原理上,应该可以把zImage和initr放在系统盘里面的。当然,是装好dsm系统后,再进行设置。

这个有点难,因为每个磁盘上至少有两个分区,都被视为是Linux RAID Partition分区,第一个就是系统的/dev/md0就是你当前跑的系统,第二个是/dev/md1,是swap分区,其他的分区是数据分区了,如果你要讲系统安装到硬盘上,那你就得将东西复制到md0上去。不知道这种情况下grub是否支持启动md分区的kernel

Link to post
Share on other sites

[ 93.824039] usb 1-3: new high-speed USB device number 2 using ehci_hcd

[ 93.961483] scsi7 : usb-storage 1-3:1.0

[ 94.964717] scsi 7:0:0:0: Direct-Access WD My Passport 0740 1007 PQ: 0 ANSI: 6

[ 94.968126] sd 7:0:0:0: Attached scsi generic sg4 type 0

[ 94.969605] sd 7:0:0:0: [sdh] Spinning up disk...

[ 94.973959] scsi 7:0:0:1: Enclosure WD SES Device 1007 PQ: 0 ANSI: 6

[ 94.976555] ses 7:0:0:1: Attached Enclosure device

[ 95.973056] .ready

[ 101.476815] sd 7:0:0:0: [sdh] 1953458176 512-byte logical blocks: (1.00 TB/931 GiB)

[ 101.478310] sd 7:0:0:0: [sdh] Write Protect is off

[ 101.478407] sd 7:0:0:0: [sdh] Mode Sense: 47 00 10 08

[ 101.479434] sd 7:0:0:0: [sdh] No Caching mode page present

[ 101.480229] sd 7:0:0:0: [sdh] Assuming drive cache: write through

[ 101.484086] sd 7:0:0:0: [sdh] No Caching mode page present

[ 101.484200] sd 7:0:0:0: [sdh] Assuming drive cache: write through

[ 101.498335] sdh: sdh1 sdh2

[ 101.504504] sd 7:0:0:0: [sdh] No Caching mode page present

[ 101.504632] sd 7:0:0:0: [sdh] Assuming drive cache: write through

[ 101.504753] sd 7:0:0:0: [sdh] Attached SCSI disk

[ 101.506090] ses 7:0:0:1: Attached scsi generic sg5 type 13

[ 103.979754] CIFS: UNC Path does not begin with // or \\

[ 104.465945] UDF-fs: warning (device sdh1): udf_fill_super: No partition found (1)

[ 106.294411] CIFS: UNC Path does not begin with // or \\

[ 106.398941] UDF-fs: warning (device sdh2): udf_fill_super: No partition found (1)

 

u盘类的usb设备都可以正确识别。插入一个1T的移动硬盘无法识别,并出现了上面的错误。

esata接口无法当usb设备使用,必须是dsm的格式才行。

Link to post
Share on other sites

我的目标是,一个硬盘既做系统盘,又做启动盘。

其实它启动是通过grub的menu找到指定分区中的zImage,加载内核后,会找其他硬盘是否安装了系统,如果有就加载安装系统的硬盘。原理上,应该可以把zImage和initr放在系统盘里面的。当然,是装好dsm系统后,再进行设置。

这个有点难,因为每个磁盘上至少有两个分区,都被视为是Linux RAID Partition分区,第一个就是系统的/dev/md0就是你当前跑的系统,第二个是/dev/md1,是swap分区,其他的分区是数据分区了,如果你要讲系统安装到硬盘上,那你就得将东西复制到md0上去。不知道这种情况下grub是否支持启动md分区的kernel

不知道这种做法行不行呢?

http://www.xxlinux.com/linux/article/ac ... /6841.html

and

http://www.ogalik.ee/installing-grub-on ... ot-device/

Link to post
Share on other sites

我的目标是,一个硬盘既做系统盘,又做启动盘。

其实它启动是通过grub的menu找到指定分区中的zImage,加载内核后,会找其他硬盘是否安装了系统,如果有就加载安装系统的硬盘。原理上,应该可以把zImage和initr放在系统盘里面的。当然,是装好dsm系统后,再进行设置。

这个有点难,因为每个磁盘上至少有两个分区,都被视为是Linux RAID Partition分区,第一个就是系统的/dev/md0就是你当前跑的系统,第二个是/dev/md1,是swap分区,其他的分区是数据分区了,如果你要讲系统安装到硬盘上,那你就得将东西复制到md0上去。不知道这种情况下grub是否支持启动md分区的kernel

不知道这种做法行不行呢?

http://www.xxlinux.com/linux/article/ac ... /6841.html

and

http://www.ogalik.ee/installing-grub-on ... ot-device/

有可能吧,主要的问题估计是md0/md1都固定死了是sdx1/sdx2,你的分区只能是sdx3了,不知道DSM会不会将你的这个sdx3作为一个数据分区来看待.

 

另外我已经解决了如果将u盘看成是启动的DOM盘了.改文件include/linux/syno.h中的下列两行.

 

#define IS_SYNO_USBBOOT_ID_VENDOR(VENDOR) (0x0DD8 == (VENDOR) || 0xD80D == (VENDOR))

#define IS_SYNO_USBBOOT_ID_PRODUCT(PRODUCT) (0x173C == (PRODUCT) || 0x3C17 == (PRODUCT))

我的启动盘是Netac的盘,我就改成了这个盘的VID和PID了.原来的VID/PID好像是0xF400/0xF401.

Link to post
Share on other sites

有可能吧,主要的问题估计是md0/md1都固定死了是sdx1/sdx2,你的分区只能是sdx3了,不知道DSM会不会将你的这个sdx3作为一个数据分区来看待.

 

另外我已经解决了如果将u盘看成是启动的DOM盘了.改文件include/linux/syno.h中的下列两行.

 

#define IS_SYNO_USBBOOT_ID_VENDOR(VENDOR) (0x0DD8 == (VENDOR) || 0xD80D == (VENDOR))

#define IS_SYNO_USBBOOT_ID_PRODUCT(PRODUCT) (0x173C == (PRODUCT) || 0x3C17 == (PRODUCT))

我的启动盘是Netac的盘,我就改成了这个盘的VID和PID了.原来的VID/PID好像是0xF400/0xF401.

 

大赞一个~我也回去改改。

 

对了,你的打包脚本呢?还没有测试完么?改这个.h要编译内核么?

Link to post
Share on other sites

有可能吧,主要的问题估计是md0/md1都固定死了是sdx1/sdx2,你的分区只能是sdx3了,不知道DSM会不会将你的这个sdx3作为一个数据分区来看待.

 

另外我已经解决了如果将u盘看成是启动的DOM盘了.改文件include/linux/syno.h中的下列两行.

 

#define IS_SYNO_USBBOOT_ID_VENDOR(VENDOR) (0x0DD8 == (VENDOR) || 0xD80D == (VENDOR))

#define IS_SYNO_USBBOOT_ID_PRODUCT(PRODUCT) (0x173C == (PRODUCT) || 0x3C17 == (PRODUCT))

我的启动盘是Netac的盘,我就改成了这个盘的VID和PID了.原来的VID/PID好像是0xF400/0xF401.

 

大赞一个~我也回去改改。

 

对了,你的打包脚本呢?还没有测试完么?改这个.h要编译内核么?

恩,我附件里面加上了.

改了synoboot有一个后果,就是你直接mount不上去,如下

mount /dev/synoboot1 /mnt会失败

主要原因我估计是mount会判断设备名称是否是块设备.我的解决方案是通过建立一个符号链接如

rm -rf /dev/sdz*; ln -s /dev/synoboot1 /dev/sdz1; ln -s /dev/synoboot1 /dev/sdz2 然后

mount /dev/sdz1 /mnt 来解决,这个在脚本里面也可以看到相应的代码.

 

脚本的帮助如下

root@DSM-BUILD:~/4.2/nighthawk149# ../../utils/rebuild.sh -h

SCRIPTPATH=/root/utils

Utility to handle xpenology build and package(writen by xu_john@sina.com)

Usage: rebuild.sh

support following options

-b: build kernel first(default false)

-d: pause after each one key operat(default true)

-k: copy kernel file(default true)

-m: copy modules files(default true)

-s: copy syno files(default true)

-r : remote host(default none)

-S : these syno files directory(default /root/utils/TEST).

-p: process pat file(default true)

-P : the PAT file(default is DS3612xs_3202-Repack.pat)

-i: process img file(default true)

-I : the IMG file(default is microserver-dsm-4.2.img)

-L : the linux source directory(default is /root/4.2/nighthawk149/linux-3.x)

-O : the output file prefix(default is JOHN),

the output dir is current dir /root/4.2/nighthawk149.

 

比较关键的大概是这么几个.

 

1)-b参数,指定是否编译内核,注意知识编译啊.不运行menuconfig

2) -r参数,指定远程的DSM的ip地址,要求DSM的ssh已经开启,这样的话,会自动更新远程的dsm的kernel/modules/syno文件.

3) 上面提到的syno文件,就是指任何你希望更改的系统里面的文件.如我更改的vendor linuxrc.syno etc.defaults/synoinfo.conf等,如果你希望更改的话,将这些文件放到一个目录下面,然后用-S参数指定这个目录(请用绝对路径),另外文件要建立目录,假设我们的文件放置的目录是/root/utils/TEST,那么上面的etc.defaults/synoinfo.conf文件,就是你要在/root/utils/TEST/etc.defaults/synoinfo.conf了

4)-k/-m/-s只对非远程更新有用(就是说更新pat和img文件),如果是远程更新的话,会将module/kernel/syno文件都更新(貌似是这样)

5) 如果更新的是pat和img文件,那么用-P/-I指定文件名称,用 -p/-i控制是否只更新其中一个文件. -O参数指定输出的img/pat的文件的前缀,原始的img/pat文件将不会更改.

6) 如果编译Kernel的话,应用-K参数指定linux-3.x目录.

7) 脚本假设rebuild.sh文件和synochecksum-emu1文件是放置在一个目录下的.同时注意,编译synochecksum-emu1文件时候要用-static参数,否则该程序无法在DSM上运行(由于找不到GLIBC的库)

 

我比较常用的是这样两个命令.

./rebuild.sh -r 192.168.8.188 (这个可以用来更新192.168.8.188主机上的DSM,但是不会编译内核,如果你要编译内核就加上-b命令)

./rebuild.sh -b -S /test(这个命令将编译内核,同时生成一个JOHN.img/JOHN.pat文件,syno需要更新的文件存放在/test目录下)

 

如果有啥疑问或者发现啥文件,请通知我.

Link to post
Share on other sites

奇怪了呢,文件怎么加不上去呢. 原来是扩展名闹的.本想将 synochecksum-emu1一并带上的,可是超过了256k的限制,极限压缩后还有260k啊.我去nas1上看看能否放上去吧.

 

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.