From 68de91771dd59e46176f6c8a4a932cd76c23468b Mon Sep 17 00:00:00 2001 From: Sebastiano Barezzi Date: Thu, 8 Sep 2022 23:40:58 +0200 Subject: [PATCH] sdm710-common: Retrofit dynamic partitions * Merge system, vendor and cust, giving us a whopping 6.4GB of space, pretty nice * Mark standard block devices as super block devices (from https://source.android.com/devices/tech/ota/dynamic_partitions/implement?hl=en#selinux-legacy) Change-Id: I2553aad99f5c458cf6ac6b4265dc5840127c13e9 --- BoardConfigCommon.mk | 31 +++++++++++++++++++++++++++---- rootdir/etc/fstab.qcom | 7 +++++-- sdm710.mk | 7 +++++++ sepolicy/vendor/device.te | 2 ++ sepolicy/vendor/file_contexts | 4 ++++ 5 files changed, 45 insertions(+), 6 deletions(-) diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk index 253522d..4c0d84e 100644 --- a/BoardConfigCommon.mk +++ b/BoardConfigCommon.mk @@ -89,14 +89,37 @@ BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4 BOARD_USERDATAIMAGE_PARTITION_SIZE := 114898743296 BOARD_USES_METADATA_PARTITION := true -PARTITIONS_LIST := system vendor +SSI_PARTITIONS := product system system_ext +TREBLE_PARTITIONS := odm vendor +ALL_PARTITIONS := $(SSI_PARTITIONS) $(TREBLE_PARTITIONS) -$(foreach p, $(call to-upper, $(PARTITIONS_LIST)), \ +$(foreach p, $(call to-upper, $(ALL_PARTITIONS)), \ $(eval BOARD_$(p)IMAGE_FILE_SYSTEM_TYPE := ext4) \ $(eval TARGET_COPY_OUT_$(p) := $(call to-lower, $(p)))) -BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3758096384 -BOARD_VENDORIMAGE_PARTITION_SIZE := 1610612736 +# Partitions - dynamic +BOARD_SUPER_PARTITION_SIZE := 6442450944 +BOARD_SUPER_PARTITION_GROUPS := qti_dynamic_partitions +BOARD_QTI_DYNAMIC_PARTITIONS_PARTITION_LIST := $(ALL_PARTITIONS) +BOARD_QTI_DYNAMIC_PARTITIONS_SIZE := 6442446848 # (BOARD_SUPER_PARTITION_SIZE - 4MB) +BOARD_SUPER_PARTITION_BLOCK_DEVICES := system vendor cust +BOARD_SUPER_PARTITION_SYSTEM_DEVICE_SIZE := 3758096384 +BOARD_SUPER_PARTITION_VENDOR_DEVICE_SIZE := 1610612736 +BOARD_SUPER_PARTITION_CUST_DEVICE_SIZE := 1073741824 +BOARD_SUPER_PARTITION_METADATA_DEVICE := system + +# Partitions - reserved size +ifneq ($(WITH_GMS),true) +$(foreach p, $(call to-upper, $(SSI_PARTITIONS)), \ + $(eval BOARD_$(p)IMAGE_EXTFS_INODE_COUNT := -1)) +SSI_PARTITIONS_RESERVED_SIZE := 1258291200 +else +SSI_PARTITIONS_RESERVED_SIZE := 30720000 +endif +$(foreach p, $(call to-upper, $(SSI_PARTITIONS)), \ + $(eval BOARD_$(p)IMAGE_PARTITION_RESERVED_SIZE := $(SSI_PARTITIONS_RESERVED_SIZE))) +$(foreach p, $(call to-upper, $(TREBLE_PARTITIONS)), \ + $(eval BOARD_$(p)IMAGE_PARTITION_RESERVED_SIZE := 30720000)) # Platform BOARD_VENDOR := xiaomi diff --git a/rootdir/etc/fstab.qcom b/rootdir/etc/fstab.qcom index 4036c5c..33a1d03 100644 --- a/rootdir/etc/fstab.qcom +++ b/rootdir/etc/fstab.qcom @@ -10,8 +10,11 @@ /dev/block/bootdevice/by-name/recovery /recovery emmc defaults defaults /dev/block/bootdevice/by-name/misc /misc emmc defaults defaults -/dev/block/by-name/system /system ext4 ro,barrier=1,discard wait,avb,first_stage_mount -/dev/block/by-name/vendor /vendor ext4 ro,barrier=1,discard wait,avb,first_stage_mount +system /system ext4 ro,barrier=1,discard wait,avb,logical,first_stage_mount,avb_keys=/avb/q-gsi.avbpubkey:/avb/r-gsi.avbpubkey:/avb/s-gsi.avbpubkey +system_ext /system_ext ext4 ro,barrier=1,discard wait,avb,logical,first_stage_mount +product /product ext4 ro,barrier=1,discard wait,avb,logical,first_stage_mount +vendor /vendor ext4 ro,barrier=1,discard wait,avb,logical,first_stage_mount +odm /odm ext4 ro,barrier=1,discard wait,avb,logical,first_stage_mount /dev/block/bootdevice/by-name/cache /cache ext4 nosuid,noatime,nodev,barrier=1 wait /dev/block/by-name/logdump /metadata ext4 noatime,nosuid,nodev,discard wait,check,formattable,first_stage_mount diff --git a/sdm710.mk b/sdm710.mk index b5267f0..1109c96 100644 --- a/sdm710.mk +++ b/sdm710.mk @@ -151,6 +151,10 @@ PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \ android.hardware.drm@1.4.vendor +# fastbootd +PRODUCT_PACKAGES += \ + fastbootd + # Fingerprint PRODUCT_PACKAGES += \ android.hardware.biometrics.fingerprint@2.3-service.xiaomi @@ -302,6 +306,9 @@ DEVICE_PACKAGE_OVERLAYS += \ PRODUCT_ENFORCE_RRO_TARGETS := * PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS += $(LOCAL_PATH)/overlay/packages/apps/CarrierConfig +# Partitions +PRODUCT_USE_DYNAMIC_PARTITIONS := true + # Perf PRODUCT_PACKAGES += \ libqti-perfd-client diff --git a/sepolicy/vendor/device.te b/sepolicy/vendor/device.te index e817f6d..3aca076 100644 --- a/sepolicy/vendor/device.te +++ b/sepolicy/vendor/device.te @@ -4,4 +4,6 @@ type gps_device, dev_type; type lirc_device, dev_type; +typeattribute system_block_device super_block_device_type; + type ultrasound_device, dev_type; diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index 99d3032..07a24af 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -2,6 +2,10 @@ /dev/socket/audio_hw_socket u:object_r:audio_socket:s0 /mnt/vendor/persist/audio(/.*)? u:object_r:persist_audio_file:s0 +# Block devices +/dev/block/platform/soc/1d84000.ufshc/by-name/cust u:object_r:system_block_device:s0 +/dev/block/platform/soc/7c4000.sdhci/by-name/cust u:object_r:system_block_device:s0 + # Camera /mnt/vendor/persist/camera(/.*)? u:object_r:persist_camera_file:s0 /vendor/bin/remosaic_daemon u:object_r:remosaic_daemon_exec:s0