一种安卓系统中的用户数据镜像加载方法、装置及终端的制作方法_3

文档序号:9471255阅读:来源:国知局
终端本地,就不会出现分区表中的userdata分区的结束位置大于手机的剩余存储空间的结束位置的现象,如果一旦发生这种现象,可以输出操作失败信息。
[0065]步骤23:如果需要修改分区表中userdata分区的大小,则依据终端的剩余容量的大小调整改分区表中userdata分区的大小。
[0066]具体实现时,如果分区表中的userdata分区的结束位置小于存储器的实际剩余容量,则认为需要调整分区表中的userdata分区的结束位置。
[0067]由于在加载userdata.1mg之前,已经加载了 ramdisk.1mg和system, img,因为分区表中最后一个分区是userdata,所以userdata的结束扇区小于存储器的结束扇区,我们就认为需要进行调整,因此只要判断分区表中的userdata分区的结束位置是否小于手机的实际剩余容量的结束位置即可。
[0068]具体的,本发明实施例可以将上述分区表中所设置的用户数据分区的结束扇区地址修改为上述终端的可用存储空间的结束扇区地址。
[0069]步骤24:如果不需要修改分区表中userdata分区的大小,则将userdata.1mg加载到终端的指定目录下。
[0070]具体实现时,如果分区表中的userdata分区的结束位置与手机的剩余存储空间的结束位置相同,则按照现有技术提供的方法将userdata.1mg加载到终端的指定目录下。
[0071]举例来说,本发明实施例中的分区表中设置有各分区的加载顺序,本发明实施例可以按照先加载ramdisk.1mg,再加载system, img,最后加载userdata.1mg的顺序进行操作,当然,在加载ramdisk.1mg之后且加载system, img之间,还可以加载其他分区(otherpartit1n),这里不再--说明。
[0072]图3(a)示出了本发明实施例中一种预先生成的分区表的示意图,如图3(a)所示,在分区表中第一个分区是ramdisk分区、然后可能包括其他分区、之后是system分组、最后一个分区是userdata分区。此时,判断预先生成的分区表中的userdata分区的结束扇区地址与手机的剩余容量的结束扇区地址是否相同,如果相同,则不需要修改分区表中的userdata分区的大小,如果预先生成的分区表中的userdata分区的结束扇区地址小于手机的剩余容量的结束扇区地址,贝lJ需要修改分区表中的userdata分区的大小。图3 (b)示出了本发明实施例中修改后的分区表的示意图,如图3(b)所示,本发明实施例可以将分区表中的userdata分区的结束扇区地址修改为与手机的剩余容量的结束扇区地址相同,这样,修改后的分区表中的各分区大小的总和可以与手机的剩余容量相匹配。
[0073]这样,本发明实施例通过上述步骤,根据手机的实际存储空间调整了分区表中userdata的大小。下面继续介绍文件系统中userdata.1mg的无损扩容方案。
[0074]图4示出了本发明实施例提供的文件系统中userdata.1mg的无损扩容方案的流程示意图,如图4所示,该流程可以包括:
[0075]步骤41:系统开机过程中,检测是否需要对userdata.1mg进行扩容,如果需要扩容,则继续执行步骤42 ;否则,执行步骤44。
[0076]具体实现时,获取userdata.1mg的大小和分区表中userdata的大小(结束位置-起始位置),判断userdata.1mg的大小和分区表中userdata的大小是否一致,如果不一致,就需要对userdata.1mg进行扩容,即执行步骤42 ;如果一致,就不需要对userdata.1mg进行扩容,则执行步骤44。
[0077]步骤42:使用无损扩容的方法,将userdata文件系统的大小扩容到与手机的实际存储空间相同的大小。
[0078]具体实现时,根据修改后的分区表中的用户数据分区容量的大小与上述用户数据镜像的大小之间的差值、以及上述终端中的存储块的大小,计算需要被填充到上述用户数据镜像中的可用存储块的个数m;其中,终端的存储空间由未被数据占用的可用存储块和已被数据占用的已用存储块组成,且各存储块的大小相同;按照预设顺序,将m个可用存储块确定为已被用户数据占用的已用存储块,并将所有的已被用户数据占用的已用存储块的总大小,作为扩容后的用户数据镜像的大小。
[0079]具体的,针对Ext4的文件系统设计,系统中预置有保留块(在本发明实施例中,将未使用的可用存储块作为保留块),本发明实施例将需要增大的容量利用保留块填充到userdata.1mg中,这样就可以实现无损扩容。首先,可以计算修改后的分区表中的用户数据分区容量的大小与上述用户数据镜像的大小之间的差值;然后,将该差值的大小除以保留块的大小,计算得到需要填充的保留块的个数m;之后,按照预设规则,如由前至后的顺序,选取m个保留块,并将这m个保留块加入到用户数据分区的索引中,用以将这m个保留块标记为已被用户数据占用的存储块,并将所有的已被用户数据占用的已用存储块的总大小,作为扩容后的用户数据镜像的大小。
[0080]需要说明的是,在本发明实施例中,手机的存储空间由未被数据占用的可用存储块(即保留块)和已被数据占用的已用存储块组成。
[0081]步骤43:将扩容后的userdata.1mg加载到手机的指定目录下。
[0082]具体实现时,本发明实施例可以将扩容后的userdata.1mg按照现有技术提供的方法加载到手机的指定目录下,这里不再赘述。
[0083]在执行步骤43后,流程结束。
[0084]步骤44:直接将预先生成的userdata.1mg加载到手机的指定目录下。
[0085]具体实现时,本发明实施例可以将预先生成的userdata.1mg按照现有技术提供的方法加载到手机的指定目录下,这里不再赘述。
[0086]在执行步骤44后,流程结束。
[0087]这样,本发明实施例通过上述步骤,系统可以成功针对不同容量的存储器进行无损扩容,本发明实施例中的无损扩容,可以是指保留userdata.1mg中所预置的内容不会丢失,而且userdata分区大小也自动适配到手机的存储空间容量。
[0088]从上述技术方案可以看出,本发明实施例可以预先生成一个较小且适用于各种终端的用户数据镜像(userdata.1mg),并在终端初始化时,先将系统镜像(system, img)根文件镜像和系统镜像(ramdisk.1mg)等非用户数据镜像加载到终端的指定目录下后,根据终端的当前剩余存储空间,自动的将预先生成的、较小的用户数据镜像进行无损扩容,以保证扩容后的用户数据镜像包含有预先生成的用户数据镜像中所包含的全部数据,因此扩容后的用户数据镜像虽然在容量上能够与终端的剩余容量匹配、但却不会损失任何用户数据,可以为各类终端预置本发明实施例提供的用户数据镜像,并根据终端的本地存储空间容量,自动的进行用户数据镜像无损扩容,从而不需要为不同容量的终端分别编译各种版本的用户数据镜像,进而简化了开发复杂度、节省了开发及维护资源。
[0089]基于相同的技术构思,本发明实施例还提供了一种安卓系统中的用户数据镜像的加载装置,图5示出了本发明实施例提供的一种安卓系统中的用户数据镜像的加载装置的结构示意图,如图5所示,该装置包括:
[0090]获取单元51,用于获取预先生成的分区表、用户数据镜像和非用户数据镜像;所述非用户数据镜像至少包括系统镜像和根文件镜像;
[0091]非用户数据镜像加载单元52,用于根据所述分区表将所述非用户数据镜像分别加载到所述终端的指定目录下;
[0092]计算单元53,用于根据所述终端可用存储空间的总容量和加载所述非用户数据镜像所占用的存储空间容量,计算所述终端的剩余容量;
[0093]修改单元54,用于根据所述剩余容量则将所述分区表中预设的用户数据分区容量修改为与所述剩余容量相同的大小;
[0094]扩容及加载单元55,用于将所述预先生成的用户数据镜像的大小扩容到与修改后的分区表中的用户数据分区容量相同的大小,并根据所述修改后的分区表将扩容后的用户数据镜像加载到所述终端的指定目录下;
[0095]其中,扩容后的用户数据镜像与所述预先生成的用户数据镜像中包含有相同的用户数据。
[0096]基于相同的技术构思,本发明实施例还提供了一种终端,该装置包括一种安卓系统中的用户数据镜像
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1