一种基于OverlayFS的IPC设备的固件补丁加载方式的制作方法

文档序号:25419775发布日期:2021-06-11 21:30阅读:101来源:国知局
一种基于OverlayFS的IPC设备的固件补丁加载方式的制作方法

本发明涉及ipc设备技术领域,尤其涉及一种基于overlayfs的ipc设备的固件补丁加载方式。



背景技术:

出于硬件成本考虑,目前一些嵌入式设备,会使用性价较高的小容量flash存储固件,这些flash通常只有几mb到几十mb的存储容量。为尽可能减少固件存储空间占用,运行linux系统的嵌入式设备普遍采用高压缩比的只读文件系统,如squashfs、cramfs等。某些嵌入式设备也会采用只读分区和可写分区(如jffs2)相结合的方式,其中只读分区用于存储核心管理程序,可写分区用于存储配置文件和支持运行时安装和卸载的软件包。无论使用哪种方式,当设备固件功能更新时,都需要擦写flash。对flash的擦写会带来固件损坏风险,特别是无经验的普通用户在协助开发人员调试问题,升级临时固件可能出现误操作导致固件损坏。出于产测和调试的需要,一些设备的固件中会加入用户使用场景不需要的临时程序,增加了flash存储空间占用。



技术实现要素:

本发明的目的在于提出一种降低固件损坏风险,减少flash空间占用的基于overlayfs的ipc设备的固件补丁加载方式。

为达到上述目的,本发明提出一种基于overlayfs的ipc设备的固件补丁加载方式,包括运行linux系统以及加载sd卡补丁。

优选的,所述linux系统对文件系统的操作包括以下步骤:

步骤1:linux内核挂载flashmtd分区上的squashfs文件系统,该分区被挂载为根目录,此时根目录是只读的;

步骤2:挂载内存文件系统tmpfs,挂在目录为可写的目录;

步骤3:基于前两个步骤的tmpfs和squashfs,使用overlayfs堆叠成一个新的目录,其中lowerdir为使用squashfs的根目录,upperdir为使用tmpfs的内存目录/tmp/overlay;将堆叠成的新目录设置为linux系统的新的根目录;

步骤4:系统的根目录支持写操作后,读取外置sd卡中的补丁数据,通过校验后,解压补丁并将补丁文件中的更新文件拷贝到堆叠的可写overlay文件系统中,对文件系统中的文件进行更新;

步骤5:设备基于修改后的文件系统,完成后续服务进程初始化。

优选的,在步骤3中,执行overlay挂载操作后,新的根目录变为可写,对文件系统的修改会记录在upperdir的tmpfs目录中;操作系统对根目录的读取结果是上下两层文件系统堆叠的结果。

优选的,所述加载sd卡包括以下步骤:

步骤1:系统启动后,加载mmc驱动,用于sd卡的识别;

步骤2:挂载sd卡,实现sd卡目录文件的读取;

步骤3:检查sd卡指定目录,查找补丁文件;

步骤4;校验补丁文件的签名是否合法,忽略签名非法的文件;

步骤5:检查补丁文件的机型是否和当前机型匹配,检测补丁文件的生效版本是否与当前固件版本匹配,忽略机型和版本不匹配的补丁文件;

将补丁文件解压到系统的可写内存目录,执行补丁脚本,将补丁文件更新到overlay文件系统的指定位置;补丁脚本可以对系统文件系统的文件进行增加、删除和更新替换操作。

与现有技术相比,本发明的优势之处在于:本发明可以在不更改设备flash固件的情况下,通过加载外置存储sd卡中的补丁文件,实现设备固件功能变更。该方案无固件升级风险,移除补丁也十分简单,只需要移除外置存储,或删除外置存储的补丁文件。外置补丁不占用flash存储空间,可用于加载临时可执行程序,例如只需要在产测时使用的文件、调试时使用的工具等。正式固件中不需要包含这些临时使用的程序,有需要时通过外置补丁加载,可减少flash空间占用。

附图说明

图1为本发明实施例中linux系统对文件系统的操作流程示意图;

图2为本发明实施例中设备加载sd卡的流程示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案作进一步地说明。

本发明提出一种基于overlayfs的ipc设备的固件补丁加载方式,包括运行linux系统以及加载sd卡补丁。

一个运行linux的嵌入式设备,其文件系统使用高压缩比的只读文件系统squashfs,设备运行所需要的动态库、可执行文件、动态库等文件都存储在该文件系统上。本方案通过堆叠文件系统overlayfs,构造一个可读写的文件系统,再通过读取外置存储上的补丁文件,对文件系统的内容进行更新,最后启动后续的服务进程,实现对系统功能的变更。

支持本方案的linux系统对文件系统的操作如下:

(1)linux内核挂载flashmtd分区上的squashfs文件系统,该分区被挂载为根目录,此时根目录是只读的;

(2)挂载内存文件系统tmpfs,例如目录为/tmp/overlay,该目录是可写的;

(3)基于前两个步骤的tmpfs和squashfs,使用overlayfs堆叠成一个新的目录,其中lowerdir为使用squashfs的根目录/,upperdir为使用tmpfs的内存目录/tmp/overlay;将堆叠成的新目录设置为linux系统的新的根目录;

执行overlay挂载操作后,新的根目录变为可写,对文件系统的修改会记录在upperdir的tmpfs目录中;操作系统对根目录的读取结果是上下两层文件系统堆叠的结果。

(4)系统的根目录支持写操作后,读取外置存储中的补丁数据,通过校验后,解压补丁并将补丁文件中的更新文件拷贝到堆叠的可写overlay文件系统中,对文件系统中的文件进行更新。

(5)设备基于修改后的文件系统,完成后续服务进程初始化。

如图2所示,ipc设备加载sd卡补丁的操作如下:

(1)系统启动后,加载mmc驱动,用于sd卡的识别;

(2)挂载sd卡,实现sd卡目录文件的读取;

(3)检查sd卡指定目录,如/patchs,查找补丁文件;

(4)校验补丁文件的签名是否合法,忽略签名非法的文件;

(5)检查补丁文件的机型是否和当前机型匹配,检测补丁文件的生效版本是否与当前固件版本匹配,忽略机型和版本不匹配的补丁文件;

将补丁文件解压到系统的可写内存目录,如/tmp,执行补丁脚本,将补丁文件更新到overlay文件系统的指定位置。补丁脚本可以对系统文件系统的文件进行增加、删除和更新替换操作。

本发明提出一种基于overlayfs的ipc设备的固件补丁加载方式,将内存tmpfs和只读文件系统squashfs堆叠成可写文件系统,系统启动后读取并加载外置存储的补丁文件,更新文件系统,实现对固件的功能变更。

使用该方案,不会擦写设备内置flash;移除补丁只需要移除外置存储,操作简单。通过插sd卡,拔sd卡这样的简单物理操作,就实现了补丁的加载和移除。

外置存储的补丁提供的文件不占用内置flash空间,可用于加载产测工具、调试工具等临时使用的程序。内置固件不需要将这些程序永久存储,减少了flash空间占用。

上述仅为本发明的优选实施例而已,并不对本发明起到任何限制作用。任何所属技术领域的技术人员,在不脱离本发明的技术方案的范围内,对本发明揭露的技术方案和技术内容做任何形式的等同替换或修改等变动,均属未脱离本发明的技术方案的内容,仍属于本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1