CN113986858B - Linux兼容安卓系统的共享文件操作方法和装置 - Google Patents

Linux兼容安卓系统的共享文件操作方法和装置 Download PDF

Info

Publication number
CN113986858B
CN113986858B CN202111593731.8A CN202111593731A CN113986858B CN 113986858 B CN113986858 B CN 113986858B CN 202111593731 A CN202111593731 A CN 202111593731A CN 113986858 B CN113986858 B CN 113986858B
Authority
CN
China
Prior art keywords
directory
file
shared
linux
android
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
CN202111593731.8A
Other languages
English (en)
Other versions
CN113986858A (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.)
Beijing ByteDance Network Technology Co Ltd
Original Assignee
Beijing Jingling Information System 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 Beijing Jingling Information System Technology Co Ltd filed Critical Beijing Jingling Information System Technology Co Ltd
Priority to CN202111593731.8A priority Critical patent/CN113986858B/zh
Publication of CN113986858A publication Critical patent/CN113986858A/zh
Application granted granted Critical
Publication of CN113986858B publication Critical patent/CN113986858B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations

Abstract

本发明提供一种Linux兼容安卓系统的共享文件操作方法和装置,所述方法包括:获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过内核文件系统挂载到所述第一目录下,共享目录通过绑定方式挂载到所述第二目录下,所述第二目录为安卓系统中用户数据文件系统中的媒体目录;根据所述文件路径对所述共享目录中的共享文件进行操作。本发明的技术方案可以实现Linux系统与安卓系统的文件共享。

Description

