CN112099923B - 一种运行于Linux操作***上的Android虚拟化*** - Google Patents

一种运行于Linux操作***上的Android虚拟化*** Download PDF

Info

Publication number
CN112099923B
CN112099923B CN202011285918.7A CN202011285918A CN112099923B CN 112099923 B CN112099923 B CN 112099923B CN 202011285918 A CN202011285918 A CN 202011285918A CN 112099923 B CN112099923 B CN 112099923B
Authority
CN
China
Prior art keywords
layer
android
dockdroid
open
binder
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011285918.7A
Other languages
English (en)
Other versions
CN112099923A (zh
Inventor
郑智冰
周军
喻鑫
张李秋
刘铮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Jiangsu Bego Intelligent Technology Co ltd
Original Assignee
Jiangsu Bego Intelligent Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Jiangsu Bego Intelligent Technology Co ltd filed Critical Jiangsu Bego Intelligent Technology Co ltd
Priority to CN202011285918.7A priority Critical patent/CN112099923B/zh
Publication of CN112099923A publication Critical patent/CN112099923A/zh
Application granted granted Critical
Publication of CN112099923B publication Critical patent/CN112099923B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/4555Para-virtualisation, i.e. guest operating system has to be modified
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种运行于Linux操作***上的Android虚拟化***,包括Dockdroid层以及各个Docker容器;Docker容器用于在HAL层中安装有安卓应用所需要的open GL ES库;Dockdroid层用于提供HAL层传输指令的高速通道以及open GL ES指令转换所需要的translator库。该Android虚拟化***不需要转换指令,在宿主机提供安卓运行时库的支持:进程间通信机制Binder和匿名共享内存机制ashmem;通过修改binder驱动实现可支持多路binder设备;对Android的open GL ES***进行重构,发挥GPU硬件资源优势,实现3D渲染和图形加速。

Description

一种运行于Linux操作***上的Android虚拟化***
技术领域
本发明涉及一种Android虚拟化***,尤其是一种运行于Linux操作***上的Android虚拟化***。
背景技术
安卓模拟器是典型的虚拟机技术,模拟器的发展得益于***的火爆,绝大部分用户不满足现有手机的内存、网速、图形渲染等硬件条件限制,就催生了将手机应用移植到PC上的需求。虚拟机技术存在的问题包括:(1)安卓模拟器虽然支持安卓应用运行,但受制于平台,只支持Windows和Mac平台,不支持Linux平台,更不支持国产麒麟、飞腾平台;(2)虚拟机运行游戏等大型软件卡顿,资源开销大,频繁发生***奔溃、不流畅等。
有了在PC上借助Android模拟器运行安卓应用的想法,就有用户提出直接在PC上运行Android应用的思路。在2009年,Yi Sun开始了将Android移植到x86-PC上的尝试,并基于Android 1.6推出了Android-x86 1.6,后来持续跟随Android的发展步伐,目前已发展到Android 10.x。Android x86***定位的是x86-PC的BSP,并在Android x86的基础上扩展Android框架,基于Android为桌面PC提供不同于常规的操作使用环境。后面发展成一种面向x86的桌面操作***,我们统称为Android-x86,国内知名产品包括RemixOS、PhoenixOS和EmindOS(openthus)均基于此技术实现。Android-x86技术存在的问题包括:(1)属于AOSP的扩展,不支持Linux应用,目前基于容器技术实现的还是安卓模拟器,***性能受到巨大的影响;(2)硬件和软件库的兼容性问题。
发明内容
发明目的: 提供一种运行于Linux操作***上的Android虚拟化***,能够在Linux操作***上虚拟出完整的安卓运行环境,实现安卓应用无缝迁移到Linux平台上高效运行。
技术方案:本发明所述的运行于Linux操作***上的Android虚拟化***,包括Dockdroid层以及各个Docker容器;
Docker容器用于构建Android虚拟化***,并在Android虚拟化***的HAL层中安装有安卓应用所需要的open GL ES库;
Dockdroid层用于提供HAL层传输指令的高速通道以及open GL ES指令转换所需要的translator库;
在HAL层和Dockdroid层之间通过编号来标记指令,在HAL层传输指令时,指令的参数也一并通过高速通道传输到Dockdroid层中,Dockdroid层从高速通道中读取指令的编号和参数;
在Dockdroid层中设置有用于与mesa驱动交互的translator库,在translator库中设置有将open GL ES指令转换为mesa驱动可识别的open GL指令;
在Dockdroid层读取指令的编号和参数后,对读取的编号和指令进行解析,并根据解析结果调用translator库转换指令;
在HAL层调用Dockdroid层提供的open GL ES库时,由translator库将HAL层发送的open GL ES指令转化为显卡驱动的open GL指令,从而利用GPU进行加速。
进一步的,在Docker容器中启动进程利用Linux Namespace机制隔离出一部分***资源,通过clone***调用创建子进程并指定flags参数来标记共享/隔离的***资源。
进一步的,flags参数包括主机名与域名隔离参数、消息与共享内存隔离参数、进程编号隔离参数、网络隔离参数、挂载点隔离参数以及用户与用户组隔离参数。
进一步的,Docker容器通过Linux Cgroups机制对进程资源限制、控制和统计,在启动Docker容器时加上CPU核数、内存大小以及网络带宽来实现资源的限制。
进一步的,各个Docker容器均对应有一个binder设备设置于宿主机中,binder设备通过对binder驱动进行修改生成;binder驱动修改点包括:修改驱动注册到内核为字符设备、添加设备保护锁、添加num_devices参数控制生成的设备数目、修改init_binder_device函数以及修改设备号。
进一步的,Docker容器是通过设备挂载方式将ashmem驱动以及binder驱动与宿主机进行映射。
本发明与现有技术相比,其有益效果是:(1)支持国产麒麟、飞腾平台上虚拟安卓运行环境,由于麒麟、飞腾是armv8指令集,不需要转换指令,安卓应用直接无缝迁移,在宿主机提供安卓运行时库的支持:进程间通信机制Binder和匿名共享内存机制ashmem;(2)支持多路binder设备,linux内核binder驱动只能生成单个设备,通过修改binder驱动实现可支持200个binder设备;(3)使用docker容器拉起整个安卓镜像;(4)图形加速渲染,对Android的open GL ES***进行重构,发挥GPU硬件资源优势,实现高效的3D渲染和图形加速。
附图说明
图1为本发明的***框架结构示意图。
具体实施方式
下面结合附图对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
实施例1:
如图1所示,本发明公开的运行于Linux操作***上的Android虚拟化***,包括Dockdroid层以及各个Docker容器;
Docker容器用于构建Android虚拟化***,并在Android虚拟化***的HAL层中安装有安卓应用所需要的open GL ES库;
Dockdroid层用于提供HAL层传输指令的高速通道以及open GL ES指令转换所需要的translator库;
在HAL层和Dockdroid层之间通过编号来标记指令,在HAL层传输指令时,指令的参数也一并通过高速通道传输到Dockdroid层中,Dockdroid层从高速通道中读取指令的编号和参数;
在Dockdroid层中设置有用于与mesa驱动交互的translator库,在translator库中设置有将open GL ES指令转换为mesa驱动可识别的open GL指令;
在Dockdroid层读取指令的编号和参数后,对读取的编号和指令进行解析,并根据解析结果调用translator库转换指令;
在HAL层调用Dockdroid层提供的open GL ES库时,由translator库将HAL层发送的open GL ES指令转化为显卡驱动的open GL指令,从而利用GPU进行加速。从而发挥GPU硬件资源优势,实现高效的3D渲染和图形加速。
进一步的,Docker容器依赖内核底层namespace和cgroup技术,在Docker容器中启动进程利用Linux Namespace机制隔离出一部分***资源,通过clone***调用创建子进程并指定flags参数来标记共享/隔离的***资源。
进一步的,flags参数包括主机名与域名隔离参数、消息与共享内存隔离参数、进程编号隔离参数、网络隔离参数、挂载点隔离参数以及用户与用户组隔离参数。
进一步的,Docker容器通过Linux Cgroups机制对进程资源限制、控制和统计,在启动Docker容器时加上CPU核数、内存大小以及网络带宽等来实现资源的限制。
进一步的,标准的linux内核binder驱动默认只生成一个binder设备,不能满足多个容器的使用,为了使得各个Docker容器均对应有一个binder设备,通过对binder驱动进行修改生成多个binder设备一一对应。binder驱动修改点如下:(1)默认binder注册为杂项设备,修改驱动注册到内核为字符设备;(2)添加设备保护锁,避免资源的竞争导致;(3)添加num_devices参数,控制生成的设备数目;(4)修改init_binder_device函数,修改设备文件名为binder+设备编号的方式,binder1~binderN,使用cdev_init注册设备,cdev_add添加设备,device_register注册到内核中;(5)修改设备号,在飞腾机器中存在设备号占用的问题,避免设备不兼容。
进一步的,Docker容器是通过设备挂载方式将ashmem驱动以及binder驱动与宿主机进行映射。
本发明的有益效果在于:(1)支持国产麒麟、飞腾平台上虚拟安卓运行环境,由于麒麟、飞腾是armv8指令集,不需要转换指令,安卓应用直接无缝迁移,在宿主机提供安卓运行时库的支持:进程间通信机制Binder和匿名共享内存机制ashmem;(2)支持多路binder设备,linux内核binder驱动只能生成单个设备,通过修改binder驱动实现可支持200个binder设备;(3)使用docker容器拉起整个安卓镜像;(4)图形加速渲染,对Android的openGL ES***进行重构,发挥GPU硬件资源优势,实现高效的3D渲染和图形加速。
如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。

Claims (6)

1.一种运行于Linux操作***上的Android虚拟化***,其特征在于:包括Dockdroid层以及各个Docker容器;
Docker容器用于构建Android虚拟化***,并在Android虚拟化***的HAL层中安装有安卓应用所需要的open GL ES库;
Dockdroid层用于提供HAL层传输指令的高速通道以及open GL ES指令转换所需要的translator库;
在HAL层和Dockdroid层之间通过编号来标记指令,在HAL层传输指令时,指令的参数也一并通过高速通道传输到Dockdroid层中,Dockdroid层从高速通道中读取指令的编号和参数;
在Dockdroid层中设置有用于与mesa驱动交互的translator库,在translator库中设置有将open GL ES指令转换为mesa驱动可识别的open GL指令;
在Dockdroid层读取指令的编号和参数后,对读取的编号和指令进行解析,并根据解析结果调用translator库转换指令;
HAL层调用Dockdroid层提供的open GL ES库时,由translator库将HAL层发送的openGL ES指令转化为mesa驱动的open GL指令,从而利用GPU进行加速。
2.根据权利要求1所述的运行于Linux操作***上的Android虚拟化***,其特征在于:在Docker容器中启动进程利用Linux Namespace机制隔离出一部分***资源,通过clone***调用创建子进程并指定flags参数来标记共享/隔离的***资源。
3.根据权利要求2所述的运行于Linux操作***上的Android虚拟化***,其特征在于:flags参数包括主机名与域名隔离参数、消息与共享内存隔离参数、进程编号隔离参数、网络隔离参数、挂载点隔离参数以及用户与用户组隔离参数。
4.根据权利要求1所述的运行于Linux操作***上的Android虚拟化***,其特征在于:Docker容器通过Linux Cgroups机制对进程资源限制、控制和统计,在启动Docker容器时加上CPU核数、内存大小以及网络带宽来实现资源的限制。
5.根据权利要求1所述的运行于Linux操作***上的Android虚拟化***,其特征在于:各个Docker容器均对应有一个binder设备设置于宿主机中,binder设备通过对binder驱动进行修改生成;binder驱动修改点包括:修改驱动注册到内核为字符设备、添加设备保护锁、添加num_devices参数控制生成的设备数目、修改init_binder_device函数以及修改设备号。
6.根据权利要求1所述的运行于Linux操作***上的Android虚拟化***,其特征在于:Docker容器是通过设备挂载方式将ashmem驱动以及binder驱动与宿主机进行映射。
CN202011285918.7A 2020-11-17 2020-11-17 一种运行于Linux操作***上的Android虚拟化*** Active CN112099923B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011285918.7A CN112099923B (zh) 2020-11-17 2020-11-17 一种运行于Linux操作***上的Android虚拟化***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011285918.7A CN112099923B (zh) 2020-11-17 2020-11-17 一种运行于Linux操作***上的Android虚拟化***

Publications (2)

Publication Number Publication Date
CN112099923A CN112099923A (zh) 2020-12-18
CN112099923B true CN112099923B (zh) 2021-02-05

Family

ID=73785708

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011285918.7A Active CN112099923B (zh) 2020-11-17 2020-11-17 一种运行于Linux操作***上的Android虚拟化***

Country Status (1)

Country Link
CN (1) CN112099923B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860364A (zh) * 2021-02-07 2021-05-28 麒麟软件有限公司 一种基于Linux内核的Android图形显示方法
CN113505007A (zh) * 2021-07-12 2021-10-15 北京鲸鲮信息***技术有限公司 基于Linux***的协议栈数据传输方法、计算机设备和存储介质
CN113656143B (zh) * 2021-08-16 2024-05-31 深圳市瑞驰信息技术有限公司 一种实现安卓容器直通显卡的方法及***
CN114035863A (zh) * 2021-11-11 2022-02-11 北京鲸鲮信息***技术有限公司 在Linux***中操作安卓应用的方法、装置和设备
CN113824888B (zh) * 2021-11-23 2022-06-17 北京鲸鲮信息***技术有限公司 Linux兼容Android的相机控制方法、***、装置及介质
CN113835768B (zh) * 2021-11-29 2022-08-16 北京字节跳动网络技术有限公司 一种Android混合HAL的管理方法及***
CN113934464A (zh) * 2021-12-14 2022-01-14 北京鲸鲮信息***技术有限公司 Linux***中启动安卓应用的方法、装置和电子设备
CN114092312A (zh) * 2022-01-19 2022-02-25 北京鲸鲮信息***技术有限公司 图像生成方法、装置、电子设备及存储介质
CN114125558B (zh) * 2022-01-26 2022-04-22 麒麟软件有限公司 基于Linux桌面显卡的安卓视频解码硬件加速方法
CN114185508B (zh) * 2022-02-15 2022-04-26 麒麟软件有限公司 在Linux兼容安卓***上进行左右分屏的方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105895111A (zh) * 2015-12-15 2016-08-24 乐视致新电子科技(天津)有限公司 基于Android的音频内容处理方法及设备
US20170371509A1 (en) * 2015-02-27 2017-12-28 Samsung Electronics Co., Ltd. Method of controlling device having plurality of operating systems installed therein, and the device
CN108170503A (zh) * 2018-01-24 2018-06-15 腾讯科技(深圳)有限公司 一种跨***运行安卓应用的方法、终端及存储介质
CN108762815A (zh) * 2018-05-16 2018-11-06 北京麟卓信息科技有限公司 一种基于非虚拟化体系架构的Android运行环境实现方法
CN109388473A (zh) * 2018-09-19 2019-02-26 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于移动操作***的Android兼容层实现方法和***
CN110059453A (zh) * 2019-03-13 2019-07-26 中国科学院计算技术研究所 一种容器虚拟化安全加固装置及方法
CN111930340A (zh) * 2020-09-21 2020-11-13 北京技德***技术有限公司 一种基于Linux与Android兼容技术的虚拟音频装置与方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170371509A1 (en) * 2015-02-27 2017-12-28 Samsung Electronics Co., Ltd. Method of controlling device having plurality of operating systems installed therein, and the device
CN105895111A (zh) * 2015-12-15 2016-08-24 乐视致新电子科技(天津)有限公司 基于Android的音频内容处理方法及设备
CN108170503A (zh) * 2018-01-24 2018-06-15 腾讯科技(深圳)有限公司 一种跨***运行安卓应用的方法、终端及存储介质
CN108762815A (zh) * 2018-05-16 2018-11-06 北京麟卓信息科技有限公司 一种基于非虚拟化体系架构的Android运行环境实现方法
CN109388473A (zh) * 2018-09-19 2019-02-26 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 基于移动操作***的Android兼容层实现方法和***
CN110059453A (zh) * 2019-03-13 2019-07-26 中国科学院计算技术研究所 一种容器虚拟化安全加固装置及方法
CN111930340A (zh) * 2020-09-21 2020-11-13 北京技德***技术有限公司 一种基于Linux与Android兼容技术的虚拟音频装置与方法

Also Published As

Publication number Publication date
CN112099923A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN112099923B (zh) 一种运行于Linux操作***上的Android虚拟化***
CN107533469B (zh) 对图形处理单元资源的容器访问
RU2406128C2 (ru) Система и способ для виртуализации графических подсистем
EP2622463B1 (en) Instant remote rendering
US8819705B2 (en) User interaction support across cross-environment applications
US8933949B2 (en) User interaction across cross-environment applications through an extended graphics context
KR101761409B1 (ko) 가상화 플랫폼 제공 방법 및 장치
US20120084798A1 (en) Cross-environment redirection
CN113157362B (zh) 一种应用于Linux上Android多窗口显示方法
KR20140117414A (ko) 반가상화된 고성능 컴퓨팅 및 gdi 가속 기법
US10540294B2 (en) Secure zero-copy packet forwarding
CN105122210A (zh) Gpu虚拟化的实现方法及相关装置和***
CN107077379B (zh) 一种虚拟机创建方法和装置
CN106020929A (zh) 一种虚拟化环境下支持3d应用的***和方法
CN103064724A (zh) 虚拟机构建方法及装置
CN104040494A (zh) 准虚拟化的域着色器、外壳着色器和几何着色器
CN108737131B (zh) 网络设备虚拟化的实现方法和装置
CN100561438C (zh) 一种虚拟机***及其显卡使用方法
CN117389694B (zh) 基于virtio-blk技术提升虚拟存储IO性能的方法
CN112860364A (zh) 一种基于Linux内核的Android图形显示方法
CN115309511B (zh) 基于Xen的数据交互方法、装置、存储介质以及电子设备
Toyama et al. Android as a server platform
CN105573817B (zh) 虚拟输入控制的方法、装置及***
CN114397999A (zh) 基于非易失内存接口-远程处理消息传递的通信方法、装置及设备
CN108733602B (zh) 数据处理

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant