AM335x Android eMMC mkmmc-android.sh hacking

简介: # AM335x Android eMMC mkmmc-android.sh hacking # # 1. 有空解读一下android的分区文件。 # 2.
#                   AM335x Android eMMC mkmmc-android.sh hacking
#
# 1. 有空解读一下android的分区文件。
# 2. 代码来源:https://github.com/hendersa/bbbandroid-external-ti_android_utilities/blob/master/am335x/mk-mmc/mkmmc-android.sh
#
#                                          2016-9-8 深圳 南山平山村 曾剑锋


#!/bin/bash

# 如果参数只有一个,这里就会使用默认文件夹下的程序,mkmmc-android.sh会重新调用,执行完再退出
EXPECTED_ARGS=1
if [ $# == $EXPECTED_ARGS ]
then
    echo "Assuming Default Locations for Prebuilt Images"
    $0 $1 Boot_Images/MLO Boot_Images/u-boot.img Boot_Images/zImage Boot_Images/uEnv.txt Boot_Images/dtbs/am335x-boneblack.dtb Filesystem/rootfs* Media_Clips START_HERE
    exit
fi

# 六个参数,一个都不能少
if [[ -z $1 || -z $2 || -z $3 || -z $4 || -z $5 || -z $6 ]]
then
    echo "mkmmc-android Usage:"
    echo "  mkmmc-android <device> <MLO> <u-boot.img> <zImage> <uEnv.txt> <am335x-boneblack.dtb> <rootfs tar.bz2> <Optional Media_Clips> <Optional START_HERE folder>"
    echo "  Example: mkmmc-android /dev/sdc MLO u-boot.img zImage uEnv.txt am335x-boneblack.dtb rootfs.tar.bz2 Media_Clips START_HERE"
    exit
fi

# 判断文件是否存在
if ! [[ -e $2 ]]
then
    echo "Incorrect MLO location!"
    exit
fi

if ! [[ -e $3 ]]
then
    echo "Incorrect u-boot.img location!"
    exit
fi

if ! [[ -e $4 ]]
then
    echo "Incorrect zImage location!"
    exit
fi

if ! [[ -e $5 ]]
then
    echo "Incorrect uEnv.txt location!"
    exit
fi

if ! [[ -e $6 ]]
then
    echo "Incorrect am335x-boneblack.dtb!"
    exit
fi

if ! [[ -e $7 ]]
then
    echo "Incorrect rootfs location!"
    exit
fi

# 提示信息
echo "All data on "$1" now will be destroyed! Continue? [y/n]"
read ans
if ! [ $ans == 'y' ]
then
    exit
fi

# 卸载所有$1分区挂载
echo "[Unmounting all existing partitions on the device ]"

umount $1*

echo "[Partitioning $1...]"

# 擦除分区表
DRIVE=$1
dd if=/dev/zero of=$DRIVE bs=1024 count=1024 &>/dev/null

# 获取eMMC相关信息
SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`

echo DISK SIZE - $SIZE bytes

CYLINDERS=`echo $SIZE/255/63/512 | bc`

# 分区,并设置boot分区
echo CYLINDERS - $CYLINDERS
{
echo ,9,0x0C,*
echo ,$(expr $CYLINDERS / 4),,-
echo ,$(expr $CYLINDERS / 4),,-
echo ,,0x0C,-
} | sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE &> /dev/null

echo "[Making filesystems...]"

if [[ ${DRIVE} == /dev/*mmcblk* ]]
then
    DRIVE=${DRIVE}p
fi

# 格式化分区
mkfs.vfat -F 32 -n boot ${DRIVE}1 &> /dev/null
mkfs.ext4 -L rootfs ${DRIVE}2 &> /dev/null
mkfs.ext4 -L usrdata ${DRIVE}3 &> /dev/null
mkfs.vfat -F 32 -n data ${DRIVE}4 &> /dev/null

echo "[Copying files...]"

# 挂载并拷贝文件到分区1
mount ${DRIVE}1 /mnt
cp $2 /mnt/MLO
cp $3 /mnt/u-boot.img
cp $4 /mnt/zImage
cp $5 /mnt/uEnv.txt
mkdir /mnt/dtbs
cp $6 /mnt/dtbs/am335x-boneblack.dtb

if [ "$9" ]
then
        echo "[Copying START_HERE folder to boot partition]"
        cp -r $9 /mnt/START_HERE
fi

# 卸载分区
umount ${DRIVE}1

# 拷贝文件系统内容到分区2
mount ${DRIVE}2 /mnt
tar jxvf $7 -C /mnt &> /dev/null
chmod 755 /mnt
umount ${DRIVE}2

# 拷贝data到数据分区
if [ "$8" ]
then
    echo "[Copying all clips to data partition]"
    mount ${DRIVE}4 /mnt
    cp -r $8/* /mnt/
    umount ${DRIVE}4
fi

echo "[Done]"

 

目录
相关文章
|
Linux SoC
I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking
/******************************************************************** *   I.MX6 mfgtool2-android-mx6q-sabresd-emmc.vbs hacking * 说明: * 以前用的mfgtool2是直接执行MfgTool2.exe就行了,现在的NXP将其封 * 装在vbs文件内,这是左栋告诉我的,这里记录一下命令行参数的本质。
1033 0
|
Unix Android开发 机器学习/深度学习
Android development tools line_endings hacking
/******************************************************************** * Android development tools line_endings hacking * 说明: * 本文主要是对android源代码中的line_endings开发工具进行了解读, * 目的是为了知道传说中的dos,unix文件之间转换的工作机制。
675 0
|
Java Android开发 Linux
I.MX6 android BatteryService jni hacking
/**************************************************************************** * I.MX6 android BatteryService jni hacking * 声明: * 本文主要是为了知道Android的获取的电源管理的数据的jni是从Linux系统的 * 什么位置获取的,获取的机制是什么。
738 0
|
Android开发
Android ashmem hacking
/********************************************************************** * Android ashmem hacking * 声明: * 最近有些东西涉及到binder,而binder又涉及到ashmem,于是先跟一下这 * 部分的内容。
795 0
|
Android开发 编解码
mokoid android open source HAL hacking in a picture
/************************************************************************** * mokoid android HAL hacking in a picture * 声明: * 之前已经对mokoid开源项目源代码进行跟踪分析,但是总感觉对其中的工作 * 机制运行理解不到位,所以索性这次采用更直观的分析方式,用图来表示她的工 * 做原理,调用机制。
880 0
|
前端开发 Android开发
Android custom View AirConditionerView hacking
package com.example.arc.view; import android.content.Context; import android.graphics.Canvas; import android.
644 0
|
定位技术 Android开发
Android GPS GPSBasics project hacking
一、参考源码:   GPS Basic Example - Android Example     http://androidexample.com/GPS_Basic__-__Android_Example/index.
642 0
|
Shell C++ Android开发
I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking
#!/bin/bash # 参考文章: # 1. Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数 # http://c.biancheng.
1065 0
|
Android开发
OK335xS-Android pack-ubi-256M.sh hacking
1 #/******************************************************************************* 2 # * OK335xS-Android pack-ubi-256M.
811 0
|
Linux Shell Perl
OK335xS-Android mkmmc-android-ubifs.sh hacking
1 #/******************************************************************************* 2 # * OK335xS-Android mkmmc-android-ubifs.
1062 0