如果大家对OpenWrt系统的启动流程有一定的了解的话,我们就知道,系统在启动的时候,会通过运行uci-defaults.sh这个脚本程序来设置IP等基本参数。该脚本文件位于系统源码的openwrt/trunk/,package/base-files,/files/lib./unctions目录下,那么接下来我们就来修改该脚本文件,从而修改IP地址。
(注意:新版本的openwrt修改IP的地方在:openwrt/trunk/package/base-file/files/bin/目录下的config._generate文件)
此时,我们可以看到 network 配置文件关于 VLAN 的内容如下。
1 config switch
2 option name 'rt305x'
3 option reset '1'
4 option enable_vlan '1'
5 config switch_vlan
6 option device 'rt305x'
7 option vlan '1'
8 option ports '0 1 2 3 6t'
9 config switch_vlan
10 option device 'rt305x'
11 option vlan '2'
12 option ports '4 6t'
其中第 4 行代表开启 vlan,6,7,8 行为 vlan0 的设置,10,11,12 行为 vlan1 的设置。这样配置的话重启网络会自动生成 2 个设备接口,eth0.0 (vlan0), eth0.1 (vlan1),这样你可以配置这两个 valn 做为 lan 口或者 wan 口。其中端口 0,端口 1,端口 2,端口 3 都属于 vlan0,端口 4 属于 vlan1。
因为开发板只用 vlan 2 个端口,可以把 option ports '0 1 2 3 6t'这一行的 0,1,2 去掉,这样就配置个两个 vlan,端口 3 作为第一个 vlan,端口 4 作为第 2 个 vlan,这样网络环境就配置好了。端口 3 为 LAN,端口 4 为 WAN。如果想将开发板端口 3、 端口 4 全部设置成 LAN 口, 则对/etc/config/network 做如下修改。
(1)将
20 option ports '0 1 2 3 6t'
改为
20 option ports '0 1 2 3 4 6t'
(2)将
21 config switch_vlan
22 option device 'rt305x'
23 option vlan '2'
24 option ports '4 6t'
给注释掉。
(3)将
9 config interface 'wan'
10 option ifname 'eth0.2'
11 option proto 'dhcp'
12 option macaddr ':
给注释掉。
OK!
重启开发板就可以了:
reboot
四 为 OpenWrt 配置支持 Web 界面

五 开发板做无线接入点、做站点、做中继器
无线接入点:(做设备,如手机等)
站点:(做路由器)
中继器:(路由转发器、做B,使A、C远距离连接)
六 开发板访问虚拟机Ubuntu文件
1、Ubuntu中安装SSH网络服务
2、开发板登录到Ubuntu的SSH服务器中
登录的命令格式为:
ssh servername@serverip
其中servername是Ubuntu的用户名,serverip是Ubuntu的ip地址
比如我们登录到一个用户名为if的Ubuntu的ssh服务器中
# ssh if@192.168.10.233
接下来我们要从Ubuntu上面下载文件到开发板中,下载方式很简单
scp 源(服务器目标文件路径) 目标(用户名@用户ip:文件路径)
scp /home/if/test/a.c root@192.168.10.1:/
七 添加 OpenWrt 软件包概述
OpenWrt 是一个比较完善的嵌入式 Linux 开发平台, 在无线路由器应用上已有 4000 多个软件包。我们可以在其基础上增加软件包,以扩大其应用范围。在 OpenWrt 中增加软件包极其方便,按照 OpenWrt 的约定就可以很简单的完成。加入的软件包可以是网上可下载的开源软件或自行开发的软件。为加入软件包需要在 package 目录下创建一个目录,以包含该软件包的各种信息和与 OpenWrt 建立联系的文件。然后创建一个Makefile 与 OpenWrt 建立联系,Makefile 需要遵循 OpenWrt 的约定。另外可以创建一個 patchs 目录保存 patch 文件,对下载的源代码进行适量修改。
引入文件
OpenWrt 使用三个 makefile 的子文件,分别为:
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
由这些 makefile 子文件确立软件包加入 OpenWrt 的方式和方法。
$(TOPDIR)/rules.mk 一般在 Makefile 的开头,
$(INCLUDE_DIR)/kernel.mk 文件对于软件包为内核时是不可缺少,$(INCLUDE_DIR)/package.mk 一般在软件包的基本信息完成后再引入。
编写软件包的基本信息
软件包的信息均以 PKG_开头,其意思和作用如下:
PKG_NAME 表示软件包名称,将在 menuconfig 和 ipkg 可以看到。
PKG_VERSION 表示软件包版本号。
PKG_RELEASE 表示 Makefile 的版本号。
PKG_SOURCE 表示源代码的文件名。
PKG_SOURCE_URL 表示源代码的下载网站位置。@SF 表示在 sourceforge 网站,
@GNU 表示在 GNU 网站,還有@GNOME、@KERNEL。
PKG_MD5SUM 表示源代码文件的效验码。用于核对软件包是否正确下载。
PKG_CAT 表示源代码文件的解压方法。包括 zcat, bzcat, unzip 等。
PKG_BUILD_DIR 表示软件包编译目录。它的父目录为$(BUILD_DIR)。如果不指定
默认为$(BUILD_DIR)/$( PKG_NAME)/$( PKG_VERSION)。
#
# Copyright (C) 2014-2016 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
PKG_NAME:=acl
PKG_VERSION:=2.3.1
PKG_RELEASE:=$(AUTORELEASE)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://git.savannah.nongnu.org/cgit/acl.git/snapshot
PKG_HASH:=8cad1182cc5703c3e8bf7a220fc267f146246f088d1ba5dd72d8b02736deedcc
PKG_MAINTAINER:=Maxim Storchak <m.storchak@gmail.com>
PKG_LICENSE:=LGPL-2.1 GPL-2.0
PKG_LICENSE_FILES:=doc/COPYING doc/COPYING.LGPL
PKG_INSTALL:=1
PKG_FIXUP:=autoreconf
include $(INCLUDE_DIR)/package.mk
define Package/acl/Default
TITLE:=Access control list (ACL) manipulation
URL:=https://savannah.nongnu.org/projects/acl
SUBMENU:=Filesystem
endef
define Package/acl/Default/description
Access control list support
endef
define Package/acl
$(call Package/acl/Default)
SECTION:=utils
CATEGORY:=Utilities
TITLE+=utils
DEPENDS:=+libacl
endef