背景
gdut8021xclient
gdut8021xclient
是 hazytint 在 njit8021xclient
基础上进行修改的、适用于广东某工业大学的 802.1X 客户端
项目地址:https://github.com/hazytint/gdut8021xclient
路由器
在上一年很早很早之前,我就买了这个路由器,并不是什么大品牌,只是根据他的宣传,比较适合我们折腾党折腾,所以就买了。在我折腾之后有一次返厂的经历,因为被我刷成了砖,除此之外,感觉还是可以的。
之前一直都是刷了极路由 1S 的固件,因为极路由固件中带有一个名为「华 3 认证」的功能,可以不用另行安装就直接可以接入校园网。
但过了一段时间之后,莫名其妙的在使用这个路由器上网的时候会提示「您真的要上网吗」,然后需要我回答一个问题,然而这真是十分莫名其妙。
虽然直接 F12 在 Console 中输入 login() 调用登录函数就可以了,但是依然是十分不爽的,于是重刷了 OpenWRT,便有了这篇文章。
路由器硬件信息:
- 型号:OY-0001
- CPU:MT7620A 580MHz
- 内存:128MB DDR2
- 闪存:16MB SPI
编译过程
在编译 OpenWRT 的 ipk 的时候,我们通常采用 Ubuntu 的系统。
在这次的编译中,我采用的是 Ubuntu 14.04 LTS 64bit
由于采用的是一个全新的系统(我用 lxc 新开的),因此建议把软件源换成服务器最快的,减少我们等待的时间,这里建议使用 apt-select 这个项目。
更新系统并安装依赖
apt-get clean
apt-get update && apt-get dist-upgrade -y
apt-get install -y git-core subversion build-essential gcc-multilib libncurses5-dev libssl-dev zlib1g-dev gawk flex gettext wget unzip python ccache sudo vim libxml-parser-perl dh-autoreconf
创建编译过程中所用的普通用户
在编译过程中,不允许使用 root 用户进行编译,因此我们需要新建一个普通用户并且赋予这个新增加的用户 sudo 权限
useradd -m openwrt
echo 'openwrt ALL=NOPASSWD: ALL' > /etc/sudoers.d/openwrt
切换到刚刚新建的用户
su openwrt
cd ~
下载 SDK
你可以通过这个页面,根据 CPU 的厂家、型号找到适合的 SDK
正如上文所提到的,我的路由器 CPU 是 mt7620 的,因此我在 /ramips/mt7620/
目录下找到了这个 SDK
具体的下载地址为:https://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7620/OpenWrt-SDK-15.05-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
下载地址因不同的路由器 CPU 而异
wget https://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7620/OpenWrt-SDK-15.05-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
tar xf OpenWrt-SDK-15.05-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
cd OpenWrt-SDK-15.05-ramips-mt7620_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64
下载 gdut8021xclient
我们通过 git 获取源代码,并且将 OpenWRT 的 makefile
设置为默认,然后生成 configure
文件
git clone https://github.com/hazytint/gdut8021xclient package/gdut8021xclient
cd package/gdut8021xclient
cp Makefile_OpenWrt Makefile
autoreconf --install
cd ../../
选择需要编译的模块
首先,我们通过这个命令进入选择界面
make menuconfig
进入 Network
默认情况下,这两个 package 都是标记为 M
的,意思就是编译打包出来。
其中,njit8021xclient
是主要的客户端,njit8021xclient-web
是 njit8021xclient
的 luci 界面,我个人感觉这个并没有什么用,功能比较鸡肋,因此可以取消编译这个 njit8021xclient-web
。
选中 njit8021xclient-web
然后按一下空格即可,让前面的 M
去掉
确认完自己所需要安装的东西后,退出这个界面。
开始编译
这里的话,一般来说是比较废时间的,但是在 SDK 上面编译的话速度还是比较快的。
先来看看这台机子有多少核,待会编译的时候为了节省速度可以跑满所有核心
cat /proc/cpuinfo | grep processor | wc -l
根据我这台机子的话,16 核,官方推荐 +1 ,因此输入这个命令编译
make -j 17 V=99
如果不需要调试信息的话把后面的 V=99
去掉即可。
一般来说,几分钟就可以编译完成了
编译完成之后,在 /bin/ramips/packages/base
(ramips
根据 CPU 的不同有所不同请主要分别) 就可以找到我们刚刚编译的 njit8021xclient_1.3-testing_ramips_24kec.ipk
文件。
开始安装
编译完成之后,当然你就可以有很多种方式可以将这个 ipk 文件拉到你的电脑上,再拉进你的路由器上面。
添加下面几行到 /etc/opkg.conf
arch all 100
arch ralink 200
arch ramips 300
arch ramips_24kec 300
安装的话也是一条命令的事
opkg install njit8021xclient_1.3-testing_ramips_24kec.ipk`
重启路由器
然后,我们可以通过 njit-client
简单测试是否安装成功
[root@PandoraBox:/root]#njit-client
命令行参数错误!
正确的调用格式例子如下:
njit-client username password
njit-client username password eth0
njit-client username password eth1
(注:若不指明网卡,默认情况下将使用eth0)
显示上述信息即表示安装成功
注:由于我之前安装了一些其他的库,因此可能你的会有所报错,希望你可以回帖指出或者自行搜索解决方案。
参考资料
简易指南:使用 OpenWrt 的交叉编译 SDK 来编译 ipk 软件包