OpenWRT 编译 从源码到固件

标签: none

接触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的配置如下:

ZBT-WA05_1.png

选择 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

ZBT-WA05_2.png

分析上面文件中的信息(只讲重点的):

  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口


扫描二维码,在手机上阅读!

添加新评论