安卓手机双系统安装教程.pdf
《安卓手机双系统安装教程.pdf》由会员分享,可在线阅读,更多相关《安卓手机双系统安装教程.pdf(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 1 页 共 35 页 DHDDHD 双启动教程双启动教程SDSD 卡卡分区方法分区方法 v2.0 by 囧 Crayon 囧 转载请注明:引用自 http:/ 1-1.html1.html 版本修订.1 前言.2 一、原理和优缺点.2 二、给 SD 卡分区.3 1.备份当前 SD 卡数据,推荐 Ghost.3 2.开始分区.6 3.格式化为 Ext4 分区.11 4.恢复 SD 卡数据.15 三、修改 ROM 和内核.18 1.安装 HTC Android 厨房工具.18 2.修改内核 boot.img.19 3.修改 ROM 刷机脚本.23 4.替换修改,签名 ROM.24 四、快速系统
2、切换.26 1.flash_image 命令刷写 boot.26 2.boot 分区和 recovery 分区双启动.28 五、进阶:真正的双启动内核(仅供测试,当前存在问题).28 1.用厨房工具解包双启动内核.30 2.替换 zImage 和 ramdisk.30 3.制作双启动内核刷机包.32 总结.35 版本修订版本修订 说明:最近一版的重要修改内容将加粗显示 历史历史 性质性质 修订内容修订内容 2011-10-04 v2.0【严重】修正“三.2”节中修改 init.spade.rc 的设备名称顺序 【一般】修改“二.2”节中给 SD 卡分区时的时间描述和补充建议 【修订】目录增加第
3、二章遗漏的“3.格式化为 Ext4 分区”;其他一些小的修改 【补充】“总结”部分 2011-10-03 v1.0 初稿 第 2 页 共 35 页 前言前言 十分抱歉!十一前预告了多启动教程,但现在仅能实现双启动。这种方式不能实现多于两个系统的启动,原因在于一个磁盘(SD 卡)最多只能有 4 个主分区,而系统不认 SD 卡的扩展分区,也就无法为更多系统建立分区。很是遗憾。该教程需要你了解大量有关 Android/Linux 的知识,比如内核启动方式,挂载点,Linux设备名称,刷机脚本编写等等。对于新手会很困难,但我的教程一般都比较详尽,慢慢体会自然会理解其中深意。希望各位能够靠自己动手来解决
4、各种难题,必定从中受益匪浅。声明:教程的有关操作中非常可能对手机数据造成损坏,如若发生意外,本人不对此负任何责任,请各位自己多加小心,令手机变砖的可能性是很低的。一、一、原理原理和优缺点和优缺点 系统的启动是由内核中的 ramdisk 完成,而内核启动过程中由挂载点决定系统/用户/缓存数据的存放位置,因此通过修改挂载点,让它们指向手机内置存储(NAND)或者 SD 卡上的system/data/cache 分区,就可以实现双系统独立启动。另外有款 BootManager 软件,是通过在 SD 卡上建立镜像文件虚拟 system/data/cache 磁盘分区,启动时挂载这些虚拟磁盘,同样达到多
5、启动的目的,而且这种方式可以实现任意多个系统独立启动,只要 SD 卡空间足够。由于研究得不够,还不清楚如何手动来建立、格式化镜像文件、以及如何通过 Recovery 刷入到镜像文件中,感觉这种方式不是很方便,而且由于而且由于镜像文件在镜像文件在 SDSD 卡的卡的 Fat32Fat32 分区上需要一直被使用,可能造成分区上需要一直被使用,可能造成 SDSD 卡无法从系统中卸载卡无法从系统中卸载,也就,也就无法打开无法打开 USBUSB 存储挂载到电脑上(但单独建立一个存放镜像文件的分区应该可以解决这个问存储挂载到电脑上(但单独建立一个存放镜像文件的分区应该可以解决这个问题)题)。BootMan
6、ager 本身的成功率很低,相信通过手动方式能将成功率提高,这还有待研究。SDSD 卡真实分区卡真实分区的方法不的方法不会影响会影响 Fat32Fat32 分区的装载和卸载,这跟分区的装载和卸载,这跟 app2sd+app2sd+的道理是一样的,的道理是一样的,系统只装载系统只装载 SDSD 卡的上第一个卡的上第一个 Fat32Fat32 分区,卸载也是卸载这个分区,不会受到其他分区的影响。分区,卸载也是卸载这个分区,不会受到其他分区的影响。Ext4 分区的建立、格式化、刷写都很方便,通过刷机脚本可以直接刷写到 SD 卡的真实分区上,而且启动成功率特别高。因此,当前更喜欢这种方式。另外,启动S
7、D卡中的系统时要有耐心,第一次启动会在第二屏等待很长时间,尤其是SENSE系统,如果第一屏就过不去,那就有问题了如果第一屏就过不去,那就有问题了。在 SD 卡上,CM 的用户体验明显比 SENSE 的好。下面就开始讲解如何实现双启动。第 3 页 共 35 页 二、二、给给 SDSD 卡卡分区分区 很多分区软件都能做到不丢失数据的前提下调整分区大小、添加新分区,但保险起见,还是备份下 SD 卡上的数据吧。1.1.备份当前备份当前 SDSD 卡数据,推荐卡数据,推荐 GhostGhost (1)下载 Symantec Ghost v11 绿色软件:http:/ Recovery,选择“toggle
8、 usb storage”(打开 USB 存储,输出到电脑,我用的是 4EXTRecovery v2.1.0 Final,CWM 的好久没用过了,不太清楚是否有此项,应该有的吧)(3)运行 Ghost(32 位系统运行 Ghost32.exe,64 位系统运行 Ghost64.exe)选择 Local Partition To Image(从分区生成镜像,恢复的时候选择 From Image):这一步是选择哪个磁盘,这里选择 HTC Android Phone,即 USB 存储,选中它然后点 OK:第 4 页 共 35 页 然后选择哪个分区,这里只有一个 Fat32 分区,选中它然后点 OK:
9、选择 Ghost 镜像的保存位置和文件名称,点击 Save:第 5 页 共 35 页 弹出询问是否压缩镜像文件,随便选哪个(No不压缩,Fast快速压缩,High高压缩):第 6 页 共 35 页 又询问是否开始创建分区镜像,当然选 Yes:等待结束,点 Quit 退出程序。2.2.开始开始分区分区 (1)下载分区软件 分区软件很多,我用的是 Paragon Partition Manager v9.0 汉化绿色版,因为可以用在Win7 上,下载地址:http:/ 用户推荐经典的 Norton PartitionMagic:http:/ 系统除 bootf 分区(内核所在)外至少还需要 cac
10、he、data、system 三个 Ext4 分区。SENSE 系统的 system 分区要求较大,因为官方集成的东西太多了,可以根据你要刷的 ROM设置分区大小(zip 包解压后的大小,而不是 zip 包本身的大小),推荐分区大小如下(为保证能装下各种 ROM,推荐按照 SENSE 系统的来分区):SENSE 系统:cache 分区按照手机内置 cache 的大小 300MB 左右,data 分区视要安装的软件多少分个 500MB2GB,system 分区按照手机内置 system 的大小 550MB 左右;非 SENSE 系统(CM、MIUI 等):cache 分区按照手机内置 cache
11、 的大小 300MB 左右,第 7 页 共 35 页 data 分区视要安装的软件多少分个 500MB2GB,system 分区 200MB 足够,但不用太吝啬,分个 300MB 吧。分区顺序推荐为 fat32、cache、data、system,fat32 一定放在最前,cache、data、system的顺序可以自己定,但要用我提供的 ROM 和内核的就一定要按照这个顺序。这样还有一个好处是,如果你也用 4EXTRecovery,它能识别 fat32 后的两个 Ext4 分区(第三个不行)为 sd-ext和 sd-ext2,然后可以通过该 Recovery 直接对这两个分区做擦除(wipe
12、)、格式化(format)或转换成 Ext3/Ext4(convert)等操作。system 放在最后,而不放在前面从而可对 system操作的原因是每次刷 ROM 的刷机脚本都会自动对 system 格式化,没必要手动。(3)下面,我以 MIUI(手机内存)+SENSE(SD 卡)双系统为例,讲解分区过程。SD 卡分区目标:其余空间 Fat32,300MB Ext4 作为 SENSE 的 cache 分区、500MB Ext4 作为 SENSE 的 data 分区(你可以根据自己的情况自由设定)、550MB Ext4 作为 SENSE 的 system分区。因此,除 Fat32,3 个 Ex
13、t4 分区共需要大约 1.35GB。那么,首先调整 Fat32 分区大小,使 SD 卡剩余 1.35GB 自由空间。(当前依然在 4EXTRecovery 下,并“toggle usb storage”)运 行 分 区 软 件(Paragon Partition Manager 是 运 行 安 装 目 录 program 下 的launcher.exe)。点击手机在电脑上的逻辑磁盘,选择分区菜单中的“移动/调整分区大小.”,或者右键点击逻辑分区,选择右键菜单中的相同选项。第 8 页 共 35 页 弹出的对话框中,用鼠标向左拖动 Fat32 分区右侧的边缘,使右侧留出一定的自由空间,然后点击 F
14、ree space after 输入框右侧的上下箭头,调整该值的大小为 1350 MB 左右(一般多点),注意保持 Free space before 中的值为 0 Bytes。点击“是”。回到主窗口,在多出来的未分配空间(Unallocated)上点击右键,选择“创建分区.”。第 9 页 共 35 页 按照顺序,先建立 SENSE 的 cache 分区。选择创建新分区为“主分区”(必须为主分区,以后也都是,否则系统无法识别 SD 卡,这应该算 Android 的一个 Bug),“指定新分区大小”300MB 左右,“为新分区选择文件系统”中选择“Not formatted”(不格式化),点击“
15、是”确定。这里不格式化的原因是该软件不支持 Ext4 格式,只支持到 Ext3,这里选择 Ext3 没有意义,只会浪费格式化的时间。那么怎么才能格式化成 Ext4 呢?一会我会讲到通过 adb shell运行 Recovery 下的命令来格式化。第 10 页 共 35 页 同样方法,依次创建 500MB 未格式化分区作为 SENSE 的 data 分区和 550MB 未格式化分区作为 SENSE 的 system 分区。然后,点击工具栏中的绿色勾,弹出询问对话框中点击 Yes 确定,来应用这些改变。一般,分区软件为保证不丢失一般,分区软件为保证不丢失 SDSD 卡上的数据,会先将卡上的数据,会
16、先将 SDSD 卡最后部卡最后部分分上的数据移动到前上的数据移动到前面来,从而留出空白区域来建立新分区,所以移动数据的过程时间会比较长。所以,我建议面来,从而留出空白区域来建立新分区,所以移动数据的过程时间会比较长。所以,我建议另一种方法是:前面备份另一种方法是:前面备份 SDSD 卡数据后,删除所有卡数据后,删除所有 SDSD 卡上的分区,重新分区,再卡上的分区,重新分区,再按照按照第第 4 4 小小节恢复节恢复 SDSD 卡数据到第一个卡数据到第一个 Fat32Fat32 分区上。分区上。(v2.0 2011v2.0 2011-1010-0404)第 11 页 共 35 页 3.3.格式化
17、为格式化为 Ext4Ext4 分区分区 首先重启 Recovery,让 Recovery 重新识别分区后的 SD 卡:手机从“toggle usb storage”退出,选择“power menu”中的“Reboot Recovery”;如果你用的不是 4EXTRecovery,重启Recovery 的简单方法是在电脑上运行 adb 命令“adb reboot recovery”,已经在 adb shell下的,运行“reboot recovery”。重启进入Recovery后,如果你用的是4EXTRecovery,那么你可以进入“EXT3 4EXT EXT4”选项中选择“wipe|forma
18、t -EXT4”,再依次选择“format SD-EXT”和“format SD-EXT2”分别对应格式化 SENSE 的 cache 和 data 分区。如果你用的不是 4EXTRecovery,没关系,我们可以通过 adb shell 远程执行手机上的命令。手机通过 USB 连接电脑,打开 Windows 命令行,进入到 adb 命令所在的目录,运行“adb shell”,出现“#”则正常进入了手机的终端:第 12 页 共 35 页 我们先运行“ls/sbin”,看看 Recovery 系统提供了我们哪些命令:第 13 页 共 35 页 其中对我们格式化分区有用的是 mke2fs、mkfs
19、.ext2 和 mkfs.ext4,显然 mkfs.ext4 正是我们需要的(你可能还有 mkfs 命令,也可以用来建立 Ext4 分区,请自行 Google 其用法)。使用 mkfs.ext4 命令需要后面指定设备名称(还可指定区块大小,请自定 Google 其用法)。什么是设备名称?额。自己 Google 吧,这里只说明 SD 卡和手机内置存储(NAND)之间设备名称的区别。SD 卡和手机内置存储都属于块设备(Block Device),让我们先看下系统中有哪些块设备,在 adb shell 中运行“ls/dev/block”:其中以 loop 开头的是用于挂载镜像文件的设备(以后研究的挂
20、载镜像文件的多启动方式就靠它们),以 mmcblk0 开头的是手机内置存储的各个分区,包括 boot 分区(mmcblk0p22)、system 分区(mmcblk0p25)、cache 分区(mmcblk0p27)、data 分区(mmcblk0p26)、Recovery分区(mmcblk0p21)等等,我们不要乱动其他敏感分区,比如 HBoot 分区(mmcblk0p18),否则有变砖的危险。下面是一份完整的“Desire HD 内部存储分区”表:1.Desire HD 内部存储分布 2.mmcblk0 -内置 2G eMMC 存储模块 3.mmcblk0p1 -qcsbl_cfg 500
21、KB(0 x7D000)(1000block)4.mmcblk0p2 -qcsbl(All is 0)64KB(0 x10000)(128block)5.mmcblk0p3 -osbl 4500KB(0 x465000)(9000block)6.mmcblk0p4 -eMMC 扩展分区表 1KB(0 x400)(2block)7.-8.以下属于扩展分区:9.mmcblk0p5 -modem(ELF for ARM)30000KB(0 x1D4C000)(60000block)10.mmcblk0p6 -adsp 12500KB(0 xC35000)(25000block)11.mmcblk0p
22、7 -htc 2MB(0 x200000)(4096block)12.mmcblk0p8 -rf_nv(All is 0)3MB(0 x300000)(6144block)13.mmcblk0p9 -nv_mfg(All is 0)2MB(0 x200000)(4096block)14.mmcblk0p10 -cdma_user_data(All is 0)1MB(0 x100000)(2048block)15.mmcblk0p11 -rf_delta(All is 0)1MB(0 x100000)(2048block)16.mmcblk0p12 -reserved(All is 0)8751
23、.5KB(0 x88BE00)(17503block)17.mmcblk0p13 -modem_fs1 3MB(0 x300000)(6144block)18.mmcblk0p14 -modem_fs2 3MB(0 x300000)(6144block)第 14 页 共 35 页 19.mmcblk0p15 -htc_data(All is 0)1MB(0 x100000)(2048block)20.mmcblk0p16 -htc_reserved(All is 0)8957.5KB(0 x8BF600)(17915block)21.mmcblk0p17 -misc 256KB(0 x4000
24、0)(512block)22.mmcblk0p18 -appsbl(Hboot)1MB(0 x100000)(2048block)23.mmcblk0p19 -splash 1MB(0 x100000)(2048block)24.mmcblk0p20 -wifi 1280KB(0 x140000)(2560block)25.mmcblk0p21 -recovery 8701KB(0 x87F400)(17402block)26.mmcblk0p22 -apps(boot)4MB(0 x400000)(8192block)27.mmcblk0p23 -mfg 256KB(0 x40000)(51
25、2block)28.mmcblk0p24 -splash2 2047KB(0 x1FFC00)(4094block)29.mmcblk0p25 -system(ext3)571391.5KB(0 x22DFFE00)(1142783block)-约558MB 30.mmcblk0p26 -data(ext3)1203199.5KB(0 x496FFE00)(2406399block)-约1175MB 31.mmcblk0p27 -cache(ext3)307199.5KB(0 x12BFFE00)(614399block)-约 300MB 32.mmcblk0p28 -devlog(ext3)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 手机 双系统 安装 教程
限制150内