基于高通平台的Android系统分区管理
作者:蔡洁
来源:《硅谷》2014年第19
        本文以存储设备管理为出发点,从Android系统的分区管理展开讨论,阐述操作系统的引导方式、分区表的原理、类型、作用,并以开发实例说明产品分区模式,如何对分区进行扩展,以便更为有效的利用内部存储空间,提高存储设备的可用性和扩展性。
        关键词 Android;分区;高通
        中图分类号:TP316 文献标识码:A 文章编号:1671-7597201419-0044-03
        Android是一种基于Linux平台的自由及开放源代码的操作系统,是目前世界上最流行的移动终端操作系统之一,广泛用于手机、平板电脑等设备中。
        高通(Qualcomm)是一家美国的无线电通信技术研发公司,其一直致力于电信设备和消费电子设备的新技术研发,尤其是近年来其推出的高度集成的全合一移动处理器系列平台,覆盖入门级智能手机乃至高端智能手机、平板电脑以及下一代智能终端。特别是,高通的芯片
是首个能够兼容Android系统的,所以国内外众多手机品牌均采用高通作为其智能手机的主要芯片提供商。可以说,高通在智能手机行业的地位就相当于PC领域的芯片巨头因特尔。
        1 分区表综述
        众所周知,以Android平台设计开发的智能手机和平板电脑都有内部存储器,一般为SDIOandroid软件Secure Digital Input and Output Card)接口的EMMCEmbedded Multi Media Card)存储芯片,俗称闪存。根据不同产品的配置和需求,容量从4G128G不等。在使用时,闪存被分成多个区域,这个过程我们把它叫做分区。分区既可以让系统和用户分区相互隔离,也可以增强系统稳定性,有效利用、管理存储区域,就如同在图书馆的不同区域中查不同类型的书籍。在研究分区管理之前,必须了解分区表的概念。
        分区表是将大表的数据分成称为分区的许多小的子集。倘若磁盘丢失了分区表,数据就无法按顺序读取和写入,导致无法操作。对于分区的格式,目前大容量存储区有两种分区方式,即:BIOS和硬盘MBR分区、EFI和硬盘GPT分区。下面就对这两种分区表进行详细的说明。
        1.1 MBR分区表
        MBRMaster Boot Record),主引导记录,又叫做主引导扇区,是计算机开机后BIOS访问硬盘时所必须要读取的首个扇区,是一段512字节的引导代码,位于磁盘的第一个扇区,在硬盘上的位置为(柱面,磁头,扇区)=001)。包含三个部分:主引导程序、磁盘分区表和引导记录。
        因主引导记录在这个扇区中占了大部分空间,所以习惯将该扇区称为MBR扇区。主引导程序即主引导记录占446字节,它用于硬盘启动时将系统控制权转给用户指定的并在分区表中登记的某个操作系统。磁盘分区表占64字节,根据规定,每个分区表项占16个字节,所以最多可以描述、存放4个分区信息,这就是为什么MBR模式只能支持4个主分区的原因。
        主分区数目不能超过4个的限制,很多时候,4个主分区并不能满足需要。另外最关键的是MBR分区方案无法支持超过2TB容量的磁盘。因为这一方案用4个字节存储分区的总扇区数,最大能表示232次方的扇区个数,按每扇区512字节计算,每个分区最大不能超过2TB。磁盘容量超过2TB以后,分区的起始位置也就无法表示了。在硬盘容量迅速递增的今天,2TB的限制早已被突破。由此可见,MBR分区方案现在已经无法再满足需要了。因此在大容量硬盘和分区出现之后,MBR分区方式逐渐被GPT分区表取代。
        1.2 GPT分区表
        1.2.1 GPT说明
        GPTGUID Partition Table),全球唯一标识分区表,是一种由基于可扩展固件接口(EFI)使用的磁盘分区架构。它属于可扩展固件接口(EFI)标准中的一部分,用来替代主引导记录分区表。
        GPT使用逻辑区块地址(LBA)作为寻址方式,在GPT硬盘中,分区表的位置信息存储在GPT头中,但为了兼容MBR,硬盘的第一个扇区LBA 0仍然用作MBR,依旧保留了MBR的结构。GTP头存储于LBA 1,在GPT工作时,会优先读取GPTLBA 1)内容。接下来是分区表,从LBA 34开始是第一个数据分区的
        开始。
        1.2.2 GPT分区类型GUID
        GPT支持不同的操作系统,如WindowsMac OS、各主流的发行版UnixLinux操作系
