缩略图
Education and Training

基于OpenWrt编译无线接入点固件的方法与实现

作者

孔祥南

北京博大网信股份有限公司 101116

摘要:本文探讨了使用OpenWrt编译无线接入点固件的方法和实现。目标是研发适合IPQ5018芯片的无线接入点固件。首先,介绍了无线接入点固件和OpenWrt的基本概念和背景,接着描述了使用OpenWrt编译无线接入点固件的过程,包括准备工作、OpenWrt安装和无线接入点固件配置。随后进行了加载实验以测试无线接入点固件,并对实验结果进行了分析。最后,讨论了无线接入点固件未来的研究方向。

关键词: OpenWRT,无线接入点,IPQ5018

ABSTRACT:This paper explored the method and implementation for compiling wireless access point firmware by OpenWrt, Developing wireless access point firmware suitable for the IPQ5018 chip was the goal. Firstly, the basic concepts and background of wireless access point firmware and OpenWrt were introduced, followed by a detailed process explanation of compiling wireless access point firmware by OpenWrt, including preparation work, OpenWrt installation, and wireless access point firmware configuration. Subsequently, experiments were conducted to load and test the wireless access point firmware, and the results were analyzed. Finally, the future works for wireless access point firmware developing were discussed.

Key words: OpenWRT, wireless access point, IPQ5018.

1.引言

无线接入点固件是指用于控制无线通信设备的嵌入式软件,其质量和性能直接关系到到无线网络的稳定性和安全性。无线接入点固件的发展历程可以追溯到20世纪90年代,当时它主要是为企业提供稳定的网络连接。随着无线网络技术的不断发展,无线接入点固件不断升级和完善。传统的无线接入点固件大多采用封闭式架构,限制了用户根据自身需求进行定制。OpenWrt作为一款开源嵌入式操作系统,提供了高度的定制性和灵活性,使其适合编译各种类型的固件,包括无线接入点固件。

OpenWrt的出现为这一领域带来了新的突破,允许用户根据具体要求定制固件,OpenWrt能够更好地满足特定场景的需求。本文将介绍如何使用OpenWrt编译无线接入点固件,并进行编译后固件的加载和测试。

2.背景介绍

OpenWrt是一个高度模块化、高度自动化的嵌入式Linux系统,具有强大的网络组件和扩展性,常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中。OpenWrt项目的源码不含三方代码,只有链接,编译时根据不同平台下载不同的源码和补丁,可修改Makefile获取最新软件包。它使用LuCI作为最终用户管理界面,即我们常见的路由器Web管理界面,UCI通用配置管理方法。使用脚本调用iptable,实现防火墙功能,配置文件保存在UCI文件中。使用开放和可扩展的OPKG格式安装升级包。

OpenWrt是一种基于Linux的嵌入式操作系统,以其高度的可定制性、灵活性和可扩展性而闻名。这使得OpenWrt广泛应用于各种嵌入式设备,包括无线接入点。使用OpenWrt编译无线接入点固件具有以下几个优点(注意得自己总结,不能复制手册内容,一般论文要查重的):

强大的网络管理功能:OpenWrt提供广泛的网络管理功能,包括支持各种网络协议、服务质量(QoS)管理、虚拟专用网络(VPN)支持等。在基于OpenWrt编译无线接入点固件时,用户可以根据自己的具体需求选择所需的功能,使配置和管理更加容易。

安全性和稳定性:OpenWrt团队优先考虑安全性,并积极维护和更新操作系统以解决潜在漏洞。使用OpenWrt编译的固件允许用户获取最新的安全补丁和功能改进,增强无线接入点的安全性和稳定性。

硬件兼容性:OpenWrt支持广泛的硬件平台,包括来自不同品牌和型号的路由器和无线接入点。这意味着用户可以使用OpenWrt编译适用于特定硬件的固件,而不依赖于设备制造商提供的固件。这为用户提供了更大的灵活性和选择,使他们能够利用OpenWrt的功能和优势,充分发挥其硬件设备的潜力。

