RK3568 Anroid12新增自定义分区

前言:

因为客户需要动态更换开机logo,需要一个自定义分区来存放这些logo。网上查了些资料,现记录如下。

参考:

Android新增自定义分区

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进去了。

 

 

posted @ 2023-12-18 15:32  simple雨  阅读(336)  评论(0编辑  收藏  举报