Linux兼容安卓系统的共享文件操作方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种Linux兼容安卓系统的共享文件操作方法和装置。
背景技术
当前,大部分Linux系统实现对安卓(Android)系统兼容时,采用网络命名空间(net namespace)机制使得Android系统运行在Linux系统之上。
Anbox(Android in a box,盒子中的安卓)是一种基于容器的实现Linux兼容安卓系统的方案。与虚拟机方案相比,采用Anbox等容器方案在Linux系统上运行Android系统时,没有虚拟化的迟钝。这是因为,核心的Android操作系统通过使用Linux网络命名空间被放置到容器中,Android容器不能直接访问到任何硬件,所有硬件的访问都是通过在Linux主机上的守护进程进行的。每个应用程序像其它本地系统应用程序一样在一个单独窗口打开,并且可以显示在启动器中。
采用容器方案实现Linux系统与安卓系统的兼容时,由于Linux系统和Android系统的账号体系差异,存在文件系统共享的难题,例如,无法在安卓系统中对Linux系统创建的文件进行直接管理,例如对Linux系统创建的文件进行读、写、删除等操作。
发明内容
本发明提供一种Linux兼容安卓系统的共享文件操作方法、装置、系统、电子设备和非暂态计算机可读存储介质,用以解决现有技术中安卓系统无法管理Linux系统创建的文件的问题,实现安卓系统对共享文件的操作。
第一方面,本发明提供一种Linux兼容安卓系统的共享文件操作方法,包括:获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过内核文件系统挂载到所述第一目录下,共享目录通过绑定方式挂载到所述第二目录下,所述第二目录为安卓系统中用户数据文件系统中的媒体目录;根据所述文件路径对所述共享目录中的共享文件进行操作。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作方法,所述根据所述文件路径对所述共享目录中的共享文件进行操作,包括:对所述共享文件进行读取、写入、创建或者删除。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作方法,所述获取安卓系统的主内存目录中的第一目录的文件路径之前,所述方法还包括:将Linux主机对应的只读文件系统的目录和数据文件系统的目录通过绑定方式挂载到所述安卓系统中。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作方法,所述获取安卓系统的主内存目录中的第一目录的文件路径之前,所述方法还包括:将Linux系统用户增加到安卓系统的可读写用户组中,所述可读写用户组的文件权限包括读、写和执行。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作方法,所述共享文件由Linux系统用户创建,或者,所述共享文件由所述安卓系统用户创建;其中,不同系统用户创建的共享文件的文件数组名称不同。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作方法,所述获取安卓系统的主内存目录中的第一目录的文件路径之前,所述方法还包括:通过内部存储文件系统或者用户空间系统将所述第二目录挂载到所述主内存目录下。
第二方面,本发明提供一种Linux兼容安卓系统的共享文件操作装置,包括:获取单元,用于获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过内核文件系统挂载到所述第一目录下,共享目录通过绑定方式挂载到所述第二目录下,所述第二目录为安卓系统中用户数据文件系统中的媒体目录;操作单元,用于根据所述文件路径对所述共享目录中的共享文件进行操作。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作装置,所述操作单元还用于,对所述共享文件进行读取、写入、创建或者删除。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作装置,所述装置还包括挂载单元,用于,将Linux主机对应的只读文件系统的目录和数据文件系统的目录通过绑定方式挂载到所述安卓系统中。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作装置,所述挂载单元还用于,将Linux系统用户增加到安卓系统的可读写用户组中,所述可读写用户组的文件权限包括读、写和执行。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作装置,所述操作单元还用于,所述共享文件由Linux系统用户创建,或者,所述共享文件由所述安卓系统用户创建;其中,不同系统用户创建的共享文件的文件数组名称不同。
根据本发明提供的一种Linux兼容安卓系统的共享文件操作装置,所述挂载单元还用于,通过内部存储文件系统或者用户空间系统将所述第二目录挂载到所述主内存目录下。
第三方面,本发明提供一种Linux兼容安卓系统的共享文件操作系统,包括安卓系统和Linux系统,其中:Linux系统包括共享目录,所述共享目录通过绑定方式挂载到所述安卓系统的第二目录下,所述第二目录通过Linux系统的内核文件系统挂载到所述安卓系统的主内存目录中的第一目录下,以使得安卓系统用户根据文件路径对所述共享目录中的共享文件进行操作;其中,所述文件路径为所述第一目录的文件路径,所述第二目录为安卓系统中用户数据文件系统中的媒体目录。
第四方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述Linux兼容安卓系统的共享文件操作方法的步骤。
第五方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述Linux兼容安卓系统的共享文件操作方法的步骤。
本发明提供的Linux兼容安卓系统的共享文件操作方法、装置、系统、电子设备和非暂态计算机可读存储介质,通过将绑定挂载方式将共享目录挂载到第二目录,并将第二目录挂载到安卓系统的主内存目录中,从而使得安卓系统可以通过Linux内核访问共享目录,使得安卓系统可以对共享文件进行操作,实现了安卓系统和Linux系统的文件共享。
具体地,本发明实施例的技术方案中,安卓用户可以对安卓系统和Linux普通用户分别创建的共享文件进行操作,Linux普通用户可以对安卓系统和Linux普通用户分别创建的共享文件进行操作,包含了Linux和安卓两个系统间文件共享的全部内容,实现了完整的Linux系统和安卓系统的文件共享方案。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明提供的Linux兼容安卓系统的共享文件操作方法的流程示意图之一;
图2是本发明提供的Linux兼容安卓系统的共享文件操作系统的结构示意图;
图3是本发明提供的Linux兼容安卓系统的共享文件操作方法的流程示意图之二;
图4是本发明提供的Linux兼容安卓系统的共享文件操作装置的结构示意图;
图5是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
相关技术中,Linux文件系统相对比较简单,其包括“/”目录和home(家)目录。“/”目录即根目录,其内的文件主要为系统相关的文件,Linux普通用户一般不可写、不可创建、不可删除。home为Linux普通用户的主目录,home目录下的文件用户数组为Linux普通用户的user(所有者)和group(群组),因此该Linux普通用户对用户的home目录有完整的读、写、创建和删除等权限。
Linux系统的必需的、基本的文件,称为根文件系统,它们存放在一个分区中。Linux系统启动后首先挂载这个分区,即挂载(mount)根文件系统。其它分区上所有目录、文件的集合称为文件系统。Linux系统以树状结构管理所有目录、文件,具体地,某个分区挂载在某个目录上,然后就可以通过这个目录来访问这个分区上的文件了。比如根文件系统被挂载在根目录“/”上后,在根目录下有根文件系统的各个目录、文件:/bin、/sbin、/mnt等。这时,再将其它分区挂载到/mnt目录上,/mnt目录下就有这个分区的各个目录、文件。
Android文件系统相对比较复杂,其可以简单划为两类,一类是只读文件系统,包括system(系统)、vendor(供应商)等,另一类是可读写文件系统,包括userdata(用户数据)、sdcard(存储)等。只读文件系统中存放的是系统相关文件,不可读写。可读写文件系统存放的是系统配置、应用数据等。其中,sdcard文件系统是利用堆栈式文件系统在userdata的media(媒体)目录的堆栈挂载。userdata文件系统称为用户数据文件系统,也可以称为数据文件系统。
Linux系统的根是不需要共享的,Android系统的只读文件系统也是不需要共享的。Android系统的userdata存放的是Android系统的设置以及应用的沙盒数据,也不需要实现共享。
因此,Linux系统和Android系统的文件系统共享,仅需要实现Linux系统的用户的home目录和Android系统的sdcard文件系统的共享即可。
在相关技术中,一般采用容器方案实现Linux系统对安卓系统的兼容。这时,由于系统账号体系的差异,文件系统共享难以实现。
为解决该问题,本发明实施例提供一种Linux兼容安卓系统的共享文件操作方法、装置、系统、电子设备和非暂态计算机可读存储介质。
以下结合附图,详细说明本发明各实施例提供的技术方案。
如图1所示的是一种本发明实施例的Linux兼容安卓系统的共享文件操作方法的流程图。本发明实施例提供的方法可以由任意具备计算机处理能力的电子设备执行,例如终端设备和/或服务器。如图1所示,该Linux兼容安卓系统的共享文件操作方法包括:
步骤102,获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过内核文件系统挂载到第一目录下,共享目录通过绑定方式挂载到第二目录下,第二目录为安卓系统中用户数据文件系统中的媒体目录,即media目录。
具体地,挂载是根文件系统之外的其它文件关联至根文件系统上的某个目录的操作。挂载的源目录下的文件与挂载的目标目录下的文件是同步的,在源目录下创建一个文件,目标目录也会同步创建同样的文件;在源目录下删除一个文件,目标目录下的文件也被删除。
绑定方式是一种挂载方式,即bind mount,通过bind mount进行挂载时,被挂载的目录被屏蔽掉,该目录的内容被替换为挂载的目录内容。如果对挂载内容进行卸载,被挂载的目录将会复现。内核文件系统为Linux内核文件系统,通过内核文件系统可以将下级路径目录挂载到上级路径目录中。
步骤104,根据文件路径对共享目录中的共享文件进行操作。
具体地,该操作通过Linux系统执行。安卓应用程序可以在安卓用户触发指令的控制下,通过Linux内核对该共享文件进行操作。
本发明实施例的技术方案通过将共享目录挂载到安卓系统的数据文件系统的media目录下,而media目录又通过sdcardfs文件系统挂载到主内存目录下,这样,安卓用户可以通过Linux内核以root用户身份对该media目录进行访问,从而可以实现安卓用户对Linux普通用户创建的共享文件的操作管理,实现了Linux系统和Android系统的文件系统共享,解决了用户共享文件系统的兼容问题。
具体地,共享目录可以是Linux home目录,但是优选不采用home目录直接共享,而是由Linux系统创建一个文件夹单独进行文件共享。
对于Android系统我们共享的是storage sdcard。Android sdcard的实际是一套sdcardfs文件系统,该sdcardfs文件系统是内核文件系统实现的一种堆叠文件系统。sdcardfs文件系统的lower path(下级路径)是Linux系统绑定挂载的/data/media目录,upper path则是Android系统使用的storage sdcard。这里,/data/media目录即为数据文件系统中的媒体目录。
对于Android用户创建的共享文件,Android用户具备读写删除权限。对于Linux普通用户创建的文件,由于Android系统的sdcardfs文件系统对于自身lower path的访问是由Linux内核来处理的,并且Linux内核在sdcardfs文件系统中访问lower path中的文件,是采用Linux系统的root用户身份来访问。因此,Android用户借助sdcardfs文件系统同样具备读、写、删除Linux普通用户创建的文件权限。
这里,Linux用户分为root用户和Linux普通用户。Linux普通用户为/home/用户名,Linux系统的root用户为/root。其中,home目录指的是家目录,根目录是所有用户都可以操作的,家目录是普通用户才有权限操作的。/home为用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示。
可见,采用本发明实施例的技术方案,Android应用可以访问共享目录,并对该共享目录进行共享文件的读、写、创建和删除。
sdcardfs文件系统是一套堆叠文件系统,sdcardfs文件系统的挂载和绑定挂载(mount bind)是存在区别的。mount bind仅仅是将某个目录挂载到对应的目录挂载点,但是这两个目录的文件系统是一样的。而采用sdcardfs这种堆叠文件系统进行挂载时,上级文件系统和下级文件系统不是同一个,即上级路径(upper path)和下级路径分别对应的文件系统不同。具体地,采用mount bind的方式,源文件和目的文件是同一个数据结构表示的文件。对于堆叠文件系统来说,上级路径和下级路径中的文件是两个完全不同的文件,二者通过堆叠的方式关联到一起。
mount bind可以写作mount--bind,是将一个目录或文件中的内容挂载到另一个目录或文件上。具体地,挂载命令可以为:#mount—bindolddir newdir,或者为:#mount-Bolddirnewdir,这样在一个挂载点上可以访问其它挂载点的文件或目录。对应地,卸载命令可以为:#umount newdir。
mount--bind的作用是将两个目录连接起来,例如:mount---bind/dir1/dir2是将dir1目录挂载到dir2目录上。具体地,可以首先创建dir1和dir2两个目录,这时两个目录的i节点不一样。在执行完mount--bind命令后,dir1目录被挂载到dir2上面了,所有对dir2的访问都是对dir1的访问。
Android系统的平台由应用程序、应用程序框架、Android运行时、系统库和Linux、内核构成,其中应用层也就是一般Android应用开发人员的工作平台。
Android平台不仅仅是操作系统,也包含了许多应用程序,诸如短信、语音邮件、图片浏览器、浏览器等应用程序。应用程序框架层是从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。
系统运行库层可以分成两部分,分别是系统库和Android运行时,系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。Android可以基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。
如图2所示,本发明实施例的一种Linux兼容安卓系统的共享文件操作系统包括安卓系统和Linux系统。其中,Linux系统包括共享目录,共享目录212通过绑定方式挂载到安卓系统的第二目录223下,第二目录通过Linux系统的内核文件系统213挂载到安卓系统的主内存目录222中的第一目录下,以使得安卓系统用户根据上述文件路径对共享目录中的共享文件进行操作;其中,文件路径为第一目录的文件路径,第二目录为安卓系统中用户数据文件系统中的媒体目录。
这里,安卓系统用户可以通过安卓应用程序221对共享文件进行操作,Linux系统用户可以通过Linux应用程序211对共享文件进行操作。通过该共享文件操作系统即可以实现安卓系统和Linux系统的文件共享。
如图3所示的是本发明另一种实施例的Linux兼容安卓系统的共享文件操作方法的流程图。在将第二目录通过内核文件系统挂载到第一目录下,共享目录通过绑定方式挂载到第二目录下的基础上,如图3所示,在步骤302中,还可以将Linux系统用户增加到安卓系统的可读写用户组中,可读写用户组的文件权限包括读、写和执行。
这样,假如该文件是Android系统创建的,则其文件数组为(media_rwmedia_rw),其文件权限为(drwxrwx---)。由于Android的media_rw在Linux的普通用户的附属的群组中,并且Android系统创建的文件,该群组的权限为rwx权限,因此该Linux普通用户具备读写和删除Android创建的文件权限。假如该文件是Linux普通用户创建的,则该Linux普通用户具备可以读、写和删除权限,在此不再多赘述。
这里,文件数组(media_rwmedia_rw)的文件权限中,d后面第2至4位数字为rwx,即表示这个文件的所有者拥有的权限包括读、写和执行。其中,r是读、w是写、x是执行,执行包括创建和删除。d后面第5至7位数字为rwx,表示和这个文件所有者所在同一个群组的用户所具有的权限包括读、写和执行。d后面第8-10位表示其它用户不具有读写和执行的权限。
通过以上方案,对于Android应用在共享目录下创建的文件,Linux普通用户可以读、写和删除,即支持Linux普通用户访问Androidsdcard文件系统,以进行读、写、创建和删除操作,并且Linux普通用户在Androidsdcard文件系统创建的文件,Android应用同样可以读、写和删除。
本发明实施例的技术方案中,安卓用户可以对安卓系统和Linux普通用户分别创建的共享文件进行操作,Linux普通用户可以对安卓系统和Linux普通用户分别创建的共享文件进行操作,包含了Linux和安卓两个系统间文件共享的全部内容,实现了完整的Linux系统和安卓系统的文件共享方案。
具体地,Linux在容器中的Androidsubsytem安装时,将Linux普通用户添加到Android的sdcard_rw群组中。这样,假设Linux系统普通用户,其用户为user,群组同样为user。Linux系统普通用户在共享目录创建的文件数组为(useruser)。而Android系统创建的文件,则其文件数组为(media_rwmedia_rw),其文件权限为(drwxrwx---)。
在步骤102之前,通过内部存储文件系统或者用户空间系统将第二目录挂载到主内存目录下。这里,用户空间系统又称为FUSE(Filesystem in Userspace),是Linux中用于挂载某些网络空间到本地文件系统的模块。内部存储文件系统,即sdcardfs,是用户空间系统的替代产品,也可以用于挂载网络空间到本地文件系统。
sdcardfs的作用与FUSE相同,也是用于控制文件访问的权限。sdcardfs的工作方式是把内置SD卡(Secure Digital Memory Card,安全数据存储卡)目录挂载到用于权限控制目录。对内置SD卡的系统调用,先经过sdcardfs,然后把访问路径改为ext4文件系统的真正路径,再到达ext4文件系统。ext4执行完以后,把结果返回给sdcardfs,再返回给调用者。
对比FUSE和sdcardfs,对同一个文件访问,FUSE需要经过6次用户态与内核态的切换,但是sdcardfs只需要经过2次切换。另外FUSE在内核中有多个队列,队列中元素的出列要等带前面的元素先出列。因此单次文件访问,FUSE比sdcardfs需要更多的时间。但是,不管是FUSE,还是sdcardfs,对文件的单次访问,大部分情况下时间是很短的,人从感官上无法区分。而对于耗时的文件读写操作的时间来说,上述多出来的时间微不足道。而真正访问时间差异在来源于量变引起质变。当需要进行大量的文件访问时,累积产生时间差异是可以明显感觉出来的。其次需要注意下sdcardfs和FUSE都是大小写不敏感的。sdcardfs由于减少了用户态与内核态的切换,其理论性能会十分接近真实系统系统。
步骤104中,对共享文件进行操作,包括对共享文件进行读取、写入、创建或者删除。
在本发明实施例的技术方案中,Linux系统中Android系统由容器方案启动,其文件系统挂载过程中,在Android容器启动时,利用Linux系统的mount bind机制,将Linuxhost(主机)对应的system、vendor以及数据文件路径挂载到Android文件系统中,即将Linux主机对应的只读文件系统的目录和数据文件系统的目录通过绑定方式挂载到安卓系统中。
之后,将Linux普通用户需要和Android系统共享的目录,通过Linux文件系统mountbind机制,将共享目录挂载到Android的/data/media目录。
在本发明实施例中,共享文件可以由Linux系统用户创建,或者由安卓系统用户创建。不同系统用户创建的共享文件的文件数组名称不同,不同的文件数组的名称对应不同的文件权限。
用户在Linux兼容Android的环境中使用Android应用时,通常都有文件保存的需求,例如:Android系统的某个应用程序接收到了好友发送过来的word文档,则保存该文档。此文档会保存在Android的内部存储目录下的某个子目录,具体哪个目录由Android应用决定。这里,文件可以为图片、视频、音频、文本、办公文档或压缩包等,且并不局限于此。在本发明实施例中,Android应用可以将该文件保存到共享目录中,该文件可以被安卓用户或者Linux用户读、写或者删除。
本发明实施例的Linux兼容安卓系统的共享文件操作方法和系统,通过将绑定挂载方式将共享目录挂载到第二目录,并将第二目录挂载到安卓系统的主内存目录中,从而使得安卓系统可以通过Linux内核访问共享目录,使得安卓系统可以对共享文件进行操作,实现了安卓系统和Linux系统的文件共享。
下面对本发明提供的Linux兼容安卓系统的共享文件操作装置进行描述,下文描述的Linux兼容安卓系统的共享文件操作装置与上文描述的Linux兼容安卓系统的共享文件操作方法可相互对应参照。
如图4所示,本发明实施例提供的Linux兼容安卓系统的共享文件操作装置包括:
获取单元402,可以用于获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过内核文件系统挂载到第一目录下,共享目录通过绑定方式挂载到第二目录下,第二目录为安卓系统中用户数据文件系统中的媒体目录。
操作单元404,可以用于根据文件路径对共享目录中的共享文件进行操作。
本发明实施例的技术方案通过将共享目录挂载到安卓系统的数据文件系统的media目录下,而media目录又通过sdcardfs文件系统挂载到主内存目录下,这样,安卓用户可以通过Linux内核以root用户身份对该media目录进行访问,从而可以实现安卓用户对Linux普通用户创建的共享文件的操作管理,实现了Linux系统和Android系统的文件系统共享,解决了用户共享文件系统的兼容问题。
sdcardfs文件系统是一套堆叠文件系统,sdcardfs文件系统的挂载和绑定挂载(mount bind)是存在区别的。mount bind仅仅是将某个目录挂载到对应的目录挂载点,但是这两个目录的文件系统是一样的。而采用sdcardfs这种堆叠文件系统进行挂载时,上级文件系统和下级文件系统不是同一个,即上级路径(upper path)和下级路径分别对应的文件系统不同。具体地,采用mount bind的方式,源文件和目的文件是同一个数据结构表示的文件。对于堆叠文件系统来说,上级路径和下级路径中的文件是两个完全不同的文件,二者通过堆叠的方式关联到一起。
在本发明实施例中,操作单元还可以用于,对共享文件进行读取、写入、创建或者删除。
在本发明实施例中,挂载单元还可以用于,将Linux系统用户增加到安卓系统的可读写用户组中,可读写用户组的文件权限包括读、写和执行。
这样,假如该文件是Android系统创建的,则其文件数组为(media_rwmedia_rw),其文件权限为(drwxrwx---)。由于Android的media_rw在Linux的普通用户的附属的群组中,并且Android系统创建的文件,该群组的权限为rwx权限,因此该Linux普通用户具备读写和删除Android创建的文件权限。假如该文件是Linux普通用户创建的,则该Linux普通用户具备可以读、写、删除权限,在此不再多赘述。
本发明实施例的技术方案中,安卓用户可以对安卓系统和Linux普通用户分别创建的共享文件进行操作,Linux普通用户可以对安卓系统和Linux普通用户分别创建的共享文件进行操作,实现了完整的Linux系统和安卓系统的文件共享方案,实现了完整的Linux系统和安卓系统的文件共享方案。
在本发明实施例中,装置还可以包括挂载单元,用于,将Linux主机对应的只读文件系统的目录和数据文件系统的目录通过绑定方式挂载到安卓系统中。
在本发明实施例中,操作单元还可以用于,共享文件由Linux系统用户创建,或者,共享文件由安卓系统用户创建;其中,不同系统用户创建的共享文件的文件数组名称不同,不同的文件数组的名称对应不同的文件权限。
在本发明实施例中,挂载单元还可以用于,通过内部存储文件系统或者用户空间系统将第二目录挂载到主内存目录下。
能够理解,上述Linux兼容安卓系统的共享文件操作装置,能够实现前述实施例中提供的Linux兼容安卓系统的共享文件操作方法的各个步骤,关于Linux兼容安卓系统的共享文件操作方法的相关阐释均适用于Linux兼容安卓系统的共享文件操作装置,此处不再赘述。
本发明实施例的Linux兼容安卓系统的共享文件操作装置,通过将绑定挂载方式将共享目录挂载到第二目录,并将第二目录挂载到安卓系统的主内存目录中,从而使得安卓系统可以通过Linux内核访问共享目录,使得安卓系统可以对共享文件进行操作,实现了安卓系统和Linux系统的文件共享。
图5示例了一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(Communications Interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行Linux兼容安卓系统的共享文件操作方法,该方法包括:获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过内核文件系统挂载到所述第一目录下,共享目录通过绑定方式挂载到所述第二目录下,所述第二目录为安卓系统中用户数据文件系统中的媒体目录;根据所述文件路径对所述共享目录中的共享文件进行操作。
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的Linux兼容安卓系统的共享文件操作方法,该方法包括:获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过内核文件系统挂载到所述第一目录下,共享目录通过绑定方式挂载到所述第二目录下,所述第二目录为安卓系统中用户数据文件系统中的媒体目录;根据所述文件路径对所述共享目录中的共享文件进行操作。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的Linux兼容安卓系统的共享文件操作方法,该方法包括:获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过内核文件系统挂载到所述第一目录下,共享目录通过绑定方式挂载到所述第二目录下,所述第二目录为安卓系统中用户数据文件系统中的媒体目录;根据所述文件路径对所述共享目录中的共享文件进行操作。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种Linux兼容安卓系统的共享文件操作方法,其特征在于,包括:
获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过Linux系统的内核文件系统挂载到所述第一目录下,共享目录通过绑定方式挂载到所述第二目录下,所述第二目录为安卓系统中用户数据文件系统中的媒体目录,其中,Linux系统包括所述共享目录;
根据所述文件路径对所述共享目录中的共享文件进行操作。
2.根据权利要求1所述的方法,其特征在于,所述根据所述文件路径对所述共享目录中的共享文件进行操作,包括:
对所述共享文件进行读取、写入、创建或者删除。
3.根据权利要求1所述的方法,其特征在于,所述获取安卓系统的主内存目录中的第一目录的文件路径之前,所述方法还包括:将Linux主机对应的只读文件系统的目录和数据文件系统的目录通过绑定方式挂载到所述安卓系统中。
4.根据权利要求1所述的方法,其特征在于,所述获取安卓系统的主内存目录中的第一目录的文件路径之前,所述方法还包括:将Linux系统用户增加到安卓系统的可读写用户组中,所述可读写用户组的文件权限包括读、写和执行。
5.根据权利要求1所述的方法,其特征在于,所述共享文件由Linux系统用户创建,或者,所述共享文件由所述安卓系统用户创建;
其中,不同系统用户创建的共享文件的文件数组名称不同。
6.根据权利要求1所述的方法,其特征在于,所述获取安卓系统的主内存目录中的第一目录的文件路径之前,所述方法还包括:通过内部存储文件系统或者用户空间系统将所述第二目录挂载到所述主内存目录下。
7.一种Linux兼容安卓系统的共享文件操作装置,其特征在于,包括:
获取单元,用于获取安卓系统的主内存目录中的第一目录的文件路径,其中,第二目录通过Linux系统的内核文件系统挂载到所述第一目录下,共享目录通过绑定方式挂载到所述第二目录下,所述第二目录为安卓系统中用户数据文件系统中的媒体目录,其中,Linux系统包括所述共享目录;
操作单元,用于根据所述文件路径对所述共享目录中的共享文件进行操作。
8.一种Linux兼容安卓系统的共享文件操作系统,其特征在于,包括安卓系统和Linux系统,其中:
Linux系统包括共享目录,所述共享目录通过绑定方式挂载到所述安卓系统的第二目录下,所述第二目录通过Linux系统的内核文件系统挂载到所述安卓系统的主内存目录中的第一目录下,以使得安卓系统用户根据文件路径对所述共享目录中的共享文件进行操作;其中,所述文件路径为所述第一目录的文件路径,所述第二目录为安卓系统中用户数据文件系统中的媒体目录。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至6任一项所述方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述方法的步骤。
CN202111593731.8A 2021-12-24 2021-12-24 Linux兼容安卓系统的共享文件操作方法和装置 Active CN113986858B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111593731.8A CN113986858B (zh) 2021-12-24 2021-12-24 Linux兼容安卓系统的共享文件操作方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111593731.8A CN113986858B (zh) 2021-12-24 2021-12-24 Linux兼容安卓系统的共享文件操作方法和装置

Publications (2)

Publication Number Publication Date
CN113986858A CN113986858A (zh) 2022-01-28
CN113986858B true CN113986858B (zh) 2022-06-03

Family

ID=79734207

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111593731.8A Active CN113986858B (zh) 2021-12-24 2021-12-24 Linux兼容安卓系统的共享文件操作方法和装置

Country Status (1)

Country Link
CN (1) CN113986858B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116956331B (zh) * 2023-09-18 2023-12-19 中孚安全技术有限公司 应用于Linux的文件系统加密隔离方法、系统、设备及介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970559A (zh) * 2013-02-05 2014-08-06 北京壹人壹本信息科技有限公司 一种基于Android系统的设备加载方法及装置
CN106250172A (zh) * 2016-07-18 2016-12-21 北京理工大学 一种共享内核分区的Android双启动方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108509435B (zh) * 2017-02-24 2021-03-23 海马云(天津)信息技术有限公司 实例系统挂载远程文件的方法和装置
KR101997061B1 (ko) * 2017-09-29 2019-07-05 숭실대학교산학협력단 리눅스 기반 안드로이드 컨테이너 플랫폼, 이를 탑재한 장치 및 리눅스 기반 안드로이드 컨테이너 환경에서의 보안 시스템 구축 방법
CN110618876B (zh) * 2019-03-21 2023-05-23 麒麟软件有限公司 一种基于飞腾平台与共享内核的Linux与Android并存和交互方法
CN112364607B (zh) * 2020-10-08 2021-06-25 北京麟卓信息科技有限公司 一种Android应用编辑Linux文件的方法和装置
CN113204307A (zh) * 2021-05-06 2021-08-03 技德技术研究所(武汉)有限公司 一种在Linux上兼容运行Android系统的文件发送方法及装置
CN113220363B (zh) * 2021-05-06 2022-04-19 技德技术研究所(武汉)有限公司 一种在Linux上兼容运行Android系统的文件打开方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103970559A (zh) * 2013-02-05 2014-08-06 北京壹人壹本信息科技有限公司 一种基于Android系统的设备加载方法及装置
CN106250172A (zh) * 2016-07-18 2016-12-21 北京理工大学 一种共享内核分区的Android双启动方法

Also Published As

Publication number Publication date
CN113986858A (zh) 2022-01-28

Similar Documents

Publication Publication Date Title
US11093148B1 (en) Accelerated volumes
US9471802B2 (en) Hybrid file systems
US11537652B2 (en) Sharing filesystems between containers
CN103795759B (zh) 一种虚拟机镜像文件的调度方法和系统
CN101213557B (zh) 限制操作系统及其它软件的安装的反骇客保护
WO2011064218A1 (en) Extensible access control list framework
CN111897623B (zh) 一种集群管理方法、装置、设备及存储介质
US11150981B2 (en) Fast recovery from failures in a chronologically ordered log-structured key-value storage system
US10783073B2 (en) Chronologically ordered out-of-place update key-value storage system
CN113986858B (zh) Linux兼容安卓系统的共享文件操作方法和装置
CN113296891B (zh) 基于平台的多场景知识图谱处理方法及装置
CN114238236A (zh) 共享文件的访问方法、电子设备及计算机可读存储介质
CN114168156A (zh) 多租户数据持久化方法、装置、存储介质和计算机设备
CN115618409A (zh) 数据库云服务生成方法、装置、设备及可读存储介质
CN114860378A (zh) 一种文件系统迁移方法、装置、系统及其介质
CN115774701B (zh) 数据共享方法、装置、电子设备及存储介质
CN114880683A (zh) 一种基于公共目录的文件管理方法和装置
CN115384430B (zh) 一种汽车仪表显示系统的启动方法、装置及存储介质
US11323331B2 (en) Cloud server and operating method of the same
CN116483777A (zh) 一种文件存储管理方法、装置及电子设备
EP4068091A1 (en) Hybrid approach to performing a lazy pull of container images
CN115686364A (zh) 一种目录挂载方法及计算设备
CN115202830A (zh) 根文件系统的准备方法、系统、计算设备及可读存储介质
CN115185634A (zh) 一种子系统实现方法及计算设备
CN112379968A (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
TR01 Transfer of patent right

Effective date of registration: 20220823

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Patentee after: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

Address before: 2005, floor 2, No. 39, West Street, Haidian District, Beijing 100080

Patentee before: Beijing jingling Information System Technology Co.,Ltd.

TR01 Transfer of patent right