社区支持和活跃度:OpenWrt拥有庞大而活跃的社区,成员可以共享各种资源、经验和解决方案。在编译无线接入点固件时,用户可以通过参与社区讨论、获取技术支持和利用社区开发的插件等方式寻求帮助和指导。这种社区支持是OpenWrt的一个重要特征,为用户提供了良好的学习和交流平台。

OpenWrt在编译无线接入点固件中扮演着重要的角色。它是一个嵌入式操作系统,专门为路由器和其他网络设备设计,提供了丰富的软件包和工具,使得用户可以方便地定制和编译固件,以满足不同设备的需求。在无线接入点固件的编译过程中,OpenWrt提供了一系列的工具和软件包,使得用户可以轻松地配置和编译出适合自己设备的固件。这些工具和软件包包括makedefconfig、make menuconfig等,它们可以帮助用户在图形界面下选择和配置设备的参数,从而生成适合设备的固件。此外,OpenWrt还提供了一个称为feeds的软件包管理系统,它可以帮助用户方便地安装和管理第三方软件包。在编译无线接入点固件时,用户可以通过feeds来安装所需的软件包,并使用OpenWrt提供的编译工具进行编译,生成适合设备的固件。总之,OpenWrt在编译无线接入点固件中起着至关重要的作用,它提供了丰富的工具和软件包,使得用户可以方便地进行设备的配置和编译,从而满足不同设备的需求。

3.系统设计

3.1硬件平台选择

系统环境:使用VMWare虚拟机安装Ubuntu 18.04 Release版本。

无线接入点硬件:适配IPQ5018芯片的开发板。

串行调试工具:使用USB转TTL串行调试器。

以太网电缆和电脑:用于通过有线连接访问设备。

固件烧录工具:SecureCRT,TFTP服务器

3.2网络配置设计

确保系统能够正确连接到网络并提供可靠的网络服务,设计编译以下网络配置:

IP地址分配:使用静态IP地址或DHCP服务器进行动态分配。

网络协议:配置适当的网络协议,如TCP/IP、IPv4或IPv6,以满足网络通信的需求。

网络服务配置:配置网络服务,如DNS、DHCP、NAT等,以提供必要的网络功能和服务。

安全设置:设置合适的网络安全策略,如防火墙规则、访问控制列表(ACL)等,以防止未经授权的访问和保护网络安全。

远程管理:配置远程管理功能,以便管理员可以通过远程方式管理无线接入点固件,如SSH或Web界面。

VPN支持:根据需求,配置虚拟私有网络(VPN)支持,以提供远程访问和安全连接。

3.3无线功能设计

无线标准支持:选择支持的无线标准,802.11n、802.11ac或802.11ax。信道管理:选择合适的无线信道,并确保信道之间的干扰最小化。可以自动选择最佳信道或手动配置信道。

无线加密:配置适当的无线加密机制,WPA/WPA2-PSK或WPA3-PSK,以保护无线网络的安全性和保密性。

SSID和隐藏:配置独特的SSID(服务集标识符)来识别无线网络。

无线桥接和中继:配置无线桥接或中继功能,以扩展网络的覆盖范围。

无线频段管理:根据地理位置和法规要求,配置不同的无线频段,2.4GHz或5GHz,以提供更好的无线性能和覆盖范围。

无线访问控制:配置无线访问控制列表(ACL)或MAC地址过滤,以限制无线客户端的访问,并增加网络的安全性。

无线QoS(服务质量):配置无线QoS机制,以优化无线网络的带宽分配和流量管理,提供更好的网络性能。

4.实现与验证

4.1编译环境搭建

在Linux平台上搭建OpenWrt编译环境的步骤:

(1)创建文件夹并修改权限:首先,创建一个名为“openwrt”的文件夹,并使用命令“chmod 777 openwrt”修改权限。

(2)进入“openwrt”文件夹:使用命令“cd openwrt”进入“openwrt”文件夹。

(3)下载源代码:在终端中,使用命令“git clone https://github.com/openwrt/openwrt.git”下载OpenWrt源码。

