发明内容
有鉴于此,本发明的目的在于提供一种设备工作模式切换的系统及方法,解决设备生产开始到设备使用,一系列的跟踪,保证设备始终处在一种质量可靠的状态的问题。
本发明通过以下技术方案实现:
设备工作模式切换的系统及方法,包括:工厂工作模块、用户工作模块、出厂工作模块、返厂工作模块和安全工作模块;
所述工厂工作模块用于加载生产服务例程APP、写入设备硬件参数、写入设备软件参数和生成工厂标志文件,所述生产服务例程APP、所述设备硬件参数和所述设备软件参数均用于设备校准;
所述用户工作模块用于启动用户使用的APP和关闭服务端口,所述服务端口用于用户通过该端口登录到后台;
所述出厂工作模块用于对用户使用的APP进行调试和故障信息的收集整理;
所述返厂工作模块用于在用户工作模块工作状态下对软件升级;
所述安全工作模块用于分别对工厂工作模块、用户工作模块、出厂工作模块和返厂工作模块进行数据备份。
一种可能的实施方式中,所述数据备份包括工厂工作模块中写入的硬件参数备份、用户工作模块中用户的软件参数周期备份、切换到出厂工作模块前硬件和软件参数备份和返厂工作模块中软件升级前硬件参数和软件参数备份。
作为本发明的第二方面,本发明公开了设备工作模式切换的方法,当检测到工厂标志文件不存在,执行工厂工作模块步骤;当检测工厂标志文件存在,执行用户工作模块步骤;当接收到需要进入出厂模块的信号,执行出厂工作模块步骤;当发现需要更新版本执行返厂工作模块步骤。
一种可能的实施方式中,所述工厂工作模块步骤包括:
S1、加载生产服务例程APP;
S2、通过PC端向设备写入硬件参数和软件参数;
S3、创建设备标识并记录到工厂PC服务器;
S4、生成工厂标志文件。
一种可能的实施方式中,所述用户工作模块步骤包括:
S20、检测用户标志文件是否存在;
S30、根据用户标志文件是否存在执行相应步骤。
一种可能的实施方式中,如果用户标志文件存在,启动用户使用的APP和关闭服务端口,所述服务端口用于用户通过该端口登录到后台。
一种可能的实施方式中,如果用户标志文件不存在,进入安全模块对工厂工作模块中写入的硬件参数备份,后返回用户工作模块创建用户标志文件并启动用户使用的APP和关闭服务端口,所述服务端口用于用户通过该端口登录到后台。
一种可能的实施方式中,所述接收到需要进入出厂模块的信号包括匹配公钥和私钥一致,所述公钥为用户登录设备的web服务器,在相应的页面提交,所述私钥为记录到工厂Pc服务器的设备标识。
一种可能的实施方式中,所述出厂工作模块步骤包括:
S40、进入安全模块备份设备硬件参数和客户配置的软件参数;
S50、返回出厂工作模块,加载自定义调试服务;
S60、调试完成,断电重启。
一种可能的实施方式中,所述返厂工作模块步骤包括:
S100、对比本地固件的MD5sum是否与服务器上的md5sum一致
S200、若本地固件的md5sum与服务器上的md5sum一致,将软件版本下载到本地;;
S300、进入安全模块备份设备硬件参数和客户配置的软件参数;
S400、返回返厂工作模块清除部分用户使用的APP,回收升级内存;
S500、更新固件md5sum,断电重启。
本发明的有益效果在于:
工厂工作模块,对设备进行校准,保证了对出货设备的质量要求,针对性地启动生产服务例程APP例程和APP,减少了生产检测时间,提高产线效率,有利于降低制造成本;
出厂工作模块,针对设备异常状态时,登录设备进行高权限地操作,加快了技术支持过程,有利于快速解决客户问题;
用户工作模块,针对客户使用习惯,提供多样化APP,使客户需求得到满足时,关闭客户登录后台的端口能够使设备处于低风险状态,防止黑客入和保证用户数据安全,有利于用户体验;
返厂工作模块,针对固件的已知BUG进行修复,满足客户新的需求,通过更新软件版本,提升软件质量,有利于设备一直处于最佳工作状态;
安全工作模块,针对不同模块下的软件配置进行备份,防止配置数据丢失后,设备无法正常工作,有利于设备的维护;
总之,在系统中设置多工作模块,对应解决不同的问题能够及时响应客户问题,维护了客户关系,提高了客户服务质量。
具体实施方式
为使本发明实施的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行更加详细的描述。
需要说明的是:在附图中,自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。所描述的实施例是本发明一部分实施例,而不是全部的实施例,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,均仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明保护范围的限制。
如图1-4为本发明一种设备工作模式切换的系统及方法的实施例,包括:工厂工作模块、用户工作模块、出厂工作模块、返厂工作模块和安全工作模块。
工厂工作模块用于加载生产服务例程APP、写入设备硬件参数、写入设备软件参数和生成工厂标志文件,生产服务例程APP、所述设备硬件参数和所述设备软件参数均用于设备校准。设备在工厂生产时需要写入设备的硬件配置参数、软件配置参数,还要对设备的状态进行检查。在启动服务前,检测工厂标志文件是否存在,如果不存在工厂标志文件,则认为该设备需要进行生产测试,于是进入工厂工作模块,调用/etc/init.d/rc_factory脚本,rc_factory脚本内定义了在工厂工作模块下需要加载的生产服务例程APP,生成工厂标志文件,代表工厂工作模块结束,此处工作模块下需要加载的生产服务例程APP,而不是加载全部的APP以便缩短系统启动时间,减少生产时间,降低生产成本,提高产线效率。
用户工作模块用于启动用户使用的APP和关闭服务端口,所述服务端口用于用户通过该端口登录到后台,比如,禁止ssh,telnet,tftp等等服务,能够使设备处于低风险状态,防止黑客入和保证用户数据安全和使用安全。
出厂工作模块用于对用户使用的APP进行调试和故障信息的收集整理;在Linux操作系统中设置/etc/init.d/rc_outfactory.d shell脚本,此脚本用于启动app进行调试,使各app的工作状态显示出来,同时可以查看系统日志,查看驱动的工作状态。
返厂工作模块用于对在用户工作模块下软件升级,在Linux操作系统中,设置/etc/init.d/rc_retfactory.d shell脚本,此脚本用于设备升级时从远处服务器或者本地服务器获取升级软件包、校验升级软件包。
安全工作模块用于进行数据备份,判断是否影响客户使用,若影响客户使用,则将备份参数写会回原始配置,预防设备存储数据和软件被恶意篡改。本实施例中,数据备份包括工厂工作模块中写入的硬件参数备份、用户工作模块中用户的软件参数备份、切换到出厂工作模块前硬件和软件参数备份和返厂工作模块中软件升级前硬件参数和软件参数备份,其中工厂工作模块备份的硬件参数生成raw_hw.xml保存在flash,用户工作模块备份的软件参数生成user_fw.xml保存在flash,切换出厂工作模块前备份的硬件和软件参数生成out_fhw.xml保存在flash,返厂工作模块中软件升级前备份的硬件参数和软件参数,生成ret_fhw.xml保存在flash。
总之,在系统中设置多工作模块,对应解决不同的问题能够及时响应客户问题,维护了客户关系,提高了客户服务质量。
本实施例中,/etc/init.d是/etc/rc.d/init.d的软链接(soft link)
ls-ld/etc/init.d
lrwxrwxrwx.1root root 11Aug 302015/etc/init.d->rc.d/init.d均用于存放服务脚本文件,当Linux启动时,会寻找这些目录中的服务脚本,并根据脚本的run level确定不同的启动级别。
Linux启动步骤包括:BIOS自检、系统引导和启动内核;其中BIOS自检的功能由两部分组成,分别是POST码和Runtime服务。POST阶段完成后它将从存储器中被清除,而Runtime服务会被一直保留,用于目标操作系统的启动。具体步骤如下:步骤1:上电自检POST(Power-on self test),主要负责检测系统外围关键设备(如:CPU、内存、、I/O等等)是否正常。例如,最常见的是内存松动的情况,BIOS自检阶段会报错,系统就无法启动;步骤2:步骤1成功后,便会执行一段小程序用来枚举本地设备并对其初始化。这一步主要是根据我们在BIOS中设置的系统启动顺序来搜索用于启动系统的驱动器,如硬盘和网络等。我们以硬盘启动为例,BIOS此时去读取硬盘驱动器的第一个扇区(MBR,512字节),然后执行里面的代码,至此,BIOS自检结束,此后将系统启动的控制权移交到MBR部分的代码。系统引导:通常情况下,诸如lilo、grub这些常见的引导程序都直接安装在MBR中。启动内核:它首先会去解析grub的配置文件/boot/grub/grub.conf,然后加载内核镜像到内存中,并将控制权转交给内核。而内核会立即初始化系统中各设备并做相关的配置工作,其中包括CPU、I/O、存储设备等。
关于Linux的设备驱动程序的加载,有一部分驱动程序直接被编译进内核镜像中,另一部分驱动程序则是以模块的形式放在initrd(ramdisk)中。
Linux内核需要适应多种不同的硬件架构,但是将所有的硬件驱动编入内核又是不实际的,而且内核也不可能每新出一种硬件结构,就将该硬件的设备驱动写入内核。实际上本实施例中,Linux的内核镜像仅是包含了基本的硬件驱动,在系统安装过程中会检测系统硬件信息,根据安装信息和系统硬件信息将一部分设备驱动写入initrd。这样在以后启动系统时,一部分设备驱动就放在initrd中来加载。其中,initrd为boot loader初始化的内存盘。在Linux内核启动前,boot loader会将存储介质中的initrd文件加载到内存,内核启动时会在访问真正的根文件系统前先访问该内存中的initrd文件系统。在boot loader配置了initrd的情况下,内核启动被分成了两个阶段,第一阶段先执行initrd文件系统中的init,完成加载驱动模块等任务,第二阶段才会执行真正的根文件系统中的/sbin/init进程。
当grub的stage2将initrd加载到内存里,将其中的内容释放到内容中,内核便去执行initrd中的init脚本,这时内核将控制权交给了init文件处理,而init脚本用于加载各种存储介质相关的设备驱动程序。当所需的驱动程序加载完后,会创建一个根设备,然后将根文件系统rootfs以只读的方式挂载。在这之后,释放未使用的内存,转换到真正的根文件系统上面去,同时运行/sbin/init程序,执行系统的1号进程。此后系统的控制权就全权交给/sbin/init。
/sbin/init进程是系统其他所有进程的父进程,其中,init.d目录包含许多系统各种服务的启动和停止脚本。当它接管了系统的控制权先之后,它首先读取/etc/inittab文件来执行相应的脚本进行系统初始化,如设置网络等。包括以下步骤:执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,到此系统算是基本运行起来了,后面需要进行运行级别的确定及相应服务的启动;执行/etc/rc.d/rc脚本。该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rc*.d(*=0~6)目录下,所有的文件均是指向/etc/init.d下相应文件的符号链接。rc.sysinit通过分析/etc/inittab文件来确定系统的启动级别,然后才去执行/etc/rc.d/rc*.d下的文件。
/etc/init.d->/etc/rc.d/init.d
/etc/rc->/etc/rc.d/rc
/etc/rc*.d->/etc/rc.d/rc*.d
/etc/rc.local->/etc/rc.d/rc.local
/etc/rc.sysinit->/etc/rc.d/rc.sysinit
/etc/rc.d/rc*.d中的系统服务会在系统后台启动,如果要对某个运行级别中的服务进行更具体的定制,通过chkconfig命令来操作,或者通过setup、ntsys、system-config-services来进行定制。如果我们需要自己增加启动的内容,可以在init.d目录中增加相关的shell脚本,然后在rc*.d目录中建立链接文件指向该shell脚本。这些shell脚本的启动或结束顺序是由S或K字母后面的数字决定,数字越小的脚本越先执行。例如,/etc/rc.d/rc3.d/SO1sysstat就比/etc/rc.d/rc3.d/S99local先执行。
执行用户自定义引导程序/etc/rc.d/rc.local。其实当执行/etc/rc.d/rc3.d/S99local时,它就是在执行/etc/rc.d/rc.Iocal。S99local是指向rc.local的符号链接。就是一般来说,自定义的程序不需要执行上面所说的繁琐的建立shell增加链接文件的步骤,只需要将命令放在rc.local里面就可以了,这个shell脚本就是保留给用户自定义启动内容的。
完成了系统所有的启动任务后,linux会启动终端或X-Window来等待用户登录。tty1,tty2,tty3...这表示在运行等级1,2,3,4的时候,都会执行″/sbin/mingetty″,而且执行了6个,所以linux会有6个纯文本终端,mingetty就是启动终端的命令。除了这6个之外还会执行″/etc/X11/prefdm-nodaemon”这个主要启动X-Window。至此,系统就启动完毕。
其中,/etc/init.d里的shell脚本能够响应start,stop,restart,reload命令来管理某个具体的应用。比如经常看到的命令:/etc/init.d/networking start这些脚本也可被其他trigger直接激活执行,这些trigger被软连接在/etc/rcN.d/中,可以通过daemon程序,让指定程序在开关机时运行。
基于以上系统,本发明实施例还提供了一种设备工作模式切换的方法:系统启动后开始检测工厂标志文件,检测工厂标志文件不存在,执行工厂工作模块步骤;检测工厂标志文件存在,执行用户工作模块步骤;接收到需要进入出厂工作模块的信号,执行出厂工作模块步骤;发现需要更新版本执行返厂工作模块步骤。
本实施例中,当工厂生产标志文件不存在,则写入通过iptables规则开启telnet服务的23端口,并启动telnet服务,执行工厂工作模块步骤。工厂工作模块步骤包括:工厂工作模块下需要加载的生产服务例程APP,然后通过PC端向设备写入硬件参数和软件参数,在这之后创建设备标识并记录到工厂PC服务器,最后生成工厂标志文件,断电重启,工厂的生产线上,Linux加载工厂工作模块下需要加载的生产服务例程APP,通过PC端登录telnet客户端,连接设备telnet服务端,写入设备的硬件配置参数,同时以硬件参数中的部分参数组合,比如MAC和VENDOR组成的字符串作为私有密钥写入flash中存储,作为设备标识,然后生成工厂标志文件,在生成工厂生产标志文件后,工厂工作模块执行步骤完成。
在生成工厂标志文件工厂工作模块步骤完成后,系统重启便能检测出工厂生产标志文件,从而开始执行用户工作模块步骤。执行用户工作模块的步骤第一步为检测用户标志文件是否存在,然后根据用户标志文件存在与否执行不同的步骤:如果用户标志文件存在,启动用户使用的APP和关闭服务端口,其中,服务端口用于用户通过该端口登录到后台;如果用户标志文件不存在,进入安全模块对工厂工作模块中写入的硬件参数备份,后返回用户工作模块创建用户标志文件并启动用户使用的APP和关闭服务端口,其中,服务端口用于用户通过该端口登录到后台,禁止ssh,telnet,tftp等服务。
本实施例中,接收到需要进入出厂工作模块的信号包括匹配公钥和私钥一致,其中,公钥为用户登录设备的web服务器,在相应的页面提交,所述私钥为记录到工厂PC服务器的设备标识。在设备的web服务里嵌入一个页面,当用户工作模块出现故障需要进行技术支持支持时,用户输入http://192.168.1.1/gotoFactory.asp,gotoFactory进入页面,页面会提示输入设备的公钥,用户在输入公钥后,设备后台程序读取私钥,通过MD5转码方式后,将转码的私钥与公钥对比,如果一致,则写通过iptables规则开启SSH服务的22端口,并启动SSH服务dropbear。
本实施例中,所述出厂工作模块步骤包括:
S40、进入安全模块备份设备硬件参数和客户配置的软件参数;
S50、返回出厂工作模块,加载自定义调试服务;
S60、调试完成,断电重启。
访问服务器上的软件版本信息,对比本地固件的MD5sum是否与服务器上的md5sum一致,如果一致,使用wget方式或者ftp方式访问服务器的固件,将固件下载到本地文件系统中保存。然后杀掉部分客户application,进行升级操作。升级完成后,自动重启。
S100、对比本地固件的MD5sum是否与服务器上的md5sum一致
S200、若本地固件的md5sum与服务器上的md5sum一致,将软件版本下载到本地;
S300、进入安全模块备份设备硬件参数和客户配置的软件参数;
S400、返回返厂模块清除部分用户使用的APP,回收升级内存,所述清除部分用户使用的APP即KILL部分用户使用的APP;
S500、更新固件md5sum,断电重启。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。