android userimage鏡像文件格式定義分析

編譯安卓源碼後,會在輸出目錄輸出rootdir和system的鏡像文件,那麼文件格式是如何定義的呢?

build/core/Makefile:

# #################################################################
# Targets for user images
# #################################################################

INTERNAL_USERIMAGES_EXT_VARIANT :=
ifeq ($(TARGET_USERIMAGES_USE_EXT2),true)
INTERNAL_USERIMAGES_USE_EXT := true
INTERNAL_USERIMAGES_EXT_VARIANT := ext2
else
ifeq ($(TARGET_USERIMAGES_USE_EXT3),true)
INTERNAL_USERIMAGES_USE_EXT := true
INTERNAL_USERIMAGES_EXT_VARIANT := ext3
else
ifeq ($(TARGET_USERIMAGES_USE_EXT4),true)
INTERNAL_USERIMAGES_USE_EXT := true
INTERNAL_USERIMAGES_EXT_VARIANT := ext4
endif
endif
endif

ifneq (true,$(TARGET_USERIMAGES_SPARSE_EXT_DISABLED))
  INTERNAL_USERIMAGES_SPARSE_EXT_FLAG := -s
endif

ifeq ($(INTERNAL_USERIMAGES_USE_EXT),true)
INTERNAL_USERIMAGES_DEPS := $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(SIMG2IMG) $(E2FSCK)
else
INTERNAL_USERIMAGES_DEPS := $(MKYAFFS2)
endif
只要定義了TARGET_USERIMAGES_USE_EXT2、TARGET_USERIMAGES_USE_EXT3、TARGET_USERIMAGES_USE_EXT4之一,文件系統格式即確定爲相應格式。

否則文件系統格式默認爲yaff2。這個變量應該在哪裏定義,看一下輸出結果:

./build/target/board/generic/BoardConfig.mk:48:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/generic_mips/BoardConfig.mk:52:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/generic_x86_64/BoardConfig.mk:37:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/generic_x86/BoardConfig.mk:37:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/generic_aarch64/BoardConfig.mk:42:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/vbox_x86/BoardConfig.mk:14:TARGET_USERIMAGES_USE_EXT4 := true
./build/core/Makefile:559:ifeq ($(TARGET_USERIMAGES_USE_EXT2),true)
./build/core/Makefile:563:ifeq ($(TARGET_USERIMAGES_USE_EXT3),true)
./build/core/Makefile:567:ifeq ($(TARGET_USERIMAGES_USE_EXT4),true)
[root@localhost android-kernel]# vi build/core/Makefile 
[root@localhost android-kernel]# allgrep TARGET_USERIMAGES_USE
./build/target/board/generic/BoardConfig.mk:48:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/generic_mips/BoardConfig.mk:52:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/generic_x86_64/BoardConfig.mk:37:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/generic_x86/BoardConfig.mk:37:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/generic_aarch64/BoardConfig.mk:42:TARGET_USERIMAGES_USE_EXT4 := true
./build/target/board/vbox_x86/BoardConfig.mk:14:TARGET_USERIMAGES_USE_EXT4 := true
./build/core/Makefile:559:ifeq ($(TARGET_USERIMAGES_USE_EXT2),true)
./build/core/Makefile:563:ifeq ($(TARGET_USERIMAGES_USE_EXT3),true)
./build/core/Makefile:567:ifeq ($(TARGET_USERIMAGES_USE_EXT4),true)
grep搜索出來的結果很明顯,在板級配置文件BoardConfig.mk文件中定義。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章