安卓手机双系统安装教程.pdf

上传人:asd****56 文档编号:70322062 上传时间:2023-01-19 格式:PDF 页数:35 大小:2.33MB
返回 下载 相关 举报
安卓手机双系统安装教程.pdf_第1页
第1页 / 共35页
安卓手机双系统安装教程.pdf_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《安卓手机双系统安装教程.pdf》由会员分享,可在线阅读,更多相关《安卓手机双系统安装教程.pdf(35页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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)

26、21247.5KB(0 x14BFE00)(42495block)-约 20.75MB 33.mmcblk0p29 -All is 0 256KB(0 x40000)(512block)mmcblk0 后面的“p”表示分区(partition),“p”后面的数字表示分区号,它们是从 1开始、按照分区的顺序排列的。不带“p*”的“mmcblk0”表示整个内置存储设备。mmcblk1 则是我们的 SD 卡,不带“p*”的“mmcblk1”即表示整个 SD 卡设备。由于我们分了 4 个主分区,因此我们有 mmcblk1p1 到 mmcblk1p4,共四个设备,分区对应 Fat32、Ext4的 cac

27、he、Ext4 的 data、Ext4 的 system。(另外,需要注意的是 MBR 分区表的磁盘设备最多有 4 个主分区,要建立更多分区就必须建立扩展分区,在扩展分区里建立多个逻辑分区,但建立扩展分区要占用一个主分区的位置,也就是说我们的磁盘最多可以分成 4 个主分区或者 3个主分区加 1 个扩展分区,也可不建立主分区只有一个扩展分区。还有扩展分区的设备号一定从 5 开始,无论有没有主分区。)mmcblk1p2mmcblk1p4 即是我们要格式化的 Ext4 分区设备名称。我们依次格式化它们,运行命令“mkfs.ext4/dev/block/mmcblk1p2”、“mkfs.ext4/de

28、v/block/mmcblk1p3”和“mkfs.ext4/dev/block/mmcblk1p4”(cache 和 system 可以不在这里格式化,可以把它们的格式化放到 ROM 的刷机脚本“updater-script”中,后面会讲到)。第 15 页 共 35 页 4 4.恢复恢复 SDSD 卡数据卡数据 如果分区过程中造成 SD 卡数据丢失,不怕,用 Ghost 很容易就能恢复,而且不影响分好的 Ext4 分区。(1)运行 Ghost,选择 Local Partition From Image:第 16 页 共 35 页 (2)选择前面保存的 GHO 镜像文件:(3)选择 Ghost

29、镜像文件中的分区源,这里这有一个,因为前面备份的分区只有一个:第 17 页 共 35 页 (4)然后选择目标磁盘,即 HTC Android Phone:(5)最后选择目标分区,即第一个 Fat32 分区:第 18 页 共 35 页 OK,Yes,开始恢复。三、三、修改修改 ROMROM 和内核和内核 正常的 ROM 都是刷到手机内置存储,启动也是启动的内置存储中的系统。那么如何能够将 ROM 刷到 SD 卡的 system 分区上,并且启动进入该分区的系统呢?这就需要我们修改内核和 ROM 的刷机脚本。我们以“【舒海】9 月 8 日 HTC Desire-HD 2.3.5(Gingerbre

30、ad)3.06.405.1 Sense3.0 炫丽 3D S13”SENSE 系统为例,看如何修改 ROM 和内核。HTC_Desire-HD_S13_ShuHai_20110907.zip 下载地址:http:/ HTC AndroidHTC Android 厨房工具厨房工具 我们要将内核 boot.img 解包、修改、再重新打包,需要 HTC Android 厨房工具,厨房工具需要运行于 Cygwin 环境,Cygwin 又依赖于 Java。安智论坛提供了完整的下载、安装、配置教程:HTC Android Kitchen 0.173 汉化版(2011.08.09 更新,最新版有 0.179

31、)第 19 页 共 35 页 http:/ 如何在 Windows 环境下也能使用 GoAPK 安智网 ROM 组专用定制工具 http:/ 2 2.修改内核修改内核 boot.imgboot.img (1)首先建立工作目录:在厨房所在目录下新建文件夹“WORKING_SHUHAI”(只要以“WORKING_”开头就可以),再在该工作目录下新建 system 文件夹(必须)。(2)将 HTC_Desire-HD_S13_ShuHai_20110907.zip 中的 boot.img 解压到工具目录下:(3)运行厨房,选择“0-高级定制选项”“20-boot image 工具(解压/re-pac

32、k/etc.)”“w=提取工作目录中 boot.img 的 kernel+ramdisk”,点击回车:再点击回车。在厨房所在目录下新生成了“BOOT-EXTRACTED”文件夹,该文件夹下有 zImage文件和 boot.img-ramdisk 文件夹,两个重要的内核镜像组成部分:第 20 页 共 35 页 zImage 是经过压缩的内核镜像,内核用于控制任务调度、控制硬件、控制文件系统等等。ramdisk 中包含一些对于启动 android 的很重要的文件,比如内核启动完后加载的第一个进程init、一些重要的配置文件等,总之它控制着整个 android 的启动。根据 init.rc、init

33、.spade.rc、init.goldfish.rc 来初始化并装载系统库、程序等直到开机完成。(4)修改 init.spade.rc 内核如何知道系统文件、用户数据、cache 放在哪里,这些东西并不是一开始就在 system、data、cache 目录下,这实际上是由 init.spade.rc 将这些设备挂载到对应的目录下。我们用 UltraEdit 或者 NotePad+之类的软件打开 init.spade.rc 文件(不要用 Windows的记事本),打开时不要转换为 DOS 格式:第 21 页 共 35 页 下面这些语句就是用于挂载 system、data、cache 的:devw

34、ait emmcsystem mount ext4 emmcsystem/system ro noatime nodiratime devwait emmcuserdata mount ext4 emmcuserdata/data noatime nodiratime nosuid nodev noauto_da_alloc devwait emmccache mount ext4 emmccache/cache noatime nodiratime nosuid nodev noauto_da_alloc devwait emmcdevlog mount ext4 emmcdevlog/de

35、vlog noatime nodiratime nosuid nodev noauto_da_alloc 通常这些语句写成:mount ext4/dev/block/mmcblk0p25/system wait ro barrier=1 mount ext4/dev/block/mmcblk0p26/data wait noatime nosuid nodev barrier=1 noauto_da_alloc mount ext4/dev/block/mmcblk0p27/cache wait noatime nosuid nodev barrier=1 mount ext4/dev/blo

36、ck/mmcblk0p28/devlog wait noatime nosuid nodev barrier=1 emmcsystem 等价于/dev/block/mmcblk0p25,emmcuserdata 和/dev/block/mmcblk0p26同义,emmccache 与/dev/block/mmcblk0p27 等同,emmcdevlog 跟/dev/block/mmcblk0p28第 22 页 共 35 页 一致。这与前面的内部存储分区完全一致。我们将这些语句修改为,使之挂载到 SD 卡的对应分区上(没有单独的 devlog 分区,只要将 cache 分区挂载到 devlog

37、目录上就可以了):(v2.0 2011v2.0 2011-1010-0404)mount ext4/dev/block/mmcblk1pmmcblk1p4 4/system wait ro barrier=1 mount ext4/dev/block/mmcblk1pmmcblk1p3 3/data wait noatime nosuid nodev barrier=1 noauto_da_alloc mount ext4/dev/block/mmcblk1pmmcblk1p2 2/cache wait noatime nosuid nodev barrier=1 mount ext4/dev

38、/block/mmcblk1pmmcblk1p2 2/devlog wait noatime nosuid nodev barrier=1/dev/block/mmcblk1p4、/dev/block/mmcblk1p3、/dev/block/mmcblk1p2 分别与 system、data、cache 对应。这样,系统启动时,内核不再从 NAND 的这几个分区中读取数据,而是从SD 卡中读取,也就能够启动到 SD 卡上的系统了。方法就是替换 NAND 分区的设备名称为 SD 卡上对应分区的设备名称。注意:ramdisk 的其他文件中应该不会再有 mmcblk0p25mmcblk0p27,否

