《智能路由器开发指南》——第1章 智能路由器概述 1.1 OpenWrt简介

简介:

本节书摘来自异步社区《智能路由器开发指南》一书中的第1章,第1.1节,作者 张永智,李章明,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 智能路由器概述

近年来,智能路由器领域越来越火,但这方面的开发资料却很少,并且不成体系。因此,本书针对智能路由器领域的开发进行了详细介绍,也可以用于指导其他智能家庭设备的开发。

接入网络的家庭用户终端越来越多,路由器控制越来越复杂,因此需要一个智能网关来管理家庭的设备。另外,这个智能网关直接连在互联网上,需要隔离家庭网和互联网的连接,因此需要带有防火墙功能。智能路由器就像智能手机一样,其定义并非其字面含义所表现出的那样(可以智能地选择路由),而是其带有可扩展功能,用户自己可以安装软件进行扩充。传统的路由器仅可以升级厂商自己的操作系统版本,且未提供扩展接口。

公共场所无线接入是一个大的需求,因此无线接入市场越来越大。接入费用谁来负担?一个思路是商家提供接入费用,另外一个思路是通过广告来分担接入费用。OpenWrt就是这样一个智能路由器操作系统,它可以提供Web认证等成熟的功能给这类用户进行选择。

OpenWrt是一个针对嵌入式设备的Linux发行版,有非常高的可扩展性,可以非常容易地从零开始构建出全功能的智能路由或服务器设备。

1.1 OpenWrt简介

OpenWrt是一个嵌入式设备的Linux发行版,以GPL许可协议发行。

OpenWrt项目始于2004年1月,其第一个版本采用了LinkSys的源码。在LinkSys的代码收费后,改为采用正式发布的Linux内核来集成,并将OpenWrt完全模块化,不断推出补丁和驱动。OpenWrt的主要特点在于其高扩展性,并且文件系统可写,开发者无需在每一次修改后完全重新编译,只要编译自己的软件包即可,这样就加快了开发的进度。另外OpenWrt提供了SDK,每个运行软件均能够以SDK来进行编译,以软件包形式进行安装和卸载。其主要特点有如下几个。

  • 代码里不含第三方开源包,只包含开源包地址链接。
  • 编译时自动下载源代码、打补丁来满足指定平台要求,并编译。还可以修改Makefile来下载最新的软件包。
  • 使用LuCI作为最终用户管理界面。LuCI以Apache许可协议发布Web管理功能代码。
  • UCI通用配置管理方法。
  • 通过脚本来调用iptables来实现防火墙功能,配置保存在UCI文件中。
  • 开放和可扩展的OPKG格式安装升级包。

OpenWrt历史

OpenWrt在2004年由迈克·贝克和格里·罗泽马创立,到今天为止已经发展了12个年头了。OpenWrt定期发布版本,发行版本以代码线和日期作为版本号。它的第一个正式版为Kamikaze 7.06,第二个正式版本为Backfire 10.03。

Backfire

2010年4月7日,OpenWrt发布Backfire 10.03正式版。相对上一个稳定版本,其内核升级为Linux 2.6.32,使用了新的Web服务器uhttpd,支持了一些新的平台硬件(如TP-Link TL-WR1043ND等),增加了机器可读的版本信息/etc/openwrt_release。

2011年12月21日,OpenWrt发布了Backfire 10.03.1正式版。期间,OpenWrt发布了6个RC版本。这一版本将内核升级为Linux 2.6.32.16,修正了很多BUG,并增加了对TP-Link、TL-MR3420等的支持。

Attitude Adjustment

2013年4月25日,OpenWrt发布12.09正式版。相对于Backfire版本,Attitude Adjustment将内核更新至Linux 3.3,改进了并行编译支持;使用密文存储密码;各种防火墙功能增强;无线驱动更新及稳定性增强;新平台支持ramips、bcm2708(树莓派)等;发布镜像文件中支持网桥防火墙。

Barrier Breaker

2014年7月31日,OpenWrt发布14.07正式版。相对于Attitude Adjustment版本,内核升级到3.10,增加了原生IPv6支持,文件系统增强;UCI配置增强,支持测试配置和回滚最近工作状态机制,增加配置更改按需触发服务重启机制;网络功能增强,可以支持动态防火墙规则,增加网桥的多播传输到单播传输的转换等。

