summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcore/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons10
1 files changed, 10 insertions, 0 deletions
diff --git a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons
index d99a1ec2..26b82341 100755
--- a/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons
+++ b/core/rootfs/rootfs-stage32/data/opt/openslx/scripts/systemd-setup_slx_addons
@@ -61,6 +61,16 @@ mkdir -p "$ADDON_MOUNT_POINT"
mount -t squashfs -o ro "$ADDON_PATH" "$ADDON_MOUNT_POINT" || \
{ slxlog --echo "addon-setup-mount" "Failed to mount $ADDON_PATH."; exit 1; }
+# Merge any passwd/group/... files
+merguez() {
+ local tmp=$(mktemp)
+ cat "$@" | awk -F: '!n[$1]++' > "$tmp"
+ mv -f -- "$tmp" "$1"
+}
+for i in group shadow passwd; do
+ [ -s "${ADDON_MOUNT_POINT}/etc/$i" ] && merguez "/etc/$i" "${ADDON_MOUNT_POINT}/etc/$i"
+done
+
# now append it to /
echo "Appending ${ADDON_MOUNT_POINT} to /"
if ! mount -o "remount,ins:1:${ADDON_MOUNT_POINT}=rr" / ; then # ins:1 makes sure the addon is before stage32, after rw layer