接触OpenWRT一年时间,大部分都在编译固件、刷机,遇到过不少问题。这里记录下以前摸索的步骤。
准备工具:
1. 系统环境: Ubuntu16.04 LTS 64位
2. 路由器型号 ZBT-WA05
3. openWRT版本为 CC
4. 请使用一个非root用户来完成这些工作!
1、准备工作:安装编译所需的工具,在终端输入
sudo apt-get update sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip sudo apt-get install subversion mercurial sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
2、下载源码:需准备12GB左右的空间,源码体积百兆左右,但是编译过程中会产生大量文件,会使文件夹体积非常大
大部分SVN都是失效的,所以一些老的教程就不能参考了,这点要注意。要使用git来下载源码。
要下载哪个版本可以参考wiki(上面的链接)以CC版本为例,在主文件夹下执行:
git clone git://git.openwrt.org/15.05/openwrt.git
3、下载安装可用的 feeds
: 上述步骤会产生一个名为openwrt的目录,在终端输入
cd openwrt ./scripts/feeds update -a ./scripts/feeds install -a
等待下载完成。
4、配置编译选项:
make menuconfig
用方向键、空格(选择,出现M
代表编译但不编译到固件,*
号表示编译进固件)、按两下esc
返回等操作来配置选项,选择硬件平台、CPU型号等选项。ZBT-WA05的配置如下:
选择 Package the OpenWrt-base Toolchain
是为了有搭建交叉编译环境方便,不是必选的。
此外,勾选LuCI(网页形式的控制台)还是非常必要的。要勾选(前面出现*号):
LuCI-->1.Collections-->luci
别忘记勾选中文:
LuCI-->2.Modules-->Translations-->Chinese(zh-cn)
最后Save,退出。
以上是基本的固件编译,如果需要其他功能,要再勾选或添加。
5、编译: 执行命令
make V=s -j
V=s 代表显示编译信息,一定要勾选,否则出错的话无法看到错误信息。
-j代表使用全部的CPU线程数量,4C8T的CPU可以使用 -j8
8个线程提高速度,使用时要确保内存充足,可以改成-j1或者不加这个参数。
6、得到固件:
显示如下信息时并且终端上没有error时,代表编译成功
Signing package index... make[2]: Leaving directory '/home/goldmoon/openwrt' make[1]: Leaving directory '/home/goldmoon/openwrt' /home/goldmoon/openwrt/bin/ramips/openwrt-ramips-mt7620-zbt-wa05-squashfs-sysupgrade.bin
这个文件就是我们想要的固件。
编译的时候可能会遇到形形色色的错误,大部分都是文件下载错误(源码的服务器在国外,最好自备梯子),有时候需要科学上网才行。或者网上去找到缺失的包用p2p下载软件下载下来放到相应的位置(一般在dl这个目录下)。至于其它错误,要具体情况具体对待了。
一、基本概念
LAN:Local Area Network 的英文简称,即局域网
我们计算机和路由连在一起就是接这个口
WAN: Wide Area Network 的英文简称,即广域网
运营商拉进来的网线就是和这个口连在一起
VLAN( Virtual Local Area Network)的中文名为"虚拟局域网"
VLAN通常是在局域网中逻辑地再划分为几个网段来构成VLAN。一个局域网中可以划分为N多个VLAN,使VLAN之间不可互相通信(通常这是为了安全起见)。LAN和WAN都属于VLAN
二、配置WAN口和LAN口
首先要将OpenWRT系统下载到开发板(RT5350),然后将开发板上电进入OpenWRT系统,使用secureCRT进行命令操作。(secureCRT对于熟悉Linux嵌入式开发的人应该so easy)
OpenWRT中的配置文件在 /etc/config/
下面,WAN和LAN的配置在 /etc/config/network
中
分析上面文件中的信息(只讲重点的):
config interface 'lan' //配置LAN口 option type 'bridge' //桥接方式 option ifname 'eth0.1' // 代表vlan1,这个很重要,下面配置会用到 option proto 'static' //静态IP config device 'lan_dev' //配置LAN硬件信息 option macaddr //设置MAC地址 config interface 'wan' //配置WAN口 option type 'dhcp' //dhcp方式(dhcp自行百度) config switch //switch中文意思就开关,所以下面就是使能vlan口 option enable_vlan '1' // 1表示开启vlan口 config switch_vlan option vlan '1' //VLAN1, 和上面的option ifname 'eth0.1'相匹配,所以是配置LAN口 option ports '0 1 2 3 6t' //0~3都是LAN口,RT5350有5个端口 config switch_vlan option vlan '2' //VLAN2, 和上面的option ifname 'eth0.2'相匹配,所以是配置WAN口 option ports '4 6t' //4是WAN口
官方文档: Build system – Installation
OpenWRT编译——从源码到固件
OpenWRT(二)配置WAN口和LAN口