Chaos Calmer

OpenWrt于2015年9月11日发布15.05正式版。Chaos Calmer中间发布了3个RC版本。相对于 Barrier Breaker,其内核升级到了3.18;网络功能增强,添加了多个3G/4G路由器支持,改进了IPv6等功能增强,增加了自管理网络的支持;各种平台和驱动设备的支持,例如飞思卡尔i.MX23/28系列等各种品牌,增加了树莓派的支持。这个版本在64位平台的VirtualBox下运行还存在问题。


screenshot

注1:对于各种硬件平台内核版本可能不一致。因为每个平台的内核版本在独立的文件中定义(target/linux/<平台>/ Makefile:LINUX_VERSION),在Barrier Breaker及以后的发布版中,内核版本定义变量改为KERNEL_PATCHVER。

注2:最新的两个发布版本没有创建标签,需要根据SVN版本号来下载代码。

注3:2016年3月,OpenWrt已经从SVN代码仓库切换到Git代码仓库了,因此不再支持SVN。

相关文章
|
数据采集 前端开发 大数据
Lua 获取 Get 与 Post 请求数据|学习笔记
快速学习 Lua 获取 Get 与 Post 请求数据
Lua 获取 Get 与 Post 请求数据|学习笔记
|
程序员 编译器 C语言
最新Dev-C++下载安装以及C语言环境搭建教程(含C语言入门教程)
最新Dev-C++下载安装以及C语言环境搭建教程(含C语言入门教程)
2669 0
|
存储 安全 数据挖掘
【工具】HxD Hex Editor 的安装、使用详细教程
【工具】HxD Hex Editor 的安装、使用详细教程
7097 0
|
数据安全/隐私保护
BUUCTF 被劫持的神秘礼物 1
BUUCTF 被劫持的神秘礼物 1
606 0
|
安全 数据安全/隐私保护
陇剑杯WP - Webshell详细题解
陇剑杯WP - Webshell详细题解
1186 0
|
12月前
|
JSON 搜索推荐 机器人
直播间自动发言机器人,抖音快手小红书哔哩哔哩机器人, 自动评论app机器人打字弹幕脚本
多平台支持:整合抖音、哔哩哔哩等平台的自动化操作 智能评论生成:结合视频内容动态生成个性化评论
|
9月前
|
Linux 网络安全 开发工具
liunx环境手动安装.net8的教程
本教程适用于 Linux 环境,核心为手动安装.NET 8。步骤包括下载对应 Linux 架构的.NET 8 安装包,解压至指定目录,配置环境变量以确保系统识别,最后通过命令验证安装是否成功。整个过程无需依赖自动安装工具,操作简洁,可满足用户在 Linux 系统中手动部署.NET 8 的需求。
1629 3
|
12月前
|
人工智能 API 开发者
别再等Manus邀请码了,6.1k star的开源OpenManus了解一下
OpenManus 是开源社区推出的 AI 代理项目,旨在提供一个无需邀请码、人人可自由访问的通用任务处理工具。该项目由 MetaGPT 社区开发者共同维护,核心依赖大型语言模型(LLM),用户可通过配置 API 调用 GPT-4o 等模型执行任务。相比 Manus,OpenManus 具备开源透明、无门槛访问和社区驱动等特点,尽管目前功能尚处初级阶段,但其开放性为未来优化提供了广阔空间。项目安装简便,适合 AI 爱好者快速上手并参与共建。
|
前端开发 关系型数据库 MySQL
PHP与MySQL动态网站开发实战指南####
【10月更文挑战第21天】 本文将深入浅出地探讨如何使用PHP与MySQL构建一个动态网站,从环境搭建到项目部署,全程实战演示。无论你是编程新手还是希望巩固Web开发技能的老手,都能在这篇文章中找到实用的技巧和启发。我们将一起探索如何通过PHP处理用户请求,利用MySQL存储数据,并最终呈现动态内容给用户,打造属于自己的在线平台。 ####
795 0
|
搜索推荐 Linux 开发工具