Build product.img

This steals 768MB from system and assigns it to the product partition,
which contains many of the AOSP system apps and various ringtones. The
reason for this change is to expose /product/build.prop so we can add
system sepolicy without violating treble.

Bug: 129163131
Bug: 126036177
Change-Id: Ie25b32940d51b0adfc680f4d78e05076f607bafe
diff --git a/shared/BoardConfig.mk b/shared/BoardConfig.mk
index fa6ef02..689b9b9 100644
--- a/shared/BoardConfig.mk
+++ b/shared/BoardConfig.mk
@@ -28,6 +28,12 @@
 
 BOARD_USES_METADATA_PARTITION := true
 
+# Build a separate product.img partition
+BOARD_USES_PRODUCTIMAGE := true
+BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
+BOARD_PRODUCTIMAGE_PARTITION_SIZE := 805306368 # 768MB
+TARGET_COPY_OUT_PRODUCT := product
+
 ifeq ($(TARGET_BUILD_SYSTEM_ROOT_IMAGE),true)
 BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
 endif
@@ -43,8 +49,8 @@
 # The compiler will occasionally generate movaps, etc.
 BOARD_MALLOC_ALIGNMENT := 16
 
-# System partition size: 3.0G
-BOARD_SYSTEMIMAGE_PARTITION_SIZE := 3221225472
+# System partition size: 2.25G
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2415919104
 # Make the userdata partition 4G to accomodate ASAN and CTS
 BOARD_USERDATAIMAGE_PARTITION_SIZE := 4294967296
 
diff --git a/shared/config/fstab.initrd b/shared/config/fstab.initrd
index fb67b6f..08798dd 100644
--- a/shared/config/fstab.initrd
+++ b/shared/config/fstab.initrd
@@ -3,5 +3,6 @@
 /dev/block/vdc /cache ext4 nodev,noatime,nosuid,errors=panic wait
 /dev/block/vdd /vendor ext4 noatime,ro,errors=panic wait
 /dev/block/vde /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable
+/dev/block/vdf /product ext4 noatime,ro,errors=panic wait
 /dev/block/zram0 none swap defaults zramsize=75%
 /tmp /sdcard none defaults,bind recoveryonly
diff --git a/shared/config/gsi.fstab b/shared/config/gsi.fstab
index c20c700..4e3f31a 100644
--- a/shared/config/gsi.fstab
+++ b/shared/config/gsi.fstab
@@ -1 +1,2 @@
 /dev/block/vdd /vendor ext4 noatime,ro,errors=panic wait
+/dev/block/vdf /product ext4 noatime,ro,errors=panic wait
diff --git a/shared/config/initrd-root.dtb b/shared/config/initrd-root.dtb
index 1c75cd6..7962e1b 100644
--- a/shared/config/initrd-root.dtb
+++ b/shared/config/initrd-root.dtb
Binary files differ
diff --git a/shared/config/initrd-root.dts b/shared/config/initrd-root.dts
index 70a34fc..cb9e5ec 100644
--- a/shared/config/initrd-root.dts
+++ b/shared/config/initrd-root.dts
@@ -37,6 +37,14 @@
 					mnt_flags = "noatime,ro,errors=panic";
 					fsmgr_flags = "wait";
 				};
+
+				product {
+					compatible = "android,product";
+					dev = "/dev/block/vdf";
+					type = "ext4";
+					mnt_flags = "noatime,ro,errors=panic";
+					fsmgr_flags = "wait";
+				};
 			};
 		};
 	};
diff --git a/shared/config/system-root.dtb b/shared/config/system-root.dtb
index bdffbc7..bae54d8 100644
--- a/shared/config/system-root.dtb
+++ b/shared/config/system-root.dtb
Binary files differ
diff --git a/shared/config/system-root.dts b/shared/config/system-root.dts
index d0dedbe..327a38c 100644
--- a/shared/config/system-root.dts
+++ b/shared/config/system-root.dts
@@ -29,6 +29,14 @@
 					mnt_flags = "noatime,ro,errors=panic";
 					fsmgr_flags = "wait";
 				};
+
+				product {
+					compatible = "android,product";
+					dev = "/dev/block/vdf";
+					type = "ext4";
+					mnt_flags = "noatime,ro,errors=panic";
+					fsmgr_flags = "wait";
+				};
 			};
 		};
 	};