(4)更新软件包:在“openwrt”文件夹中,使用命令“./scripts/feedsupdate –a ./scripts/feedsinstall –a”更新软件包。如果不更新软件包的话,将导致许多软件包缺失,从而无法集成这些软件包。

4.2固件编译

编译OpenWrt固件,需要安装一些依赖项和工具链。以下是主要的依赖项和工具链:依赖项:GNU C Library (glibc):OpenWrt使用glibc作为标准C库,确保系统与标准Linux发行版兼容。GCC:OpenWrt使用GNU Compiler Collection来编译固件中的源代码。binutils:包括各种二进制工具,例如汇编器(as)、连接器(ld)和归档程序(ar)等。ncurses:提供了终端界面控制的库,用于在编译过程中进行配置和交互式菜单。工具链:Buildroot:用于构建和管理OpenWrt的工具集合,包括交叉编译工具链、Makefile脚本等。Toolchain:这是一个特定于目标硬件平台的交叉编译工具链,包括交叉编译器、链接器和库等。SDK(Software Development Kit):这是一个用于开发和测试OpenWrt软件包的套件,包含了完整的编译环境和相关工具。其他工具:Git:用于从OpenWrt存储库中获取源代码。Make:用于自动化构建过程的工具。Python:某些OpenWrt功能和工具可能需要Python解释器。wget或curl:用于从远程服务器下载源代码和软件包。

下载必要的依赖项和工具并进行安装

sudo apt-get install gcc g++ binutils patch bzip2 flex make gettext pkg-config unzip zlib1g-dev libc6-dev subversion libncurses5-dev gawk sharutils curl libxml-parser-perl python-yaml ocaml-nox ocaml ocaml-findlib libssl-dev libfdt-dev

sudo apt-get install device-tree-compiler u-boot-tools

sudo apt-get install libssl1.0-dev

apt install git

在OpenWrt环境中进行无线接入点固件的编译和构建

下载高通开发板QSDK,完成进入目录使用make menuconfig进入图形化配置界面

menuconfig页面中各选项功能说明:

Target System:选择设备所使用的处理器架构。

Subtarget:根据设备的详细型号,选择相应的子目标。

Target Profile:选择你的设备型号。这会自动设置与设备兼容的预设选项。

Target Images:选择生成的固件类型,例如:squashfs、ext4等。

Global build settings:配置全局编译设置,例如:启用/禁用软件包的签名检查、IPv6支持等。

Base system:选择基本系统组件,例如:网络配置、系统日志、防火墙等。

Extra packages:选择额外的软件包,如:文件系统支持、VPN、代理等。

Kernel modules:选择内核模块,如:支持的硬件设备、文件系统、网络协议等。

LuCI:选择Web界面组件,包括主题、应用、协议支持等。

Languages:选择系统支持的语言包。

Libraries:选择编译时需要的库文件,如:加密库、数据库库等。

Utilities:选择实用工具,如:文件管理器、终端模拟器、脚本语言支持等。

选择适用于IPQ5018芯片的驱动及基本组件,ipv6协议、防火墙等。选择LuCI选项卡中语言、主题、功能支持等组件。保存配置.config ,首次编译使用make V=s -j1 带日志的单线程编译。

4.3编译过程中可能遇到的常见问题

下载中断报错处理办法,使用vim命令打开qsdk/scripts/download.pl文件,修改push @clo_mirrors 后面网址为无访问限制的地址。

cc1: all warnings being treated as errors报错处理办法,注释掉报错目录下配置文件中“-Werror”字段。

4.4固件烧录

(1)连接设备:使用串行调试工具和开发板相连。

(2)配置工具:在电脑上使用Tftp工具创建服务器,设置本地ip地址192.168.1.100,然后打开SecureCRT软件,通过设备管理器查看串口端口号,新建连接选择serial协议,设置115200码率后确认连接。

(3)固件烧录:重启开发板进入uboot系统,通过printenv 命令查看uboot信息,输入以下命令进行烧录。

setenv serverip 192.168.1.100,setenv ipaddr 192.168.1.10 设置本地及tftp服务器ip地址

