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/
아래 사이트 참조
안드로이드 소스를 빌드하면 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로 만들어진다.
|
댓글 없음:
댓글 쓰기