sysupgrade.bin 及分区结构

本文介绍了解决OpenWRT编译时遇到的因image大小超出flash定义而导致的问题,通过调整配置使其适应不同大小的flash,并详细解释了路由器的分区结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

http://www.mamicode.com/info-detail-842416.html


1. make menuconfig 后编译没有生成openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin ,究其原因是因为image超出了flash定义的大小,实际的flash是8M的,编译703N的时候没有修改配置编译成4M的了 ,修改下面两个文件(trunk 版本)

1. 

vi tools/firmware-utils/src/mktplinkfw.c

.id = "TL-WR703Nv1",
.hw_id = HWID_TL_WR703N_V1,
.hw_rev = 1,
.layout_id = "4Mlzma",//将4Mlza改为8Mlzma保存即可。

 

2.

vi target/linux/ar71xx/image/Makefile

define Device/tl-wr703n-v1
$(Device/tplink-8mlzma)  //将4mIzma 修改为8mIzma
BOARDNAME := TL-WR703N
DEVICE_PROFILE := TLWR703
TPLINK_HWID := 0x07030101
CONSOLE := ttyATH0,115200
endef

 

系统结构

在上一章我们已经完成了刷机工作,这个时候系统进行了首次启动,并且格式化了它的"可写"分区。那么在设备里分区到底是怎么样进行的呢?我们首先需要知道:不同的处理器下OpenWRT分区是略微有所区别,不是所有的分区都完全相同的。在路由器的FLASH上,内核中所使用的驱动是MTD设备驱动。

MTD(Memory Technology Devices,内存技术设备)是用于访问内存类设备(ROM、FLASH)的Linux驱动子系统。它的主要目的使FLASH类设备更加容易被访问,为此它在硬件和上层提供了一个抽象的接口,使得在操作系统下我们可以像操作硬盘一样操作这个设备。仔细观察过Linux启动信息的朋友会看到这么一段话:

[ 0.690000] 5 tp-link partitions found on MTD device spi0.0
[ 0.700000] Creating 5 MTD partitions on "spi0.0":
[ 0.700000] 0x000000000000-0x000000020000 : "u-boot"
[ 0.710000] 0x000000020000-0x00000012a290 : "kernel"
[ 0.730000] 0x00000012a290-0x0000007f0000 : "rootfs"
[ 0.760000] 0x000000300000-0x0000007f0000 : "rootfs_data"
[ 0.760000] 0x0000007f0000-0x000000800000 : "art"
[ 0.770000] 0x000000020000-0x0000007f0000 : "firmware"

这些信息表示当前系统识别到的FLASH分区。我们可以用电脑中的计算器计算一下,打开计算器,选择科学型、十六进制,输入名为art的分区容量用(800000-7f0000)结果为10000(十六进制),这个时候点击十进制,系统会自动将结果转换为十进制,再除以1024结果为64(K)表示这个分区容量为64k。在openwrt的系统中现在对atheros方案实现了自动查找分区结尾。

上面的几个分区,我来说明下(分区名称、分区容量、分区作用):

  • "u-boot":128KB,设备初始化程序+引导程序代码本身
  • "kernel" :1MB,存放系统内核的二进制代码,按照x86下的讲法是Raw分区,就是这里只有内核的二进制,不存在文件系统。
  • "rootfs":6.7MB,完整的系统文件包含只读和可写
  • "rootfs_data":4.9MB,在rootfs中的可写部分的位置
  • "art":64KB,EEPROM分区,在Atheros的方案中这个分区保存了无线的硬件参数
  • "firmware":7.9MB,完整的固件位置包含了除"u-boot"和"art"之外全部的内容

### 安装OpenWRT于Armbian系统的指南 在Armbian系统上安装OpenWRT涉及几个关键步骤,这些操作旨在替换现有的Linux发行版环境为OpenWRT固件。需要注意的是此过程可能因硬件平台不同而有所差异。 #### 准备工作 确保拥有最新的备份数据以及了解设备的具体型号和支持情况非常重要。访问官方论坛或支持页面获取特定模型的支持状态和任何额外所需的引导加载程序或其他工具[^1]。 #### 下载合适的镜像文件 前往[OpenWRT官方网站](https://openwrt.org/toh/start),找到适用于目标ARM架构的最新稳定版本下载链接。对于某些较新的SoC芯片组来说,可能还需要寻找社区维护的非正式构建版本来获得更好的兼容性和功能特性。 ```bash wget https://downloads.openwrt.org/releases/latest/targets/.../openwrt-<target>-generic-squashfs-sysupgrade.bin ``` 此处`<target>`应被替换成实际的目标名称,这取决于具体的处理器类型与板级设计。 #### 制作启动介质 如果计划通过USB闪存盘或者其他外部存储装置来进行刷机,则需先将上述下载得到的`.bin`格式映像写入其中: ```bash sudo dd if=openwrt-*-squashfs-sysupgrade.bin of=/dev/sdX bs=4M && sync ``` 注意:请务必确认`sdX`代表正确的磁盘节点以免误擦除重要资料! #### 执行升级流程 对于已经运行着某种形式GNU/Linux内核的操作系统而言(如Armbian),可以直接利用内置命令完成在线更新至OpenWRT的过程而不必借助物理媒介: ```bash sysupgrade -v http://example.com/path/to/openwrt-image.bin ``` 或者当本地已有准备好的固件包时也可以采用如下方式: ```bash sysupgrade -n /path/on/device/openwrt-image.bin ``` 以上两种方法均会自动处理必要的分区调整并重启进入新系统;然而,在执行前建议阅读相关文档以充分理解整个转换期间可能出现的风险事项。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值