Enable system_ext partition for cuttlefish
am: 3e008ba5d3

Change-Id: I4231e0547516ac4e0da00c201be017b0032ecda7
diff --git a/shared/BoardConfig.mk b/shared/BoardConfig.mk
index ce42333..080fb72 100644
--- a/shared/BoardConfig.mk
+++ b/shared/BoardConfig.mk
@@ -38,6 +38,11 @@
 BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE := ext4
 TARGET_COPY_OUT_PRODUCT := product
 
+# Build a separate system_ext.img partition
+BOARD_USES_SYSTEM_EXTIMAGE := true
+BOARD_SYSTEM_EXTIMAGE_FILE_SYSTEM_TYPE := ext4
+TARGET_COPY_OUT_SYSTEM_EXT := system_ext
+
 ifeq ($(TARGET_BUILD_SYSTEM_ROOT_IMAGE),true)
 BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
 endif
@@ -156,7 +161,7 @@
 ifeq ($(TARGET_USE_DYNAMIC_PARTITIONS),true)
   BOARD_SUPER_PARTITION_SIZE := 6442450944
   BOARD_SUPER_PARTITION_GROUPS := google_dynamic_partitions
-  BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor product
+  BOARD_GOOGLE_DYNAMIC_PARTITIONS_PARTITION_LIST := system vendor product system_ext
   BOARD_GOOGLE_DYNAMIC_PARTITIONS_SIZE := 6442450944
   BOARD_SUPER_PARTITION_METADATA_DEVICE := vda
   BOARD_BUILD_SUPER_IMAGE_BY_DEFAULT := true
@@ -164,9 +169,10 @@
   TARGET_RELEASETOOLS_EXTENSIONS := device/google/cuttlefish/shared
 else
   # No dynamic partitions support; we must specify maximum sizes
-  BOARD_SYSTEMIMAGE_PARTITION_SIZE := 4294967296 # 4 GB
+  BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2147483648 # 2GB
   BOARD_VENDORIMAGE_PARTITION_SIZE := 536870912 # 512MB
-  BOARD_PRODUCTIMAGE_PARTITION_SIZE := 1610612736 # 1.5GB
+  BOARD_PRODUCTIMAGE_PARTITION_SIZE := 2147483648 # 2GB
+  BOARD_SYSTEM_EXTIMAGE_PARTITION_SIZE := 1610612736 # 1.5GB
   TARGET_NO_RECOVERY ?= true
 endif
 
diff --git a/shared/config/composite-fstab.initrd-dynamic-partitions b/shared/config/composite-fstab.initrd-dynamic-partitions
index 69e49db..ed5b7e3 100644
--- a/shared/config/composite-fstab.initrd-dynamic-partitions
+++ b/shared/config/composite-fstab.initrd-dynamic-partitions
@@ -7,5 +7,6 @@
 # Add all dynamic partitions except system, after this comment
 vendor /vendor ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
 product /product ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+system_ext /system_ext ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
 /dev/block/zram0 none swap defaults zramsize=75%
 /tmp /sdcard none defaults,bind recoveryonly
diff --git a/shared/config/composite-gsi.fstab b/shared/config/composite-gsi.fstab
index daa11e4..ceeeff2 100644
--- a/shared/config/composite-gsi.fstab
+++ b/shared/config/composite-gsi.fstab
@@ -1,2 +1,3 @@
 /dev/block/by-name/vendor /vendor ext4 noatime,ro,errors=panic wait
 /dev/block/by-name/product /product ext4 noatime,ro,errors=panic wait
+/dev/block/by-name/system_ext /system_ext ext4 noatime,ro,errors=panic wait
diff --git a/shared/config/fstab.initrd b/shared/config/fstab.initrd
index c07c7f1..51f1ade 100644
--- a/shared/config/fstab.initrd
+++ b/shared/config/fstab.initrd
@@ -5,5 +5,6 @@
 /dev/block/vdd /metadata ext4 nodev,noatime,nosuid,errors=panic wait,formattable
 /dev/block/vde /vendor ext4 noatime,ro,errors=panic wait
 /dev/block/vdf /product ext4 noatime,ro,errors=panic wait
