使用uClibc Toolchain编译LEDE系统,适配迅雷xware远程下载

最近买了MT7621路由,还带sata口,就想适配一个系统,由于:
1.Openwrt官方trunk里面kmod-mt76驱动居然还停留在2016年6月,实测2.4G比较弱,所以不予考虑了,再看LEDE的snapshot,更新到2017年2月了,当然要选择LEDE了。
2.LEDE目前全面切换到了MUSL库,导致迅雷xware mipsel的32位uclibc版本直接不能用了,为了适配,所以必须编译一个基于uClibc库的系统,但是LEDE/OPENWRT的toolchain默认菜单里面都只有musl和glibc了,uclibc被标记为了broken。。。。所以必须自行研究。

折腾了大约1周,终于搞定了,步骤如下:
1.下载LEDE源码,这个很简单:

2.修改Toolchain,以便使用uClibc:
(1).修改/toolchain/Config.in

(2).修改/toolchain/uClibc/Makefile

(3).修改toolchain/uClibc/headers/Makefile

(4).如果要修改使用的uclibc-ng版本,需要修改toolchain/uClibc/common.mk里面的版本号和对应sha值,默认1.0.22不用修改了。

上述修改完成后,后续make menuconfig里面就可以选择到uclibc-ng了。

3.编译系统

通过advanced configuration options (for developers) > Toolchain Options > c library > uclibc-ng
其他自己选择。保存.config后,输入:

自动编译脚本autocompile.sh 内容为:

等几个小时以后就可以在source/bin目录下找到编译完成的系统了,编译过程中另外一个ssh登录,通过errors.txt和nohup.out查看编译进度,原ssh窗口可以关闭。

4.安装系统,配置调试迅雷
可以通过命令行sysupgrade -v xxxx.bin或者通过luci网页升级系统。
升级完成后,由于uclibc-ng 1.0.18及之后版本将libpthread, libcrypt, libdl, libm, libutil等库合并到了libuClibc中,需要link一些libuClibc,以便迅雷xware可以使用:

然后将Xware1.0.31_mipsel_32_uclibc上传路由,运行:

常用软件例如chinadns可使用imagebuilder编译。

参考文档:
1.http://lists.infradead.org/pipermail/lede-dev/2016-June/001145.html
2.https://lists.openwrt.org/pipermail/openwrt-devel/2009-June/004411.html
3.https://www.mail-archive.com/lede-dev@lists.infradead.org/msg05838.html

《使用uClibc Toolchain编译LEDE系统,适配迅雷xware远程下载》有3个想法

  1. — a/toolchain/uClibc/Makefile
    +++ b/toolchain/uClibc/Makefile

    define Host/SetToolchainInfo
    $(SED) ‘s,^\(LIBC_TYPE\)=.*,\1=$(PKG_NAME),’ $(TOOLCHAIN_DIR)/info.mk
    – $(SED) ‘s,^\(LIBC_URL\)=.*,\1=http://www.uclibc.org/,’ $(TOOLCHAIN_DIR)/info.mk
    + $(SED) ‘s,^\(LIBC_URL\)=.*,\1=http://www.uclibc-ng.org/,’ $(TOOLCHAIN_DIR)/info.mk
    $(SED) ‘s,^\(LIBC_VERSION\)=.*,\1=$(PKG_VERSION),’ $(TOOLCHAIN_DIR)/info.mk
    $(SED) ‘s,^\(LIBC_SO_VERSION\)=.*,\1=$(LIBC_SO_VERSION),’ $(TOOLCHAIN_DIR)/info.mk
    endef

    上面
    — a/toolchain/uClibc/Makefile
    +++ b/toolchain/uClibc/Makefile这两行也要复制进去吗?

发表评论

电子邮件地址不会被公开。 必填项已用*标注