第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > linux安全模式改文件 嵌入式Linux的安全模式设计 - 嵌入式操作系统 - 电子发烧友网...

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

时间:2020-04-15 15:42:35

相关推荐

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

本系统的架构如下图:

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

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

另外,/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的标记。

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系统,进入安全模式,达到恢复系统的目的。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。