WD MyCloud编译的busybox-1.23.2中增加mdadm-3.2.6(独立编译uClibc版本)

参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)配置编译出来的镜像中缺少 mdadm,无法创建 Raid-1分区,我们在此介绍一下如何增加 mdadm-3.2.6的功能。

首先参考Ubuntu 17.10上使用crosstool-ng-1.23.0建立WD MyCloud修复工具编译环境(uClibc)创建我们需要的编译工具。

接着参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)配置编译出启动镜像。

具体编译过程如下:

重新打包 uImage镜像

其他操作参照更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)

参考链接


WD MyCloud编译的busybox-1.23.2中增加parted-3.0/parted-2.3

参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)配置编译出来的镜像中缺少 parted,无法创建 GPT分区,我们在此介绍一下如何增加 parted-3.0/parted-2.3的功能。

首先参考Ubuntu 17.10上使用crosstool-ng-1.23.0建立WD MyCloud修复工具编译环境(uClibc)创建我们需要的编译工具。

接着参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)配置编译出启动镜像。

然后下载并编译 libuuid-1.0.3的源代码

然后下载并编译 parted-3.0/parted-2.3的源代码

完成后,打包我们刚刚构建的应用

重新打包 uImage镜像

其他操作参照更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)

上面涉及到的源代码,如果不能下载成功,可以从本站下载一份代码拷贝。点击这里下载libuuid-1.0.3点击这里下载parted-2.3, 点击这里下载parted-3.0

参考链接


Building a minimal RootFS with Busybox, GLIBC and DropBear

Ubuntu 17.10上使用crosstool-ng-1.23.0建立WD MyCloud修复工具编译环境(uClibc)

参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)编译出来的 Busybox是只有 3MB大小的样子,这样编译出来的东西非常基础,功能有限。如果想要增加其他软件的时候,最少改动的情况下,一般都依赖 GLIBC,而 GLIBC完整编译出来的库接近 50MB,而我们修复系统,是一个纯内存文件系统。直接采用 GLIBC会非常浪费不多的内存空间。

因此在低内存的系统上采用 uClibc,变成一个不错的选择。下面我们讲一下如何通过 crosstool-ng-1.23.0构建一个我们需要的编译系统出来。

首先编译 crosstool-ng-1.23.0源代码

如果下载 crosstool-ng源代码存在问题,可以从本站下载一份代码拷贝。点击此处下载

最终的 .config文件,可以参考下面的配置信息,或者简单的拷贝这个文件到编译目录即可

最终在如下目录生成我们需要的编译程序

编译过程中的源代码下载可能会非常缓慢,可以从本站下载一份代码的拷贝。点击这里下载。下载完成后,解压缩到当前用户根目录,编译的时候,会自动使用已经下载的文件。可以使用下面的命令进行下载解压缩操作:

如果懒得编译,也可点击这里下载一份已经编译好的编译工具

参考链接


WD MyCloud编译的busybox-1.23.2中增加mdadm-3.2.6

参考更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)配置编译出来的镜像中缺少 mdadm,我们在此介绍一下如何增加 mdadm-3.2.6的功能。

如果 mdadm-3.2.6的代码不能成功下载,可以从本站下载一份代码拷贝。点击这里下载

具体使用的时候:

参考链接


更优雅的(不拆硬盘)拯救死翘翘了的WD MyCloud(Ubuntu 17.10)

以前 WD MyCloud被捣鼓坏掉了,都是参考拯救死翘翘了的 WD MyCloud来处理的,但是这种处理方式需要拆机,非常的费力。最近看到有人发布了可以不拆机的方式修复的方法。研究了一下,非常可行,推荐使用这种方法。

下面的这些操作都是WD论坛上的一些达人通过分析 WD MyCloud的源代码得到的,没有非公开的黑科技,都是一些明确公布的内容。

原理大致讲一下,在 WD MyCloud主板上有一块 Flash闪存,闪存里面是已经写入的 bareboxWD MyCloud启动的时候会把 barebox从闪存载入到内存中,并且启动 barebox,而 barebox启动后,会等待 5S的时间,检测是否有人向自己的网卡发送内容为 WD-ICMP-BEACONWD-ICMP-BEACONWD-ICMP-BEACONWD-ICMP-ICMP报文(本质就是 PING),一旦检测到这个报文,就会连接这个报文的发送方的 69号端口( TFTP服务器端口),获取一个名为 startup.sh的脚本,并且下载完成后,执行这个脚本。因此我们就可以在这个脚本中拉取一个自己编译好的内核,然后运行这个内核,达到修改系统的目的。

