CN119376791B Jailhouse移植安卓的适配方法、装置及介质 (麒麟软件有限公司)_第1页
CN119376791B Jailhouse移植安卓的适配方法、装置及介质 (麒麟软件有限公司)_第2页
CN119376791B Jailhouse移植安卓的适配方法、装置及介质 (麒麟软件有限公司)_第3页
CN119376791B Jailhouse移植安卓的适配方法、装置及介质 (麒麟软件有限公司)_第4页
CN119376791B Jailhouse移植安卓的适配方法、装置及介质 (麒麟软件有限公司)_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(19)国家知识产权局(12)发明专利新区塘沽海洋科技园信安创业广场3号楼6-8层陈阳平赵烨明公司12229质本发明实施例公开了一种Jailhouse移植安安卓系统的信息配置根单元格配置文件和非根的驱动编译成内核文件模式,并将Jailhouse2根据安卓系统的信息配置根单元格配置文件和非根单元格配置文件;关闭安卓与Jailhouse的冲突选项,并为所述冲突增加处理方式;将Jailhouse的驱动编译成内核文件模式,并将Jailhousetools编译为适用于安卓系统的可执行文件;所述根据安卓系统的信息配置根单元格配置文件和非根单元格配置文件,包括:在安卓内核设备树中添加预留内存,用于提供给hypervisor使用和供guest加载和运行使用,并根据安卓内核设备树的信息对所述根单元格配置文件和非根单元格配置文件的参数进行设置,并编译生成根单元格配置文件和非根单元格配置文件;所述关闭安卓与Jailhouse的冲突选项,并为所述冲突增加处理方式,包括:由于插桩模式下执行enter_hypervisor函数时会发生冲突,导致x18寄存器的值被改掉,导致调用函数返回时读取返回地址出错;2.根据权利要求1所述的方法,其特征在于,所述将Jailhouse的驱动编译成内核文件将jailhousedriver部分移植到kernel的drivers目录下,并使用安卓内核编译环境llvm进行编译,编译成对应的内核模块文件jailhouse.ko内核模块文件,以减少jailhosue整体使用11vm编译时进行修改的工作量。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:为所述内核模块文件配置生成路径,并按照所述生成路径利用modules.load将所述内核模块文件自动加入到内核中。4.根据权利要求1所述的方法,其特征在于,所述编译生成根单元格配置文件和非根单采用gcc编译根单元格配置文件、非根单元格配置文件和Jailhouse.bin文件。5.根据权利要求1所述的方法,其特征在于,所述将Jailhousetools编译为适用于安移植Jailhousetools工具至Android代码目录下编写安卓构建描述文件,并使用安卓编译系统结合bionic库编译成适用于安卓系统的可执行文件。6.根据权利要求3所述的方法,其特征在于,所述方法还包括:配置jailhouse路径导入gcc编译的bin文件到固件临时存放地址/vendor/firmware下,作为Jailhouse固件加载的路径;将root.cell、non_root.cell、jailhouse_tools,jailhouse.bin,baremetal程序导入到外接存储的指定目录下,并在安卓系统开机后通过init.rc脚本将各用户端文件拷贝到/system/bin/jailhouse下,固件jailhouse.bin拷贝到vendor/firmware下,其中jailhouse_tools为用户入口程序。配置模块,用于根据安卓系统的信息配置根单元格配置文件和非根单元格配置文件;关闭模块,用于关闭安卓与jailhouse的冲突选项,并为所述冲突增加处理方式;3编译模块,用于将jailhouse的驱动编译成内核文件模式,并和供guest加载和运行使用,并根据安卓内核设备树的信息对所述根单元格配置文件和非根单元格配置文件的参数进行设置,并编译生成根单元格配置文件和非根单元格配置文8.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-6任一4Jailhouse移植安卓的适配方法、装置及介质技术领域[0001]本发明涉及安卓系统技术领域,尤其涉及一种Jailhouse移植安卓的适配方法、装置及介质。背景技术[0002]Jailhouse是一个基于Linux的嵌入式系统虚拟化工具,它主要用于嵌入式系统,强调分区(partition)和实时性,并提供较高的隔离和安全性。Jailhouse的实时性较好,适用于需要高可靠性和低延迟的应用场景。Jailhouse的架构包括一个根单元格和多个非根单元格。每个单元格可以运行不同的操作系统或应用程序,从而实现资源的隔离和共享。Jailhouse通过虚拟化技术,使得多个客户单元可以在同一个物理硬件上运行,而不会相互干扰,同时保证了系统的稳定性和安全性。[0003]虽然安卓系统是运行在Linux之上的操作系统,但是Android本身并不能是Linux的某个版本,因此Jailhouse无法在android系统上部署。发明内容[0004]本发明实施例提供了一种Jailhouse移植安卓的适配方法、装置及介质,以解决现有技术中安卓系统无法部署Jailhouse的技术问题。[0005]第一方面,本发明实施例提供了一种Jailhouse移植安卓的适配方法,包括:[0006]根据安卓系统的信息配置根单元格配置文件和非根单元格配置文件;[0007]关闭安卓与jailhouse的冲突选项,并为所述冲突增加处理方式;[0008]将jailhouse的驱动编译成内核文件模式,并将jailhousetools编译为适用于安卓系统的可执行文件。[0009]第二方面,本发明实施例还提供了一种Jailhouse移植安卓的适配装置,包括:[0010]配置模块,用于根据安卓系统的信息配置根单元格配置文件和非根单元格配置文[0011]关闭模块,用于关闭安卓与Jailhouse的冲突选项,并为所述冲突增加处理方式;[0012]编译模块,用于将Jailhouse的驱动编译成内核文件模式,并将Jailhousetools编译为适用于安卓系统的可执行文件。[0013]第三方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的Jailhouse移植安卓的适配方法。[0014]本发明实施例提供的Jailhouse移植安卓的适配方法、装置及介质,通过根据安卓系统的信息配置根单元格配置文件和非根单元格配置文件;关闭安卓与Jailhouse的冲突选项,并为所述冲突增加处理方式;将Jailhouse的驱动编译成内核文件模式,并将Jailhousetools编译为适用于安卓系统的可执行文件。通过修改Android系统特性,android系统的平台上对Jailhouse进行适配,结合Jailhouse运行需求,实现在Android系5附图说明[0015]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:[0016]图1是本发明实施例一提供的Jailhouse移植安卓的适配方法的流程示意图;[0017]图2是本发明实施例二提供的Jailhouse移植安卓的适配方法的流程示意图;[0018]图3是本发明实施例三提供的Jailhouse移植安卓的适配装置的结构示意图。具体实施方式[0019]下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。[0020]实施例一[0021]图1是本发明实施例一提供的Jailhouse移植安卓的适配方法的流程图,本实施例可适用于将Jailhouse适配移植到安卓系统的情况,该方法可以由Jailhouse移植安卓的适[0022]步骤110,根据安卓系统的信息配置根单元格配置文件和非根单元格配置文件。[0023]示例性的,可以包括:在安卓内核设备树中添加预留内存,用于提供给hypervisor使用和供guest加载和运行使用,并根据安卓内核设备树的信息对所述根单元格配置文件和非根单元格配置文件的参数进行设置,并编译生成根单元格配置文件和非根单元格配置[0024]Jailhouse包括:用户程序jailhouse_tools,驱动程序jailhouse.ko,配置文件.cell,以及虚拟机监控器固件hypervisor.bin,共5部分。[0025]在Androidkerneldts中添加预留内存,以提供给hypervisor使用和供guest加载和运行使用。然后根据平台dts文件添加root与non-rootcell配置文件,在配置文件中配置系统内存、中断等参数,系统内存、中断等参数可根据安卓内核设备树的信息得到,编[0026]步骤120,关闭安卓与Jailhouse的冲突选项,并为所述冲突增加处理方式。[0027]安卓系统与Jailhouse存在一些冲突,因此,需要关闭冲突选项,并为其增加处理方式。返回到EL1继续执行。插桩模式,可将函数的返回地址保存到函数prolog中单独分配的ShadowCallStack,并从函数epilog中的ShadowCallStack加载返回地址,从而防止返回地址覆盖(比如堆栈缓冲区溢出)。在aarch64上,插桩机制使用x18寄存器来引用ShadowCallStack,可以不必将对ShadowCallStack的引用存储在内6[0032]上述步骤生成的root.cell、non_root.cell配置文件和Jailhouse.bin文件由于径利用modules.load将所述内模块文件jailhouse.ko内核模块文件,以减少jailhosue整体使用11vm编译时进行修改的系统实现对Jailhouse进行操作。示例性的,可以包括:移植Jailhousetools工具至Android代码目录下编写安卓构建描述文件,并使用安卓编译系统结合bionic库编译成适用于安卓系统的可执行文件。移植jailhousetools工具至Android代码目录下编写Android.bp文件,使用android编译系统结合bionic库编译成可执行程序jailhouse_[0034]本实施例通过根据安卓系统的信息配置根单元格配置文件和非根单元格配置文[0036]图2是本发明实施例二提入到外接存储的指定目录下,并在安卓系统开机后通过init.rc脚本将各用户端文件拷贝7[0041]步骤240,配置jailhouse路径导入gcc编译的bin文件到固件临时存放地址/vendor/firmware下,作为Jailhouse固件加载的路径。[0042]步骤250,将root.cell、non_root.cell、jailhouse_tools,jailhouse.bin,baremetal程序导入到外接存储的指定目录下,并在安卓系统开机后通过init.rc脚本将各用户端文件拷贝到/system/bin/jailhouse下,固件jailhouse.bin拷贝到vendor/firmware下,其中jailhouse_[0043]init.rc脚本是由Android中linux的第一个用户级进程init进行解析的,开机后通过initrc将各用户端文件拷贝到/system/bin/jailhouse下,固件jailhouse.bin拷贝到vendor/firmware下,每次开机自动更新用户端程序、固件和配置文件,其中jailhouse_tools为用户入口程序。[0044]相应的,利用Android应用侧app,通过UI界面提供创建虚拟机,加载程序,查看虚拟机状态,销毁虚拟机的界面。通过runtime.exec方法调用后端用户程序jailhouse_tools,执行jailhouse_toolsenableroot.cell使能虚拟机,通过执行jailhouse_tools销毁虚拟机,并将rootcell和non_rootcell的串口输出信息,通过虚拟串口打印在屏幕[0045]本实施例通过增加如下步骤:配置jailhouse路径导入gcc编译的bin文件到固件临时存放地址/vendor/firmware下,作为Jailhouse固件加载的路径;将root.cell、non_root.cell、jailhouse_tools,jailhouse.bin,baremetal程序导入到外接存储的指定目录下,并在安卓系统开机后通过init.rc脚本将各用户端文件拷贝到/system/bin/jailhouse下,固件jailhouse.bin拷贝到vendor/firmware下,其中jailhouse_tools为用户入口程的方式更直观的显示Jailhose的运行状态,带来更友好的交互,屏蔽繁琐的命令操作,对使用者带来诸多便利。[0046]实施例三[0047]图3是本发明实施例三提供的Jailhouse移植安卓的适配装置的结构示意图,参见图3,所述Jailhouse移植安卓的适配装置,包括:[0048]配置模块310,用于根据安卓系统的信息配置根单元格配置文件和非根单元格配[0049]关闭模块320,用于关闭安卓与jailhouse的冲突选项,并为所述冲突增加处理方[0050]编译模块330,用于将jailhouse的驱动编译成内核文件模式,并将jailhousetools编译为适用于安卓系统的可执行文件。[0051]本实施例提供的Jailhouse移植安卓的适配装置,通过根据安卓系统的信息配置根单元格配置文件和非根单元格配置文件;关闭安卓与Jailhouse的冲突选项,并为所述冲突增加处理方式;将Jailhouse的驱动编译成内核文件模式,并将Jailhousetools编译为适用于安卓系统的可执行文件。通过修改Android系统特性,android系统的平台上对8[0053]编译生成单元,用于在安卓内核设备树中添加预留内存,用于提供给hypervisor使用和供guest加载和运行使用,并根据安卓内核设备树的信息对所述根单元格配置文件和非根单元格配置文件的参数进行设置,并编译生成根单元格配置文件和非根单元格配置[0054]在上述各实施例的基础上,所述编译模块用于:[0055]Llvm编译单元,用于将jailhouse使用安卓内核编译环境11vm进行编译,编译成对应的内核模块文件jailhouse.ko内核模块文件,以减少jailhosue整体使用11vm编译时进行修改的工作量。在上述各实施例的基础[0056]采用gcc编译根单元格配置文件、非根单元格配置文件和Jailhouse.bin文件。[0058]第一关闭单元,用于关闭Androidkernel中与Jailhouse冲突的特性CONFIG_致x18寄存器的值被改掉,导致调用函数返回时读取返回地址出错;[0061]编写单元,用于移植Jailhousetools工具至Android代码目录下编写安卓构建描述文件,并使用安卓编译系统结合bionic库编译成适用于安卓系统的可执行文件。[0063]导入模块,用于配置jailhouse路径导入gcc编译的bin文件到固件临时存放地址/vendor/firmware下,作为Jailhouse固件加载的路径;[0064]拷贝模块,用于将root.cell、nbaremetal程序导入到外接存储的指定目录下,并在安卓系统开机后通过init.rc脚本将各用户端文件拷贝到/system/bin/jailhouse下,固件jailhouse.bin拷贝到vendor/[0065]本发明实施例所提供的Jailhouse移植安卓的适配装置可执行本发明任意实施例所提供的Jailhouse移植安卓的适配方法,具备执行方法相应的功能模块和有益效果。[0067]本发明实施例四还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如上述实施例提供的任一所述的Jailhouse移植安卓的适配方法。[0068]本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件9使用或者与其结合使用。[0069]计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。[0070]计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限[0071]可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言一诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论