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


Recommended Posts

http://xpenology.com/forum/viewtopic.php?f=2&t=515

 

Andy 兄已經寫左, 只要用 ubuntu build 好, 要乜 driver 自己 copy 去DSM 的 /usr/lib/modules 便可.

试到最后,make synochecksum-emu1 的时候报错:

warning: ignoring return value of ‘read’,declared with at tribute warn_unused_result [-Wunused-result]

 

不知道该怎么办了。 :sad:

这个不是报错呀,只是warning,忽略即可,生成的文件正常使用的。

 

ps,楼上的各位USB 外置设备可以正常使用么?

Link to post
Share on other sites
http://xpenology.com/forum/viewtopic.php?f=2&t=515

 

Andy 兄已經寫左, 只要用 ubuntu build 好, 要乜 driver 自己 copy 去DSM 的 /usr/lib/modules 便可.

试到最后,make synochecksum-emu1 的时候报错:

warning: ignoring return value of ‘read’,declared with at tribute warn_unused_result [-Wunused-result]

 

不知道该怎么办了。 :sad:

这个不是报错呀,只是warning,忽略即可,生成的文件正常使用的。

 

ps,楼上的各位USB 外置设备可以正常使用么?

感谢回复。但是之后把synochecksum-emu1复制到PAT的目录后,执行

synochecksum-emu1 hda1.tgz rd.gz updater VERSION zImage >checksum.syno

报错

synochecksum-emu1:command not found

 

这个怎么办呢?我一直以为是因为编译时的错误呢。

 

4.1的USB外置硬盘好像没问题。4.2装在虚拟机上,没试过.

Link to post
Share on other sites
但是之后把synochecksum-emu1复制到PAT的目录后,执行

synochecksum-emu1 hda1.tgz rd.gz updater VERSION zImage >checksum.syno

报错

synochecksum-emu1:command not found

 

这个怎么办呢?我一直以为是因为编译时的错误呢。

你需要指定synochecksum-emu1的目录,如/root/synochecksum-emu1 或者是./synochecksum-emu1 之类的,如果没有指定,它会去系统的PATH中找,你的肯定没有放到系统的PATH里面去,所以就找不到.

Link to post
Share on other sites
但是之后把synochecksum-emu1复制到PAT的目录后,执行

synochecksum-emu1 hda1.tgz rd.gz updater VERSION zImage >checksum.syno

报错

synochecksum-emu1:command not found

 

这个怎么办呢?我一直以为是因为编译时的错误呢。

你需要指定synochecksum-emu1的目录,如/root/synochecksum-emu1 或者是./synochecksum-emu1 之类的,如果没有指定,它会去系统的PATH中找,你的肯定没有放到系统的PATH里面去,所以就找不到.

原来如此。对linux刚摸不久,一直还是windows的概念,以为放到当前目录下就可以了。回家试试。非常感谢! :grin:

Link to post
Share on other sites

我用4.1版的話, 只要把COMPILE 出來的".ko" 檔拷貝到 /usr/lib/modules 重啟NAS便可, USB 2 和 USB 3的都可用.

用4.2版的話, 不用自行COMPILE, 本身它對的有的USB2 和 USB3都支援.

Link to post
Share on other sites
我用4.1版的話, 只要把COMPILE 出來的".ko" 檔拷貝到 /usr/lib/modules 重啟NAS便可, USB 2 和 USB 3的都可用.

用4.2版的話, 不用自行COMPILE, 本身它對的有的USB2 和 USB3都支援.

再请教一下各位,能否在4.2上安装fuse和bindfs?

一直想把远程的共享目录挂载到photo和video目录下用。但是一般的mount挂载后,系统无法重建索引,所以photo station和video station中都不会显示。据说用bindfs就可以,可是一直没安装成功。 :sad:

Link to post
Share on other sites
我用4.1版的話, 只要把COMPILE 出來的".ko" 檔拷貝到 /usr/lib/modules 重啟NAS便可, USB 2 和 USB 3的都可用.

用4.2版的話, 不用自行COMPILE, 本身它對的有的USB2 和 USB3都支援.

我自行编译4.2的Synoboot,无法支持USB设置,请教如何编译才能支持USB?

ps,因为网上流传的4.2版本不支持我主板网卡,所以需要自行编译添加网卡驱动

Link to post
Share on other sites
我用4.1版的話, 只要把COMPILE 出來的".ko" 檔拷貝到 /usr/lib/modules 重啟NAS便可, USB 2 和 USB 3的都可用.

用4.2版的話, 不用自行COMPILE, 本身它對的有的USB2 和 USB3都支援.

我已经尝试自己编译4.1的系统,没有什么问题,但是在ESX5里面,老是安装pat文件后系统无法认为已经配置过了,仍然是说没有安装pat,不知道具体原因.

 

另外我对您说的只要将ko复制到/usr/lib/modules后重启就可以生效有一点怀疑.因为我知道模块必须加载才会生效,不知道系统中间那个会去自动加载,不过我现在一直在弄虚拟机,所以没有机会看实际硬件情况下是否系统会自动加载需要的驱动.

Link to post
Share on other sites
我用4.1版的話, 只要把COMPILE 出來的".ko" 檔拷貝到 /usr/lib/modules 重啟NAS便可, USB 2 和 USB 3的都可用.

用4.2版的話, 不用自行COMPILE, 本身它對的有的USB2 和 USB3都支援.

我自行编译4.2的Synoboot,无法支持USB设置,请教如何编译才能支持USB?

ps,因为网上流传的4.2版本不支持我主板网卡,所以需要自行编译添加网卡驱动

具体的情况要看你需要那个usb设备的驱动了. 不同驱动要在menuconfig中添加,然后另外一个问题就是找一个合适的地方将驱动挂载上去.

 

你用的是哪一个source code, Andy的还是Synology的sourcefourge上的还是其他的,这些好像不太一样.

Link to post
Share on other sites
我用4.1版的話, 只要把COMPILE 出來的".ko" 檔拷貝到 /usr/lib/modules 重啟NAS便可, USB 2 和 USB 3的都可用.

用4.2版的話, 不用自行COMPILE, 本身它對的有的USB2 和 USB3都支援.

我自行编译4.2的Synoboot,无法支持USB设置,请教如何编译才能支持USB?

ps,因为网上流传的4.2版本不支持我主板网卡,所以需要自行编译添加网卡驱动

具体的情况要看你需要那个usb设备的驱动了. 不同驱动要在menuconfig中添加,然后另外一个问题就是找一个合适的地方将驱动挂载上去.

 

你用的是哪一个source code, Andy的还是Synology的sourcefourge上的还是其他的,这些好像不太一样.

 

用dmesg 看到插入的u盘已经被识别到,但没有挂靠成共享目录。是usb驱动的问题,还是什么原因呢?请指导一下解决思路..

我的soucecode用Synology的sourcefourge,内核用这个 https://github.com/nighthawk149/xpenology-4.2-kernel

Andy那个内核貌似不支持4.2。

Link to post
Share on other sites

用dmesg 看到插入的u盘已经被识别到,但没有挂靠成共享目录。是usb驱动的问题,还是什么原因呢?请指导一下解决思路..

我的soucecode用Synology的sourcefourge,内核用这个 https://github.com/nighthawk149/xpenology-4.2-kernel

Andy那个内核貌似不支持4.2。

这个我就不太清楚了. 如果usb盘已经被识别到,你用fdisk看一下是不是已经有这个设备了,如果有的话,那么你手动mount一下看看能否mount上来, 我感觉好像u盘好多是FAT格式的.不知道这个内核内置的文件系统是否支持,如果是mount报告文件系统不支持,你可以考虑将需要的文件系统编译成模块后复制到/usr/lib/modules后再尝试一下.

Link to post
Share on other sites

用dmesg 看到插入的u盘已经被识别到,但没有挂靠成共享目录。是usb驱动的问题,还是什么原因呢?请指导一下解决思路..

我的soucecode用Synology的sourcefourge,内核用这个 https://github.com/nighthawk149/xpenology-4.2-kernel

Andy那个内核貌似不支持4.2。

这个我就不太清楚了. 如果usb盘已经被识别到,你用fdisk看一下是不是已经有这个设备了,如果有的话,那么你手动mount一下看看能否mount上来, 我感觉好像u盘好多是FAT格式的.不知道这个内核内置的文件系统是否支持,如果是mount报告文件系统不支持,你可以考虑将需要的文件系统编译成模块后复制到/usr/lib/modules后再尝试一下.

 

可以mount

mount -t vfat /dev/sdh1 /tmp/upan

 

在命令行下可以访问u盘里面的文件,单无法在dsm界面上操作。系统并没有识别成外置设备,而是内置磁盘。

请问这个应该往哪个方向去解决呢?

 

ps:dmesg信息如下

 

[ 295.216039] usb 1-5: new high-speed USB device number 2 using ehci_hcd

[ 295.352934] scsi7 : usb-storage 1-5:1.0