统。GUID的作用是用不同的ID来标记不同的操作系统和分区类型,操作系统在启动时,根据GUID即可判断分区类型的合法性。
        操作
        系统 分区类型 GUID
        Linux 数据分区 EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
        RAID分区 A19D880F-05FC-4D3B-A006-743F0F84911E
        交换分区 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
        逻辑卷管理器(LVM)分区 E6D6D379-F507-44C2-A23C-238F2A3DF928
        保留 8DA63339-0007-60C0-C436-083AC8230908
        1.2.3 GPTMBR对比
        MBR分区模式相比,GPT有以下优点。
        1GPT允许每个磁盘高达128个分区,而MBR磁盘最多只有4个主分区,或者3个主分区加一个扩展分区。
        2GPT支持高达18千兆兆字节(EB)的卷大小,而MBR最大卷为2TB;(18EB= 19327352832GB)。
        3)允许将主磁盘分区表和备份磁盘分区表用于冗余。
        4)支持唯一的磁盘和分区IDGUID)。
        5)性能更加稳定。
        2 高通MSM86XX平台分区模式介绍
        近年来,Android作为一个新兴的操作系统,迅速的发展为一个生态圈,随着系统的普及,越来越多的电子产品使用此操作系统。在逐渐被人们熟知的同时,也有更多的芯片公司、产品公司、设计公司和方案公司对其进行研究、开发和扩展。分区的管理是普通消费类电子产品最基本和最重要的一项功能,它既要保证设备稳定工作,又要合理有效的使用存储设备,确保数据文件的正确性。
        Android是以Linux内核为基础的一套软件堆叠系统,所以Android系统的分区格式也使用Linux的分区格式。由于GPT也支持Linux操作系统,加上现在使用LinuxAndroid系统的嵌入式产品,都包含多个分区,例如:启动、内核、缓冲、系统、用户、恢复等分区,需要十几甚至二十多个分区。因为MBR只支持4个主分区,所以已经不能满足以上需求,必须使用GPT分区模式。下面就以现在主流的电子产品解决方案——高通平台,说明GPT分区在Android系统中的应用和开发过程。
        前面提到,手机、平板类电子产品都是用EMMC作为内部存储器,EMMC上的内容由系统镜像和用户数据文件组成,用户数据文件是用户在使用过程中创建的个人文件,而系统镜像是在产品出厂前,使用烧录软件下载到EMMC中,产品才能正常工作。每个平台的生产厂商都会提供一套这样的工具和配置文件,用于开发和生产阶段下载系统镜像,其作用类似于使用Win7系统安装光盘,在PC上安装操作系统。配置文件按照一定格式描述该产品的EMMC划分为多少个分区、分区的顺序、大小、格式等内容。高通平台也提供了平台开发软件包,称之为QPSTQualcomm Product Support Tool)。QPST就是通过配置文件的描述,来给内部存储器划分分区,并下载镜像。分区格式描述文件是l,分区镜像配置文件Boardconfig.mk。下面就详细叙述这两个文件的使用。
        2.1 分区格式描述文件l
        分区配置文件l用于指定分区名称、分区大小和类型,例如bootkernelcachesystemuserdatarecovery等,并用于生成GPT分区表,主要包含以下参数。
        参数名 参数说明
        WRITE_PROTECT_BOUNDARY_IN_KB 为防止分区的意外写入,分区之间保留一段隔离区域,称之为写保护区域。写保护区域的基准大小,在高通平台中默认设置为64M
        GROW_LAST_PARTITION_TO_FILL_DISK 此字段的作用类似于在Windows系统下给硬件进行分区时,最后一个分区默认使用剩余全部空间,此值为真时,最后一个分区的大小会自动调整为EMMC剩余所有空间大小,充分利用空间。如果为假,最后一个分区将按设定的大小去分配,并预留一部分空间不使用
        partition label 分区名字
        type 分区类型
        size_in_kb 分区大小
        bootable 是否可以引导
        readonly 是否为只读
        filename 分区对应的镜像名字
        sparse 烧录的镜像是否是展开的
        例如,在l文件中关于system分区的配置信息如下所示。
       
       
       
        WRITE_PROTECT_BOUNDARY_IN_KB=65536 GROW_LAST_PARTITION_TO_FILL_DISK=true
        该文件是system分区的配置文件,主要作用包括:
        WRITE_PROTECT_BOUNDARY_IN_KB= 65536 写保护区域的基准大小为64M,保证同一读写属性的分区64M对齐

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。