AM335x Android eMMC mkmmc-android.sh hacking

#                   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]"

 

时间: 2024-08-17 04:53:45

AM335x Android eMMC mkmmc-android.sh hacking的相关文章

Android Mokoid Open Source Project hacking

/***************************************************************************** * Android Mokoid Open Source Project hacking * * 声明: * 1. 本文主要是为了了解Android HAL工作机制,从而决定分析mokoid开源项目: * 2. 源代码URL:https://code.google.com/p/mokoid/source/checkout: * 3. 本文通

ti processor sdk linux am335x evm /bin/create-sdcard.sh hacking

#!/bin/bash # # ti processor sdk linux am335x evm /bin/create-sdcard.sh hacking # 说明: # 本文主要对TI的sdk中的create-sdcard.sh脚本进行解读,该文件只解读 # 前面一部分,后面一部分未解读,主要是因为后面的代码并不能获取到正确 # 的设备节点,于是不打算深入解读.其中学会到了tar中显示解压进度的写法, # 以及拷贝文件夹的显示当前拷贝数据的进度的方法. # # 2016-4-16 深圳 南

ti processor sdk linux am335x evm /bin/commom.sh hacking

#!/bin/sh # # ti processor sdk linux am335x evm /bin/commom.sh hacking # 说明: # 本文主要对TI的sdk中的common.sh脚本进行解读,是为了了解其工作机制. # # 2016-4-16 深圳 南山平山村 曾剑锋 # This distribution contains contributions or derivatives under copyright # as follows: # # Copyright (

ti processor sdk linux am335x evm /bin/setup-package-install.sh hacking

#!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-package-install.sh hacking # 说明: # 本文主要对TI的sdk中的setup-package-install.sh脚本进行解读,是为了了解 # 其工作机制. # # 2016-4-16 深圳 南山平山村 曾剑锋 # This distribution contains contributions or derivatives under copyri

ti processor sdk linux am335x evm /bin/setup-tftp.sh hacking

#!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-tftp.sh hacking # 说明: # 本文主要对TI的sdk中的setup-tftp.sh脚本进行解读,是为了了解其工作机制. # # 2016-4-16 深圳 南山平山村 曾剑锋 # This distribution contains contributions or derivatives under copyright # as follows: # # Cop

ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking

#!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-targetfs-nfs.sh hacking # 说明: # 本文主要对TI的sdk中的setup-targetfs-nfs.sh脚本进行解读,是为了了解 # 其工作机制. # # 2016-4-16 深圳 南山平山村 曾剑锋 # This distribution contains contributions or derivatives under copyright #

ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking

#!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-minicom.sh hacking # 说明: # 本文主要对TI的sdk中的setup-minicom.sh脚本进行解读,是为了了解 # 其工作机制. # # 2016-4-16 深圳 南山平山村 曾剑锋 # This distribution contains contributions or derivatives under copyright # as follows

ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking

#!/bin/sh # # ti processor sdk linux am335x evm /bin/setup-uboot-env.sh hacking # 说明: # 本文主要对TI的sdk中的setup-uboot-env.sh脚本进行解读,是为了了解 # 其工作机制,另外了解到minicom原来是可以用脚本来和开发板进行交互的. # # 2016-4-16 深圳 南山平山村 曾剑锋 # This distribution contains contributions or deriv

ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking

#!/bin/bash # # ti processor sdk linux am335x evm /bin/unshallow-repositories.sh hacking # 说明: # 本文主要对TI的sdk中的unshallow-repositories.sh脚本进行解读,是为了了解 # 其工作机制. # # 2016-4-16 深圳 南山平山村 曾剑锋 # Authors: # Franklin Cooper Jr. # This distribution contains cont