diff --git a/android/neverallow.go b/android/neverallow.go
index 18e9a17..d590d8e 100644
--- a/android/neverallow.go
+++ b/android/neverallow.go
@@ -245,7 +245,6 @@
 			Without("name", "librecovery_ui_ext").
 			With("install_in_root", "true").
 			NotModuleType("prebuilt_root").
-			NotModuleType("prebuilt_vendor").
 			Because("install_in_root is only for init_first_stage or librecovery_ui_ext."),
 	}
 }
diff --git a/etc/prebuilt_etc.go b/etc/prebuilt_etc.go
index 190d129..dd274ad 100644
--- a/etc/prebuilt_etc.go
+++ b/etc/prebuilt_etc.go
@@ -574,7 +574,6 @@
 	p.installDirBase = dirBase
 	p.AddProperties(&p.properties)
 	p.AddProperties(&p.subdirProperties)
-	p.AddProperties(&p.rootProperties)
 }
 
 func InitPrebuiltRootModule(p *PrebuiltEtc) {
diff --git a/fsgen/prebuilt_etc_modules_gen.go b/fsgen/prebuilt_etc_modules_gen.go
index 902d183..f217744 100644
--- a/fsgen/prebuilt_etc_modules_gen.go
+++ b/fsgen/prebuilt_etc_modules_gen.go
@@ -36,7 +36,6 @@
 	system_ext map[string][]srcBaseFileInstallBaseFileTuple
 	product    map[string][]srcBaseFileInstallBaseFileTuple
 	vendor     map[string][]srcBaseFileInstallBaseFileTuple
-	recovery   map[string][]srcBaseFileInstallBaseFileTuple
 }
 
 func newPrebuiltSrcGroupByInstallPartition() *prebuiltSrcGroupByInstallPartition {
@@ -45,7 +44,6 @@
 		system_ext: map[string][]srcBaseFileInstallBaseFileTuple{},
 		product:    map[string][]srcBaseFileInstallBaseFileTuple{},
 		vendor:     map[string][]srcBaseFileInstallBaseFileTuple{},
-		recovery:   map[string][]srcBaseFileInstallBaseFileTuple{},
 	}
 }
 
@@ -75,8 +73,6 @@
 				srcMap = srcGroup.product
 			case "vendor":
 				srcMap = srcGroup.vendor
-			case "recovery":
-				srcMap = srcGroup.recovery
 			}
 			if srcMap != nil {
 				srcMap[relativeInstallDir] = append(srcMap[relativeInstallDir], srcBaseFileInstallBaseFileTuple{
@@ -132,7 +128,6 @@
 	// System is intentionally added at the last to consider the scenarios where
 	// non-system partitions are installed as part of the system partition
 	partitionToInstallPathList := []partitionToInstallPath{
-		{name: "recovery", installPath: "recovery/root"},
 		{name: "vendor", installPath: ctx.DeviceConfig().VendorPath()},
 		{name: "product", installPath: ctx.DeviceConfig().ProductPath()},
 		{name: "system_ext", installPath: ctx.DeviceConfig().SystemExtPath()},
@@ -160,7 +155,6 @@
 	Soc_specific        *bool
 	Product_specific    *bool
 	System_ext_specific *bool
-	Recovery            *bool
 
 	Srcs []string
 	Dsts []string
@@ -180,12 +174,6 @@
 	Relative_install_path *string
 }
 
-// Split install_in_root to a separate struct as it is part of rootProperties instead of
-// properties
-type prebuiltInstallInRootProperties struct {
-	Install_in_root *bool
-}
-
 var (
 	etcInstallPathToFactoryList = map[string]android.ModuleFactory{
 		"":                etc.PrebuiltRootFactory,
@@ -267,8 +255,6 @@
 		moduleProps.Product_specific = proptools.BoolPtr(true)
 	case "vendor":
 		moduleProps.Soc_specific = proptools.BoolPtr(true)
-	case "recovery":
-		moduleProps.Recovery = proptools.BoolPtr(true)
 	}
 
 	moduleProps.No_full_install = proptools.BoolPtr(true)
@@ -316,16 +302,6 @@
 			installBaseFiles = append(installBaseFiles, tuple.installBaseFile)
 		}
 
-		// Recovery partition-installed modules are installed to `recovery/root/system` by
-		// default (See modulePartition() in android/paths.go). If the destination file
-		// directory is not `recovery/root/system/...`, it should set install_in_root to true
-		// to prevent being installed in `recovery/root/system`.
-		if partition == "recovery" && !strings.HasPrefix(destDir, "system") {
-			propsList = append(propsList, &prebuiltInstallInRootProperties{
-				Install_in_root: proptools.BoolPtr(true),
-			})
-		}
-
 		// Set appropriate srcs, dsts, and releative_install_path based on
 		// the source and install file names
 		if allCopyFileNamesUnchanged {
@@ -371,7 +347,6 @@
 		ret = append(ret, createPrebuiltEtcModulesForPartition(ctx, "system_ext", srcDir, groupedSource.system_ext)...)
 		ret = append(ret, createPrebuiltEtcModulesForPartition(ctx, "product", srcDir, groupedSource.product)...)
 		ret = append(ret, createPrebuiltEtcModulesForPartition(ctx, "vendor", srcDir, groupedSource.vendor)...)
-		ret = append(ret, createPrebuiltEtcModulesForPartition(ctx, "recovery", srcDir, groupedSource.recovery)...)
 	}
 
 	return ret