39、则都将其替换为 mmcblk1p4mmcblk1p2,保险起见可以搜索整个文件夹。(5)改好 init.spade.rc 后就可以将内核重新打包了。厨房中选择“b=根据 BOOT-EXTRACTED 文件夹中的内容打包 boot.img(到工作目录中)”,点击回车:第 23 页 共 35 页 打包好后,再点一次回车。打包好的内核就保存在工作目录中,覆盖了原内核。3 3.修改修改 ROMROM 刷机脚本刷机脚本 目的是要将 ROM 包中的数据刷入至 SD 卡对应的分区上,而不是 NAND 的分区上。刷机过程由刷机脚本 updater-script 控制。因此,我们要修改该脚本。(1)打开 ROM

40、 包,将 META-INF 目录解压至工作目录 WORKING_SHUHAI 中。进入“WORKING_SHUHAIMETA-INFcomgoogleandroid”下,将“updater-script”文件拖拽进UltraEdit 或者 NotePad+,同样不要转换 DOS 格式。(2)如果文件开头没有以下几句卸载命令,则强烈建议加入,因为如果这些目录前面已经挂载了 NAND 分区,就无法挂载 SD 卡上的分区了,后面的操作变成了针对 NAND 分区,造成原有 NAND 分区上数据丢失。unmount(/data);unmount(/cache);unmount(/system);当前 R

41、OM 已经存在,无需再加入。但我们把#assert(unmount(/data)|ui_print(data is unmounted already);第 24 页 共 35 页 的“#”号去掉(“#”号表示注释,原文是“cache is unmounted already”有误)。将脚本中的 mmcblk0p25 全部替换 mmcblk1p4,mmcblk0p26 全部替换为 mmcblk1p3,mmcblk0p27 全部替换为 mmcblk1p2。搜索文件,确保除了 mmcblk0p22(boot 分区)不再含有其他 mmcblk0 字串。保存关闭。4.4.替换修改,签名替换修改,签名

42、ROMROM (1)将工作目录中改好的boot.img和META-INF目录拖拽入打开ROM包顶层目录的WinRAR窗口,完成替换(替换前最好先复制个 ROM 副本):第 25 页 共 35 页 (2)替换好的 ROM 还要经过签名,用 DoAPK 工具对 ROM 包签名最方便。DoAPK 下载:http:/ DoAPK,点击下面中间的“单独制作 ROM 及 APK 签名”按钮:点击“选择 APK 或者 ROM 文件”,选择刚刚替换好文件的 ROM,再点击“签名文件保存目录”,选择保存路径,再点击“制作签名”,等待签名完成。第 26 页 共 35 页 将 签 好 名 的“htc_de1_sig

