openwrt升级功能流程简介

合集下载

openwrt 自动升级需求

openwrt 自动升级需求

Openwrt 自动升级需求一、背景:先说一下我们的产品,我们的产品是跑在openwrt系统内的路由器,路由器里面有我们自己开发的软件,软件有多个,比如现在有串口控制软件、TCP控制软件;目前已有100个用户再使用,现在升级我们只能远程用户电脑1个1个的升级很麻烦;再过1年我们的产品会达到1万个,甚至更多,如果还按照原来升级方法那根本不现实,所以我们现在想实现自动升级;二、名词解释:1.节点:用户现场每个openwrt路由器称为1个节点;2.自动升级:在节点有网络前提下,能够很方便的控制多节点升级过程,命名为自动升级;3.串口控制软件:跑在openwrt路由器内的一个串口通信软件;4.TCP控制软件:跑在openwrt路由器内的一个TCP通信软件;三、需求分析:1.自动升级需要实现功能:i.能够选择那些节点可升级,那些节点不升级;ii.能够选择要升级的目标软件,先目标软件包含串口控制软件、TCP控制软件,以后还有其他软件也要能够自动升级不需要修改软件,例如:我只想升级串口控制软件,TCP控制软件不升级;iii.只有知道特定信息的人员才能够进行升级操作。

iv.能够支持同时升级1万个节点;并能够体现哪些已经升级、哪些未升级。

v.一个节点从开始升级到结束升级不能超过5分钟;一万个节点不超过2个小时;vi.节点升级完后新版本程序应能自动运行;要能够体现升级后程序是否正常运行。

vii.节点升级过程中出现问题如断网,要保证升级前版本能正常使用,不能因为升级造成节点不能正常工作;viii.升级某一个软件是不影响其他软件工作;ix.能够对升级结果进行记录、查询。

1.查询条件:目标软件、日期、升级结果2.结果显示:目标软件、日期、升级结果3.能够导出Excel,能够分页。

x.后续。

Openwrt—luci

Openwrt—luci

步骤文档
1.首先下载虚拟机或者直接安装linux系统,这里我们采用虚拟机环境
虚拟机的作用是虚拟一个PC硬件环境,运行linux系统的(Ubuntu系统),版本采用14.04
2.有了linux之后,就可以搭建Openwrt编译环境,环境搭建详情见之前的技术文档。

3.Openwrt编译环境采用barrier_breaker,内核为3.10.49,是目前最文档的openwrt 版本之一。

4.生成固件后,把固件烧写到开发板中。

5.烧写步骤,我们采用网页升级形式烧写,是sysupgrade升级文件
A. 在浏览器输入路由器ip地址,192.168.2.1,密码为1
B. 进入界面后,点击系统中的“升级和备份”,选择编译好的固件,点击烧写即可。

6.固件烧写好后,按照“5”的方式进入界面(luci界面),在这里我们可以使用luci工具编写的界面对路由器进行本地管理。

7.功能:每个按钮代表着一个功能,luci只是界面工具,实际上是调用底层的软件接口实现对路由器的管理,本案例主要是对路由器的基本管理,采用的是openwrt官方的界面,主要:
网络进行配置,
密码管理,
系统升级,
设置wifi名字
添加网络接口
添加无线网络接口
对整个局域网的管理
等等。

openwrt 原理

openwrt 原理

openwrt 原理OpenWrt原理OpenWrt是一个基于Linux内核的嵌入式操作系统,主要用于路由器和其他网络设备。

它提供了许多功能强大的网络管理和扩展性,因此被广泛应用于各种路由器和无线接入点。

本文将介绍OpenWrt的原理和工作机制。

一、概述OpenWrt是一个开源项目,它提供了一个类Unix的系统环境,用于替代路由器原厂的固件。

其主要目的是为了提供更强大、灵活和可定制的路由器功能。

OpenWrt基于Linux内核,通过安装其固件,可以将支持OpenWrt的路由器转变成一个功能更为强大的网络设备。

二、OpenWrt的安装与配置1. 下载固件要安装OpenWrt,首先需要下载适合你路由器型号的固件。

这些固件可以从OpenWrt官方网站下载,根据你的设备具体型号和版本进行选择。

2. 刷写固件安装OpenWrt的下一步是刷写固件。

