一、必要工具和條件php
分區軟件、讀卡器、 官方boot.img 、boot解包打包工具、手機裝了第三方recoverynode
二、原理android
實現原理就是把sd卡分紅4個區:1個正常存取文件區和3個系統區同樣格式的區。sd卡上的system區裏放了系統正常工做所需的文件,修改了內核啓動掛載區,讓內核啓動sd卡上的system區和cache區,從而達到雙系統的目的!web
注意:把系統裝在sd上並不影響sd卡的正常使用。若是要用手機上的系統,就用rec或者超級終端刷下原來的內核。本教程不會導制手機變磚,請放心嘗試!編輯器
三、分區掛載腳本的解釋及識別工具
dev/block/mmcblk1p2/sd2ext(分區名稱)測試
0p2和1p2的區別:0表示機身內存/1表示外置內存/p是區塊/2表示內存第2分區,好比你的sd卡第1分區是可移動磁盤(Fat32),第2分區是sd2ext(ext3), 那 dev/block/mmcblk1p2/sd2ext 就是掛載sd卡里的第2分區sd2ext區。動畫
四、操做流程ui
(1)內存卡分區spa
先把內存卡分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