diff options
| -rw-r--r-- | meta/classes/image.bbclass | 21 | 
1 files changed, 21 insertions, 0 deletions
| diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass index 832c7384c6..34e9f4cba5 100644 --- a/meta/classes/image.bbclass +++ b/meta/classes/image.bbclass @@ -215,6 +215,27 @@ read_only_rootfs_hook () {  			fi  		fi  	fi + +	if ${@bb.utils.contains("DISTRO_FEATURES", "systemd", "true", "false", d)}; then +	    # Update user database files so that services don't fail for a read-only systemd system +	    for conffile in ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd.conf ${IMAGE_ROOTFS}/usr/lib/sysusers.d/systemd-remote.conf; do +		[ -e $conffile ] || continue +		grep -v "^#" $conffile | sed -e '/^$/d' | while read type name id comment; do +		    if [ "$type" = "u" ]; then +			useradd_params="" +			[ "$id" != "-" ] && useradd_params="$useradd_params --uid $id" +			[ "$comment" != "-" ] && useradd_params="$useradd_params --comment $comment" +			useradd_params="$useradd_params --system $name" +			eval useradd --root ${IMAGE_ROOTFS} $useradd_params || true +		    elif [ "$type" = "g" ]; then +			groupadd_params="" +			[ "$id" != "-" ] && groupadd_params="$groupadd_params --gid $id" +			groupadd_params="$groupadd_params --system $name" +			eval groupadd --root ${IMAGE_ROOTFS} $groupadd_params || true +		    fi +		done +	    done +	fi  }  PACKAGE_EXCLUDE ??= "" | 
