基于OpenWrt系统的智能路由开发环境搭建方法

2020-11-16 02:11施鸣
数码世界 2020年10期

施鸣

摘要:OpenWrt是一个针对嵌入式设备的Linux发行版,有非常高的可扩展性,可以非常容易地从零开始构建出全功能的智能路由或服务器设备。通过本文所写的配置方法,大家可以快速的搭建OpenWrt系统开发环境。

关键词:OpenWrt;Linux;嵌入式智能路由

一、OpenWrt简介和优缺点

现在主流的路由器固件主要有 dd-wrt;tomato;openwrt;padavan四大类。对比一个单一的、静态的系统,OpenWrt的包管理提供了一个完全可写的文件系统,从应用程序供应商提供的选择和配置,并允许您自定义的设备,以适应任何应用程序。OpenWRT是一个高度模块化、高度自动化的嵌入式Linux系统,拥有强大的网络组件和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。 同时,它还提供了100多个已编译好的软件,而且数量还在不断增加,而 OpenWrt SDK 更简化了开发软件的工序。

优点:如果对 Linux 系统有一定的认识,并想学习或接触嵌入式 Linux 的话,OpenWRT很适合。而且OpenWRT支持各种处理器架构,无论是对ARM,X86,PowerPC或者MIPS都有很好的支持。其多达3000多种软件包,囊括从工具链(toolchain),到内核(linux kernel),到软件包(packages),再到根文件系统(rootfs)整个体系,使得用户只需简单的一个make命令即可方便快速地定制一个具有特定功能的嵌入式系统来制作固件。

缺点:由于CPU内核体系不同,造成很多应用程序移植到OpenWrt上的时候经常崩溃,而且ADSL硬件模块的驱动程序没有开放源代码,造成很多ADSL一体无线路由的ADSL模块不能工作而造成功能缺失(RG100A和DB120除外)。由于OpenWRT并不是官方发布的路由器固件,所以要使用(刷入该固件)有困难,而且其基于Linux,导致OpenWRT的入门门槛较高。

二、环境搭建方法

本次实验使用到虚拟机VMware;10及Ubuntu系統的ISO镜像,这些软件工具在各软件的官网下载,下面介绍安装好VMware及Ubuntu系统后软件的使用方法。

进入Ubuntu Linux系统

编译OpenWrt系统固件

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 a

utoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurs

es-term zlib1g-dev

2.下载OpenWrt源码

需准备12GB左右的空间,源码体积百兆左右,但是编译过程中会产生大量文件,会使文件夹体积非常大。# git clone -b chaos_calmer git://github.com/openwrt/openwrt.git

3.更新软件包

下载安装可用的“feeds”:上述步骤会产生一个名为openwrt的目录,在终端输入#cd openwrt

#./scripts/feeds update -a

#./scripts/feeds install -a

4.配置

在终端输入make menuconfig

对编译目标进行配置

TargetSystem -> Ralink RT288x/Rt3xxx

Subtarget->MT7628 based boards

“Package the OpenWrt-base Toolchain”是为了有搭建交叉编译环境方便,不是必选的。

此外,勾选LuCI(网页形式的控制台)还是非常必要的。要勾选(前面出现*号):

LuCI-->1.Collections-->luci

别忘记勾选中文:

LuCI-->2.Modules-->Translations-->Chinese(zh-cn)

最后Save,退出。

以上是基本的固件编译,如果需要其他功能,要再勾选或添加。

5.编译固件

在终端中输入命令:make V=s -j2

V=s 代表显示编译信息,一定要勾选,否则出错的话无法看到错误信息。

-j8代表使用的CPU线程数量,4C8T的CPU可是使用8个线程提高速度,使用时有时会出错,可以改成-j1或者不加这个参数。

6.固件目标

当OpenWrt编译完成后,生成的固件位于源码目录下的

bin/bin/ramips/openwrt-ramips-mt7628-xxx-squashfs-sysupgrade.bin

三、搭建交叉编译环境

交叉编译,简单的说就是,就是在一个平台上生成另一个平台上的可执行文件,举个例子,我用我的电脑(x86_64平台)编译出路由器(mips-mt76XX)上可以执行的二进制文件,要进行交叉编译首先就要有对应平台的编译器,下面介绍如何搭建编译环境。

1.自己编译生成工具链(toolchain)

进入OpenWrt源码目录,并执行make menuconfig命令,并选中如下选项[*] Build the Openwrt SDK

选中,保存退出,然后执行make V=99命令生成工具链。编译成功后,工具链位将在bin/ramips/

OpenWrt-SDK-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2压缩包下。

2.设置环境变量

需要设置两个环境变量,一个为工具链中的bin文件夹加入到PATCH中,另一个为STAGING_DIR变量,将其指向放toolchain的文件夹。其操作步骤如下:

将OpenWrt-SDK-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2

目录解压到/opt目录,sudo tar xvf OpenWrt-SDK-xx.tar.gz -C /opt

执行如下命令,打开~/.bashrc文件,将环境变量添加到该文件中。

vim ~/.bashrc

在末尾处添加如下代码:vim ~/.bashrc

OPENWRT_GCC=/opt/OpenWrt-SDK-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_uClibc-0.9.33.2/bin

export

STAGING_DIR=/opt/OpenWrt-SDK-ramips-mt7628_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64/staging_dir

export PATH=$PATH:$OPENWRT_GCC

編辑完成后保存退出,然后执行如下命令,使能环境变量#source ~/.bashrc

3.测试交叉编译工具

在终端下执行如下命令,查看是否有输出# mipsel-openwrt-linux-gcc -v

如果输出如上图的数据,表示安装成功。

参考文献

[1]Linux应用服务器架设[M].於岳2014年11月第一版.人民邮电出版社.

[2]跟老男孩学Linux运维:web集群实战[M].老男孩 2016年第一版

[3]基于虚拟机的计算机公共机房多系统实验环境的构建[J].姜莉.中国现代教育装备.2009(01)

[4]社大鹏《Red hat Linux因特网服务器》中国水利水电出版社.2004.2.

[5]林慧琛《Red hat Linux服务器配置与应用》人民邮电出版社.2006.1.