自己动手制作路由器固件之快速开始

     如今市面上一两百元的双频(2.4G和5G,802.11ac)智能路由,几乎全部都是联发科的MT7620(2.4G+交换机)加上MT7612EN(PCIE接口,5G)的解决方案,软件也几乎千篇一律是OpenWrt(可以看做是一个专门针对路由器做的Linux发行版)定制而成,所以这就大大降低了我们玩机的门槛。国内又有OpenWrt的变种Pandroabox,但可惜的是,很多关键的定制内容并未公开,只提供一个二进制文件(其部分主要贡献者也就职于相关商业公司),所以这里使用OpenWrt官方的源码构建。既然是快速开始,就废话少说,动手为先。这里就以Newifi为例制作固件,其他的做法都是差不多的。

一. 相关准备

1. 电脑:安装有Ubuntu(建议使用14.04 LTS的x64版本;当然,使用Fedora之类的发行版也是可以的,前提是你能解决所有可能遇到的编译问题)发行版的PC,或者安装Windows(或者OSX)的PC(或者Mac)加上安装Ubuntu的虚拟机(VMware、VirtualBox或者Qemu)。并在其中安装有tftp服务(用于路由下载固件),以及串口和SSH工具(如超级终端、minicom、Xshell、SecureCRT、Putty等)。至少准备30G的空余硬盘空间,8G的内存,可以连接国外的互联网。

2. 网络:最好有一个路由器组建一个局域网,将Newifi和PC处于一个子网内,这样的话,烧写程序时也可以访问外部网络。我这里路由器ip为192.168.99.1,电脑的IP为192.168.99.10,Newifi的IP为192.168.99.9。

3. 工具:电烙铁等焊接拆机工具,杜邦线若干,USB转TTL电平串口(PL2303或者FT232均可)

推荐的配置示意图(后面的操作均以该图为例):

自己动手制作路由器固件之快速开始_第1张图片

二. 编译固件

