RK3568 Anroid12新增自定义分区
前言:
因为客户需要动态更换开机logo,需要一个自定义分区来存放这些logo。网上查了些资料,现记录如下。
参考:
RK3566 android11 增加新的分区,恢复出厂数据不会清除
补丁:
Index: build/make/core/Makefile =================================================================== --- build/make/core/Makefile (revision 2461) +++ build/make/core/Makefile (revision 2462) @@ -1640,6 +1640,13 @@ $(hide) echo "cache_selinux_fc=$(SELINUX_FC)" >> $(1) $(hide) echo "building_cache_image=$(BUILDING_CACHE_IMAGE)" >> $(1) ) +# add tuliyuan fos parition --start +$(if $(filter $(2),fos),\ + $(if $(BOARD_FOSIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "fos_fs_type=$(BOARD_FOSIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) + $(if $(BOARD_FOSIMAGE_PARTITION_SIZE),$(hide) echo "fos_size=$(BOARD_FOSIMAGE_PARTITION_SIZE)" >> $(1)) + $(hide) echo "fos_selinux_fc=$(SELINUX_FC)" >> $(1) +) +# add tuliyuan fos parition --end $(if $(filter $(2),vendor),\ $(if $(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE),$(hide) echo "vendor_fs_type=$(BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE)" >> $(1)) $(if $(BOARD_VENDORIMAGE_FILE_SYSTEM_COMPRESS),$(hide) echo "vendor_f2fs_compress=$(BOARD_VENDORIMAGE_FILE_SYSTEM_COMPRESS)" >> $(1)) @@ -1844,6 +1851,11 @@ ifdef BUILDING_CACHE_IMAGE PROP_DICTIONARY_IMAGES += cache endif +#add tuliyuan fos parition --start +ifdef BUILDING_FOS_IMAGE + PROP_DICTIONARY_IMAGES += fos +endif +#add tuliyuan fos parition --end ifdef BUILDING_SYSTEM_IMAGE PROP_DICTIONARY_IMAGES += system endif @@ -2987,7 +2999,45 @@ IGNORE_CACHE_LINK := --exclude=cache endif # BUILDING_CACHE_IMAGE +#tuliyuan add parition --end # ----------------------------------------------------------------- +# fos partition image +ifdef BUILDING_FOS_IMAGE +INTERNAL_FOSIMAGE_FILES := \ + $(filter $(TARGET_OUT_FOS)/%,$(ALL_DEFAULT_INSTALLED_MODULES)) + +fosimage_intermediates := \ + $(call intermediates-dir-for,PACKAGING,fos) +BUILT_FOSIMAGE_TARGET := $(PRODUCT_OUT)/fos.img + +define build-fosimage-target + $(call pretty,"Target fos fs image: $(INSTALLED_FOSIMAGE_TARGET)") + @mkdir -p $(TARGET_OUT_FOS) + @mkdir -p $(fosimage_intermediates) && rm -rf $(fosimage_intermediates)/fos_image_info.txt + $(call generate-image-prop-dictionary, $(fosimage_intermediates)/fos_image_info.txt,fos,skip_fsck=true) + PATH=$(INTERNAL_USERIMAGES_BINARY_PATHS):$$PATH \ + $(BUILD_IMAGE) \ + $(TARGET_OUT_FOS) $(fosimage_intermediates)/fos_image_info.txt \ + $(INSTALLED_FOSIMAGE_TARGET) $(TARGET_OUT) + $(call assert-max-image-size,$(INSTALLED_FOSIMAGE_TARGET),$(BOARD_FOSIMAGE_PARTITION_SIZE)) +endef + +# We just build this directly to the install location. +INSTALLED_FOSIMAGE_TARGET := $(BUILT_FOSIMAGE_TARGET) +$(INSTALLED_FOSIMAGE_TARGET): $(INTERNAL_USERIMAGES_DEPS) $(INTERNAL_FOSIMAGE_FILES) + $(build-fosimage-target) + +.PHONY: fosimage-nodeps +fosimage-nodeps: | $(INTERNAL_USERIMAGES_DEPS) + $(build-fosimage-target) + +else # BUILDING_FOS_IMAGE +# we need to ignore the broken fos link when doing the rsync +IGNORE_FOS_LINK := --exclude=fos +endif +#tuliyuan add parition --end + +# ----------------------------------------------------------------- # system_other partition image ifdef BUILDING_SYSTEM_OTHER_IMAGE ifeq ($(BOARD_USES_SYSTEM_OTHER_ODEX),true) @@ -4924,10 +4974,12 @@ # Depending on the various images guarantees that the underlying # directories are up-to-date. +#tuliyuan add $(INSTALLED_FOSIMAGE_TARGET) for parition $(BUILT_TARGET_FILES_PACKAGE): \ $(INSTALLED_RADIOIMAGE_TARGET) \ $(INSTALLED_RECOVERYIMAGE_TARGET) \ $(INSTALLED_CACHEIMAGE_TARGET) \ + $(INSTALLED_FOSIMAGE_TARGET) \ $(INSTALLED_DTBOIMAGE_TARGET) \ $(INSTALLED_PVMFWIMAGE_TARGET) \ $(INSTALLED_CUSTOMIMAGES_TARGET) \ Index: build/make/core/board_config.mk =================================================================== --- build/make/core/board_config.mk (revision 2461) +++ build/make/core/board_config.mk (revision 2462) @@ -63,6 +63,7 @@ _board_strip_readonly_list += TARGET_ARCH_SUITE # File system variables +#add tuliyuan fos parition add BOARD_FOSIMAGE_PARTITION_SIZE BOARD_FOSIMAGE_FILE_SYSTEM_TYPE _board_strip_readonly_list += BOARD_FLASH_BLOCK_SIZE _board_strip_readonly_list += BOARD_BOOTIMAGE_PARTITION_SIZE _board_strip_readonly_list += BOARD_RECOVERYIMAGE_PARTITION_SIZE @@ -72,6 +73,8 @@ _board_strip_readonly_list += BOARD_USERDATAIMAGE_PARTITION_SIZE _board_strip_readonly_list += BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE _board_strip_readonly_list += BOARD_CACHEIMAGE_PARTITION_SIZE +_board_strip_readonly_list += BOARD_FOSIMAGE_FILE_SYSTEM_TYPE +_board_strip_readonly_list += BOARD_FOSIMAGE_PARTITION_SIZE _board_strip_readonly_list += BOARD_VENDORIMAGE_PARTITION_SIZE _board_strip_readonly_list += BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE _board_strip_readonly_list += BOARD_PRODUCTIMAGE_PARTITION_SIZE @@ -374,6 +377,22 @@ endif .KATI_READONLY := BUILDING_CACHE_IMAGE +#add tuliyuan add fos parition --start +# Are we building a fos image +BUILDING_FOS_IMAGE := +ifeq ($(PRODUCT_BUILD_FOS_IMAGE),) + ifdef BOARD_FOSIMAGE_FILE_SYSTEM_TYPE + BUILDING_FOS_IMAGE := true + endif +else ifeq ($(PRODUCT_BUILD_FOS_IMAGE),true) + BUILDING_FOS_IMAGE := true + ifndef BOARD_FOSIMAGE_FILE_SYSTEM_TYPE + $(error PRODUCT_BUILD_FOS_IMAGE set to true, but BOARD_FOSIMAGE_FILE_SYSTEM_TYPE not defined) + endif +endif +.KATI_READONLY := BUILDING_FOS_IMAGE +#add tuliyuan add fos parition --end + # Are we building a boot image BUILDING_BOOT_IMAGE := ifeq ($(PRODUCT_BUILD_BOOT_IMAGE),) Index: build/make/core/config.mk =================================================================== --- build/make/core/config.mk (revision 2461) +++ build/make/core/config.mk (revision 2462) @@ -1152,8 +1152,10 @@ # These goals don't need to collect and include Android.mks/CleanSpec.mks # in the source tree. +#add tuliyuan add parition fosimage-nodeps dont_bother_goals := out \ - product-graph dump-products + product-graph dump-products \ + fosimage-nodeps # Make ANDROID Soong config variables visible to Android.mk files, for # consistency with those defined in BoardConfig.mk files. Index: build/make/core/envsetup.mk =================================================================== --- build/make/core/envsetup.mk (revision 2461) +++ build/make/core/envsetup.mk (revision 2462) @@ -620,6 +620,11 @@ TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache .KATI_READONLY := TARGET_OUT_CACHE +#add tuliyuan add parition --start +TARGET_OUT_FOS := $(PRODUCT_OUT)/fos +.KATI_READONLY := TARGET_OUT_FOS +#add tuliyuan add parition --end + TARGET_OUT_VENDOR := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_VENDOR) .KATI_READONLY := TARGET_OUT_VENDOR ifneq ($(filter address,$(SANITIZE_TARGET)),) Index: build/make/core/main.mk =================================================================== --- build/make/core/main.mk (revision 2461) +++ build/make/core/main.mk (revision 2462) @@ -1529,6 +1529,11 @@ .PHONY: cacheimage cacheimage: $(INSTALLED_CACHEIMAGE_TARGET) +#add tuliyuan add parition --start +.PHONY: fosimage +fosimage: $(INSTALLED_FOSIMAGE_TARGET) +#add tuliyuan add parition --end + .PHONY: bptimage bptimage: $(INSTALLED_BPTIMAGE_TARGET) @@ -1605,6 +1610,7 @@ $(INSTALLED_VBMETA_VENDORIMAGE_TARGET) \ $(INSTALLED_USERDATAIMAGE_TARGET) \ $(INSTALLED_CACHEIMAGE_TARGET) \ + $(INSTALLED_FOSIMAGE_TARGET) \ $(INSTALLED_BPTIMAGE_TARGET) \ $(INSTALLED_VENDORIMAGE_TARGET) \ $(INSTALLED_VENDOR_BOOTIMAGE_TARGET) \ Index: build/make/core/product.mk =================================================================== --- build/make/core/product.mk (revision 2461) +++ build/make/core/product.mk (revision 2462) @@ -381,6 +381,7 @@ _product_single_value_vars += PRODUCT_BUILD_VENDOR_DLKM_IMAGE _product_single_value_vars += PRODUCT_BUILD_ODM_DLKM_IMAGE _product_single_value_vars += PRODUCT_BUILD_CACHE_IMAGE +_product_single_value_vars += PRODUCT_BUILD_FOS_IMAGE _product_single_value_vars += PRODUCT_BUILD_RAMDISK_IMAGE _product_single_value_vars += PRODUCT_BUILD_USERDATA_IMAGE _product_single_value_vars += PRODUCT_BUILD_RECOVERY_IMAGE Index: build/make/tools/releasetools/build_image.py =================================================================== --- build/make/tools/releasetools/build_image.py (revision 2461) +++ build/make/tools/releasetools/build_image.py (revision 2462) @@ -680,6 +680,10 @@ copy_prop("cache_fs_type", "fs_type") copy_prop("cache_size", "partition_size") copy_prop("cache_selinux_fc", "selinux_fc") + elif mount_point == "fos": + copy_prop("fos_fs_type", "fs_type") + copy_prop("fos_size", "partition_size") + copy_prop("fos_selinux_fc", "selinux_fc") elif mount_point == "vendor": copy_prop("avb_vendor_hashtree_enable", "avb_hashtree_enable") copy_prop("avb_vendor_add_hashtree_footer_args", @@ -911,6 +915,8 @@ mount_point = "data" elif image_filename == "cache.img": mount_point = "cache" + elif image_filename == "fos.img": + mount_point = "fos" elif image_filename == "vendor.img": mount_point = "vendor" elif image_filename == "odm.img": Index: device/rockchip/common/build/rockchip/Partitions.mk =================================================================== --- device/rockchip/common/build/rockchip/Partitions.mk (revision 2461) +++ device/rockchip/common/build/rockchip/Partitions.mk (revision 2462) @@ -28,6 +28,9 @@ # use ext4 cache for OTA BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE ?= ext4 +# add tuliyuan add fos parition --start +BOARD_FOSIMAGE_FILE_SYSTEM_TYPE ?= ext4 +# add tuliyuan add fos parition --end # Add standalone metadata partition BOARD_USES_METADATA_PARTITION ?= true @@ -46,6 +49,7 @@ BOARD_BOOTIMAGE_PARTITION_SIZE := $(shell python device/rockchip/common/get_partition_size.py $(TARGET_DEVICE_DIR)/parameter.txt boot) BOARD_DTBOIMG_PARTITION_SIZE := $(shell python device/rockchip/common/get_partition_size.py $(TARGET_DEVICE_DIR)/parameter.txt dtbo) BOARD_RECOVERYIMAGE_PARTITION_SIZE := $(shell python device/rockchip/common/get_partition_size.py $(TARGET_DEVICE_DIR)/parameter.txt recovery) + BOARD_FOSIMAGE_PARTITION_SIZE := $(shell python device/rockchip/common/get_partition_size.py $(TARGET_DEVICE_DIR)/parameter.txt fos) # Header V3, add vendor_boot ifeq (1,$(strip $(shell expr $(BOARD_BOOT_HEADER_VERSION) \>= 3))) BOARD_VENDOR_BOOTIMAGE_PARTITION_SIZE := $(shell python device/rockchip/common/get_partition_size.py $(TARGET_DEVICE_DIR)/parameter.txt vendor_boot) @@ -65,6 +69,7 @@ BOARD_ODMIMAGE_PARTITION_SIZE ?= 134217728 endif BOARD_CACHEIMAGE_PARTITION_SIZE ?= 402653184 + BOARD_FOSIMAGE_PARTITION_SIZE := 52428800 BOARD_RECOVERYIMAGE_PARTITION_SIZE ?= 113246208 BOARD_DTBOIMG_PARTITION_SIZE ?= 4194304 # Header V3, add vendor_boot Index: device/rockchip/common/build/rockchip/RebuildParameter.mk =================================================================== --- device/rockchip/common/build/rockchip/RebuildParameter.mk (revision 2461) +++ device/rockchip/common/build/rockchip/RebuildParameter.mk (revision 2462) @@ -42,6 +42,9 @@ partition_list := $(partition_list),data:$(BOARD_USERDATAIMAGE_PARTITION_SIZE) endif +#add tuliyuan add fos parition --start +partition_list := $(partition_list),fos:$(BOARD_FOSIMAGE_PARTITION_SIZE) +#add tuliyuan --end intermediates := $(call intermediates-dir-for,FAKE,rockchip_parameter) rebuild_parameter := $(intermediates)/parameter.txt Index: device/rockchip/common/rootdir/init.rk30board.rc =================================================================== --- device/rockchip/common/rootdir/init.rk30board.rc (revision 2461) +++ device/rockchip/common/rootdir/init.rk30board.rc (revision 2462) @@ -16,6 +16,13 @@ mkdir /data/vendor/audio 0755 system system mkdir /data/vendor/camera 0755 cameraserver cameraserver +on post-fs + #remount fos selinux perms + chown system system /fos + chmod 0771 /fos + restorecon_recursive /fos + + on init # set temperature control policy as normal mode write /sys/module/rockchip_pm/parameters/policy 1 Index: device/rockchip/common/scripts/fstab_tools/fstab.in =================================================================== --- device/rockchip/common/scripts/fstab_tools/fstab.in (revision 2461) +++ device/rockchip/common/scripts/fstab_tools/fstab.in (revision 2462) @@ -8,6 +8,7 @@ /dev/block/by-name/boot /boot emmc defaults ${_flags_chained}first_stage_mount /dev/block/by-name/cache /cache ext4 noatime,nodiratime,nosuid,nodev,noauto_da_alloc,discard wait,check +/dev/block/by-name/fos /fos ext4 noatime,nodiratime,nosuid,nodev,noauto_da_alloc,discard wait,check /dev/block/by-name/metadata /metadata ext4 nodev,noatime,nosuid,discard,sync wait,formattable,first_stage_mount,check /dev/block/by-name/misc /misc emmc defaults defaults Index: device/rockchip/common/sepolicy/vendor/device.te =================================================================== --- device/rockchip/common/sepolicy/vendor/device.te (revision 2461) +++ device/rockchip/common/sepolicy/vendor/device.te (revision 2462) @@ -33,3 +33,5 @@ #for hid audio type hidraw_device, dev_type; +#add tuliyuan add fos parition block device +type fos_block_device, dev_type; Index: device/rockchip/common/sepolicy/vendor/file.te =================================================================== --- device/rockchip/common/sepolicy/vendor/file.te (revision 2461) +++ device/rockchip/common/sepolicy/vendor/file.te (revision 2462) @@ -13,3 +13,6 @@ type debugfs_sw_sync, fs_type, debugfs_type; type sysfs_dmc, fs_type, sysfs_type; type sysfs_mmc, fs_type, sysfs_type; + +# tuliyuan add fos partition +type fos_data_file_type, file_type, mlstrustedobject; Index: device/rockchip/common/sepolicy/vendor/file_contexts =================================================================== --- device/rockchip/common/sepolicy/vendor/file_contexts (revision 2461) +++ device/rockchip/common/sepolicy/vendor/file_contexts (revision 2462) @@ -77,6 +77,8 @@ /dev/block/by-name/baseparameter u:object_r:baseparameter_block_device:s0 /dev/block/by-name/super u:object_r:super_block_device:s0 +#add by tuliyuan for add fos partition +/dev/block/by-name/fos u:object_r:fos_block_device:s0 # for A/B /dev/block/by-name/boot_[ab] u:object_r:boot_block_device:s0 /dev/block/by-name/uboot_[ab] u:object_r:uboot_block_device:s0 @@ -233,6 +235,8 @@ #flash_img /vendor/bin/flash_img.sh u:object_r:vendor_install_recovery_exec:s0 +#add by tuliyuan for partition +/fos(/.*)? u:object_r:fos_data_file_type:s0 # rk dma_buf heaps /dev/dma_heap/cma u:object_r:dmabuf_system_heap_device:s0 /dev/dma_heap/system-dma32 u:object_r:dmabuf_system_heap_device:s0 Index: device/rockchip/common/sepolicy/vendor/fsck.te =================================================================== --- device/rockchip/common/sepolicy/vendor/fsck.te (revision 2461) +++ device/rockchip/common/sepolicy/vendor/fsck.te (revision 2462) @@ -1,3 +1,4 @@ allow fsck e2fsck_oem_block_device:blk_file rw_file_perms; allow fsck e2fsck_cache_block_device:blk_file rw_file_perms; allow fsck e2fsck_frp_block_device:blk_file rw_file_perms; +allow fsck fos_block_device:blk_file rw_file_perms; Index: device/rockchip/common/sepolicy/vendor/init.te =================================================================== --- device/rockchip/common/sepolicy/vendor/init.te (revision 2461) +++ device/rockchip/common/sepolicy/vendor/init.te (revision 2462) @@ -1,3 +1,6 @@ allow init zram_device:blk_file rw_file_perms; allow init boot_block_device:lnk_file relabelto; allow init serial_device:chr_file rw_file_perms; +allow init fos_block_device:lnk_file { relabelto }; +allow init fos_block_device:blk_file { write }; +allow init fos_data_file_type:dir { create setattr getattr mounton }; Index: device/rockchip/common/sepolicy/vendor/shell.te =================================================================== --- device/rockchip/common/sepolicy/vendor/shell.te (revision 2461) +++ device/rockchip/common/sepolicy/vendor/shell.te (revision 2462) @@ -41,3 +41,5 @@ allow shell metadata_file:file r_file_perms; rw_rockchip_graphic_device(shell) +allow vendor_init fos_data_file_type:dir rw_dir_perms; +allow vendor_init fos_data_file_type:file rw_file_perms; Index: device/rockchip/common/sepolicy/vendor/vendor_init.te =================================================================== --- device/rockchip/common/sepolicy/vendor/vendor_init.te (revision 2461) +++ device/rockchip/common/sepolicy/vendor/vendor_init.te (revision 2462) @@ -34,3 +34,7 @@ set_prop(vendor_init, vendor_hwc_prop) set_prop(vendor_init, vendor_power_prop) get_prop(vendor_init, vts_status_prop) +allow vendor_init fos_block_device:lnk_file { relabelto }; +allow vendor_init fos_data_file_type:dir rw_dir_perms; +allow vendor_init fos_data_file_type:file rw_file_perms; +allow vendor_init fos_data_file_type:dir { mounton }; Index: device/rockchip/common/sepolicy/vendor/vold.te =================================================================== --- device/rockchip/common/sepolicy/vendor/vold.te (revision 2461) +++ device/rockchip/common/sepolicy/vendor/vold.te (revision 2462) @@ -11,7 +11,8 @@ allow vold vold_exec:file execute_no_trans; allow vold self:capability { dac_override dac_read_search }; allow vold sysfs_mmc:file rw_file_perms; - +allow vold fos_data_file_type:dir { read open write getattr setattr }; +allow vold fos_block_device:blk_file getattr; allow vold self:capability sys_module; allow vold vendor_incremental_module:file r_file_perms; allow vold vendor_incremental_module:system module_load; Index: device/rockchip/rk356x/rk3568_s/recovery.fstab =================================================================== --- device/rockchip/rk356x/rk3568_s/recovery.fstab (revision 2461) +++ device/rockchip/rk356x/rk3568_s/recovery.fstab (revision 2462) @@ -10,6 +10,7 @@ /dev/block/by-name/vendor_dlkm /vendor_dlkm ext4 defaults defaults /dev/block/by-name/odm_dlkm /odm_dlkm ext4 defaults defaults /dev/block/by-name/cache /cache ext4 defaults defaults +/dev/block/by-name/fos /fos ext4 defaults defaults /dev/block/by-name/metadata /metadata ext4 defaults defaults /dev/block/by-name/userdata /data f2fs defaults defaults /dev/block/by-name/cust /cust ext4 defaults defaults Index: mkimage.sh =================================================================== --- mkimage.sh (revision 2461) +++ mkimage.sh (revision 2462) @@ -83,6 +83,189 @@ cp -a $BOARD_DTBO_IMG $IMAGE_PATH/dtbo.img echo "done." +# add by tuliyuan for FOS.img +echo -n "create fos.img.... " +cp -av $OUT/fos.img $IMAGE_PATH/fos.img +echo "done." + +echo "create resource.img..." +if [ -f "kernel/resource.img" ]; then + cp -a kernel/resource.img $IMAGE_PATH/resource.img + echo "done." +fi + +copy_images_from_out boot.img +copy_images_from_out boot-debug.img +copy_images_from_out vendor_boot.img +copy_images_from_out vendor_boot-debug.img +copy_images_from_out recovery.img +copy_images_from_out super.img + +if [ ! "$PRODUCT_USE_DYNAMIC_PARTITIONS" = "true" ]; then +copy_images_from_out system.img +copy_images_from_out system_ext.img +copy_images_from_out vendor.img +copy_images_from_out odm.img +copy_images_from_out product.img +fi + +echo "create vbmeta.img..." +if [ "$BOARD_AVB_ENABLE" = "true" ]; then +cp -a $OUT/vbmeta.img $IMAGE_PATH/vbmeta.img +else +echo "BOARD_AVB_ENABLE is false, use default vbmeta.img" +cp -a device/rockchip/common/vbmeta.img $IMAGE_PATH/vbmeta.img +fi + +echo -n "create misc.img.... " +cp -a rkst/Image/misc.img $IMAGE_PATH/misc.img +cp -a rkst/Image/pcba_small_misc.img $IMAGE_PATH/pcba_small_misc.img +cp -a rkst/Image/pcba_whole_misc.img $IMAGE_PATH/pcba_whole_misc.img +echo "done." + +if [ -f $UBOOT_PATH/uboot.img ] +then + echo "create uboot.img..." + cp -a $UBOOT_PATH/uboot.img $IMAGE_PATH/uboot.img +else + echo "$UBOOT_PATH/uboot.img not fount! Please make it from $UBOOT_PATH first!" +fi + +if [ -f $UBOOT_PATH/trust_nand.img ] +then + echo "create trust.img..." + cp -a $UBOOT_PATH/trust_nand.img $IMAGE_PATH/trust.img +elif [ -f $UBOOT_PATH/trust_with_ta.img ] +then + echo "create trust.img..." + cp -a $UBOOT_PATH/trust_with_ta.img $IMAGE_PATH/trust.img +elif [ -f $UBOOT_PATH/trust.img ] +then + echo "create trust.img..." + cp -a $UBOOT_PATH/trust.img $IMAGE_PATH/trust.img +else + echo "$UBOOT_PATH/trust.img not fount! Please make it from $UBOOT_PATH first!" +fi + +if [ "$HIGH_RELIABLE_RECOVERY_OTA" = "true" ]; then + if [ -f $UBOOT_PATH/uboot_ro.img ] + then + echo -n "HIGH_RELIABLE_RECOVERY_OTA is true. create uboot_ro.img..." + cp -a $UBOOT_PATH/uboot_ro.img $IMAGE_PATH/uboot_ro.img + cp -a $IMAGE_PATH/trust.img $IMAGE_PATH/trust_ro.img + echo "done." + else + echo "$UBOOT_PATH/uboot_ro.img not fount! Please make it from $UBOOT_PATH first!" + fi +fi + +if [ -f $UBOOT_PATH/*_loader_*.bin ] +then + echo "create loader..." + cp -a $UBOOT_PATH/*_loader_*.bin $IMAGE_PATH/MiniLoaderAll.bin +else + if [ -f $UBOOT_PATH/*loader*.bin ]; then + echo "create loader..." + cp -a $UBOOT_PATH/*loader*.bin $IMAGE_PATH/MiniLoaderAll.bin + elif [ "$TARGET_PRODUCT" == "px3" -a -f $UBOOT_PATH/RKPX3Loader_miniall.bin ]; then + echo "create loader..." + cp -a $UBOOT_PATH/RKPX3Loader_miniall.bin $IMAGE_PATH/MiniLoaderAll.bin + else + echo "$UBOOT_PATH/*MiniLoaderAll_*.bin not fount! Please make it from $UBOOT_PATH first!" + fi +fi + +if [ -f $FLASH_CONFIG_FILE ] +then + echo "create config.cfg..." + cp -a $FLASH_CONFIG_FILE $IMAGE_PATH/config.cfg +else + echo "$FLASH_CONFIG_FILE not fount!" +fi + +if [ -f $PARAMETER ] +then + if [ "$HIGH_RELIABLE_RECOVERY_OTA" = "true" ]; then + echo -n "create parameter...HIGH_RELIABLE_RECOVERY_OTA is ture. " + echo -n "create parameter from hrr..." + if [ -f $PARAMETER ]; then + cp -a ${TARGET_DEVICE_DIR}/parameter_hrr.txt $IMAGE_PATH/parameter.txt + echo "done." + else + echo "${TARGET_DEVICE_DIR}/parameter_hrr.txt not fount! Please make it from ${TARGET_DEVICE_DIR} first!" + fi + else + echo -n "create parameter..." + cp -a $PARAMETER $IMAGE_PATH/parameter.txt + echo "done." + fi +else + if [ -f $OUT/parameter.txt ]; then + cp -a $OUT/parameter.txt $IMAGE_PATH/parameter.txt + else + echo "$PARAMETER not fount!" + fi +fi + +SHARED_LIBRARIES_DIR=out/host/linux-x86/lib64 +JAVA_LIBRARIES_DIR=out/host/linux-x86/framework +OTA_KEY_DIR=build/target/product/security + +if [ $TARGET == $BOOT_OTA ]; then + echo "create update_loader.zip.." + python build/tools/releasetools/package_loader_zip.py $IMAGE_PATH/MiniLoaderAll.bin $IMAGE_PATH/update_loader_unsigned.zip + java -Djava.library.path=$SHARED_LIBRARIES_DIR -jar $JAVA_LIBRARIES_DIR/signapk.jar -w $OTA_KEY_DIR/testkey.x509.pem $OTA_KEY_DIR/testkey.pk8 $IMAGE_PATH/update_loader_unsigned.zip $IMAGE_PATH/update_loader.zip + rm $IMAGE_PATH/update_loader_unsigned.zip + echo "done." +fi + +if [ "$TARGET_BASE_PARAMETER_IMAGE"x != ""x ] +then + if [ -f $TARGET_BASE_PARAMETER_IMAGE ] + then + echo -n "create baseparameter..." + cp -a $TARGET_BASE_PARAMETER_IMAGE $IMAGE_PATH/baseparameter.img + echo "done." + else + echo "$TARGET_BASE_PARAMETER_IMAGE not fount!" + fi +fi + +if [ $TARGET == $BOOT_OTA ] +then +if [ "$PRODUCT_USE_DYNAMIC_PARTITIONS" = "true" ]; then + cp -rf $OUT/obj/PACKAGING/super.img_intermediates/super.img $IMAGE_PATH/ +fi +echo -n "create system.img boot.img oem.img vendor.img dtbo.img vbmeta.img for OTA..." +cp -rf $OUT/obj/PACKAGING/target_files_intermediates/*-target_files*/IMAGES/*.img $IMAGE_PATH/ +rm -rf $IMAGE_PATH/cache.img +rm -rf $IMAGE_PATH/recovery-two-step.img +if [ "$PRODUCT_USE_DYNAMIC_PARTITIONS" = "true" ]; then + rm -rf $IMAGE_PATH/super_empty.img +fi +if [ "$BOARD_AVB_ENABLE" = "true" ]; then + echo "AVB Enable" + cp -rf $OUT/obj/PACKAGING/target_files_intermediates/*-target_files*/VENDOR/etc/recovery.img $IMAGE_PATH/ +fi +echo "done." +fi + +IS_EBOOK=`get_build_var BUILD_WITH_RK_EBOOK` +ebook_logo_tool=rkbin/tools/bmp2gray16 +if [ $IS_EBOOK == "true" ]; then + if [ -f ${TARGET_DEVICE_DIR}/waveform.img ]; then + cp ${TARGET_DEVICE_DIR}/waveform.img $IMAGE_PATH/ + fi + if [ -f $ebook_logo_tool ]; then + EINK_LOGO_PATH=${TARGET_DEVICE_DIR}/eink_logo/ + echo -n "create logo.img for uboot/charging/kernel logo" + $ebook_logo_tool --uboot-logo $EINK_LOGO_PATH/uboot_logo/uboot.bmp --kernel-logo $EINK_LOGO_PATH/kernel_logo/kernel.bmp --charge-logo $EINK_LOGO_PATH/uboot_logo/battery_0.bmp $EINK_LOGO_PATH/uboot_logo/battery_1.bmp $EINK_LOGO_PATH/uboot_logo/battery_2.bmp $EINK_LOGO_PATH/uboot_logo/battery_3.bmp $EINK_LOGO_PATH/uboot_logo/battery_4.bmp $EINK_LOGO_PATH/uboot_logo/battery_5.bmp $EINK_LOGO_PATH/uboot_logo/battery_fail.bmp --poweroff-logo $EINK_LOGO_PATH/uboot_logo/poweroff.bmp --output $IMAGE_PATH/logo.img + fi +fi + +chmod a+r -R $IMAGE_PATH/ + + copy_images $KERNEL_PATH/resource.img $IMAGE_PATH/resource.img copy_images_from_out boot.img copy_images_from_out boot-debug.img Index: system/core/rootdir/Android.mk =================================================================== --- system/core/rootdir/Android.mk (revision 2461) +++ system/core/rootdir/Android.mk (revision 2462) @@ -154,6 +154,9 @@ else LOCAL_POST_INSTALL_CMD += ; ln -sf /data/cache $(TARGET_ROOT_OUT)/cache endif +#add tuliyuan create fos parition --start +LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/fos +#add tuliyuan create fos parition --end ifdef BOARD_ROOT_EXTRA_SYMLINKS # BOARD_ROOT_EXTRA_SYMLINKS is a list of <target>:<link_name>. LOCAL_POST_INSTALL_CMD += $(foreach s, $(BOARD_ROOT_EXTRA_SYMLINKS),\
测试结果:
C:\Users\asw>adb root C:\Users\asw>adb remount Using overlayfs for /system Using overlayfs for /vendor Using overlayfs for /odm Using overlayfs for /system_ext Using overlayfs for /vendor_dlkm Using overlayfs for /odm_dlkm Using overlayfs for /product Now reboot your device for settings to take effect remount succeeded C:\Users\asw>adb push E:\tmp\logo\logo.bmp /fos/ E:\tmp\logo\logo.bmp: 1 file pushed. 22.2 MB/s (394040 bytes in 0.017s) C:\Users\asw>adb push E:\tmp\logo\logo_kernel.bmp /fos/ E:\tmp\logo\logo_kernel.bmp: 1 file pushed. 25.1 MB/s (394040 bytes in 0.015s) C:\Users\asw>adb shell rk3568_s:/ # ls acct config dev linkerconfig odm_dlkm sdcard system_ext apex d etc lost+found oem second_stage_resources vendor bin data fos metadata postinstall storage vendor_dlkm bugreports data_mirror init mnt proc sys cache debug_ramdisk init.environ.rc odm product system rk3568_s:/ # cd fos rk3568_s:/fos # ls logo.bmp logo_kernel.bmp lost+found rk3568_s:/fos #
可以看到根目录下面已经有fos文件夹了,remount 之后可以push logo进去了。