3

自己动手DIY:编译路由器固件

 4 years ago
source link: https://www.freebuf.com/geek/230220.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

上一期的文章发出之后,得到了很多小伙伴的关注,这次还是围绕之前见到的那个路由器做文章。

优缺点分析:

潘多拉固件功能还是非常不错的,但是她不像OpenWrt安装软件那样非常方便。

当时我使用了Putty进入后台准备安装点其他的软件发现他的opkg命令都没有。不过我发现了又一个opkg的脚本运行之后,就可以使用opkg了。然后才能安装RTL-SDR等其他软件了。要稍等一会。才能安装成功。我当时安装这个是为了再我的路由器上用SDR的。因为我之前捡到的盒子的CPU是MT7620.查看了数据手册之后发现是可以外接USB的。

mEZBzaA.jpg!web

但是上网查找了一些资料之后发现其实潘多拉固件里面很多功能都是有的,只不过在编译的时候开发人员并没有开启某些功能,要是想用某些功能的话就得自己编译固件。

Avayyyv.jpg!web

我还没有开始打磨CPU,我想说的是不是那么简单的。由于最近一直再家里面很多设备也都不齐全,所以我还是准备点其他的工作吧。这一项工作还是多做点前导工作吧。

得,上手开始编译固件吧。

编译固件

编译环境:

LINUX(我使用的是UBuntu16,当时为了研究GNURadio的时候再虚拟机里面安装的),当然了windows10的子系统也是可以的。大家只要开启服务,然后安装他的子系统就好啦。

配置的话,我感觉都还好,我的电脑是8G的运行内存。128G的固态,外加1TB的硬盘。我看了网上的一些帖子好像都说硬盘要有30G的容量。不过我相信现在大家电脑的配置都不会差吧。当然了你是物理机安装Linux系统的话也挺好的。

我之前有一台旧笔记本电脑安装好了KALI LINUX。600块再咸鱼上给卖了。要不然这次我就用那台电脑编译了。

前期准备:

我看了网上有人说要更换源,反正我没更换,软件更新也很快。大家要是出现更新慢的情况下还是换一下。也就两句命令的事。但是我懒,我就不换啦。

安装依赖包:

很多小伙伴少了这一步导致最后编译的时候出现各种命令不存在的错误。当然了也可以先编译,出问题了之后再来安装那些需要的依赖包。

上命令:

# 对于deb系(debian/ubuntu):
sudo apt update
sudo apt installunzip libtool-bin curl cmake gperf gawk flex bison nano xxd \
cpio gitpython-docutils gettext automake autopoint texinfo build-essential help2man \
pkg-configzlib1g-dev libgmp3-dev libmpc-dev libmpfr-dev libncurses5-dev libltdl-dev
# 对于pacman系(ArchLinux/manjaro):
sudo pacman -Syu--needed git base-devel cmake gperf ncurses libmpc gmp python-docutils \
vim rpcsvc-proto

下载源码:

git clone --depth=1 https://gitee.com/hanwckf/rt-n56u.git /opt/rt-n56u

zyuIZnR.jpg!web

准备编译工具:(重要)

我看了网上很多人都是直接下载编译的工具,其实可以从源码里面编译编译的工具啊,只不过要编译一会才行,时间也不会很长,相对于很多网络不太好的小伙伴可以尝试直接从源码里面编译。

然后再给这个文件夹权限,直接777。后面很多的操作是需要的各种权限的,还不如现在就搞定。

sudo chmod 777/opt
# 可以从源码中直接编译工具,这样的话就多了一把王者荣耀的时间。
./clean_toolchain
./build_toolchain
 
# 或者下载预编译的工具链:
mkdir -p toolchain-3.4.x
wget https://github.com/hanwckf/padavan-toolchain/releases/download/v1.0/mipsel-linux-uclibc.tar.xz

我是直接从源码中编译的

JBFriuq.jpg!web

修改配置文件:

这一步其实吧,我认为看这篇文章的人肯定是要的。里面有很多功能都是可以开启的。不过默认很多功能还是没有开启,再这里你可以手动的开启。

yAzeIfF.jpg!web

大家仔细看一下这里面的文档,就算你英文在差很多你都能看懂的。比如说什么Qos啦,比如说RTL-SDR啦。

qIvmEfm.jpg!web

n代表不开启,Y代表开启这个大家都知道吧。

7Rv2A3j.jpg!web

当然了这里面也是可以选择语言的,我简易大家还是都开启了吧,万一出现一个特殊的字符无法显示就不好玩了。就算你能根据其他的字符猜出来大概的意思但是你看的不难受吗。非强迫症除外。手动狗头。

uemQRz7.jpg!web

默认是不开启USB功能的,我在这里手动的给改一下,当然了,现在IPV6也是非常必要的,顺手给开启一下吧。

当然啦,里面有超级多的功能,大家自己慢慢在里面看吧。

忘了这里面还有一个超频的选项。我的建议是还是不要超频了。

BrYJV3v.jpg!web

超频到600MHZ.。她只是一个小路由器啊,你不要妄想用它烧开水了。这里说一下,我之前的路由器的糊味吧。在使用那个路由器几天之后发现发热现象挺严重的,而且信号也没刚刚捡回来的时候好了,我估摸着是小电阻小电容烧掉了,看看能不能换一个。0805封装的我应该还能接受,但是再小的话,我就将就着用吧。我就琢磨着给加一个小风扇,在家还真的找到了一个老式电源里面拆下来的小风扇,12V的供电和路由器的供电电压是一样的,到时候只要并联在电源上就好了。然后我又拆了一次机,发现卧槽!!!!!!!!!一个功放烧掉了。

AZNz6v6.jpg!web

大家仔细看,哎,我就用不了好东西。。。。。,赶紧给装一个小风扇吧。

fa2eErr.jpg!web

这个是安装好的图片,由于安装的时候无法拍照片,只好留了两个电源线给大家看了。

跑题了

编译:

先清理一下之前的老旧文件。

cd/opt/rt-n56u/trunk
sudo ./clear_tree

j2immyN.jpg!web

然后我们看一下她支持哪些路由器。

NB7BVzF.jpg!web

大家可以看见有斐讯的,有小米的。我在测试之后发现貌似都可以,随便选。

OK,编译

sudo./build_firmware_modify newwifi

RVVBnij.jpg!web

然后又多了一把王者荣耀的时间。

刷机:

编译好的固件在trunk/image里面。

这里有开始烦人了,我的虚拟机没有安装vmTOOLS,麻烦,还得安装,然后才能把文件给拖出来。其实我忘记了,还可以设置共享文件夹的方式,这个这个虚拟机里面很常用,但是我当时看到编译好的固件非常的着急哈哈哈,想上手试一下。

接下来就是刷机过程了,可以参照我的上一篇文章,其实非常的简单。

总结:

第一:别看我写的简单,但是还是建议大家上手自己试一下,真的,到你自己的时候,你会发现各种问题。我搞虚拟机什么的慢慢折腾了好几天。

第二:多看开发文档,很多小伙伴一遇到问题就百度什么的,虽然百度上面有时候可以快速的解决的你的问题,但是很多时候都是治标不治本。其实开发人员在开发软件的时候都是做好了一个教程的。(这也是我读书这么多年的经验,小时候做的资料很多都是书上的题目啊,你不多看书,非要好高骛远,赶紧做题比看书还重要,之前学习SolidWorks,去淘宝买教程,是不是交智商税,其实SW里面自带了一个超级详细的教程,一步一步的教你使用这款软件。还有就是平时在搞开发的时候,不要一出现问题就百度,就问人,我赶紧还是先自己排查问题吧,很多芯片的开发文档里面都是有的。

你想啊,可能现在百度上面的问题是前任解决的问题,万一在你之前没有人分享过这个问题的解决办法怎么办,难不成你就不工作了吗???不可能的啊,所以从现在开始就得培养我们自己的发现问题解决问题的能力。你要相信迟早有一天你会走的比别人远,那个时候你只能靠你自己!

内容参考:

恩山论坛(建议大家多去逛一逛,里面超级多的资源)不过注册好麻烦还得要邀请码。

*本文原创作者:LEdge1,本文属于FreeBuf原创奖励计划,未经许可禁止转载


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK