制作linux只读文件系统,一种Squashfs只读根文件系统的远程升级方法及系统的制作方法...

一种Squashfs只读根文件系统的远程升级方法及系统的制作方法

【技术领域】

[0001]本发明涉及嵌入式Linux操作系统的根文件系统,具体是涉及一种Squashfs (南瓜文件系统)只读根文件系统的远程升级方法及系统。

【背景技术】

[0002]在嵌入式Linux系统的应用中,系统启动后都会加载根文件系统(rootfilesystem),并通过根文件系统启动各种后台服务程序、加载应用程序、提供用户操作界面。在实际产品中,如果根文件系统被损害,不仅系统服务和应用程序无法正常加载和运行,而且会造成系统无法正常启动的严重后果,根文件系统被损害导致的上述后果,对于对产品可靠性要求很高通信系统的影响更为严重。

[0003]在一些要求高可靠性的系统中,为了保证Linux系统的稳定可靠,Linux系统的根文件系统会以只读的方式存放在系统的存储设备(如NOR FLASH,NAND FLASH等非易失闪存设备)中,将根文件系统设置为只读不可修改,这样就可以防止和避免意外操作造成根文件系统损坏,保证系统启动时根文件系统能正常被挂载,增强系统的可靠性。而由于Squashfs具备压缩只读的特点,所以在目前产品开发中常常使用Squashfs作为根文件系统,不仅可以增强Linux系统可靠性,而且可以节省硬件成本。

[0004]采用只读的Squashfs根文件系统虽然可以提高Linux系统可靠性,但其只可读而不可修改的属性,在实际应用中,也导致了根文件系统不能进行远程在线升级的缺陷,使得采用只读的Squashfs根文件系统的Linux系统软件模块远程更新具有很大局限性,即只可以对除根文件系统以外的软件模块进行在线升级(如应用程序、内核、驱动、应用库或者启动代码等);而对于通信系统多个基站离散分布、基站分布可能位偏远山区的特点而言,上述缺陷将增加根文件系统软件升级、维护的成本和难度。

【发明内容】

[0005]本发明所要解决的技术问题是Linux系统中的只读Squashfs根文件系统不能进行远程在线升级的问题。

[0006]为了解决上述技术问题,本发明所采用的技术方案是提供一种Squashfs只读根文件系统的远程升级方法,包括以下步骤:

[0007]在Linux系统存储设备的不同区域,为Linux系统配备两个可挂载根文件系统,分别为Squashfs只读根文件系统和存储Squashfs只读根文件系统升级方法的内存文件系统,且Squashfs只读根文件系统和内存文件系统分别对应于标识Squashfs只读根文件系统的存储区为只读的第一设备树描述文件和标识Squashfs只读根文件系统的存储区为可读写的第二设备树描述文件;

[0008]通过系统BOOT多重启动技术控制解析不同的设备树描述文件和启动与解析的设备树描述文件对应的可挂载根文件系统;

[0009]挂载内存文件系统为根文件系统,实现Squashfs只读根文件系统的远程在线升级。

[0010]在上述方法中,通过系统BOOT多重启动技术控制远程解析不同的设备树描述文件和启动与解析的设备树描述文件对应的可挂载文件系统具体包括以下步骤:

[0011]步骤S101、检测启动标志位;

[0012]步骤S102、判断启动标志位是否为1,如果为1,则执行步骤S105,否则,执行步骤

5103;

[0013]步骤S103、判断启动标志位是否为2,如果为2,则执行步骤S107,否则执行步骤

5104;

[0014]步骤S104、根据标志位挂载其他文件系统为根文件系统,然后执行步骤S109 ;

[0015]步骤S105、解析第一设备树描述文件,执行步骤S106 ;

[0016]步骤S106、挂载Squashfs只读根文件系统为根文件系统,然后执行步骤S109 ;

[0017]步骤S107、解析第二设备树描述文件,执行步骤S108 ;

[0018]步骤S108、挂载内存文件系统为根文件系统,然后执行步骤S109 ;

[0019]步骤S109、系统正常启动。

[0020]在上述方法中,挂载内存文件系统为根文件系统,实现Squashfs只读根文件系统的远程在线升级具体包括以下步骤:

[0021]步骤S201、将根文件系统升级文件复制到远程目标设备系统的外部存储设备中;

[0022]步骤S202、修改启动标志位,设置远程目标设备系统状态为升级状态,重启系统;

[0023]步骤S203、解析第二设备树描述文件;

[0024]步骤S204、挂载内存文件系统为根文件系统;

[0025]步骤S205、检测目标设备系统的外部存储设备上是否存在根文件系统升级文件,如果存在,执行步骤S206 ;否则执行步骤S212 ;

[0026]步骤S206、检测外部存储设备上的根文件系统升级文件校验码是否有误,如果校验码无误,执行步骤S207 ;否则,执行步骤S212 ;

[0027]步骤S207、检测根文件系统升级文件与现有根文件的版本是否一致,如果不一致,执行步骤S208 ;否则执行步骤S212 ;

[0028]步骤S208、使用读写FLASH的工具软件将根文件系统升级文件数据写入指定的用于存储Squashfs只读根文件系统的FLASH区域;

[0029]步骤S209、校验写入的根文件系统升级文件数据与原外部存储设备上的数据是否一致,如果一致,执行步骤S213 ;否则执行步骤S210 ;

[0030]步骤S210、判断该版本根文件系统升级文件写入次数是否超过预设次数,如果超出,执行步骤S211 ;否则执行步骤S208 ;

[0031]步骤S211、发送升级失败告警信号通知用户,执行步骤S212 ;

[0032]步骤S212、停止根文件系统升级;

[0033]步骤S213、修改启动标志位,设置远程目标设备系统状态为升级完成状态,重启系统。

[0034]在上述方法中,步骤S201具体包括以下步骤:

[0035]步骤S2011、用户远程登录目标设备系统;

[0036]步骤S2012、通过SCP或者FTP将根文件系统升级文件传输到目标设备内存中;

[0037]步骤S2013、校验根文件系统升级文件传输是否损坏,如果损坏,执行步骤S2012,否则执行步骤S2014 ;

[0038]步骤S2014、检测目标设备系统是否存在外部存储设备,如果存在,执行步骤

52016;否则执行步骤S2015 ;

[0039]步骤S2015、发送无存放根文件系统升级文件外部存储设备告警,然后执行步骤

52017;

[0040]步骤S2016、将根文件系统升级文件复制到外部存储设备中;

[0041]步骤S2017、程序结束。

[0042]在上述方法中,外部存储设备包括FLASH存储设备、SD卡存储设备、CF卡存储设备和磁盘存储设备;

[0043]对上述外部存储设备的检测顺序依次为FLASH存储设备、SD卡存储设备、CF卡存储设备和磁盘存储设备;

[0044]当上述四种外部存储设备全部存在时,将根文件系统升级文件从内存复制到优先发现的一种外部存储设备中。

[0045]本发明还提供了一种Squashfs只读根文件系统的远程升级系统,包括两个挂载根文件系统和一个BOOT多重启动控制单元;

[0046]所述两个挂载根文件系统分别为Squashfs只读根文件系统和存储Squashfs只读根文件系统升级方法的内存文件系统,且所述Squashfs只读根文件系统和所述内存文件系统分别对应于标识所述Squashfs只读根文件系统的存储区为只读的第一设备树描述文件和标识所述Squashfs只读根文件系统的存储区为可读写的第二设备树描述文件;

[0047]所述BOOT多重启动控制单元通过修改启动标志位解析不同的设备树描述文件和启动与解析的设备树描述文件对应的挂载文件系统;

[0048]所述BOOT多重启动控制单元修改启动标志位为升级状态,并解析所述第二设备树描述文件,挂载所述内存文件系统为根文件系统,对Squashfs只读根文件系统进行远程升级。

[0049]本发明通过引入了一个设置Squashfs只读根文件系统存储分区为可读写的第二设备树描述文件,以及小型的存有Squashfs只读根文件系统升级方法的内存文件系统,解决存放Squashfs只读根文件系统的存储设备无法写入和Squashf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值