交叉编译原版shadowsocks为koolshare梅林ss插件续命

交叉编译原版shadowsocks为koolshare梅林ss插件续命

只有学习原理才能闷声大发财

准备环境

  1. ubuntu 16.04
  2. 原版梅林源码
  3. shadowsocks-libev 源码

原理说明

解包梅林ss插件发现,基本都是脚本,核心都是调用ss-redir,因此猜测ss-redir为原版shadowsocks,只需要更新原版shadowsocks,并在前端进行相应修改, 便能对其续命

ubuntu 16.04

不是很了解 linux,但是应该只要能够运行 arm-linux-gcc 的 linux 发行版都可以,但我在 ubuntu 16.04 下实验成功,因此这里写 ubuntu 16.04,当然 docker 是可以的(因为我就是在 macos 下用的 docker)

原版梅林源码

虽然是 koolshare 改版固件,但其还是合并了梅林的代码,因此可以 使用梅林的交叉编译工具链

下载时,注意对应相对的梅林版本号,可以看一下固件发布时的说明

梅林的交叉编译工具链在梅林源码 release/src-rt-6.x.4708/toolchains/hndtools-arm-linux-2.6.36-uclibc-4.5.3,release 下应该是固件版本的不同,但几个固件版本下的 toolchains 均指向这个文件夹,应该是 toolchains 没有改变过

shadowsocks-libev 源码

不解释

炼丹编译

镜像准备与 arm-linux-gcc

ubuntu 首先需要安装一些编译工具,如果对系统有洁癖的,推荐使用docker,我使用了别人写好的 DockerFile 的镜像

Asuswrt Merlin 固件交叉编译环境


启动并挂载源码,运行 docker exec -it container-name zsh

进入容器后尝试运行 arm-linux-gcc

如果出现 arm-linux-gcc: no input files 说明正常,进行下一步

如果出现 其他,请检查路径,权限,否则等下编译出来的可能是 ubuntu 的 ss (我之前编译时, 解压后arm-linux-gcc没有运行权限,于是 没法编译,给了权限就可以了)

编译 shadowsocks 依赖与 shadowsocks

编译 shadowsocks 还有一些依赖需要安装,以下过程参阅

交叉编译shadowsocks-libev


需要编译 mbedTLSpcrelibsodiumlibevlibudns

按照原博文的编译后,最后编译ss时死活没有检测到编译了libudns,怕是编译后文件夹没有添加到 PATH 中,当然 刚才的博文里还提供了一键编译脚本,但那个一键编译脚本中判断参数的部分在ubuntu里报错,于是我就去了,直接写死环境 arm-linux 即可


编译过程大约需要持续 5-10 分钟

编译开始


编译成功


使用一键脚本编译的话,在 dists/shadowsocks-libev/bin 中拿到 ss-redir,将他 scp到路由器上,执行 ss-redir -v

编译成功后运行ss-redir -v


出现以上则为成功

替换原插件并自行打包

Fork原插件repo

base=shadowsocks

./ss/ssconfig.sh 中将地址更换成自己的repo可以使用自动更新

./version 第一行是版本号 第二行是 tar.gz 的 hash值

./bin ss 的各种二进制执行文件,可以将刚才编译出来的东西都覆盖进来

./webs/Main_Ss_Content.asp 前端界面,加加密方式都在这里添加