如何在Android手机上实现双系统

 

1、必要工具和条件

分区软件、读卡器、 官方boot.img 、boot解包打包工具、手机装了第三方recovery

2、原理

实现原理就是把sd卡分成4个区:1个正常存取文件区和3个系统区一样格式的区。sd卡上的system区里放了系统正常工作所需的文件,修改了内核启动挂载区,让内核启动sd卡上的system区和cache区,从而达到双系统的目的!

注意:把系统装在sd上并不影响sd卡的正常使用。如果要用手机上的系统,就用rec或者超级终端刷下原来的内核。本教程不会导制手机变砖,请放心尝试!

3、分区挂载脚本的解释及识别

dev/block/mmcblk1p2/sd2ext(分区名称)

0p2和1p2的区别:0表示机身内存/1表示外置内存/p是区块/2表示内存第2分区,比如你的sd卡第1分区是可移动磁盘(Fat32),第2分区是sd2ext(ext3), 那 dev/block/mmcblk1p2/sd2ext 就是挂载sd卡里的第2分区sd2ext区。

4、操作流程

(1)内存卡分区

先把内存卡分4个主分区:1个Fat32区,【内存卡】3个ext3或者ext4的区。注意:sd卡分区会格式化sd卡里的所有数据,分区前请备份sd卡里的重要数据。为了方便后面的教程分区顺序建议如下:可移动磁盘(Fat32)、sd2ext(ext3)、cache(ext3)、system(ext3)。根据上面的分区顺序,这4主分区的区号为:可移动磁盘_1p1 /sd2ext_1p2 /cache_1p3 /system_1p4

(2)修改内核启动时的挂载分区

内存卡分好这四个区之后,再就是修改内核启动时的挂载分区。先用boot.img解压打包工具把boot.img(内核)解包,然后用文本编辑器打开init.rc找到以下代码:

mount ext4 /dev/block/mmcblk0p12 /system wait ro

mount ext4 /dev/block/mmcblk0p13 /data wait noatime nosuid nodev nomblk_io_submit,errors=panic

mount ext4 /dev/block/mmcblk0p14 /cache wait noatime nosuid nodev nomblk_io_submit,errors=panic

上面这段启动挂载区为我手机的启动挂载区,请根据自己手机system区和data区cache区的挂载点改写。

把 mount ext4 /dev/block/mmcblk0p12 /system wait ro改为mount ext4 /dev/block/mmcblk1p4 /system wait ro

把 mount ext4 /dev/block/mmcblk0p13 /data wait noatime nosuid nodev改为 mount ext4 /dev/block/mmcblk0p14 /data wait noatime nosuid nodev

把 mount ext4 /dev/block/mmcblk0p14 /cache wait noatime nosuid nodev nomblk_io_submit,errors=panic改为 mount ext4 /dev/block/mmcblk1p3 /cache wait noatime nosuid nodev nomblk_io_submit,errors=panic

(3)内核打包

内核启动挂载分区改成内存卡的后,接下了就把修改好的内核打包。

(4)修改刷机脚本

接下来就是修改刷机包的刷机脚本了,也是修改挂载分区。

把 mount("ext4", "EMMC", "/dev/block/mmcblk0p12", "/system"); 改为 mount("ext4", "EMMC", "/dev/block/mmcblk1p4", "/system");

把 mount("ext4", "EMMC", "/dev/block/mmcblk0p13", "/data"); 改为 mount("ext4", "EMMC", "/dev/block/mmcblk0p14", "/data");

把 mount("ext4", "EMMC", "/dev/block/mmcblk0p14", "/cache"); 改为 mount("ext4", "EMMC", "/dev/block/mmcblk1p3", "/cache");

(5)最后一步

刷机脚本改好后,接下来就是把解包的ROM(刷机包)重新压缩成ZIP格式的ROM,然后用rec刷入测试。如果能到开机动画哪去就说明成功了!不过由于sd卡卡速原因第一次开机会必较慢点,请耐心等待直到正常启动。


好了,就讲到这里,祝你成功!

对android系统感兴趣的朋友推荐读读下面几篇文章:

    
Android系统启动流程解析
http://www.morecomtech.com/community/article/sjjc/w2015111001.php

     
Android ROM DIY之MTK平台手机通用移植

http://www.morecomtech.com/community/article/sjjc/w2015102800.php


 

你可能感兴趣的:(如何在Android手机上实现双系统)