对于使用 Ubuntu 16.10以及之后的版本( ubuntu 17.10),可能需要调整一下网卡的命名方式,把网卡命名方式调整为以前 Linux版本的命名方式,否则可能导致无法后面的 dhcp服务无法绑定网卡。具体的操作如下:

列出当前机器上的网卡,为我们的后续操作指定网卡提供信息

注意上面的有线网卡的名称" eth0",后面我们的 DHCP服务需要用到这个参数。

配置 DHCP服务绑定的网卡,我们需要有线网卡

指定 DHCP服务可以分配的 IP地址段

去掉如下部分的注释,我们需要 bootp的功能

并且配置 IP只能在 192.168.0.x这个地址段内分配,其他地址段不能触发主板上的 TFTP客户端从目标主机下载,这个是主板固件的限制。

必须手工配置有线网卡的 IP地址,否则无法激活网卡进行数据的传输

重启 DHCP服务,使得配置生效

安装 tftp服务端,我们的电脑作为服务端为 WD MyCloud提供文件下载服务。

下载编译脚本代码,并构建激活 WD MyCloud主板下载启动脚本的应用

如果上面的代码下载不成功。可以从本站下载一份代码拷贝

如果 WD MyCloud的源代码下载不成功,可从本站下载一份拷贝。点击这里下载
如果 busybox-1.23.2的源代码不能下载,可从本站下载一份代码拷贝。点击这里下载

编译完成后,把需要的文件拷贝到 TFTP服务器目录

准备激活 WD MyCloud的脚本下载功能。

WD MyCloud外壳底部的贴纸中找到 MAC Address信息,类似" 00:99:88:xx:xx:xx"的一串数字,下面的操作我们会用到。

上面的准备动作完成后,直接用网线连接电脑跟 WD MyCloud连接,先不要通电,然后打开一个 Shell,执行

然后不再理会这个 Shell,并给 WD MyCloud通电。

可能我们需要多次断电才能激活 WD MyCloud的下载逻辑,目前测试发现,很多时候,尽管发送了激活报文,但是没有 TFTP的下载逻辑,多次尝试就可以了。

然后不断调用

直到列表中出现这个" 00:99:88:xx:xx:xx"地址的设备获取到了 IP

最后,通过

可以获得一个可以操作的 Shell,用来执行修复。

通过如下链接增加 parted-3.0/parted-2.3mdadm-3.2.6
WD MyCloud编译的busybox-1.23.2中增加parted-3.0/parted-2.3
WD MyCloud编译的busybox-1.23.2中增加mdadm-3.2.6(独立编译uClibc版本)

重新完整创建磁盘分区(参考/etc/nas/config/disk-param.conf)

参考链接


WDMyCloud编译PHP-7.1安装包

1.  按照How to successfully build packages for WD My Cloud from source中的介绍,搭建完成 WDMyCloud的编译环境

2. 使用如下方式编译:

3.编译 php-apcu,这个模块 WDMyCloud需要

上面下载的代码由于是国外的服务器,因此可能会出现一直无法下载成功的情况,可以从这里下载代码的拷贝。PHP源代码点击这里PHP7 Debian编译配置文件点击这里dh-php源代码点击这里php-apcu源代码点击这里,  php-apcu-bc源代码点击这里

WDMyCloud中安装的时候执行如下命令:

参考链接


WDMyCloud编译TestDisk&PhotoRec 7.0/7.1

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

使用如下方式编译:

参考链接


源码包: testdisk (7.0-2)

WDMyCloud编译USB网卡MT7601U驱动(小米,小度,360WiFi)

前言


有人留言希望尝试在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 = PCPLATFORM = WDMyCloud.

接下来修改"os/linux/config.mk",在文件尾部增加

最后,切换到驱动程序所在的"MT7601U"目录,执行编译。

编译完成后,在"MT7601U/os/linux/"目录下生成名为"mt7601Usta.ko"的驱动程序文件。

剩下的,参考"MT7601U"目录下的"README_STA_usb"中的说明进行操作即可。

注意,如果要成功使用无线网卡驱动,那么需要用刚刚编译好的Linux内核,替换掉原来的内核,并且把"kernel_3.2/_bin"目录下的驱动也拷贝到系统根目录下面相同的位置即可,这个操作是高风险操作,极可能这么操作之后,系统无法正常运行,因此要提前备份文件,并且做好拆硬盘,挂载到其他机器上撤销刚刚的修改的准备。

参考链接


mt7601驱动使用(三)

WDMyCloud中使用Subversion Server不支持中文路径问题的解决

WDMyCloud中使用 Subversion Server的时候,发现工程名字为中文的情况下,无法下载代码,此时 Subversion客户端报告:

解决方法是在启动 Subversion Server之前指定语言为中文,如下:

其他的的参考如下链接:
WD MyCloud中设置服务在开机时候自动启动