在刷写固件之前,需要先登录到你的路由器的管理界面,然后找到固件升级选项。

选择你下载的OpenWrt固件并进行刷写。

3. 配置OpenWrt刷写完毕后,你需要对OpenWrt进行基本的配置。

首先是网络配置,包括设置IP地址、网关、DNS等。

然后是WiFi配置,可以设置无线网络的名称、加密方式和密码。

此外,还可以配置防火墙、端口转发、VPN等高级功能。

三、OpenWrt的工作机制1. Linux内核OpenWrt基于Linux内核,它提供了网络协议栈、设备驱动和其他核心功能。

内核是操作系统的核心,将硬件和软件连接在一起。

它负责管理和分配系统资源,提供系统调用接口,并提供网络、文件系统和设备支持。

2. 用户空间除了Linux内核,OpenWrt还包括了一个完整的用户空间环境。

用户空间中运行的是一些用户态程序和服务,它们与内核进行交互,为系统提供各种功能。

例如,OpenWrt提供了一个Web界面,用于管理和配置路由器。

还提供了诸如DHCP、DNS、NAT等网络服务。

3. 软件包管理OpenWrt的核心系统非常小巧,只包含了基本的功能和驱动程序。

路由器固件升级教程

路由器固件升级教程

路由器固件升级教程随着科技的迅速发展和互联网的普及,路由器作为连接网络的重要设备,也在不断的升级和更新。

为了保持其正常运行和提高性能,我们需要定期对路由器进行固件升级。

本文将详细介绍路由器固件升级的步骤和注意事项。

一、固件简介路由器的固件是一种内置在硬件设备中的软件,它控制和管理路由器的各项功能。

通过定期升级固件,可以修复已知的漏洞、增加新的功能和修改错误。

因此,固件升级是确保路由器的安全性和稳定性的重要步骤。

二、准备工作在开始升级之前,我们需要进行一些准备工作,以确保整个升级过程的顺利进行。

1. 网络连接:确保你的计算机和路由器通过有线或无线方式连接,以便进行升级操作。

2. 确认路由器型号:在升级前,了解你的路由器型号和厂商名称,以便正确选择适用的固件版本。

3. 下载固件:访问路由器厂商的官方网站,查找并下载最新的固件版本到你的计算机上。

三、升级步骤一般来说,路由器的固件升级过程相对简单,但仍然需要谨慎操作。

下面是一般的升级步骤供参考:1. 登录路由器管理界面:在浏览器中输入默认的管理IP地址(如192.168.1.1),并输入用户名和密码登录路由器管理界面。

2. 导航到固件升级页面:在管理界面中,找到“系统设置”或“高级设置”等选项,并查找固件升级相关的菜单或链接。

3. 选择固件文件:在固件升级页面中,点击“浏览”按钮,选择之前下载好的固件文件,并点击“上传”按钮。

等待固件上传完成。

4. 完成升级:一旦固件上传成功,路由器将自动进行升级。

升级过程中请不要断开电源或进行其他操作。

升级完成后,路由器将会重新启动。

四、注意事项在进行固件升级时,请务必注意以下事项,以确保升级过程的顺利与成功。

1. 确认固件版本:在下载固件之前,请确保选择与你的路由器型号相匹配的固件版本,避免使用不兼容的固件。

2. 备份设置:在升级前,建议备份你的路由器设置。

虽然大多数升级过程不会影响设置和配置,但为了避免数据丢失,备份仍然是一个明智的选择。

路由器刷OpenWrt打造全能服务器(二)刷OpenWrt

路由器刷OpenWrt打造全能服务器(二)刷OpenWrt

1. 下载3700V2的OpenWrt固件/bac ... quashfs-factory.img,也可以自己去openwrt的网站找最新的固件下载/backfire/。

2. 进入3700V2的设置界面,找到固件升级页面,用此固件升级(web升级比较简单,而现在已经升级完,无法截图)。

3. 重启路由器,待网卡重新被分配IP地址后,用浏览器访问http://10.0.0.1 (也有可能是192.168.1.1),密码为空,直接点login4. 点击最上方的Network进入网络设置页面5. 点击WAN栏右侧的Edit按键6. 点击DHCP client右侧的下拉箭头,选择PPPoE协议7. 点击Switch peotocol切换成拨号模式,在PAP/CHAP username项里填入你上网账号,下面一栏填写上网密码,点击下面的Save& Apply保存及应用,等待一会就能拨号上网了。