tftpboot 0x44000000 openwrt-ipq5018.img 设备从TFTP服务器下载固件

nand device 1 设置活动分区

nand erase 0x00000000 0x04000000 覆盖原固件

nand write $fileaddr 0x00000000 $filesize 写入新固件

reset 重启

5.实验与结果分析

5.1测试OpenWrt固件

基本功能测试:首先,需要检查设备是否能够正常启动,并且能通过有线或无线连接访问到OpenWrt的界面。其次检查网络连接、IP地址分配(DHCP)、管理接口等。

无线功能测试:检查SSID的广播和隐藏、信道选择和管理、客户端连接及管理。

安全性功能测试:无线网络的加密和认证功能,访问控制列表(ACL)、远程管理的安全性。

性能测试:在不同的距离和不同的环境下测试无线接入点的信号强度和速度。或使用工具如iperf进行带宽测试。

稳定性测试:让设备运行一段时间,看是否会出现掉线、重启等问题。

5.2实验结果和总结

本次实验对基于OpenWrt编译的无线接入点固件进行了功能性分析和测试。通过对系统启动和配置、网络连接和管理、无线功能、安全性功能、网络服务以及性能进行测试,可以得出以下结论:

系统启动和配置功能表现良好,启动过程平稳,配置文件和系统参数加载正确,无明显问题。

网络连接和管理功能正常,能够通过有线和无线方式连接到网络,网络配置界面和管理接口易于使用和操作。

无线功能表现稳定,能够正常建立无线网络连接,SSID的广播和隐藏功能正常,无线加密方式的配置可靠,信道选择和管理满足需求。

安全性功能良好,无线网络的加密和认证功能可靠,访问控制列表(ACL)或MAC地址过滤功能有效,远程管理的安全性得到保障。

网络服务功能正常,DHCP服务器、DNS解析、端口转发、虚拟专用网络(VPN)等功能配置和运行良好。

性能测试结果良好,无线传输速率、延迟和带宽利用率均在可接受的范围内,表现出良好的性能。

综上所述,基于OpenWrt嵌入式编译的无线接入点固件在本次实验中表现出良好的功能性能和稳定性。然而,仍有一些改进的空间,如进一步优化无线性能、加强网络安全机制、改进管理界面的用户体验等。这些改进可以提升固件的可靠性和用户满意度,为无线接入点的应用提供更好的支持。

6.结论

本文详细介绍了使用OpenWrt编译无线接入点固件的方法与步骤,并通过实验验证了使用OpenWrt编译的无线接入点固件性能及稳定性。读者可以根据本文提供的指导,搭建自定义的编译环境,开发定制的无线接入点固件产品。在未来,随着无线技术的不断发展,无线接入点固件的编译与优化将成为更多研究者关注的重要领域。

参考文献:

[1] 何亚雯, 唐寅, 李育德. 基于OpenWrt的嵌入式无线路由器AP端固件设计与实现[J]. 计算机与数字工程, 2018(06): 112-116.

[2] 林峰, 刘汝佺. 基于OpenWrt的ARM64位开发环境搭建方法分析[J]. 现代电子技术, 2019, 42(12): 97-99.

[3] 陈科, 魏毅, 李凤娟. OpenWrt在家庭无线网络中的应用[J]. 电脑知识与技术, 2019(13):181-182.

[4] 胡钧, 张振宇. OpenWrt路由器固件的优化及应用[J]. 科技资讯, 2018(16):85-86.

[5] 徐聪, 程洋. 基于OpenWrt的路由器硬件资源管理研究[J]. 电子技术与软件工程, 2018(19):131-132.

[6] 杨庆峰, 董雪, 刘琳. 基于OpenWrt的路由器应用开发研究[J]. 计算机工程师, 2017(3):54-56.

作者简介:

孔祥南(1986.11—)性别:男,民族:汉,籍贯:吉林省吉林市 ,目前职称:计算机工程师(中级) ,学历: 本科学士学位,研究方向:无线传输方向。