+/dev/block/vdg /system_ext 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/fstab.initrd-dynamic-partitions b/shared/config/fstab.initrd-dynamic-partitions
index f66c98c..c02b5ed 100644
--- a/shared/config/fstab.initrd-dynamic-partitions
+++ b/shared/config/fstab.initrd-dynamic-partitions
@@ -7,5 +7,6 @@
 # Add all dynamic partitions except system, after this comment
 vendor /vendor ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
 product /product ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
+system_ext /system_ext ext4 noatime,ro,errors=panic wait,logical,first_stage_mount
 /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 76c902b..d727dd7 100644
--- a/shared/config/gsi.fstab
+++ b/shared/config/gsi.fstab
@@ -1,2 +1,3 @@
 /dev/block/vde /vendor ext4 noatime,ro,errors=panic wait
 /dev/block/vdf /product ext4 noatime,ro,errors=panic wait
+/dev/block/vdg /system_ext ext4 noatime,ro,errors=panic wait
diff --git a/shared/config/initrd-root.dts b/shared/config/initrd-root.dts
index d27d76a..8b4e749 100644
--- a/shared/config/initrd-root.dts
+++ b/shared/config/initrd-root.dts
@@ -45,6 +45,14 @@
 					mnt_flags = "noatime,ro,errors=panic";
 					fsmgr_flags = "wait";
 				};
+
+				system_ext {
+					compatible = "android,system_ext";
+					dev = "/dev/block/vdg";
+					type = "ext4";
+					mnt_flags = "noatime,ro,errors=panic";
+					fsmgr_flags = "wait";
+				};
 			};
 		};
 	};
diff --git a/shared/config/system-root.dts b/shared/config/system-root.dts
index db16f37..25e5bb9 100644
--- a/shared/config/system-root.dts
+++ b/shared/config/system-root.dts
@@ -37,6 +37,14 @@
 					mnt_flags = "noatime,ro,errors=panic";
 					fsmgr_flags = "wait";
 				};
+
+				system_ext {
+					compatible = "android,system_ext";
+					dev = "/dev/block/vdg";
+					type = "ext4";
+					mnt_flags = "noatime,ro,errors=panic";
+					fsmgr_flags = "wait";
+				};
 			};
 		};
 	};
diff --git a/shared/releasetools.py b/shared/releasetools.py
index e401139..198fcc2 100644
--- a/shared/releasetools.py
+++ b/shared/releasetools.py
@@ -25,6 +25,7 @@
 #   know that an image is present in source build but not in target build.
 USERIMAGE_PARTITIONS = [
     "product",
+    "system_ext",
 ]
 
 
diff --git a/shared/sepolicy/vendor/file_contexts b/shared/sepolicy/vendor/file_contexts
index cb0ecc3..66abc41 100644
--- a/shared/sepolicy/vendor/file_contexts
+++ b/shared/sepolicy/vendor/file_contexts
@@ -7,12 +7,14 @@
 /dev/block/vdd  u:object_r:metadata_block_device:s0
 /dev/block/vde  u:object_r:system_block_device:s0
 /dev/block/vdf  u:object_r:system_block_device:s0
+/dev/block/vdg  u:object_r:system_block_device:s0
 /dev/block/vda1  u:object_r:system_block_device:s0
 /dev/block/vda2  u:object_r:userdata_block_device:s0
 /dev/block/vda3  u:object_r:cache_block_device:s0
 /dev/block/vda4  u:object_r:metadata_block_device:s0
 /dev/block/vda5  u:object_r:system_block_device:s0
 /dev/block/vda6  u:object_r:system_block_device:s0
+/dev/block/vda7  u:object_r:system_block_device:s0
 /dev/block/zram0  u:object_r:swap_block_device:s0
 /dev/dri/card0  u:object_r:graphics_device:s0
 /dev/dri/renderD128  u:object_r:graphics_device:s0