8. 再点击最上面的System,进入系统设置页面,点击第二排的Software,进入软件包安装页面。

点击Update lists,打开软件包安装状态,点击Available packages,再点L进入L字母开头的软件包列表,往下拉滚动条,找到luci-i18n-chinese,点击其左侧的Install安装,稍等一会,路由器会从网上下载软件包并且安装,安装完毕刷新一下,就会发现路由器的界面变成中文的了。

9. 重复上面的安装软件包步骤,再安装luci-app-upnp,此软件包可以让路由器实现upnp端口映射功能。

10. 到此为止就已经给wndr3700V2刷好了OpenWrt的固件,并且转换成中文界面。

如果没有自动转换语言,可以在system下面的language里面,把english换成chinese.11. 最后开启一下无线网络。

选择网络-> 无线,进入以下界面,无线概况下面有两个Generic ***, 因为这款路由器支持2.4G和5G网络。

openwrt sysupgrade 参数

openwrt sysupgrade 参数

openwrt sysupgrade 参数一、概述OpenWrt 是一个轻量级 Linux 操作系统,主要用于嵌入式设备。

Sysupgrade 是 OpenWrt 用来升级系统版本和升级固件的一种方式。

在升级过程中,需要使用正确的参数来确保升级过程的顺利进行。

二、参数说明1. file:指定升级文件的路径。

这个文件通常是一个 tar 包,包含了新的固件和配置文件。

2. image_size_limit:限制升级文件的大小,防止升级过程中因文件过大而失败。

3. leave_root:在升级过程中保留 root 权限,确保升级过程的安全性。

4. overwrite_corrupted:在固件损坏的情况下强制覆盖,确保升级的完整性。

5. silent:静默模式,升级过程中不显示任何信息。

6. bootargs:新的内核参数,用于引导新的系统。

7. force_copy_config:强制复制配置文件,确保新固件中的配置文件能够被正确应用。

8. force_sysupgrade:强制执行 sysupgrade 命令,即使系统处于更新状态。

三、使用示例假设我们有一个名为 openwrt-15.0.0-r0.tar 的升级文件,存储在 /tmp 目录下,那么使用 sysupgrade 的命令如下:```bash/bin/sysupgrade /tmp/openwrt-15.0.0-r0.tar --upgrade \--image_size_limit "10485760" --leave_root \--overwrite_corrupted --force_copy_config \--bootargs "console=ttyS0,115200 root=/dev/mmcblk0p2 rootwait panic=10"```这个命令的含义是:* 使用 /tmp/openwrt-15.0.0-r0.tar 作为升级文件。

OpenWrt简要刷机教程

OpenWrt简要刷机教程

OpenWrt简要刷机教程
准备⼯作
1. 下载openwrt中⽂固件到PC。

(当然其他英⽂固件也可)
2 找到路由器的RST键。

3 找到路由器刷机⼝---姑且称之为“WAN⼝”
4. 关闭路由器的电源。

5. 将PC⽹⼝的IP地址设置与192.168.1.1同⼀⽹段的IP地址,⽐如设为192.168.1.88
6. 准备⽹线⼀根。

刷机步骤
1 先检查电源是否关闭。

⽤⽛签之类的东西先按住路由器的RST键, 然后打开电源(不能松开RST),继续按住10秒钟。

然后松开RST键
2. 将PC的⽹⼝⽤⽹线与“刷机⼝”相连。

打开windows cmd窗⼝下ping 192.168.1.1,如能ping 通,则说明咱们成功的迈出了第⼀步。

3. 通过浏览器访问http://192.168.1.1,如果这也不知道,咱也没办法了,我们应该能看到登录界⾯,输⼊⽤户名密码。

(⼀般默认admin/admin,详见handbook或度娘)
4. 选择【系统设置】【系统升级】,将下载好的固件上传即可升级。

5. 在PC上ping 192.168.1.1,如不能ping通,则关闭电源,回到步骤1,重来⼀遍。

如能ping 通,则恭喜你,刷机成功,请访问
http://192.168.1.1,应该能看到openwrt WEB中⽂界⾯。

openwrt教程

openwrt教程

openwrt教程
打开终端,输入以下命令进行登录:
```
***************.1.1
```
输入路由器的用户名和密码进行登录。

