linux安全模式改文件,嵌入式Linux的安全模式设计 - 嵌入式操作系统 - 电子发烧友网...

本系统的架构如下图:

0bbf5bfe8648a04f11a337d2d56b39ae.png

产品所使用的flash总大小为16M。

系统包括三大部分,即Bootloader,config, kernel + rootfs:

0461b31f1a25343468353c44be20667a.png

另外,/dev/mtdblock/0,在系统中对应整个flash block,即整个16M空间。

系统启动时,bootloader将kernel和根文件映象从flash上读取到RAM空间中,为内核设置启动参数,调用内核,进入applicaTIon,进行媒体文件的播放。

这个通常意义上的嵌入式Linux系统,它是不带safe mode安全模式的。

这样的系统,在做系统更新升级时,主要是对kernel+rootfs部分进行升级,以此来增加系统的功能。

升级时,applicaTIon主要是操作/dev/mtdblock/3设备文件:

第一步:下载新的firmware到ramfs中,也即ram disk中,比如/tmp目录下,采用的更新方式可以是USB或FTP;

第二步:read /tmp/firmware文件,并write到设备文件/dev/mtdblock/3上,即对已有的firmware进行了更新。

在升级的过程中,我们会提供友好的界面给用户,来提示下载进度与烧写flash的进度,让用户可以看到正在发生的状况。

最后烧写完成后,重新启动系统,即可进入到新的firmware中。

在通常的更新中,用户的产品配置config一般不去修改,保持用户已经做的配置选项,不能破坏。Config内容对应为/dev/mtdblock/2设备文件。

从USB/FTP 上更新时,所使用的firmware文件需要是一个更加完整的image文件,可以包括bootloader, default config, kernel+rootfs,并让applicaTIon可以做到视image中的标记来决定是否需要更新bootloader、config等内容,这样会更加灵活。

在更新firmware时,如果掉电,那么kernel + rootfs部分将会出现不完整的情况,也就是说只写入了部分内容,而中途中断了,这样的话,一个不完整的系统将无法正常工作。在这样的情况下就需要safe mode安全模式了。

safe mode架构设计

Safe mode的设计中,对原来的系统增加了两个部分的内容:

kernel + rootfs,即简单的UI界面与功能;

magic number,即烧写flash的标记。

4f76030b51bd296c45082b6ddb54b09d.png

safe mode实际上也是一个kernel + rootfs部分,只是它所具有的功能只包括一些简单的界面,主要是提供网络设置,从USB/FTP下载firmware,完成对flash的烧写。

为了区分,这里,将主功能部分的kernel + rootfs称为master。

我们将safe mode存放在master的后部,预留的flash大小为4M。

Magic number只占用一个字节的大小,是在这4M的最后的部分的一个字节,也即原始系统的15872K的最后一个字节位置处。

在开始烧写flash前,将magic number设置为0x55,表示烧写的开始。烧写正常结束后,将magic number设置为0xAA,表示烧写正常结束。

如果新产品中具备了safe mode模式,那么在以后再次更新升级时,开始烧写flash时,magic number的位置将会有0x55标记,如果烧写中途掉电,在重新启动后,将由Bootloader来检查magic number的值,如果内容为0x55,那么bootloader将从safemode部分读出kernel和根文件映象,再为内核设置启动参数,调用内核,进入safe mode applicaTIon。

如果bootloader读到magic number为0xAA,那么说明master firmware是正常的,就将直接进入master。

所以涉及到safe mode的地方也包括了对bootloader的修改,需要在系统上电阶段也检查safe mode的magic number,这个过程是必不可少的,只有在启动阶段就检查magic number,才能跳过损坏的master系统,进入安全模式,达到恢复系统的目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441623.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【POJ - 1661】Help Jimmy(记忆化搜索,dp)

题干: Help Jimmy" 是在下图所示的场景上完成的游戏。 场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jim…

c语言linux消息机制,linux消息机制的过程是什么啊,请赐教

LINUX的安装过程很简单,按照它的提示进行就可以了.重点就是分区那里.通常我们使用双系统,那样我们在LINUX分区的时候不要把WIN分区跟格掉就好,然后要记得分一个SWAP分区,然后根据您的需要进行相应的分区,比如/HOME,/USR,/VAR等等.下面介绍一下具体操作步骤:假定用户…

ACM与Java -- 大整数类的常用函数一览表

BigInteger abs() 此方法返回一个BigInteger,其值是此BigInteger的绝对值。2BigInteger add(BigInteger val) 此方法返回一个BigInteger,其值是(this val).3BigInteger and(BigInteger val) 此方法返回一个BigInteger,其值是 (this & v…

linux虚拟机上安装域名,虚拟机如何安装linux系统

虚拟机如何安装linux系统?安装linux系统首先要在电脑上安装好虚拟机,然后逐步进行linux系统安装。大致介绍下安装的流程。1.首先打开虚拟机软件,点击文件/新建虚拟机,用户可以按照默认选择,然后点击下一步。2.在浏览里&#xff0c…

想打ACM?想刷题?来这些online judge!

原文地址:https://blog.csdn.net/tigerisland45/article/details/52134189

基于arm下的Linux控制,基于ARMuCLinux的网络控制系统设计与实现

引言 随着网络和通信技术的发展,嵌入式系统现已进入高速发展阶段。并在社会各个领域得到了广泛的应用。本文介绍了一种采用ARMuCLinux作为开发平台。实现基于TCP/IP的远程系统监控.从而取代传统单片机来实现数据采集、预处理和通信功能&am…

【qduoj - 1121】小明的贪心题(Dijkstra最短路 + 最短路条数)

题干: 小明的贪心题 描述 小明来到青岛上学已经一年了,他给青岛这座城市画了一张地图。在这个地图上有n个点,小明的起始点为1号点,终点为n号点,并且地图上的所有边都是单向的。小明知道从i号点到j号点的时间花费为w分…

nodejs 监控linux,linuxServerMonitoring

linux服务器监控平台技术:nodejs vue java mongodb springboot linux shelllinux服务器监控项目,前后端分离vuespringbootmongodb:1、启动前台:使用命令:A 先安装nodejs并配置好环境变量B 先控制台cmd命令切换到项目目…

【qduoj - 纳新题】小明的dp(快速幂 + 乘法原理)(简单组合数学)

题干: 描述 小明有n种珠宝,每种无限个,他想从这些珠宝中取出m个,编成手链(长链哦),并按顺序排列起来,为了好看,相邻的珠宝不能相同。小明想知道有多少种排列的方法。 输…

linux查看显卡核心数,linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 | 帮助信息-动天数据...

linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息作者:dthost |时间:2015-09-30 |8,325 次阅读linux服务器大家都知道,他和WIN系统不一样,他不能和WIN电脑一样,用桌面的电脑属性查看…

【qduoj - 纳新题】凑数题(恰好装满类0-1背包 或 母函数)

题干: 描述 小Q手里有n枚硬币,每枚硬币有一定的金额x,他想知道,用这些硬币能组成多少种不同的金额。但是他太笨了,自己数懵了,你来帮帮他好不好? 注意:组成金额时,每枚硬币只能用一…

c语言中short作用,C语言short

C语言short教程C语言short定义详解语法short int varname value;short varname1 value2; //简写形式参数参数描述short int定义 short 类型变量使用的类型。varname变量名。value可选,变量的初始值,该值不可以超过 short 类型的最大值。说明使用 short…

dls的BM算法模板(线性递推问题,解决矩阵快速幂解决不了的问题)

模板&#xff1a;往里面扔数就可以了&#xff08;据说>8个&#xff1f;&#xff09;%%%dls https://www.cnblogs.com/zzqsblog/p/6877339.html #include<bits/stdc.h> using namespace std; #define rep(i,a,n) for (int ia;i<n;i) #define per(i,a,n) for (int …

c语言课题设计字符串处理函数报告,C语言输入输出库函数设计实验报告.doc

C语言输入输出库函数设计实验报告第 PAGE \* MERGEFORMAT I页 共 SECTIONPAGES \* MERGEFORMAT 1页华中科技大学计算机科学与技术学院C语言课程设计报告题目: C输入输出库函数的程序设计专 业&#xff1a; 计算机科学与技术班 级&#xff1a; CS1202学 号&#xff1a; U2012148…

【HDU - 1847】Good Luck in CET-4 Everybody! (巴什博奕,PN图或sg函数)

题干&#xff1a; 大学英语四级考试就要来临了&#xff0c;你是不是在紧张的复习&#xff1f;也许紧张得连短学期的ACM都没工夫练习了&#xff0c;反正我知道的Kiki和Cici都是如此。当然&#xff0c;作为在考场浸润了十几载的当代大学生&#xff0c;Kiki和Cici更懂得考前的放松…

词法分析器c语言带注释,C语言词法分析器内容说明注释完整可运行代码.doc-资源下载在线文库www.lddoc.cn...

C语言词法分析器_内容说明注释完整_可运行代码.doc1. 实验目的及要求 本次实验通过用 C 语言 设计、编制、调试一个词法分析子程序&#xff0c;识别单词&#xff0c;实现一个 C 语言词法分析器&#xff0c;经过此过程可以加深对编译器解析单词流的过程的了解。 运行环境运行环境…

【HDU - 2516 】取石子游戏 (Fibonacci博弈)

题干&#xff1a; 1堆石子有n个,两人轮流取.先取者第1次可以取任意多个&#xff0c;但不能全部取完.以后每次取的石子数不能超过上次取子数的2倍。取完者胜.先取者负输出"Second win".先取者胜输出"First win". Input 输入有多组.每组第1行是2<n<…

打印心形c语言,C语言打印心形

#include int main() {for (float y 1.5f; y > -1.5f; y - 0.1f) {for (float x -1.5f; x < 1.5f; x 0.05f) {float a x * x y * y - 1;putchar(a * a * a - x * x * y * y * y < 0.0f ? ‘*‘ : ‘ ‘);}putchar(‘\n‘);}}**********************************…

【HDU - 1564 】Play a game (博弈问题,找规律,奇偶博弈)

题干&#xff1a; New Year is Coming! ailyanlu is very happy today! and he is playing a chessboard game with 8600. The size of the chessboard is n*n. A stone is placed in a corner square. They play alternatively with 8600 having the first move. Each time…

c语言学生对老师的评教系统,学生对老师的评价

学生对老师的评价1、老师授课的方式十分适合我们&#xff0c;他根据本课程知识结构的特点&#xff0c;重点突出&#xff0c;层次分明。理论和实际相结合&#xff0c;透过例题使知识更条理化。但授课速度有点快&#xff0c;来不及记录。2、老师在生活工作中给人的感觉是生活朴素…