43、ned.zip”重 命 名 为“HTC_Desire-HD_S13_ShuHai_ 20110907_SD.zip”就 OK 了。(制作好的 ROM 可以从此下载:http:/ ROM,再修改内核和刷机脚本,再通过厨房打包签名。四、四、快速快速系统切换系统切换 1.flash_image1.flash_image 命令刷写命令刷写 bootboot 刷正常的 ROM 启动 NAND 中的系统,刷前面修改的 ROM 启动 SD 卡中的系统。每次切换系统不可能重刷 ROM,但我们知道启动过程的区别只在于内核。如何能快速的切换内核呢?通过单独的内核刷机包,需要重启到 Recovery 再刷入,有点麻

44、烦。其实还有更方便的方法在系统中通过脚本工具箱运行 flash_image 命令刷写 boot 分区。(1)请下载 flash_scripts.zip 包(http:/ SD 卡根目录下。gscript 目录下为刷写切换内核的脚本,这些脚本会自动判断当前系统中是否存在 flash_image 命令,不存在的话则自动复制 bootimg 目录下的 flash_image 命令到系统 bin 目录下,并自动设置好权限,然后刷入想要的内核。bootimg 目录下除了第 27 页 共 35 页 flash_image 命令外还包括:boot_nand.img:启动 NAND 系统的 MIUI 1.9.

45、30 内核 boot_sd_cm.img:启动 SD 卡中 CM 系统的熊出没版内核(刷入前需重命名为boot_sd.img)boot_sd_shuhai.img:启动 SD 卡中 SENSE 系统的舒海 V13 内核(刷入前需重命名为boot_sd.img)boot_dualboot.img:基于 LorDMod UE v7.3 CFS 的双启动内核(第五部分讲述,仅供测试)recovery.img:4EXTRecovery v2.1.0 Final(2)安装并运行脚本工具箱(脚本工具箱打包在 flash_scripts.zip 中了),点击 menu,选择“添加脚本”,再点击“加载文件”,

46、选择“Flash Boot Nand Imag.sh”,点击“保存”。同样方法依次添加其余脚本。这些脚本的含义为:Flash Boot Nand Imag.sh:刷入启动 NAND 系统的内核 boot_nand.img Flash Boot SD Img.sh:刷入启动 SD 卡上系统的内核 boot_sd.img Flash Dual Boot Img.sh:刷入双启动内核 boot_dualboot.img Flash Boot SD Img to Recovery.sh:将启动 SD 卡上系统的内核 boot_sd.img 刷入到 recovery 分区(?!)Flash Back R

47、ecovery.sh:用 recovery.img,重新刷回 recovery 分区 第 28 页 共 35 页 (3)把要切换的内核放入 bootimg 目录下,并命名正确,点击对应的脚本,刷入该内核。重启即可。两个系统中都安装脚本工具箱,即可实现不通过 Recovery 的一步切换。2.boot2.boot 分区和分区和 recoveryrecovery 分区双启动分区双启动 内核能够刷入 recovery 分区?!是的,Recovery 实际上也是一个内核,只不过仅支持刷机的功能。recovery 分区和 boot分区同样具有可引导能力,而且启动方式除了用不用按音量减小键外,本质是一样的

48、。所以将内核刷入 recovery 分区,同样会触发内核的启动引导过程。把启动 NAND 系统和 SD 卡上的系统的内核分别刷入 boot 分区和 recovery 分区,我们就实现了双系统的自由切换。当我们需要 recovery 重新刷机时,只用通过脚本工具箱恢复 recovery 就好。还是很方便的。五、进阶:真正的双启动内核五、进阶:真正的双启动内核(仅(仅供测试,当前存在问题)供测试,当前存在问题)此内核来自于 XDA:http:/forum.xda- 下载 dualboot-1.0.zip:http:/ 第 29 页 共 35 页 该内核可以在启动过程中显示一个英文启动菜单画面,翻译

49、成中文为:按 Home 启动 NAND 中的非 SNESE 系统 按 Menu 启动 NAND 中的 SENSE 系统 按返回启动 SD 卡中的非 SENSE 系统 按搜索启动 SD 卡中的 SENSE 系统 选择其中一个即可启动进入对应的系统,而不需要我们再切换内核。这是该内核的好处。虽然有 4 个选项,但实际上我们只有手机内置存储和 SD 卡上的两个系统。分成 SENSE 和非 SENSE(包括 CM、MIUI 等)是因为它们的启动过程不同。通过解包该内核(双启动内核包中的 boot_nosensekernel.img 和 boot_sensekernel.img 任意一个都可以)、并查看

50、中的ramdisk,我们可以看到:其中文件夹 bootnanda、bootnandb、bootsda、bootsdb 中才是通常 SENSE 和非 SENSE 内核中的 ramdisk,bootnanda 和 bootsda 跟非 SENSE 内核的 ramdisk 结构一致,而 bootnanb第 30 页 共 35 页 和 bootsdb 跟 SENSE 内核的 ramdisk 结构一致,这恰好与四个启动选项顺序相同(你可以使用 Beyond Compare 来细细比较 bootnanda 和 bootsda、bootnandb 和 bootsdb 之间的不同)。我们必须要知道,虽然四个启

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