[ 296.357254] scsi 7:0:0:0: Direct-Access SanDisk Cruzer Fit 1.22 PQ: 0 ANSI: 5

[ 296.360083] sd 7:0:0:0: [sdh] 31266816 512-byte logical blocks: (16.0 GB/14.9 GiB)

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

[ 296.361789] sd 7:0:0:0: [sdh] Mode Sense: 43 00 00 00

[ 296.362948] sd 7:0:0:0: [sdh] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA

[ 296.368171] sd 7:0:0:0: Attached scsi generic sg3 type 0

[ 296.384766] sdh: sdh1

[ 296.390297] sd 7:0:0:0: [sdh] Attached SCSI removable disk

Link to post
Share on other sites

用dmesg 看到插入的u盘已经被识别到,但没有挂靠成共享目录。是usb驱动的问题,还是什么原因呢?请指导一下解决思路..

我的soucecode用Synology的sourcefourge,内核用这个 https://github.com/nighthawk149/xpenology-4.2-kernel

Andy那个内核貌似不支持4.2。

这个我就不太清楚了. 如果usb盘已经被识别到,你用fdisk看一下是不是已经有这个设备了,如果有的话,那么你手动mount一下看看能否mount上来, 我感觉好像u盘好多是FAT格式的.不知道这个内核内置的文件系统是否支持,如果是mount报告文件系统不支持,你可以考虑将需要的文件系统编译成模块后复制到/usr/lib/modules后再尝试一下.

 

可以mount

mount -t vfat /dev/sdh1 /tmp/upan

 

在命令行下可以访问u盘里面的文件,单无法在dsm界面上操作。系统并没有识别成外置设备,而是内置磁盘。

请问这个应该往哪个方向去解决呢?

 

ps:dmesg信息如下

 

[ 295.216039] usb 1-5: new high-speed USB device number 2 using ehci_hcd

[ 295.352934] scsi7 : usb-storage 1-5:1.0

[ 296.357254] scsi 7:0:0:0: Direct-Access SanDisk Cruzer Fit 1.22 PQ: 0 ANSI: 5

[ 296.360083] sd 7:0:0:0: [sdh] 31266816 512-byte logical blocks: (16.0 GB/14.9 GiB)

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

[ 296.361789] sd 7:0:0:0: [sdh] Mode Sense: 43 00 00 00

[ 296.362948] sd 7:0:0:0: [sdh] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA

[ 296.368171] sd 7:0:0:0: Attached scsi generic sg3 type 0

[ 296.384766] sdh: sdh1

[ 296.390297] sd 7:0:0:0: [sdh] Attached SCSI removable disk

这个就不太清楚了,你可以去看看sd.c文件里面的处理吧。我只是简单看了一下,我现在主要在看反汇编的synobios.ko,因为系统老是报告一个8004bb29之类的ioctl出错,虽然不影响,但是我还是想弄明白为啥。你这个情况好像论坛的其他帖子里面有描述过,我貌似见到过,但是现在不记得是哪个帖子了。

Link to post
Share on other sites

这个就不太清楚了,你可以去看看sd.c文件里面的处理吧。我只是简单看了一下,我现在主要在看反汇编的synobios.ko,因为系统老是报告一个8004bb29之类的ioctl出错,虽然不影响,但是我还是想弄明白为啥。你这个情况好像论坛的其他帖子里面有描述过,我貌似见到过,但是现在不记得是哪个帖子了。

感谢回复。

我看了下资料,发现少了scsi_mod 和sd_mod

如果你的系统可以正常识别usb设备,麻烦把lsmod的结果帖上来看看。

我的结果如下:

cifs 235821 0

udf 76146 0

isofs 30682 0

loop 15193 0

usbhid 24297 0

hid 52865 1 usbhid

usblp 10106 0

usb_storage 42082 0

uhci_hcd 21215 0

etxhci_hcd 73299 0

xhci_hcd 77221 0

ehci_hcd 38103 0

bromolow_synobios 32186 0

synoacl_ext4 12967 2

synoacl_vfs 4940 2

btrfs 527604 0

hfsplus 80556 0

md4 3049 0

hmac 2793 0

vfat 9880 0

fat 47404 1 vfat

ecryptfs 86971 0

sha512_generic 4777 0

sha256_generic 8620 0

ecb 1849 0

chainiv 3063 0

des_generic 15563 0

crc32c 2606 0

eseqiv 2555 0

krng 1033 0

ansi_cprng 3605 0

cts 3968 0

md5 1737 0

cbc 2563 0

be2net 64400 0

ixgbe 131032 0

dca 4692 1 ixgbe

