Cliff的工作室
R8500源码编译

最近处于一个比较休闲的状态,本来应该写论文的,但实在提不起兴趣来。至于工作方面,手头的事情做完了,暂时没什么BUG过来,所以也就无事可做。

由于闲着也是闲着,想起自己的Netgear R8500还没有开源固件,来了兴致,把Netgear的源码下载下来编译了一下,发现到处是坑。于是多折腾了一会,记录如下:

R8500的1.0.2.116版本源码在这里。 顺便说一句Netgear的所有开源代码在这里。 我fork了一份到github上,并在这个基础上进行了修改。

其实build instruction说的很明白了,需要在Fedora 10 32bit版本下编译。不过我实在懒得去下iso做vm。于是就在我的Ubuntu 16.04 x64上直接编译了,真是自作孽。

build instruction要求使用的toolchain是hndtools-arm-linux-2.6.36-uclibc-4.5.3.tar.bz2,我是从这里下载的,我估计Netgear用的版本跟这个不一样,因为Makefile里的路径和版本号都有小小出入。不过反正是实验性质,也懒得追究了。有兴趣的也可以参考这里

Ubuntu下一些库要安装好,我默认装了android编译所需的库(参考Android Source),还需要安装这些:

# 用bash代替默认的dash
sudo dpkg-reconfigure dash
# minidlna需要
sudo apt install libogg-dev
# iptables需要
sudo ln -s /usr/bin/arch /bin/arch
# iserver gdbm需要makeinfo命令
sudo apt install texinfo
# iserver avahi-0.6.25需要
sudo apt install intltool

toolchain必须被放置在/projects/hnd/tools/linux/路径,这里直接ln -s一下就好。其余的依照build instruction,执行:

export PATH=/projects/hnd/tools/linux/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin:$PATH
unzip R8500-V1.0.2.116_1.0.90_src.tar.zip
tar xvf R8500-V1.0.2.116_1.0.90_src.tar
cd R8500-V1.0.2.116_1.0.90_src/src/router/
make PROFILE=R7800 FW_TYPE=WW ARCH=arm PLT=arm LINUX_VERSION=2_6_36
make install PROFILE=R7800 FW_TYPE=WW ARCH=arm PLT=arm LINUX_VERSION=2_6_36

源码其他的修改点参考我的修改即可。 有一点要说明,就是src/router/Makefile在最后打包时,还要用到一个叫addpattern的工具,这个工具是在firmware-mod-kit里面,我直接从这个github地址下载了一份,编译出二进制并提交上去了。

最终生成的编译档在R8500-V1.0.2.116.1.0.90_src/src/router/arm-uclibc/kernel_image.chk。不过编好之后才想明白,手上就这一台全家都在用的路由器,哪敢随便刷啊。看来最终结果也只是玩玩而已了。

源码地址https://github.com/CliffHan/R8500-V1.0.2.116_1.0.90

2018 年 04 月 12 日 14 时 07 分