android分区 - jues
获取函数的真实地址

android分区

jues posted @ 2013年5月13日 18:22 in 笔记(原创) with tags 分区 android分区 /data分区 sky a820l a820l , 21288 阅读

   很多朋友们说android默认的安装储存空间太小,安装不了几个就满了(当然你可以安装在SD卡),对于分区的方式有各种各样,这里介绍的是从手机内部储存的/mnt/sdcard分区,分出一些空间作为/data分区(安装储存空间)。

对linux熟悉的朋友们都知道,在linux可以用比较原始的fdisk 分区,不错,这里也是用这个方法;至于有的朋友说这和安装在SD卡上没区别,不必要,说真的,看到这句话真的些不想写这教程了,区别还是有的,具体了解下linux挂载工作原理和效率,简单来说,你在手机的终端里进行下 mount 就能知道你挂载了多少,你安装多一个软件在SD卡上就会多挂载一个块文件,挂载过来而且是vfat类的格式,当然比原来的ext4效率慢,想想用安装多少在SD卡上的软件。

发两张完成后的效果图:

 

具体思路: 为了简单,我的思路是不要原来/data分区(最好留着不动,以防以后刷别的rom时用得着,当然如果你稍改下rom也是可以的),然后把原来的/mnt/sdcard分区删除,然后分出一个新的比原来小的/mnt/sdcard分区,接着剩下的空间分为新的/data分区,最后修改boot.img ,改开机默认挂载新的/data分区。

 注意: 这教程如果你操作不当有开不了机的可能,所以最好是前提有一个能刷romconvery比较好,这样就算开不了机也可以刷rom,仅个人爱好,需要的尝试,注意操作,失败有风险。

教程应该是比较简单的,可能我写的比较多起来复杂而已.

  1.  首先注明:由于本人的手机已经成功分区过,所以下面的教程,关键部分是模拟的(还好fdisk支持模拟操作),本人的rom是2.3.5的,不同的版本rom可能有些不一样,自己灵活变通下就好了,记得备份好/mnt/sdcard上的数据。
  2. 首先打开手机的终端(这个随便,在手机用终端模拟器也行,最好能在reconvery模式下连接电脑打开终端。),我这里是正常开机的状态下连接电脑打开的终端(如电脑上没有adb.exe,可把”a820l_内核解包打包_rle文件修改工具2.zip”解压后打开”cmd.bat”)。

因为以下操作需要管理器权限,

输入 su 命令,然后回车

  1. 查看 /data分区和/mnt/sdcard分区的设备路径,然后自己记下来.

       输入命令 mount,然后回车

由于我这是分区过的,所以我这可能和你们的不太一样,我这里是(设备名我按照fdisk显示的格式写,其它你只记下后面的数字就好了,除非你操作的是外部SD卡进入分区):

/data的是/dev/block/mmcblk0p27    (原来我的是14)

/mnt/sdcard的是/dev/block/mmcblk0p26

 

 

  1. 输入命令 :fdisk /dev/ block /mmcblk0  ,然后回车

在Command (m for help): 后面里输入 p,回车,查看/dev/ block /mmcblk0的设备

  1. 找到/mnt/sdcard 也就是/dev/block/mmcblk0p26,然后删除它(如/mnt/sdcard有重要数据,请备份好,当然如果没有执行 w 操作fdisk不会改变你的分区).

           

       在 Command (m for help): 提示下输入 ‘d’ 回车 (进行删除操作)

在 Command (m for help): 提示下输入 ‘26’ 回车 (删除指定分区26)

在 Command (m for help): 提示下输入 ‘p’ 回车 (查看删除后的变化)

 

 

  1. 重新划分/mnt/sdcard 大小。

在 Command (m for help): 提示下输入 ‘n’ 回车 (进行新建分区操作)

在 First cylinder (6322-1923584, default 6322): 提示下输入 ‘290819’ 回车 (新建分区的起始位置,应该是26分区前面的分区(这是25)的结束位置+2).

在 Last cylinder or +size or +sizeM or +sizeK (290819-1923584, default 1923584): 提示下输入 ‘+9000M’ (这里可以用单位M,9000M大约为9G,想自己定的可以算好,是减去/data分区的大小)

 

  1. 新建立一个分区作为/data

      

      这里新建分区和 /mnt/sdcard类似,这里把所有剩下的空间都分给新建的分区作为/data   (   ( 1923584 – 1389454)/128 = 4172.8 M )

  1. 保存分区表。

 (请一定确认你保存在/mnt/sdcard的重要数据是备份好的)在 Command (m for help): 提示下输入 ‘wq’ 回车 (保存分区表信息,并退出fdisk),保存时可能提示错误,但没关系,实际已经成功了,然后重启下手机。

  1. 格式化新分区(事先应该用”fdisk -l /dev/block/mmcblk0”确认下是否分区成功)。

<1>格式化/mnt/sdcard ,这个可以不用命令行格式化,在手机设置中可以操作

<2>格式后新/data分区

这里我就不格式化了,如遇到提示输入的地方一路回车就可以了,很快就可以格式式完成。

  1. 恢复数据 。
  2. 把备份好的/mnt/sdcard 数据还原到/mnt/sdcard上。

<2> 挂载新/data分区临时挂载到/mnt/data,然后复制原来/data的数据(建议mount挂载后使用re复制).

  1.  修改 boot.img 中的init.rc文件,指向新的/data分区.

          解压 “a820l_内核解包打包_rle文件修改工具2.zip”

  • 运行 “a820l_内核解包打包_rle文件修改工具2” 中的 “1、解包内核.bat”.

<2> 修改” a820l_内核解包打包_rle文件修改工具2\boot\ramdisk\init.rc”文件.

   查找前面记下的 /data 分区的设备名. 我这里是 从14改为27. 修改好请保存。

  • 运行 “a820l_内核解包打包_rle文件修改工具2” 中的 “2、重新打包内核.bat”.

 

<4> 最后运行 “3、写入内核.bat” 。

<6> 重启手机测试是否成功。

 

     writer:   jues

     email :    jue_s@live.cn

     home  :    http://jues.i11r.com/

     date  :    2013-05-13

 

      转换请注明出外(盗者必究): http://jues.is-programmer.com/posts/39225.html

dsa452632002 说:
2013年7月26日 03:27

您好,我最近也在嘗試這個方法,可否請您發份a820l_内核解包打包_rle文件修改工具2.zip文件給我 謝謝
目前我已經切完分區,且複製完成,就差boot.img的unpack/repack的工具就可以完成了
安智論壇那邊 我上不去 目前我已經搜尋很久了 沒有找到相關的資源

還請幫幫忙,謝謝 :)

Avatar_small
dsa452632002 说:
2013年7月26日 04:40

忘了做e-mail標記 上面留言是我留的


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter