Android eMMC Booting
Android eMMC Booting
Contents[hide] |
[edit]eMMC
binaries
This is the efi partition table as exists on the emmc
Sector# Size Name
256 128K xloader
512 256K bootloader
2048 8M recovery
18432 8M boot
34816 512M system
1083392 256M cache
1607680 512M userdata
2656256 2183M media
[edit]Creating
the GPT table
- On Target
- Connect a USB cable to the OTG port on your platform
- Boot your platform up with a stock u-boot and MLO
- Once you platform is booted you will see the following:
Fastboot entered...
- On Host Machine
locate fastboot in you android filesystem
cd $mydroid/out/host/linux-x86/bin/fastboot
Search for fastboot devices
fastboot devices
Create GPT table on eMMC/SD card
fastboot oem format
From the android build these are the binaries that go into each partition:
Sector# Size Name Binary
256 128K xloader MLO
512 256K bootloader u-boot.bin
2048 8M recovery recovery.img
18432 8M boot boot.img
34816 512M system system.img
1083392 256M cache cache.img
1607680 512M userdata userdata.img
2656256 2183M media none
- File locations
- MLO --> x-loader/MLO
- u-boot --> u-boot/u-boot.bin
- boot.img --> need to create using zImage + ramdisk.img
- recovery.img ---> need to create using zImage + ramdisk-recovery.img
- system.img --> $mydroid/out/target/product/<platform>/system.img
- cache.img -->
- userdata.img --> $mydroid/out/target/product/<platform>/userdata.img
All these partitions can be flashed with the given binary using fastboot.
fastboot flash <name> <binary>
Example flashing of all partitions
fastboot flash xloader MLO
fastboot flash bootloader u-boot.bin
fastboot flash recovery recovery.img
fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash cache cache.img
fastboot flash userdata userdata.img
[edit]Modifying
.IMG Files
Typically when you want to modify any of the partitions, you would need to unzip-modify-rezip and then fastboot flash.
Following section talks about how to do that for each partition
BOOT.IMG
boot.img = zImage + ramdisk.img
zImage = kernel image
ramdisk.img = out/target/product/blaze/root/
%./out/host/linux-x86/bin/mkbootimg
--kernel zImage
--ramdisk ramdisk.img
--base 0x80000000
--cmdline "console=ttyO2,115200n8 mem=456M@0x80000000 mem=512M@0xA0000000 init=/init vram=10M omapfb.vram=0:4M androidboot.console=ttyO2"
--board omap4
-o boot.img.new
Output: boot.img.new
**Note: bootarg is passed to kernel via --cmdline option above
To "just" boot boot.img (before flashing) you can use:
%fastboot boot boot.img
RAMDISK.IMG
%mkdir root
%cd root
%gunzip -c ../ramdisk.img | cpio -i
<make changes to root/ contents...>
%./out/host/linux-x86/bin/mkbootfs root/ | ./out/host/linux-x86/bin/minigzip >ramdisk.img.new
#output: ramdisk.img.new
** Note: any init.rc changes will need to use this method
RECOVERY.IMG
Is just like boot.img.
recovery.img = zImage + ramdisk-recovery.img
*Follow the same steps as boot.img for packing/unpacking
SYSTEM.IMG
#uncompress
%./out/host/linux-x86/bin/simg2img system.img system.img.raw
#mount to directory mnt-point/
%mkdir mnt-point
%sudo mount -t ext4 -o loop system.img.raw mnt-point/
#modify any .so or apk in the mnt-point/ directory
#rezip
%sudo out/host/linux-x86/bin/make_ext4fs -s -l 512M -a system system.img.new mnt-point/
%sudo umount mnt-point/
Output: system.img.new
Instead of having to reflash the whole big system.img, one can selective update any binary in /system folder on running target
%adb remount
%adb push <local> <remote>
Eg:
%adb remount
%adb push out/target/product/blaze/obj/lib/overlay.omap4.so /system/lib/hw/overlay.omap4.so
%adb sync
USERDATA.IMG
#uncompress
%./out/host/linux-x86/bin/simg2img userdata.img userdata.img.raw
#mount to directory mnt-point/
%mkdir mnt-point
%sudo mount -t ext4 -o loop userdata.img.raw mnt-point/
#modify any .so or apk in the mnt-point/ directory
#rezip
#%sudo ./out/host/linux-x86/bin/make_ext4fs -s -l 512M -a userdata userdata.img.new mnt-point/
# Above command won't work on GB/HC. For GB/HC, please use the following updated command
%sudo ./out/host/linux-x86/bin/make_ext4fs -s -l 512M -a data userdata.img.new mnt-point/
%sudo umount mnt-point/
Output: userdata.img.new
CACHE.IMG
#This is empty ext4 fs image
%mkdir mnt-point/
%sudo ./make_ext4fs -s -l 256M -a cache cache.img mnt-point/
Output: cache.img
[edit]TI
Android build setup
Copy kernel zImage, u-boot.bin and MLO for your board in folder device/ti/blaze/boot/.
Rename as:
%mv MLO MLO_es2.2_emu
or
%mv MLO MLO_es2.2_gp
(based on your board being GP or EMU)
Next start standard android build and all img files are generated in:
out/target/product/blaze/*.img
A script is introduced in TI Android release to make this flashing process easier: device/ti/blaze/boot/fastboot.sh
Usage:
cd device/ti/blaze/boot/
%fastboot.sh --emu
or
%fastboot.sh --gp
Running this script will flash whole android system on your board.
Android eMMC Booting的更多相关文章
- Android gingerbread eMMC booting
Android gingerbread eMMC booting This page is currently under construction. The content of this page ...
- AM335x Android eMMC mkmmc-android.sh hacking
# AM335x Android eMMC mkmmc-android.sh hacking # # . 有空解读一下android的分区文件. # . 代码来源:https://github.com ...
- 碎碎念android eMMC【转】
本文转载自:https://blog.csdn.net/Fybon/article/details/44242549 一./dev/blockroot@:/dev/block #ls bootdevi ...
- Android Service Summary
In the Androird, service is a none-UI background process that is doing some specific jobs. 6.1 Ex ...
- Android MMC/EMMC/MTD Partition Layout
Android devices have a couple of partitions to store different data. The common ones are the recover ...
- I.MX6 Android 5.1 回到 Android 4.2 emmc 启动
/*************************************************************************** * I.MX6 Android 5.1 回到 ...
- App doesn't auto-start an app when booting the device in Android
From Android 3.1, newly installed apps are always put into a "stopped" state and the only ...
- Android Bootloader LittleKernel的两篇文章 【转】
转自:http://blog.csdn.net/loongembedded/article/details/41747523 2014-12-05 14:37 3599人阅读 评论(2) 收藏 举报 ...
- Android系统启动过程-uBoot+Kernel+Android
摘要:本文是参考大量网上资源在结合自己查看源代码总结出来的,让自己同时也让大家加深对Android系统启动过程有一个更加深入的了解!再次强调,本文的大多数功劳应归功于那些原创者们,同时一些必要的参考链 ...
随机推荐
- 设计模式之工厂模式(Factory)
设计模式的工厂模式一共有三种:简单工厂模式,工厂模式,抽象工厂模式 简单工厂模式原理:只有一个工厂类,通过传参的形式确定所创建的产品对象种类 代码如下: #include <stdio.h> ...
- 【BZOJ】【2301】problem b
莫比乌斯反演/容斥原理 Orz PoPoQQQ PoPoQQQ莫比乌斯函数讲义第一题. for(i=1;i<=n;i=last+1){ last=min(n/(n/i),m/(m/i)); …… ...
- NYOJ-244 16进制的简单运算 AC 分类: NYOJ 2014-01-17 21:11 195人阅读 评论(0) 收藏
#include<stdio.h> int main() { long x,y; char op; int t; scanf("%d ", &t); while ...
- 第一个 bat 文件
要写一个批处理命令 转换场景数据 包括从文件里读入 每一行信息是一个要转换的场景名字 可以拼出路径 到指定路径 执行命令 http://blog.csdn.net/mfx1986/article/de ...
- mysql关联修改SQL及long与datetime类型相互转换
1.关联修改 #解决思路 UPDATE tb1,tb2 SET tb1.address=tb2.address WHERE tb1.name=tb2.name UPDATE car c,tmpcolo ...
- Jsp helloWorld
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEnco ...
- (转)約瑟夫問題的兩個O(log n)解法
約瑟夫問題的兩個O(log n)解法 這個是學習編程時的一個耳熟能詳的問題了: n個人(編號爲0,1,...,n-1)圍成一個圈子,從0號開始依次報數,每數到第m個人,這個人就得自殺, 之後從下個人開 ...
- git的安装使用和代码自动部署
1.安装 http://www.cnblogs.com/sunada2005/archive/2013/06/06/3121098.html http://www.cnblogs.com/zhcncn ...
- POJ 1978
#include <iostream> #define MAXN 55 using namespace std; int _m[MAXN]; int tem[MAXN]; void cop ...
- Activity学习(一)——状态转变
(转自:http://blog.csdn.net/flowingflying/article/details/6415323) Android很大的应用场景是手机,有一些应用具有特别的优先级别,例如电 ...