cpufreq_conservative 5105 0

cpufreq_powersave 830 0

cpufreq_performance 834 0

cpufreq_ondemand 5997 0

mperf 1019 0

processor 24671 0

thermal_sys 13970 1 processor

cpufreq_stats 3126 0

freq_table 2099 2 cpufreq_ondemand,cpufreq_stats

dm_snapshot 27439 0

crc_itu_t 1169 1 udf

crc_ccitt 1203 0

quota_v2 3639 4

quota_tree 7078 1 quota_v2

usbcore 155326 8 usbhid,usblp,usb_storage,uhci_hcd,etxhci_hcd,xhci_hcd,ehci_hcd

psnap 1717 0

p8022 979 0

llc 3456 2 psnap,p8022

usb_common 753 1 usbcore

ipv6 256270 63

r8168 235344 0

 

另外,请教如何才能把scsi_mod和sd_mod模块编译到内核。我在menuconfig选成*了,但无法生成.ko文件,只有.o文件.

Link to post
Share on other sites

这个就不太清楚了,你可以去看看sd.c文件里面的处理吧。我只是简单看了一下,我现在主要在看反汇编的synobios.ko,因为系统老是报告一个8004bb29之类的ioctl出错,虽然不影响,但是我还是想弄明白为啥。你这个情况好像论坛的其他帖子里面有描述过,我貌似见到过,但是现在不记得是哪个帖子了。

感谢回复。

我看了下资料,发现少了scsi_mod 和sd_mod

如果你的系统可以正常识别usb设备,麻烦把lsmod的结果帖上来看看。

我的结果如下:

cifs 235821 0

udf 76146 0

isofs 30682 0

loop 15193 0

usbhid 24297 0

hid 52865 1 usbhid

usblp 10106 0

usb_storage 42082 0

uhci_hcd 21215 0

etxhci_hcd 73299 0

xhci_hcd 77221 0

ehci_hcd 38103 0

bromolow_synobios 32186 0

synoacl_ext4 12967 2

synoacl_vfs 4940 2

btrfs 527604 0

hfsplus 80556 0

md4 3049 0

hmac 2793 0

vfat 9880 0

fat 47404 1 vfat

ecryptfs 86971 0

sha512_generic 4777 0

sha256_generic 8620 0

ecb 1849 0

chainiv 3063 0

des_generic 15563 0

crc32c 2606 0

eseqiv 2555 0

krng 1033 0

ansi_cprng 3605 0

cts 3968 0

md5 1737 0

cbc 2563 0

be2net 64400 0

ixgbe 131032 0

dca 4692 1 ixgbe

cpufreq_conservative 5105 0

cpufreq_powersave 830 0

cpufreq_performance 834 0

cpufreq_ondemand 5997 0

mperf 1019 0

processor 24671 0

thermal_sys 13970 1 processor

cpufreq_stats 3126 0

freq_table 2099 2 cpufreq_ondemand,cpufreq_stats

dm_snapshot 27439 0

crc_itu_t 1169 1 udf

crc_ccitt 1203 0

quota_v2 3639 4

quota_tree 7078 1 quota_v2

usbcore 155326 8 usbhid,usblp,usb_storage,uhci_hcd,etxhci_hcd,xhci_hcd,ehci_hcd

psnap 1717 0

p8022 979 0

llc 3456 2 psnap,p8022

usb_common 753 1 usbcore

ipv6 256270 63

r8168 235344 0

 

另外,请教如何才能把scsi_mod和sd_mod模块编译到内核。我在menuconfig选成*了,但无法生成.ko文件,只有.o文件.

 

我的机器在公司呢,现在拿不到lsmod的输出

你选择成*那么就不是编译成模块了,是编译到了内核里面去了,这种情况下要替换内核才行,你改成选成[M]再编译吧,这样应该有ko文件了

 

恩,编译好像比较简单,按照wiki的方法就可以了。我是用的下面的方法(细节没有写了参考wiki的方法吧)。

make ARCH=xxx CROSE_COMPILE=/usr/local/xxxx menuconfig

make ARCH=xxx CROSE_COMPILE=/usr/local/xxxx modules

make ARCH=xxx CROSE_COMPILE=/usr/local/xxxx bzImage

编译后你可能需要将bzImage和modules都复制到你的系统中去。我自己写了个脚本来做这件事情,因为要替换img和pat文件中的好几个地方。如果你的系统已经跑起来了,不知道是不是只替换当前系统的/lib/modules/下的文件就可以了,我尝试替换bzImage文件,但是/dev/sdh1无法用rw的方法加载,就没有这么改了。

 

