diff --git a/fastboot/fastboot.bash b/fastboot/fastboot.bash index cb1d3541c..cc1366cf4 100644 --- a/fastboot/fastboot.bash +++ b/fastboot/fastboot.bash @@ -109,7 +109,7 @@ _fastboot_cmd_flash() { cur="${COMP_WORDS[COMP_CWORD]}" if [[ $i -eq $COMP_CWORD ]]; then - partitions="boot bootloader dtbo modem odm oem product radio recovery system vbmeta vendor" + partitions="boot bootloader dtbo modem odm oem product radio recovery system vbmeta vendor vendor_dlkm" COMPREPLY=( $(compgen -W "$partitions" -- $cur) ) else _fastboot_util_complete_local_file "${cur}" '!*.img' diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp index 86cf30df2..4ca6a6a69 100644 --- a/fastboot/fastboot.cpp +++ b/fastboot/fastboot.cpp @@ -166,6 +166,10 @@ static Image images[] = { "vendor_boot.img", "vendor_boot.sig", "vendor_boot", true, ImageType::BootCritical }, + { "vendor_dlkm", + "vendor_dlkm.img", "vendor_dlkm.sig", + "vendor_dlkm", + true, ImageType::Normal }, { nullptr, "vendor_other.img", "vendor.sig", "vendor", true, ImageType::Normal }, // clang-format on }; diff --git a/init/property_service.cpp b/init/property_service.cpp index b593b623f..0c4a3c498 100644 --- a/init/property_service.cpp +++ b/init/property_service.cpp @@ -632,9 +632,10 @@ static void LoadProperties(char* data, const char* filter, const char* filename, char *key, *value, *eol, *sol, *tmp, *fn; size_t flen = 0; - static constexpr const char* const kVendorPathPrefixes[2] = { + static constexpr const char* const kVendorPathPrefixes[3] = { "/vendor", "/odm", + "/vendor_dlkm", }; const char* context = kInitContext; @@ -939,6 +940,7 @@ void PropertyLoadBootDefaults() { load_properties_from_file("/vendor/default.prop", nullptr, &properties); // } load_properties_from_file("/vendor/build.prop", nullptr, &properties); + load_properties_from_file("/vendor_dlkm/etc/build.prop", nullptr, &properties); load_properties_from_partition("odm", /* support_legacy_path_until */ 28); load_properties_from_partition("product", /* support_legacy_path_until */ 30); diff --git a/rootdir/Android.mk b/rootdir/Android.mk index a9d0ed08a..ac8e8478a 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -120,6 +120,17 @@ LOCAL_POST_INSTALL_CMD += ; ln -sf /vendor/odm/overlay $(TARGET_ROOT_OUT)/odm/ov LOCAL_POST_INSTALL_CMD += ; ln -sf /vendor/odm/priv-app $(TARGET_ROOT_OUT)/odm/priv-app LOCAL_POST_INSTALL_CMD += ; ln -sf /vendor/odm/usr $(TARGET_ROOT_OUT)/odm/usr + +# For /vendor_dlkm partition. +LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/vendor_dlkm +# For Treble Generic System Image (GSI), system-as-root GSI needs to work on +# both devices with and without /vendor_dlkm partition. Those symlinks are for +# devices without /vendor_dlkm partition. For devices with /vendor_dlkm +# partition, mount vendor_dlkm.img under /vendor_dlkm will hide those symlinks. +# Note that /vendor_dlkm/lib is omitted because vendor DLKMs should be accessed +# via /vendor/lib/modules directly. +LOCAL_POST_INSTALL_CMD += ; ln -sf /vendor/vendor_dlkm/etc $(TARGET_ROOT_OUT)/vendor_dlkm/etc + ifdef BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE LOCAL_POST_INSTALL_CMD += ; mkdir -p $(TARGET_ROOT_OUT)/cache else