如果是首次登录,默认用户名为“root”,密码为空。

进入OpenWrt系统后,输入以下命令更新软件包列表:
```
opkg update
```
更新完成后,输入以下命令升级已安装的软件包:
```
opkg upgrade
```
接下来,可以根据需要安装其他软件包。

以安装一个网络监测工具为例,输入以下命令:
```
opkg install luci-app-nlbwmon
```
安装完成后,通过以下命令启动网络监测工具:
```
/etc/init.d/nlbwmon start
```
在浏览器中输入“http://192.168.1.1”进入OpenWrt的Web管理界面。

在界面上可以进行各种配置和管理操作。

为了增强安全性,可以修改默认的管理员密码。

在Web管理界面的“系统”菜单中找到“管理员密码”,进行修改即可。

在“网络”菜单中,可以进行网络设置、无线网络设置、DHCP 设置等操作。

在“防火墙”菜单中,可以进行防火墙设置、端口转发等安全相关的配置。

如果需要对路由器进行无线网络的配置,可以在“网络”菜单的“接口”选项中设置无线网络。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

文档说明:本文档简述了openwrt sdk的升级功能流程,从页面传入升级文件到升级文件检测,再到调用升级脚本进行升级,升级完成后,进行系统重启。

最后简述了如何添加升级文件标识,标识包括自己定义的字段,以及升级软件的md5值。

达到防止用户用其他openwrt sdk编译出来的固件刷新我们的系统,以及防止升级软件被破坏。

文档需要用到的文件及在sdk中的路径(某些文件路径可能随项目的不同而改动):./package/ralink/ui/luci-mtk/src/modules/admin-full/luasrc/controller/admin/system.lua./target/linux/ramips/image/ Makefile./package/base-files/files/lib/upgrade/common.sh./package/base-files/files/lib/functions.sh./package/base-files/files/sbin/sysupgrade./target/linux/ramips/base-files/lib/ramips.sh./target/linux/ramips/base-files/lib/upgrade/platform.sh文档正文:1.从页面接受传过来的升级文件作为整个流程的开始,功能实现在文件system.lua中。

这是一个lua文件,很容易在function index函数中找到系统升级功能的入口函数:action_flashops。

在这个函数中首先通过fp = io.open(image_tmp, "w")打开升级临时文件:/tmp/firmware.img,打开后通过fp:write(chunk)写入页面传进来的升级文件。

到这里,接受升级文件完成。

2.检测升级文件的合法性实现同样在文件system.lua中。

在函数image_supported()中进行检测,这个函数通过image magic number来检测升级文件是否合法。

函数image_supported()会调用platform.sh脚本中的platform_check_image函数,platform_check_image函数调用ramips.sh脚本中的ramips_board_name函数,获取board name,ramips_board_name函数从文件/tmp/sysinfo/board_name 中获取board name,若没有则为unknown,并返回给调用者,我用的板是ralink-soc。

platform_check_image函数继续调用common.sh脚本中的get_magic_long函数,用以获取升级文件magic,就是升级文件前4位。

get_magic_long函数调用common.sh脚本中的get_image函数用以获取文件/tmp/firmware.img内容,其实就是cat /tmp/firmware.img. 获取到的内容,通过dd bs=4 count=1,来获取前4位,最后通过hexdump -v -n 4 -e '1/1 "%02x"'处理以十六进制编码返回调用者。

获取到的升级文件magic,在platform_check_image函数中与27051956做对比,这个值是在固件编译的时候已经定好了的。

如果相等,就是合法的升级文件,继续升级动作;不相等则为非法升级文件,做一些后续处理并终止升级动作。

到这里检测升级文件合法性完成。

3.检测升级文件不合法后的处理实现同样在文件system.lua中。

检测到不合法后,通过nixio.fs.unlink(image_tmp)来删除临时文件/tmp/firmware.img,并通过image_invalid = true,设置检测失败,用以通知页面显示提示信息。

终止升级。

处理完成。

4.检测升级文件合法后的处理实现同样在文件system.lua中。

检测到升级文件合法后,会获取一些升级文件相关的信息,用以在页面显示:调用image_checksum(),获取checksum;调用storage_size(),获取可用空间大小;调用nixio.fs.stat(image_tmp).size,获取升级文件大小;以及页面传过来的是否保存配置的值;其中,image_checksum()函数用的是md5sum命令,storage_size()函数是在系统文件/proc/mtd 中找到firmware分区大小。

