在 Linux 运行期间升级 Linux 系统(Uboot+kernel+Rootfs )
版本:1.0
作者:crifan
邮箱:green-waste (at) 163.com
版本历史
版本号 时间 内容
1.0 2011-05-03 介绍了如何实现在线升级 linux 系统,即 uboot ,kernel ,
rootfs, 以及相关的前提知识和准备工作
目录
1. 正文乊前 3
1.1. 此文目的 3
1.2. 一点说明 3
2. 嵌入式系统中,如何在 Linux 运行的时候去升级 Linux 系统 4
2.1. 前提 4
2.1.1. Linux 中已经实现 Nor Flash 驱动 4
. 在开发板相关部分添加对应 nor flash 初始化相关代码 4
. Linux 通用 nor flash 驱动 m25p80.c 简介 5
2.1.2. Linux 中已实现了 U 盘挂载,以方便拷贝要升级的文件 8
2.1.3. Linux 中 Nor Flash 和 Nand Flash 已能正常工作 8
2.1.4. 已经准备好了 mtd 工具 8
. mtd-util 简介 8
. mtd 中的/dev/mtdN 不/dev/mtdblockN 的区别 14
2.2. 准备工作 15
2.2.1. 准备好要升级的文件 15
2.2.2. 拷贝文件并挂载分区 15
2.3. 利用 mtd 工具升级 Linux 系统 15
2.3.1. 升级 Uboot 17
2.3.2. 升级 Kernel 18
2.3.3. 升级 rootfs 18
2.3.4. 总结 18
图表
图表 1 MTD 工具简介 8
图表 2 要升级的 Linux 系统的文件 15
图表 3 Linux 系统中的 Nand MTD 分区 17
1. 正文之前
1.1. 此文目的
目前嵌入式 Linux 系统的升级,即升级 uboot ,kernel ,rootfs 等,的传统的方式,都是
用烧写工具去烧写,相对来说,显得很繁琐和效率比较低,而利用 mtd 工具的方式去升级
系统,相对比较方便。
此文主要就是介绍,在嵌入式 Linux 系统下,已经实现了 nand 和(戒)nor flash 驱动后,
如何利用 mtd 工具,迚行实时(runtime )/在线(online )的情况下,升级Linux 系统。
1.2. 一点说明
1. 本文所写内容,主要是乊前的一些相关的工作总结,如果内容有误,请及时告知:
green-waste (at )163.com
其他技术问题的探讨,任何的问题,意见,建议等,都欢迎邮件交流。
2. 另外,如果需要的 mtd-utils-1.3.1 的源码的话,也可以发邮件索取。
3. 如果你当前查看的是 pdf 版本的,那么应该可以找到 pdf 中所包含的两个附件 :
compiled_mtd-utils_arm.7z :已经编译好了的arm 平台的,包含了 u32 和 u64 版本的 ,
本文所用到的那 4 个 mtd 的工具,即 flash_erase ,flash_eraseall ,nanddump ,
nandwrite。
mtd-utils-1.3.1_support_u32u64.7z :我乊前所用的mtd util 的源码。你如果是其他平
台的,那么用此源码,可以自己编译出对应