2014년 2월 25일 화요일

make_ext4fs android 메모






make_ext4fs
에 대하여 안드로이드를 컴파일하면
out/host/linux-x86/bin
디렉토리에 생성이 된다.  

mkuserimg.sh

#!/bin/bash
#
# To call this script, make sure make_ext4fs is somewhere in PATH

function usage() {
cat<<EOT
Usage:
mkuserimg.sh [-s] SRC_DIR OUTPUT_FILE EXT_VARIANT MOUNT_POINT SIZE
EOT
}

echo "in mkuserimg.sh PATH=$PATH"

ENABLE_SPARSE_IMAGE=
if [ "$1" = "-s" ]; then
  ENABLE_SPARSE_IMAGE="-s"
  shift
fi

if [ $# -ne 4 -a $# -ne 5 ]; then
  usage
  exit 1
fi

SRC_DIR=$1
if [ ! -d $SRC_DIR ]; then
  echo "Can not find directory $SRC_DIR!"
  exit 2
fi

OUTPUT_FILE=$2
EXT_VARIANT=$3
MOUNT_POINT=$4
SIZE=$5

case $EXT_VARIANT in
  ext4) ;;
  *) echo "Only ext4 is supported!"; exit 3 ;;
esac

if [ -z $MOUNT_POINT ]; then
  echo "Mount point is required"
  exit 2
fi

if [ -z $SIZE ]; then
    SIZE=128M
fi

MAKE_EXT4FS_CMD="make_ext4fs $ENABLE_SPARSE_IMAGE -l $SIZE -a $MOUNT_POINT $OUTPUT_FILE $SRC_DIR"
echo $MAKE_EXT4FS_CMD
$MAKE_EXT4FS_CMD
if [ $? -ne 0 ]; then
  exit 4
fi

안드로이드

# $(1): src directory
# $(2): output file
# $(3): mount point
# $(4): ext variant (ext2, ext3, ext4)
# $(5): size of the partition
define build-userimage-ext-target
  @mkdir -p $(dir $(2))
  $(hide) PATH=$(foreach p,$(INTERNAL_USERIMAGES_BINARY_PATHS),$(p):)$$PATH \
      $(MKEXTUSERIMG) $(INTERNAL_USERIMAGES_SPARSE_EXT_FLAG) $(1) $(2) $(4) $(3) $(5)
Endef


./make_ext4fs -l 250M -a userdata ~/image/newuserdata.img  ~/work/android/out/target/product/mango210/data/

아래 사이트 참조
android ICS 포팅 3일차 - system.img ext4 파일 시스템으로 변환하기 http://blogimgs.naver.net/imgs/nblog/spc.gif 안드로이드 프레임워크 / 프로그래밍 http://blogimgs.naver.net/imgs/nblog/spc.gif
2011/12/23 15:53
안드로이드 소스를 빌드하면 out 폴더가 생성되게 된다.

ext4 변환하기 위해서는 make_ext4fs 라는 툴을 사용해야 한다. 툴의 위치는 아래와 같다.

out/host/linux-x86/bin

그리고 아래와 같은 명령어로 system.img.ext4 생성해주자.

make_ext4fs -l 170M -a system system.img.ext4 system/

-l : 파일 사이즈를 설정한다. 170M 세팅해줬다.
-a : android mountpoint 라고 한다. 기냥 system 이라고 해주자.
파일명: 생성 되는 파일명
폴더: system 폴더내의 파일들이 ext4 image 만들어진다


댓글 없음:

댓글 쓰기