接下来如果用户选择进行升级文件,则会现在页面上打印一些提示信息,用于提示用户:正在升级,不要断开电源等等。

文件system.lua最后的处理就是调用升级脚本:fork_exec("killall dropbear uhttpd; sleep 1; /sbin/sysupgrade %s %q" %{ keep, image_tmp })。

这条语句,先清除dropbear 和uhttpd进程,再等待1秒,最后调用升级脚本sysupgrade,传过去的参数就是keep:是否要保存配置;image_tmp:升级文件/tmp/firmware.img。

OK,到这里system.lua文件中关于升级前的准备工作都完成了,视线请转到升级脚本sysupgrade上。

5.运行升级脚本实现在文件sysupgrade中。

脚本开始,像所有的主体处理程序一样,会对传进来的参数进行处理。

下面对这些参数的介绍:-i 开启交互模式-d 重启前延迟,延迟秒数是传进来的-v 会打印sysupgrade脚本中的一些信息,脚本中默认打印-q 与-v相反-n 升级后不保存配置,默认保存配置-c 保存所有的改动配置文件到/etc/-b 用sysupgrade.conf中指定的文件,创建.tar.gz格式备份文件-r 用上步创建的.tar.gz文件,恢复配置-l 列出将会备份的文件列表-f 从.tar.gz恢复配置-F 即使升级文件检测失败,也要升级,这个参数是危险的,慎用-T 验证升级文件和.tar.gz配置文件,但不升级-h 打印帮助信息这些参数的使用在脚本中都有介绍,不再多讲。

接下来:[ -z "$ARGV" -a -z "$NEED_IMAGE" -o $HELP -gt 0 ],意思是:如果没有升级文件参数,且没有命令行参数-b(create-backup),-r(restore-backup),或者带有-h(help)参数,则打印帮助信息。

这个条件为真的话,会在终端打印帮助信息,退出脚本。

接下来:[ -n "$ARGV" -a -n "$NEED_IMAGE" ],意思是:不要指定-b或-r(创建配置、恢复配置)的同时,指定升级文件。

为真的话,打印提示信息,退出脚本。

接下来:[ "$CONF_BACKUP" = "-" ] && export VERBOSE=0,意思是:选择备份配置但传进来的文件为“-”时,不打印备份文件时的过程。

下面展示一下-v选项的作用:带-v时的升级过程:root@OpenWrt:/# sysupgrade -i -v /tmp/firmware.imgKeep config files over reflash (Y/n): yEdit config file list (y/N): nSaving config files...etc/config/dhcpetc/config/dropbearetc/config/firewalletc/config/fstabetc/config/lucietc/config/networketc/config/systemetc/config/ucitracketc/config/uhttpdetc/config/wirelessetc/dropbear/dropbear_dss_host_keyetc/dropbear/dropbear_rsa_host_keyetc/groupetc/hostsetc/inittabetc/passwdetc/profileetc/rc.localetc/shellsetc/sysctl.confSending TERM to remaining processes ... dnsmasq ubusd btnd logd netifd uhttpd ntpd Sending KILL to remaining processes ...Switching to ramdisk...Performing system upgrade...Unlocking firmware ...Writing from <stdin> to firmware ...Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...Writing from <stdin> to firmware ...Upgrade completedReboot (Y/n):不带-v时的升级过程:root@OpenWrt:/# sysupgrade -i /tmp/firmware.imgKeep config files over reflash (Y/n): yEdit config file list (y/N): nSaving config files...Sending TERM to remaining processes ... dnsmasq ubusd btnd logd netifd uhttpd ntpdSending KILL to remaining processes ...Switching to ramdisk...Performing system upgrade...Unlocking firmware ...Writing from <stdin> to firmware ...Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...Writing from <stdin> to firmware ...Upgrade completedReboot (Y/n):继续分析:if [ $CONF_BACKUP_LIST -eq 1 ]; thenadd_uci_conffiles "$CONFFILES"cat "$CONFFILES"rm -f "$CONFFILES"exit 0fi如果需要列出配置文件列表,就调用add_uci_conffiles函数生成列表,并打印到终端。

相关文档
最新文档