一半君的总结纸

听话只听一半君

为磊科 q3 / ni360 编译带 pcre 的tomato shibby 固件 v138

为了使用高版本的ss(>=2.5.1),需要路由器带libpcre,但是shibby官网下载的固件里,只有AIO版本开启了NGINX(从而会把libpcre打包进来),说明见此,所以要么使用tomatoedit修改固件,要么就自己编译tomato,lz下面先试试麻烦的方式

update:lz已经编译了更高版本v140,见这里 更新磊科q3和烽火hg320自定义版tomato shibby到v140

由于磊科Q3/ni360这种屌丝配置路由器flash只有8Mb,所以lz采用刚好够大的MAX版本(6.7Mb左右)作为基础,开启libpcre支持,当然用更小的4Mb版本也行,lz除了放动态链接版的ss和perp去到jffs之外也没有什么需要存的,但是空间不用白不用… orz

cd ~
git clone -b tomato-shibby-RT-AC https://github.com/tomatofirmware/tomato.git

# 似乎tag v138是tomato-shibby branch里的,所以不要做这一步了 http://www.linksysinfo.org/index.php?threads/how-to-compile-shibby-v138-from-source.73203/
# git checkout tags/v138

sudo ln -s ~/tomato/tools/brcm /opt/brcm
export PATH=$PATH:/opt/brcm/hndtools-mipsel-linux/bin:/opt/brcm/hndtools-mipsel-uclibc/bin
cd tomato/release/src-rt
make distclean
time make V1=RT-N5x- V2=-138 v2mq3 2>&1 | tee ~/outputfile.txt

lz修改了下makefile,在max版本里打开了pcre编译选项,所以才有上面的v2mq3的编译选项,此外,在v138版本里即使使用v2m选项编译,也已经有fchdir这个symbol了,可能是由于某个模块调用到了他,以至于他没有被strip掉,总之,不用照着这篇blog的方法乱搞了

乱搞尝试1

修改Makefile,加一个q3的选项

	if [ "$(Q3)" = "y" ]; then \
		sed -i "/TCONFIG_Q3/d" $(1); \
		echo "TCONFIG_Q3=y" >>$(1); \
	fi; \
...

r2mq3:
	@$(MAKE) m MIPS32=r2 Q3=Y

然后

ifeq (obj-$(TCONFIG_Q3),y)
obj-$(TCONFIG_Q3) += pcre
endif

# 然后把下面的注释掉
obj-$(TCONFIG_NGINX) += pcre
config TCONFIG_Q3
	bool "Q3"
	default n
# TCONFIG_Q3 is not set

各种错误的应对:(终告失败)

  • 测试过程中发现编译要求automake 1.15以上版本,可是lz笔记本centos7最高只到1.13.4,所以自己手动安装了

    orz 不久之后测试加入pcre的时候发现有提示说要使用1.14,只好又装了个1.14,此外看到有一堆hardcoded的路径指向/home/vicente,lz脑残的使用了

    sudo ln -s ~ /home/vicente
    
  • 如果出现
    ./configure: line 3418: syntax error near unexpected token `SYSTEMD,'
    ./configure: line 3418: `  PKG_CHECK_MODULES(SYSTEMD, libsystemd, have_systemd=yes,'
    make[4]: *** [dnscrypt/stamp-h1] Error 2
    

    可以手动升级pkg-config到最新版 0.29.1

  • # firmware-mod-kit可以解压.trx文件
    git clone https://github.com/rampageX/firmware-mod-kit.git
    yum install python-magic
    

所以说乱搞是不行的阿

乱搞尝试2

不自己乱搞,干脆把nginx=y整个加上,因为他肯定会顺带加上pcre

q3:
	@$(MAKE) bin OPENVPN=y BBEXTRAS=y EBTABLES=y IPV6SUPP=y B=E BUILD_DESC="Max" USB="" NOCAT=y NFS=y SNMP=y DNSCRYPT=y PPTPD=y TOR=y IPSEC=y  MULTIWAN=y NGINX=y
...
r2q3:
	@$(MAKE) q3 MIPS32=r2

上面这截就是直接把m:拷了过来,加了个NGINX=y而已,但这样是不行的

Unable to resolve curl_multi_perform used by php-cli  

去github一搜, curl_multi_perform是libcurl里的,而下面这文件里有这么一行

obj-$(TCONFIG_BBT) += libcurl

由此可知,这些选项不是能自己随便组合的,要么加上BTCLIENT=y 可是q3连usb口都没有,lz根本用不着这个,所以lz加上这行

obj-$(TCONFIG_NGINX) += libcurl
...
# 把下面这行去掉
# obj-$(TCONFIG_BBT) += libcurl

这样是可以编译出来,但是基本和AIO差不多大了,16mb多,远超过8mb,所以还是实际点,用脑残法吧

乱搞尝试3

直接拿tomatoedit或者拿firmware-mod-kit改改得了,直接下shibby的AIO版本,把libpcre的so文件解出去,加到max版本里即可,鉴于本身max版本就已经较大了,lz还想放perp进去的,即使是v138的max版,想把perp和ss全套放进去已经放不下了,所以lz只好不放ss-manager等额外可执行文件,综上lz自行编译了几个自定义的max版本和vpn版本,见

下面使用tomatoedit从AIO版本的固件中/usr/lib下解出 libpcre.so.1.2.3 libpcreposix.so.0.0.2 这两个文件,放进max版本固件里

注:如果tomatoedit在英文系统上打开菜单乱码,可以使用LocaleEmulator模拟中文环境

导入文件
tomatoedit_import

创建symlink
tomatoedit_new_symlink

更改原.so文件的权限
tomatoedit_original_so_file_permission

当然还要设置symlink指向的目标
tomatoedit_link

刷进去之前可以在linux机器上用frimware-mod-kit解开,看是不是设置对了

sudo ./extract-firmware.sh tomato-K26-1.28.RT-N5x-MIPSR2-138-Max-Q3-PCRE.trx extracted

然后去里面看看是不是有了需要的so文件和symlink
tomatoedit_pcre

很好下面测试刷机,由于lz的q3已经是tomato shibby v138 max了,所以直接在web页面刷即可,如果是原版q3,请参考 磊科Q3从原版或者砖机到tomato shibby备忘录

经测试>2.5.0的 ss-server 2.5.6可以正常运行,perp也可以

pcre-found

perp_running

下载链接:
加pcre 去openvpn max版tomato-K26-1.28.RT-N5x-MIPSR2-138-netcore-q3-Max-pcre.trx
加pcre 加jffs vpn版tomato-K26-1.28.RT-N5x-MIPSR2-138-netcore-q3-VPN-pcre.trx

加pcre shibby max原版tomato-K26-1.28.RT-N5x-MIPSR2-138-Max-pcre.trx

tomatoEdit_2013.8.19.rar
rampageX/firmware-mod-kit

ss libev for tomato下载地址

参考:
How to build, and rebuild Tomato, FOR TOTAL NOOBS
How to Install or Update autoconf and automake on RHEL/CentOS?
Compilation libjson-c fails
GNU make
Install And Configure Samba Server In CentOS 7

TomatoEdit,Windows下的固件编辑工具(8.19更新)

Advertisements

14 responses to “为磊科 q3 / ni360 编译带 pcre 的tomato shibby 固件 v138

  1. zyan16 四月 7, 2017 @ 4:38 下午

    三个dropbox的下载链接不好用了,博主有空更新下吧!

  2. nik 五月 1, 2017 @ 12:20 下午

    地址都失效了,无法下载

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: