wr720n v4 折腾笔记(五):终篇-编译安装openwrt附带njit
前言:
由于没有多余的U盘,所以想直接压缩生成一个带njit-client的openwrt固件。其中按照网上的教程走,遇到了一些问题,这里前面的步骤来源于网络。后面给出处理问题的方法。
一、准备工作
- 准备一台运行Linux或者类Unix操作系统的PC,比如Ubuntu,Debian,Fedora,MAC OS,FreeBSD,Suse等。下文所列出命令都Ubuntu 16.04下的命令,其他linux发行版请到这里查看相关的命令。
- 需要大约350MB硬盘空间,用于下载软件包(当然,选择编译的软件越多,需要下载的源代码包就越多,可能需要多达几个G的硬盘空间)。
- 需要6~8GB可用硬盘空间,用于编译OpenWrt。
- 一般情况下,我们还需要一个非root用户。
- 最后是耐心和时间,OpenWrt边下载边编译,编译几个小时那是家常便饭,并且中间还有可能出错。
二、编译openwrt
1.安装 git 以获取源代码:
在终端中运行:
|
1
2
|
sudo apt-get update
sudo apt-get install git-core
|
2.安装必要的编译工具:
|
1
|
sudo apt-get install libtool autoconf automake gcc-multilib bison screen gcc g++ binutils patch bzip2 flex make gettext unzip libc6 git-core git build-essential libncurses5-dev zlib1g-dev gawk quilt asciidoc libz-dev subversion
|
3.下载openwrt源代码,这里我下载的是trunk (main development tree) :
|
1
|
git clone git://git.openwrt.org/openwrt.git
|
如果想下载Barrier Breaker 14.07 分支,就这样:
|
1
|
git clone git://git.openwrt.org/14.07/openwrt.git
|
4.更新下载和安装扩展软件包:
假设你的工作目录为openwrt,进入openwrt目录:
|
1
|
cd openwrt
|
然后把feeds.conf.default复制一份命名为feeds.conf:
|
1
|
cp feeds.conf.default feeds.conf
|
(添加njit-client的源)打开feeds.conf,在最后加上一行
|
1
|
src-svn njit https://github.com/liuqun/openwrt-clients/trunk/njit
|
然后是更新下载扩展软件包,并安装它们到package/feeds/目录:
|
1
2
|
./scripts/feeds update -a
./scripts/feeds install -a
|
5.配置openwrt
现在开始配置OpenWrt,选择你需要目标平台,以及选择将要编译和添加进固件的软件包。运行命令:
|
1
|
make menuconfig
|
若回显提示缺少软件包或编译库等依赖,则按提示安装所缺软件包或库等即可。
然后你就来到了这个界面:

这个配置界面跟Linux内核的配置界面基本差不多,几乎每一项都有3个选择Y/M/N:
- Y:选择Y,该软件将被编译,并且加入到你的目标固件里;
- M:选择M,该软件包将会被编译,但不会被放入固件里。在需要它的时候,可以用OPKG软件包管理器进行安装;
- N:选择N,该软件包将不会被编译,也不会被安装进固件。
- /:搜索软件包。
- 方向键是移动光标
- 回车键是确认
- 空格键是选择,可以代替Y/M/N键的使用
例如我用的型号是D-LINK DIR-615 D4,到第一幅图Support Hardware那里查询对应的Target和Platform,查到之后选择对应的Target System和Subtarget和Target Profile,我选的是Ralink RT28XX/3XXX和RT305X和对应的Profile。
又例如你是TP-LINK TL-MR3420,就这样选:
|
1
2
|
Target System ---> (X) Atheros AR71xx/AR7240/AR913x
Target Profile ---> (X) TP-LINK TL-MR3420 v1
|
之后就是选择扩展软件包,按需要添加。
- 添加LuCI(这样才自带网页GUI端):LuCI ->Collections -> <*> luci(就是找到luci然后按一下Y)
- 添加LuCI的中文语言包:LuCI ->Translations -> <*> luci-i18n-chinese
- 添加UTF8编码:Kernel modules -> Native Language Support -> <*> kmod-nls-utf8
- 添加njit-client:Network -> <*> njit8021xclient
- 下面的njit8021xclient-web也顺便选了吧,这个是一个简单的LuCI的配置界面
其他的软件包就按需要添加吧,注意不要太多(我可怜的4M ROM…),不然编译到最后会提示文件太大无法创建。
好了,选完之后回到主菜单,选Exit退出并保存,回到终端。
(不装njit-client可忽略)如果你的系统是Ubuntu,那么在编译之前建议执行此操作
|
1
|
sudo mv /usr/bin/pcap-config /usr/bin/pcap-config.bak
|
总之就是干掉pcap-config,否则编译会出错,就像这样:
auth.c: In function ‘SendResponseIdentity’:
auth.c:432:11: error: invalid ‘asm’: invalid use of ‘%w’
当时编译出错了真是折腾了好久,最后终于在这里看到了njit-client作者的解答。
然后把默认的无线开启,这样刷机之后方便许多。打开package/kernel/mac80211/files/lib/wifi/mac80211.sh,将
|
1
|
option disabled 1
|
的1改为0,编译出来就默认打开wifi了。
下面的encryption也可以改下,不改就是默认没密码。
要改的话,把none改为psk2,再加一行option key yourpassword即可。
之后就是开始编译了:执行
|
1
|
make V=s
|
其中“V=s”表示输出详细的debug信息,也可以直接执行make。
编译完成之后,在 /openwrt/bin/ 下就会生成刷机用的.bin文件,在packages/下有软件包的.ipk文件。刷机方法就请自行百度了。
刷完之后重启路由,把电脑本地连接的ip改为192.168.1.x,然后在浏览器中进入192.168.1.1就进入LuCI了。没有LuCI的就telnet 192.168.1.1自行配置吧。然后在浏览器里设置一些东西,例如刚进去就要改密码、改WAN口的IP(学校给的)、DNS、网关(学校给的)、MAC地址(如果校园网绑定了MAC)、设置DHCP服务(设完之后可以把本地连接的手动ip改回自动获取,DNS好像要用学校给的DNS)什么的,慢慢做吧。
测试一下njit-client吧!在putty终端中执行
|
1
|
njit-client [username] [password] [interface] & #改成自己的用户名和密码,接口必须对应
|
试试吧!其中[interface]是接口,例如eth0,eth1,总之要对应你的WAN口,在luci里就可以查看,例如我就是eth0.2,ar71xx的多数是eth1。

能连接上之后就做一个开机启动脚本吧~在路由器的 /etc/init.d/ 目录下建立一个自动运行脚本 njitclient,内容如下:
|
1
2
3
4
5
6
7
8
9
10
11
12
|
#!/bin/sh /etc/rc.common
#(c) 2010 ivan_wl
START=50
start() {
njit-client [yourusername] [yourpassword] [interface] & #这里自己改一下
}
stop() {
killall njit-client
killall udhcpc
}
|
之后运行命令
|
1
2
|
chmod +x /etc/init.d/njitclient #加上可执行属性
/etc/init.d/njitclient enable #开启开机自动运行
|
后记
我按照这个教程并没有成功,其中在编译的时候总是出现patch失败。
因此我直接手动打patch,同时把patch删掉。
最终的patch后的njit文件可以在这里下载:
http://download.csdn.net/download/vspiders/10002510
下载之后,替换掉dl文件夹里面的njit包,然后删掉feeds/njit/njit8021xclient/patch文件,正常编译即可。
这里附上最终生成的固件:
openwrt-ar71xx-generic-tl-wr720n-v4-squashfs-sysupgrade.bin
wr720n v4 折腾笔记(五):终篇-编译安装openwrt附带njit的更多相关文章
- wr720n v4 折腾笔记(一):安装Openwrt
好久没有写过文章了,今天先来个引子:wr720n v4版本安装openwrt 最近弄了个路由器wr720n,想抓包做点东西,于是就先从刷固件openwrt开始吧. 所需工具: 1.wr720n v4路 ...
- wr720n v4 折腾笔记(四):安装inode客户端njitclient
前记: 既然折腾到这里,那就不怕再折腾一下了,之前说过最终还是安装南浦月大神的固件,折腾了一圈,怎么不直接在官方界面上安装呢,这里给出直接安装的方法,就是修改固件头为wr720nv4. 0x01 修改 ...
- wr720n v4 折腾笔记(三):网络配置与扩充USB
0x01 前言 网络配置比较简单,但是USB拓展就麻烦许多了,这里由于overlay的内存分配问题导致软件安装失败,这里找到了一种方法就是直接从uboot刷入南浦月大神的wr720n的openwrt固 ...
- wr720n v4 折腾笔记(二):刷入不死Uboot
0x01 前言 接着上节刷入Openwrt开始说起,此次开始刷入不死Uboot,刷入之后就可以在Uboot里面随便刷机,再也不怕成砖了. 固件附件地址: 下载地址1(还是之前一的包) flash文件地 ...
- Linux系统运维笔记(五),CentOS 6.4安装java程序
Linux系统运维笔记(五),CentOS 6.4安装java程序 用eclipse编译通的java程序,现需要实施到服务器.实施步骤: 一,导出程序成jar包. 1,在主类编辑界面点右健,选 ru ...
- Hadoop学习笔记(一)——编译安装和配置
近期工作调动.打算补一下大数据处理的知识.可能会陆续涉及hadoop.mongodb.ddbs等. 首先Apache提供二进制的Hadoop版本号是32位的.在启动时总是有警告,所以想自己编译一遍.部 ...
- 锋利的jQuery--编写jQuery插件(读书笔记五)[完结篇]
1.表单验证插件Validation 2.表单插件Form 3.动态事件绑定插件livequery 可以为后来的元素绑定事件 类似于jQuery中的live()方法 4.jQuer ...
- centos7编译安装zabbix(附带编译安装lnmp)
先把防火墙和selinux关闭: sytemctl stop firewalld setenforce 0 1.yum安装依赖: yum -y install wget openssl* gcc gc ...
- 2020ubuntu1804server编译安装redis笔记(三)启动服务和使用redis
第一篇笔记记录了ubuntu1804server编译安装redis5,接下来要配置redis5了 网址:https://www.cnblogs.com/qumogu/p/12435694.html 第 ...
随机推荐
- http2.0与WebSocket的关系是怎么样的
按照OSI网络分层模型,IP是网络层协议,TCP是传输层协议,而HTTP是应用层的协议.在这三者之间,SPDY和WebSocket都是与HTTP相关的协议,而TCP是HTTP底层的协议.WebSock ...
- 百度测试架构师眼中的百度QA
百度测试架构师眼中的百度QA(一) 发表于2013-04-09 15:31| 4004次阅读| 来源架构师Jack的个人空间| 13 条评论| 作者董杰 百度测试QA 摘要:一直以来百度质量部在业 ...
- Vue1.0用法详解
Vue.js 不支持 IE8 及其以下版本,因为 Vue.js 使用了 IE8 不能实现的 ECMAScript 5 特性. 开发环境部署 可参考使用 vue+webpack. 基本用法 1 2 3 ...
- VI.应用-Trajectory Data Mining
$textbf{Trajectory Data Mining: An Overview}$ 很好的一篇概述,清晰明了地阐述了其框架,涉及内容又十分宽泛.值得细读. 未完成,需要补充. $textbf{ ...
- 微软亚洲研究院研究员获选IEEE Fellow 和ACM Distinguished Member
年末将至,微软亚洲研究院喜讯连连.近日,IEEE(国际电气电子工程师学会)和ACM(美国计算机协会)先后公布了2017年度的院士名单(IEEE Fellow)和2016年度杰出会员名单(ACM D ...
- FPGA小白学习之路(5)clk为什么要用posedge,而不用negedge(转)
clk为什么要用posedge,而不用negedge 转自:http://www.cnblogs.com/dangxia/archive/2012/03/07/2383744.html Verilog ...
- PAT-进制转换-B1022 D进制的A+B (20分)
题目描述: 输入两个非负10进制整数A和B(≤230-1),输出A+B的D(1<D≤10)进制数. 输入格式: 输入在一行中依次给出3个整数A.B和D. 样例: 输入:123 456 8 输出: ...
- 程序小白如何快速开发OA办公系统
对于企业开发oa办公系统,成本高,周期长.有些企业花高价购买,购买后受制于软件商,很多功能只能按原来设计需求走,无法升级或者升级慢.这些由于软件商的开发效率低难以及时地响应企业的需求变化,所以就有可能 ...
- android通过NFC开启/关闭NTAG213的密码保护功能
穷遍全网没有资料,最后找到了官方的寄存器文档和StackOverflow上找到了解决方案 首先要用 MifareUltralight 来进行操作,在onNewIntent处先校验返回的tag是否包含了 ...
- Nginx之反向代理配置(二)
前文我们聊了Nginx的防盗链.反向代理以及开启nginx代理缓存,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/12417130.html:今天我们继续说ng ...