在安装有Ubuntu的虚拟机中打开一个命令行终端($开头为命令,#开头为注释):

# 安装必要的软件包

$ sudo apt-get install git-core libssl-dev

$ sudo apt-get install subversion g++

$ sudo apt-get install ccache gettext

$ sudo apt-get install make gawk python wget

$ sudo apt-get install libncurses5-dev

$ sudo apt-get install zlib1g-dev

$ sudo apt-get install build-essential unzip xz-utils

# 因为OpenWrt不能在root用户下编译,所以先创建一个用户。

# 如果已经在非root用户下,也可忽略此步骤。

$ useradd –g root –m openwrt

$ passwd openwrt

# 输入密码

$ su – openwrt

# 创建一个用于下载软件包的目录(便于多个编译目录共用),如果从网上下载了我打包的软件包,可以解压到此目录,减少因下载软件包而浪费时间。

$ mkdir /opt/develop/openwrt/download -pv

$ cd /opt/develop/openwrt

# 克隆官方最新的发行版本

$ git clone git://git.openwrt.org/15.05/openwrt.git 15.05

$ cd 15.05

# 创建下载目录的软链接,几个不同的编译共享使用同一个下载目录。

$ ln -s /opt/develop/openwrt/download dl

$ make menuconfig

# 选择以下三项即可

# Target System -> Ralink RT288x/RT3xxx

# Subtarget -> MT7620 based boards

# Target Profile -> Default Profile

# 如下图所示,最后退出,并保存。

自己动手制作路由器固件之快速开始_第2张图片

# 开始编译,使用V=99可以显示更多编译日志,便于排除错误,

# 使用–j2可以使用两个CPU核编译,加快编译速度。

$ make V=99 –j2

# 这期间你可以出去玩几把游戏了,具体时间取决于电脑速度和网速。

# 如果中间有下载出错(如果实在下载不下来,可以看一下他的url,然后手动下载后放在dl目录下即可),重新make即可。

# 如果是编译错误,仔细看是少了什么包,使用apt-get安装一下即可。

# 如果一切顺利,就会在bin/ramips目录下看到编译好的固件

自己动手制作路由器固件之快速开始_第3张图片

# 其中的openwrt-ramips-mt7620-Lenovo-y1-squashfs-sysupgrade.bin就是我们编译好的固件,通过共享文件夹复制到Windows中的tftp服务器根目录下即可。

三. 烧写固件

Newifi没有使用螺丝固定外壳,所以直接使用一个平口螺丝刀撬开既可。

自己动手制作路由器固件之快速开始_第4张图片

如下如所示线序焊接TTL线:

自己动手制作路由器固件之快速开始_第5张图片

最终效果图:

自己动手制作路由器固件之快速开始_第6张图片

自己动手制作路由器固件之快速开始_第7张图片

自己动手制作路由器固件之快速开始_第8张图片

自己动手制作路由器固件之快速开始_第9张图片

接线时,Newifi的RX接TTL线的TX,TX接RX,USB转TTL不要连接VCC。如果使用的是RS232转TTL则必须连接VCC。

打开Tftp服务器,保证之前编译的固件放在tftp所设定的根目录处。

自己动手制作路由器固件之快速开始_第10张图片

在PC上使用Xshell或者minicom之类的串口软件使用115200 8n1,无硬件控制流模式打开对应的串口,然后连接Newifi电源,就会看到Uboot的打印信息。

自己动手制作路由器固件之快速开始_第11张图片

在出现菜单时快速按键盘上的“2”键进入tftp烧写模式,然后按“y”键,最后分别输入Newifi的IP,本机的IP(Tftp服务器IP),以及要下载的固件名称“openwrt-ramips-mt7620-Lenovo-y1-squashfs-sysupgrade.bin”。

自己动手制作路由器固件之快速开始_第12张图片

如果一切正常,烧写完毕后会重启进入Linux。当屏幕不再滚动时按下回车,当看到如下画面时,就可以宣告成功了。

自己动手制作路由器固件之快速开始_第13张图片

四. 基本配置

(“Newifi”开头的操作为Newifi的串口,“Host”开头的操作为PC的命令终端)

# 配置防火墙,由于是Newifi的WAN口接在路由器上,PC是通过外网访问

# Newifi的,所以要全部打开WAN口的防火墙,方便SSH登陆等操作。

Newifi $ vi /etc/config/firewall

自己动手制作路由器固件之快速开始_第14张图片

# 把红色框内全部改为ACCEPT,然后重启防火墙。

Newifi $ /etc/init.d/firewall restart

# 设置Newifi的WAN口IP,以及打开无线网络。

Newifi $ vi /etc/config/network

自己动手制作路由器固件之快速开始_第15张图片

# 改为

自己动手制作路由器固件之快速开始_第16张图片

Newifi $ vi /etc/config/wireless

自己动手制作路由器固件之快速开始_第17张图片

# 改为(注意:注释掉红框最上面一行),使用WAP的PSK2加密方式,密码自己改。

自己动手制作路由器固件之快速开始_第18张图片

# 最后保存并重启网络

Newifi $ /etc/init.d/network restart

# 测试一下网络

Newifi $ ping 192.168.99.1

# 如果这个不通,检查一下WAN口IP掩码配置是否正确。

Newifi $ ping 114.114.114.114

# 如果这个不通,检查一下网关是否正确,以及路由是否能连接到Internet。

Newifi $ ping www.baidu.com

# 如果这个不通,检查一下WAN口的DNS是否配置正确。

# 如果都没问题,可以继续了下面的。

# 设置root用户密码,以便可以使用ssh登陆

Newifi $ passwd

# 如果是在Windows下,可以使用Putty和Xshell之类的软件登陆。

Host $ ssh [email protected]

自己动手制作路由器固件之快速开始_第19张图片

使用手机连接Wifi试试是否可以正常上网。

自己动手制作路由器固件之快速开始_第20张图片

如果都没问题,这个固件就初步完成了(当然,功能还很简陋)。

五. 遗留问题

这个固件虽然可以“使用”,但还有许多问题:

1. 只能通过命令行进行配置修改,最好能有一个Web管理界面;

2. 不支持5G信号,因为OpenWrt官方的Wifi驱动使用的是compact-wireless项目提供的,里面没有MT7612EN的驱动;

3. 没有QoS、PPPoE拨号、离线下载等功能。

还有很多很多,未完待续。。。。。。

六. 相关资源

  1. OpenWrt官方文档 http://wiki.openwrt.org/doc/start


你可能感兴趣的:(linux,openwrt,newifi)