参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)配置编译出来的镜像中缺少mdadm
,我们在此介绍一下如何增加mdadm-3.2.6
的功能。
如果mdadm-3.2.6
的代码不能成功下载,可以从本站下载一份代码拷贝。点击这里下载。
具体使用的时候:
参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)配置编译出来的镜像中缺少mdadm
,我们在此介绍一下如何增加mdadm-3.2.6
的功能。
如果mdadm-3.2.6
的代码不能成功下载,可以从本站下载一份代码拷贝。点击这里下载。
具体使用的时候:
以前WD MyCloud
被捣鼓坏掉了,都是参考拯救死翘翘了的 WD MyCloud来处理的,但是这种处理方式需要拆机,非常的费力。最近看到有人发布了可以不拆机的方式修复的方法。研究了一下,非常可行,推荐使用这种方法。
下面的这些操作都是WD论坛上的一些达人通过分析WD MyCloud
的源代码得到的,没有非公开的黑科技,都是一些明确公布的内容。
原理大致讲一下,在WD MyCloud
主板上有一块Flash
闪存,闪存里面是已经写入的barebox
。WD MyCloud
启动的时候会把barebox
从闪存载入到内存中,并且启动barebox
,而barebox
启动后,会等待5S
的时间,检测是否有人向自己的网卡发送内容为WD-ICMP-BEACONWD-ICMP-BEACONWD-ICMP-BEACONWD-ICMP-
的ICMP
报文(本质就是PING
),一旦检测到这个报文,就会连接这个报文的发送方的69
号端口(TFTP
服务器端口),获取一个名为startup.sh
的脚本,并且下载完成后,执行这个脚本。因此我们就可以在这个脚本中拉取一个自己编译好的内核,然后运行这个内核,达到修改系统的目的。
捣鼓挂掉WD MyCloud
之后,在参照 拯救死翘翘了的 WD My Cloud 恢复系统后,首页中的容量部分显示0KB
,如下图:
解决方法为,进行一次"仅系统
"的"系统出厂还原
",如下图:
MyCloud showing 0kb available, data and files cannot be accessed
1.按照How to successfully build packages for WD My Cloud from source中的介绍,搭建完成WDMyCloud
的编译环境
2.使用如下方式编译:
3.编译php-apcu
,这个模块WD MyCloud
需要
上面下载的代码由于是国外的服务器,因此可能会出现一直无法下载成功的情况,可以从这里下载代码的拷贝。PHP源代码点击这里,PHP7 Debian编译配置文件点击这里,dh-php源代码点击这里,php-apcu源代码点击这里, php-apcu-bc源代码点击这里。
在WDMyCloud
中安装的时候执行如下命令:
注意,这部分的功能目前仅仅是可用,还没有达到完全正常的情况,如果出现问题,可以切换回PHP5
,目前已知的完美切换回到原来的PHP5
的办法就是卸载上面安装的所有PHP7
的相关应用才能切换成功,否则总有部分小功能不是太正常.
1.按照How to successfully build packages for WD My Cloud from source中的介绍,搭建完成WDMyCloud
的编译环境
2.下载TestDisk & PhotoRec 7.1的源代码
3.解压缩源代码
4.安装依赖库
5.编译源代码
编译好的文件在src
目录下面。
上面的编译方法编译出来的没办法生成安装包,如果需要安装包的版本,可以直接从Debian
源中下载已经适配过的源代码进行编译,目前已经被适配的版本是testdisk_7.0-2
。
使用如下方式编译:
有人留言希望尝试在WDMyCloud上尝试使用USB无线网卡,目标芯片是MT7601U。
经过几天的研究,找到了相关的编译方式。
链接地址 https://github.com/porjo/mt7601u,提示在Linux-4.2以后的版本中已经集成MT7601U芯片的驱动了(drivers/net/wireless/mediatek目录下),但是可惜的是WDMyCloud上的Linux内核版本号是3.2.26,曾经尝试升级到4.2版本之后的Linux内核,可惜尝试之后,发现无法成功编译Mindspeed C2000芯片(WDMyCloud使用的IC芯片,包含CPU,网卡等)驱动,因此只能退而求其次,使用MTK官方提供的驱动程序在3.2.26版本的Linux内核上进行编译。
另外注意,在WDMyCloud提供的默认系统镜像上,没有提供802.11相关的驱动,导致如果使用无线网卡,必须重新编译内核。
1.下载MT7601U芯片驱动
驱动程序的下载地址为:http://www.mediatek.com/products/broadbandWifi/mt7601u#product-downloads
也可本站下载
2.下载最新的WDMyCloud的系统源代码
目前最新的下载地址为:http://downloads.wdc.com/gpl/gpl-source-wd_my_cloud-04.04.03-113.zip
3.参照 How to successfully build packages for WD My Cloud from source构建编译环境
4.解压缩下载到的代码中的"packages/kernel_3.2"到"64k-wheezy/build/root"目录下面。
5.执行如下命令,重新编译内核,为驱动的编译准备必备的文件
修改内核编译文件"/kernel_3.2/linux/arch/arm/configs/sequoia64k-wifi_defconfig",在文件的顶部增加"CONFIG_WEXT_PRIV=y",定义这个宏的目的,是为了编译MT7601U芯片驱动的时候使用的,缺少这个宏会导致芯片驱动编译的时候缺少变量。
6.编译内核
编译成功后,在"kernel_3.2/_bld"目录下生成编译文件,在"kernel_3.2/_bin"目录下生成最终的内核镜像和驱动程序。
7.解压缩MT7601U芯片驱动代码到"64k-wheezy/build/root"目录下面,并命名为"MT7601U"。
修改芯片驱动编译文件"Makefile",找到
在这行下面增加
修改"Makefile"中,编译目标系统从PLATFORM = PC
为PLATFORM = WDMyCloud
.
接下来修改"os/linux/config.mk",在文件尾部增加
最后,切换到驱动程序所在的"MT7601U"目录,执行编译。
编译完成后,在"MT7601U/os/linux/"目录下生成名为"mt7601Usta.ko"的驱动程序文件。
剩下的,参考"MT7601U"目录下的"README_STA_usb"中的说明进行操作即可。
注意,如果要成功使用无线网卡驱动,那么需要用刚刚编译好的Linux内核,替换掉原来的内核,并且把"kernel_3.2/_bin"目录下的驱动也拷贝到系统根目录下面相同的位置即可,这个操作是高风险操作,极可能这么操作之后,系统无法正常运行,因此要提前备份文件,并且做好拆硬盘,挂载到其他机器上撤销刚刚的修改的准备。
WDMyCloud
中使用Subversion Server
的时候,发现工程名字为中文的情况下,无法下载代码,此时Subversion
客户端报告:
解决方法是在启动Subversion Server
之前指定语言为中文,如下:
其他的的参考如下链接:
WD MyCloud中设置服务在开机时候自动启动
WD MyCloud下面Git提交(Push)失败
根据网上的其他人的讨论,采用过
1.安装最新的git(2.14)(无效)
2.限制git处理的文件的大小,超过大小则保持原始文件不变 (无效)
3.限制线程数量(无效)
4.限制pack的内存占用(无效)
5.限制pack的内存以及文件大小(无效)
6.使用上面的配置,重新在大内存电脑上重建索引提交(无效)
7.增大交换分区(提交过程变得巨慢,耗费了三天后提示失败,无效)
最后的解决方法,其实就是在足够内存的机器上面,提交到本机,然后使用scp作为一个文件夹同步到WDMyCloud中。
在配置了/etc/apt/sources.list
中使用了https
之后,出现如下错误
如果是中文系统的话,会输出如下信息:
解决的方法是安装apt-transport-https
:
如果此时执行
更新会提示:
则执行如下命令来更新本地的证书:
然后就一切正常了。
1.确保WDMyCloud是最新的版本,应该是WDMyCloud v04.04.01-112以后,并且确保Apache2的版本号是2.4.9版本。
2.安装Subversion Server
3.配置并启用Apache dav_svn模块
在文件的尾部增加如下内容:
4.创建Subversion用户
5.重启 Apache2
6.网络访问“http://wd-mycloud/svn”。
7.检出项目 “svn co http://wd-mycloud/svn/project project”