发明内容
鉴于上述问题,提出了一种克服上述问题或者至少部分地解决上述问题的操作系统内核的启动方法、电子设备和机器可读存储介质。
本发明的一个目的是将操作系统内核各启动模式对应的镜像文件中相同的数据预先写入公共存储区域,避免多次写入相同的数据,减少数据的写入量,提高数据写入的效率。
根据本发明的一方面,本发明提供了一种操作系统内核的启动方法,包括:
冷启动运行有操作系统的电子设备,获取设置的操作系统的内核的启动模式;其中,各启动模式对应的镜像文件中相同的共有数据预先写入公共存储区域,各启动模式对应的镜像文件中特有的数据预先写入与各启动模式对应的私有存储区域;
拷贝与所述启动模式对应的镜像文件到指定存储区域;
从所述指定存储区域的镜像文件中得到根系统文件,加载所述根系统文件,并初始化所述操作系统的内核线程。
可选地,所述启动模式包括下列至少之一:
boot启动模式,其对应的镜像文件为boot.img;
recovery启动模式,其对应的镜像文件为recovery.img;
多系统启动模式,其对应的镜像文件为host.img。
可选地,若获取的启动模式为所述boot启动模式,拷贝与所述启动模式对应的镜像文件到指定存储区域,包括:
拷贝所述公共存储区域的共有数据到第一内存中;
拷贝所述boot启动模式对应的私有存储区域中表示boot.img的字段对应的根文件系统镜像文件到第二内存中。
可选地,若获取的启动模式为所述recovery启动模式,拷贝与所述启动模式对应的镜像文件到指定存储区域,包括:
拷贝所述公共存储区域的共有数据到第一内存中;
拷贝所述recovery启动模式对应的私有存储区域中表示recovery.img的字段对应的根文件系统镜像文件到第二内存中。
可选地,若获取的启动模式为所述多系统启动模式,拷贝与所述启动模式对应的镜像文件到指定存储区域,包括:
拷贝所述公共存储区域的共有数据到第一内存中;
拷贝所述多系统启动模式对应的私有存储区域中表示host.img的字段对应的根文件系统镜像文件到第二内存中。
可选地,在初始化所述操作系统的内核线程完成后,还包括:
接收启动模式修改命令,根据所述启动模式修改命令重新设置所述操作系统的内核的启动模式;
判断是否进行内核热重启,若是,则返回执行所述获取设置的操作系统的内核的启动模式的步骤。
可选地,获取设置的操作系统的内核的启动模式,包括:
获取所述操作系统的寄存器中设置的启动模式标记,不同的启动模式标记表示所述操作系统的内核不同的启动模式。
可选地,所述操作系统包括安卓系统。
根据本发明的另一方面,本发明还提供了一种电子设备,包括:
存储器和处理器,所述存储器内存储有控制程序,所述控制程序被所述处理器执行时用于实现上述中任一项所述的操作系统内核的启动方法。
根据本发明的又一方面,本发明还提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现上述任一项所述的操作系统内核的启动方法。
在本发明的操作系统内核的启动方法中,将各启动模式对应的镜像文件中相同的数据预先写入公共存储区域,无论有多少个类型的启动模式,只需要将镜像文件中相同的共有数据写入公共存储区域即可,这样可以避免多次写入相同的数据,减少了数据的写入量,大大提高了数据写入的效率,也减少了写入数据的占用空间;并且,将各启动模式对应的镜像文件中特有的数据预先写入与各启动模式对应的私有存储区域,实现了对各镜像文件中相同数据和特有数据的区分管理,从而可以更加有序的管理各镜像文件中的数据。另外,冷启动运行有操作系统的电子设备,获取设置的操作系统的内核的启动模式,拷贝与启动模式对应的镜像文件到指定存储区域,从指定存储区域的镜像文件中得到根系统文件,加载根系统文件,并初始化操作系统的内核线程,实现了根据不同的启动模式拷贝不同的镜像文件,完成操作系统的内核的初始化,实现了操作系统内核的灵活启动。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
具体实施方式
目前,一些类型的操作系统在启动过程中需要烧录很多重复的镜像文件。具体地,例如,安卓(Android)系统解压boot.img文件和recovery.img文件均可以得到内核镜像(kernel)文件和根文件系统镜像(ramdisk)文件,为了保证安卓系统的boot启动和recovery启动之间的独立性,在版本烧录的过程中,需要boot.img文件和recovery.img文件占据嵌入式多媒体存储卡(EmbeddedMulti-mediaCard,EMMC)的两个独立分区。并且,为了支持LXC(LinuxContainer)启动容器系统(可以是Linux或者Android系统),增加了host.img文件来支持内核加载宿主机的根文件系统镜像文件。但是运行有操作系统的设备烧录镜像(image)时,需要烧录重复率较高的boot.img文件、recovery.img文件和host.img文件,降低了镜像烧录效率,也过多的占用了嵌入式多媒体存储卡的存储空间。
针对上述问题,本发明实施例提供了一种操作系统内核的启动方法。
图1是根据本发明一个实施例的操作系统内核的启动方法的流程图。参见图1,操作系统内核的启动方法可包括以下步骤S102至步骤S106。
步骤S102:冷启动运行有操作系统的电子设备,获取设置的操作系统的内核的启动模式。其中,各启动模式对应的镜像文件中相同的共有数据预先写入公共存储区域,各启动模式对应的镜像文件中特有的数据预先写入与各启动模式对应的私有存储区域。
在本步骤中,启动模式可包括下列至少之一:boot启动模式,其对应的镜像文件为boot.img;recovery启动模式,其对应的镜像文件为recovery.img;多系统启动模式,其对应的镜像文件为host.img。当然,启动模式还可以包括其他类型的启动模式。各启动模式对应的镜像文件中相同的共有数据可包括内核镜像(kernel)文件中相同的数据,还可包括根文件系统镜像(ramdisk)文件中相同的数据。各启动模式对应的镜像文件中特有的数据可包括根文件系统镜像中特有的数据。
具体地,各启动模式对应的镜像文件中相同的共有数据写入公共存储区域,各启动模式对应的镜像文件中特有的数据写入与各启动模式对应的私有存储区域后的示意图可以参照图2,图2是根据本发明另一个实施例的操作系统各启动模式对应的镜像文件的结构示意图。图2中第一行和第二行表示镜像头文件。其中,第一行中的MAGIC为魔术字,可以提供镜像包校验功能,VERSION表示镜像文件的版本号,HEAD_LENGTH表示镜像头数据长度,RESERVE表示保留位置,用于镜像头文件的扩展。第三行和第四行是boot.img文件、recovery.img文件以及host.img文件的共有数据的放置区域,共有数据也可以理解为公共数据。其中,第三行的TYPE-COMMON为表示共有数据的字段,LENGTH表示共有数据的数据长度,RESERVE表示共有数据的保留位置,用于共有数据文件的扩展。第四行的IMAGE-DATA表示共有数据,共有数据可包括各启动模式的根文件系统镜像(ramdisk)文件中相同的数据和内核镜像(kernel)文件中相同的数据。根据第三行的TYPE-COMMON可以找到第四行的镜像数据。第五行和第六行是boot.img文件的特有数据,即私有数据。其中,第五行的TYPE-BOOT为表示boot.img的字段,LENGTH表示boot.img的特有数据的数据长度,RESERVE表示boot.img特有数据的保留位置,用于扩展。第六行的IMAGE-DATA表示boot.img的特有数据,如boot.img文件的根文件系统镜像中特有的数据。根据第五行的TYPE-BOOT可以找到第六行的boot.img的特有数据。第七行和第八行是recovery.img文件的特有数据。其中,第七行的TYPE-RECOVERY为表示recovery.img的字段,LENGTH表示recovery.img的特有数据的数据长度,RESERVE表示recovery.img特有数据的保留位置,用于扩展。第八行的IMAGE-DATA表示recovery.img的特有数据,如recovery.img文件的根文件系统镜像中特有的数据。根据第七行的TYPE-RECOVERY可以找到第八行的recovery.img的特有数据。第九行和第十行是host.img文件的私有数据。其中,第九行的TYPE-HOST为表示host.img的字段,LENGTH表示host.img的特有数据的数据长度,RESERVE表示host.img特有数据的保留位置,用于扩展。第十行的IMAGE-DATA表示host.img的特有数据,如host.img文件的根文件系统镜像中特有的数据。根据第九行的TYPE-HOST可以找到第十行的host.img的特有数据。第十一行和第十二行是考虑将来功能扩展和兼容性的扩展区域。其中,第十一行的TYPE-OTHER为表示扩展数据的字段,LENGTH表示扩展数据的特有数据的数据长度,RESERVE表示扩展数据特有数据的保留位置,用于扩展。第十二行的IMAGE-DATA表示扩展数据的特有数据。根据第十一行的TYPE-OTHER可以找到第十二行的特有数据。
步骤S104:拷贝与启动模式对应的镜像文件到指定存储区域。
步骤S106:从指定存储区域的镜像文件中得到根系统文件,加载根系统文件,并初始化操作系统的内核线程。在本步骤中,操作系统可以包括安卓系统,当然,还可以包括其他类型的系统。
在本实施例中,将各启动模式对应的镜像文件中相同的数据预先写入公共存储区域,无论有多少个类型的启动模式,只需要将镜像文件中相同的数据写入公共存储区域即可,这样可以避免多次写入相同的数据,减少了数据的写入量,大大提高了数据写入的效率,也减少了写入数据的占用空间;并且,将各启动模式对应的镜像文件中特有的数据预先写入与各启动模式对应的私有存储区域,实现了对各镜像文件中相同数据和特有数据的区分管理,从而可以更加有序的管理各镜像文件中的数据。另外,冷启动运行有操作系统的电子设备,获取设置的操作系统的内核的启动模式,拷贝与启动模式对应的镜像文件到指定存储区域,从指定存储区域的镜像文件中得到根系统文件,加载根系统文件,并初始化操作系统的内核线程,实现了根据不同的启动模式拷贝不同的镜像文件,完成操作系统的内核线程的初始化,实现了操作系统的内核的灵活启动。
在本发明的一个实施例中,若获取的启动模式为boot启动模式,拷贝与启动模式对应的镜像文件到指定存储区域,可包括:
拷贝公共存储区域的共有数据到第一内存中;
拷贝boot启动模式对应的私有存储区域中表示boot.img的字段对应的根文件系统镜像文件到第二内存中。
在本实施例中,私有存储区域中表示boot.img的字段可以参照图2,例如,第五行的TYPE-BOOT。根据第五行的TYPE-BOOT可以找到boot.img特有的根文件系统镜像文件。将公共存储区域的数据存储到第一内存中,将私有存储区域中的数据存储到第二内存中,实现了镜像文件中相同数据和特有数据的分别管理,进而可以更加有序的管理镜像文件的数据。
在本发明一个实施例中,若获取的启动模式为recovery启动模式,拷贝与启动模式对应的镜像文件到指定存储区域,可包括:
拷贝公共存储区域的共有数据到第一内存中;
拷贝recovery启动模式对应的私有存储区域中表示recovery.img的字段对应的根文件系统镜像文件到第二内存中。
在本实施例中,私有存储区域中表示recovery.img的字段可以参照图2,例如,第七行的TYPE-RECOVERY。根据第七行的TYPE-RECOVERY可以找到recovery.img特有的根文件系统镜像文件。将公共存储区域的数据存储到第一内存中,将私有存储区域中的数据存储到第二内存中,实现了镜像文件中相同数据和特有数据的分别管理,进而可以更加有序的管理镜像文件的数据。
在本发明一个实施例中,若获取的启动模式为多系统启动模式,拷贝与启动模式对应的镜像文件到指定存储区域,可包括:
拷贝公共存储区域的共有数据到第一内存中;
拷贝多系统启动模式对应的私有存储区域中表示host.img的字段对应的根文件系统镜像文件到第二内存中。
在本实施例中,私有存储区域中表示host.img的字段可以参照图2,例如,第九行的TYPE-HOST。根据第九行的TYPE-HOST可以找到host.img特有的根文件系统镜像文件。将公共存储区域的数据存储到第一内存中,将私有存储区域中的数据存储到第二内存中,实现了镜像文件中相同数据和特有数据的分别管理,进而可以更加有序的管理镜像文件的数据。
在本发明一个实施例中,在初始化操作系统的内核线程完成后,还可包括:
接收启动模式修改命令,根据启动模式修改命令重新设置操作系统的内核的启动模式;
判断是否进行内核热重启,若是,则返回执行获取设置的操作系统的内核的启动模式的步骤。
在本实施例中,在初始化操作系统的内核线程完成后,接收启动模式修改命令,根据启动模式修改命令重新设置操作系统的内核的启动模式,实现了对操作系统的内核启动模式的灵活设置。判断是否进行内核热重启,若是,则返回执行获取设置的操作系统的内核的启动模式的步骤,实现了只需要内核热重启便可以按照修改后的启动模式启动,简单易操作。
在本发明一个实施例中,获取设置的操作系统的内核的启动模式,可包括:
获取操作系统的寄存器中设置的启动模式标记,不同的启动模式标记表示操作系统的内核不同的启动模式。
在本实施例中,寄存器中设置的启动模式标记可以为数字,例如,数字1表示boot启动模式,数字2表示recovery启动模式,数字3表示多系统启动模式。当然,启动模式标记也可以为非数字类型的,如字母等。
图3是根据本发明另一个实施例的操作系统内核的启动方法的流程图,包括步骤S302至步骤S316。
步骤S302:冷启动运行有操作系统的电子设备。
步骤S304:获取设置的操作系统的内核的启动模式。
步骤S306:拷贝与启动模式对应的镜像文件到指定存储区域。
步骤S308:从指定存储区域的镜像文件中得到根系统文件,加载根系统文件,并初始化操作系统的内核线程。
步骤S310:接收启动模式修改命令,根据启动模式修改命令重新设置操作系统的内核的启动模式。
步骤S312:判断是否进行内核热重启。
若是,则返回步骤S304;
若否,则执行步骤S314:维持操作系统的内核修改前的启动模式。
参见图4,基于同一构思,本发明还提供了一种电子设备400。电子设备400可包括存储器401和处理器402。存储器401内存储有控制程序。控制程序被处理器402执行时用于实现根据上述任一项实施例的操作系统的内核的启动方法。电子设备400可以为一种车机、DHU(娱乐主机和仪表的集成机器)、IHU(Infotainment Head Unit,信息娱乐主机)、IVI(In-Vehicle Infotainment,车载信息娱乐系统)或任意一种车载信息交互终端等。电子设备400还可以为手机、平板电脑和可穿戴设备。
基于同一构思,本发明还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现上述任一项实施例的操作系统内核的启动方法。
上述各个实施例可以任意组合,根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
将各启动模式对应的镜像文件中相同的共有数据预先写入公共存储区域,无论有多少个类型的启动模式,只需要将镜像文件中相同的共有数据写入公共存储区域即可,这样可以避免多次写入相同的数据,减少了数据的写入量,大大提高了数据写入的效率,也减少了写入数据的占用空间;并且,再将各启动模式对应的镜像文件中特有的数据预先写入与各启动模式对应的私有存储区域,实现了对各镜像文件中相同数据和特有数据的区分管理,从而可以更加有序的管理各镜像文件中的数据。另外,冷启动运行有操作系统的电子设备,获取设置的操作系统的内核的启动模式,拷贝与启动模式对应的镜像文件到指定存储区域,从指定存储区域的镜像文件中得到根系统文件,加载根系统文件,并初始化操作系统的内核线程,实现了根据不同的启动模式拷贝不同的镜像文件,完成操作系统的内核线程的初始化,实现了操作系统的内核的灵活启动。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。