另外就是上面说的sd.c里面好像是不支持SCSI磁盘的,只支持SAS/SATA/和另外几个磁盘,这是为啥ESX5里面无法简单的跑DSM4.2,要改,论坛里面有个帖子说了大致的思路,但是我没有来得及仔细看。

Link to post
Share on other sites

看这个帖子http://xpenology.com/forum/viewtopic.php?f=2&t=6&hilit=esata&start=95,好像usb可以被识别成estat,这是不是你想要的效果?我家的网络超慢,那个googledoc我上不去,不知道是不是4.2的。

Link to post
Share on other sites

 

我的机器在公司呢,现在拿不到lsmod的输出

你选择成*那么就不是编译成模块了,是编译到了内核里面去了,这种情况下要替换内核才行,你改成选成[M]再编译吧,这样应该有ko文件了

 

恩,编译好像比较简单,按照wiki的方法就可以了。我是用的下面的方法(细节没有写了参考wiki的方法吧)。

make ARCH=xxx CROSE_COMPILE=/usr/local/xxxx menuconfig

make ARCH=xxx CROSE_COMPILE=/usr/local/xxxx modules

make ARCH=xxx CROSE_COMPILE=/usr/local/xxxx bzImage

编译后你可能需要将bzImage和modules都复制到你的系统中去。我自己写了个脚本来做这件事情,因为要替换img和pat文件中的好几个地方。如果你的系统已经跑起来了,不知道是不是只替换当前系统的/lib/modules/下的文件就可以了,我尝试替换bzImage文件,但是/dev/sdh1无法用rw的方法加载,就没有这么改了。

 

另外就是上面说的sd.c里面好像是不支持SCSI磁盘的,只支持SAS/SATA/和另外几个磁盘,这是为啥ESX5里面无法简单的跑DSM4.2,要改,论坛里面有个帖子说了大致的思路,但是我没有来得及仔细看。

我是替换内核zImage文件的。按道理选*了,就可以编译到内核里面去。但lsmod的结果显示没有。明天再试下手动加载ko文件看看。

对了,我的grub boot中,把vendor注释掉的,这个会有影响么? 对这块不是很熟,vendor的作用是什么?

Link to post
Share on other sites
看这个帖子http://xpenology.com/forum/viewtopic.php?f=2&t=6&hilit=esata&start=95,好像usb可以被识别成estat,这是不是你想要的效果?我家的网络超慢,那个googledoc我上不去,不知道是不是4.2的。

估计识别成esata同样有问题,看资料说内置硬盘和esata都需要格式化成synology的格式才能读取。anyway,明天装个干净的系统替换一下modules看看。现在硬盘里面已经带数据在跑了,怕替换后无法启动。

谢谢提供资料..

Link to post
Share on other sites

我是替换内核zImage文件的。按道理选*了,就可以编译到内核里面去。但lsmod的结果显示没有。明天再试下手动加载ko文件看看。

对了,我的grub boot中,把vendor注释掉的,这个会有影响么? 对这块不是很熟,vendor的作用是什么?

恩,替换内核的话,lsmod当然不会有相关的模块了.

Link to post
Share on other sites

我是替换内核zImage文件的。按道理选*了,就可以编译到内核里面去。但lsmod的结果显示没有。明天再试下手动加载ko文件看看。

对了,我的grub boot中,把vendor注释掉的,这个会有影响么? 对这块不是很熟,vendor的作用是什么?

恩,替换内核的话,lsmod当然不会有相关的模块了.

 

噢~明白了,一直搞错lsmod的作用。

请问你的自动复制zImage和module文件的脚本能否提供一下?我现在的做法挺麻烦,编译zImage,copy到启动盘,重插到主机,再启动..

Link to post
Share on other sites

我是替换内核zImage文件的。按道理选*了,就可以编译到内核里面去。但lsmod的结果显示没有。明天再试下手动加载ko文件看看。

对了,我的grub boot中,把vendor注释掉的,这个会有影响么? 对这块不是很熟,vendor的作用是什么?

恩,替换内核的话,lsmod当然不会有相关的模块了.

 

噢~明白了,一直搞错lsmod的作用。

请问你的自动复制zImage和module文件的脚本能否提供一下?我现在的做法挺麻烦,编译zImage,copy到启动盘,重插到主机,再启动..

我的脚本好像解决不了你的做法麻烦的问题,我的做法,是手工编译后,将原始的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盘上去了,在系统中被认为是啥类型的盘. 如果能找到相关的文档也行.

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.