summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xremote/rootfs/rootfs-stage31/data/bin/activate_sysconfig8
-rw-r--r--server/includes/packing.inc2
2 files changed, 7 insertions, 3 deletions
diff --git a/remote/rootfs/rootfs-stage31/data/bin/activate_sysconfig b/remote/rootfs/rootfs-stage31/data/bin/activate_sysconfig
index bc7dfd71..3f8029a7 100755
--- a/remote/rootfs/rootfs-stage31/data/bin/activate_sysconfig
+++ b/remote/rootfs/rootfs-stage31/data/bin/activate_sysconfig
@@ -61,8 +61,12 @@ HEREEND
hwclock -s -u
fi
-
- tar xf "${CONFIG}.tgz" -C "${FUTURE_ROOT}" || { echo "Could not untar ${CONFIG}.tgz to ${FUTURE_ROOT}"; return 1; }
+ local TEMP_EXTRACT_DIR="/tmp/config.tgz.tmp"
+ mkdir -p "${TEMP_EXTRACT_DIR}"
+ tar xf "${CONFIG}.tgz" -C "${TEMP_EXTRACT_DIR}" || { echo "Could not untar ${CONFIG}.tgz to ${TEMP_EXTRACT_DIR}"; return 1; }
+ chown -R 0:0 "${TEMP_EXTRACT_DIR}"
+ cd "${TEMP_EXTRACT_DIR}"
+ tar -cp * | tar -xp -C "${FUTURE_ROOT}"
}
diff --git a/server/includes/packing.inc b/server/includes/packing.inc
index 01bdff99..85d28de4 100644
--- a/server/includes/packing.inc
+++ b/server/includes/packing.inc
@@ -11,7 +11,7 @@ generate_initramfs() {
cd "$1" || perror "Cannot cd to '$1'"
rm -f -- "$3"
- find $2 | cpio --format="newc" --create | gzip -9 > "$3"
+ find $2 | cpio --format="newc" --create | xz --check=crc32 --lzma2=dict=1MiB > "$3"
local PS=(${PIPESTATUS[*]})
[ "x${PS[0]}" != "x0" ] && perror "'find $2' in '$(pwd)' failed."
[ "x${PS[1]}" != "x0" ] && perror "cpio create failed."