手机存储容量与标称不符 剩余的空间跑哪了?

发表于 2016-8-10 17:42 | 浏览 3127

小张最近手机坏了,可对他来说却不是坏事儿“尼玛终于可以找个理由说服自己换个心仪的手机了”。可是换上新买的手机小张才发现,明明商家宣传的8G大小的存储空间,肿么到手后内存才6G多?而自己真正可用的内部存储才有不到5G空间...

顿时小张觉得难不成自个人被无良奸商所骗,还是其中另有隐情和蹊跷?小张于是乎立马上网搜索查找资料,直到看到了菲菲君的这篇科普帖方才恍然大悟。作为看客的你是否也碰到过跟张同学同样的疑惑呢?好,下面就让我们一起掀开脑洞,深入探索一下关于安卓内存背后的小秘密~

为了避免混淆和产生歧义,首先说明一下,以下我们探讨的手机内存,均指的是手机的内部存储(闪存)空间,也就是所谓通常所称的ROM(其实叫rom并不准确)。

那么标称总共8G大小内存的手机,为什么到手可用的才5G左右呢?有童鞋肯定会说,那还用说,肯定被手机系统占用了呗。的确,一部分存储空间确实被系统所占用,那究竟占用了多少?哪些部分被占用了?为什么要占用这么多空间?

其实之所以我们产生那么的不解,归根到底是对Android手机的内存分区不了解,加之长期使用Windows带给我们的思维惯性,确实很容易产生跟小张遇到的同样的困惑。因此只要搞懂了安卓的分区结构,之前的疑惑自然不解自通。

关于安卓的分区结构

Android系统分区跟电脑硬盘分区有很大不同,在安卓设备上,不但有看得见的分区,还有一些看不到的隐藏系统分区。对于使用联发科(MTK处理器)平台的手机来说,查看手机完整的系统分区灰常简单。三种方法任选其一:

  • 直接使用RE管理器,查看根目录下的proc文件夹下的dumchar_info文件
  • 也可以连接PC通过adb命令,执行 adb shell cat /proc/dumchar_info
  • 还能通过手机终端模拟器,执行 cat /proc/dumchar_info 命令即可(无需root权限)

如图,来看一下得到的分区信息,从左到右5列分别指的是分区名、分区大小(16进制)、起始地址(16进制)、分区类型、物理存储块。

mtk平台下,安卓设备完整分区信息

很清楚的可以看到,我们的手机除了可见的android分区(system)、cache分区(缓存)、usrdata分区(用户数据)之外,还有uboot、bootimg、recovery、nvram、logo等等很多不明的隐藏分区。

手机厂商通常标称的手机存储容量指的是整个闪存的空间大小(包括所有分区),而我们实际可以用到的可以感知的存储容量,仅仅指的是usrdata用户分区。正因为如此,于是便让很多跟小张一样不明觉厉的童鞋心生疑惑,

Tips:以上关于小张的事迹纯属虚构,如有雷同,那可能就是真事儿 ^_^

安卓分区与刷机的那点事儿

搞明白了关于Android分区,其实还可以让我们更容易理解刷机的意义。既然提到了,那咱们不妨顺便来继续小小科普一下。感兴趣的童鞋不妨继续往下看看咯~

刷机通常有两种方式,一种是卡刷、另一种叫做线刷。

通常我们所说的卡刷,其实就是利用手机自带的Recovery(恢复)模式,利用卡刷包内的刷机脚本来实现的。通常主要升级的是手机的system系统分区和boot内核引导分区。

而线刷则不同,线刷相对卡刷来说是一种更底层的刷机模式,如果你的手机进不了Recovery模式,或者卡刷不成功。则可以进入手机的Fastboot模式,通过数据线连接电脑来刷机。

之所以说线刷是更底层的刷机方法,是因为通过线刷入的是手机的各种分区的完整镜像img文件,而卡刷包只是一个内含刷机脚本的zip压缩包。线刷可以用来更新以上所有的闪存分区,包括替换Recovery,还能万不得已之际,手机变砖无法开机的时候用来救砖……

(原创文章版权所有,如需转载请注明原文链接!)