diff sbin/fjail @ 173:6782ac823f86

Handle /var/empty more sanely when populating datasets from a base.txz image
author Franz Glasner <fzglas.hg@dom66.de>
date Tue, 16 Aug 2022 08:34:34 +0200
parents b62b8bc6184f
children 9b23832722dd
line wrap: on
line diff
--- a/sbin/fjail	Thu Dec 17 08:50:50 2020 +0100
+++ b/sbin/fjail	Tue Aug 16 08:34:34 2022 +0200
@@ -220,7 +220,22 @@
         return 1
     fi
 
+    #
+    # Handle /var/empty separately later: could be already there and
+    # mounted read-only.
+    #
     tar -C "${_mp}" --exclude=./var/empty -xJp -f "${_basetxz}" || { echo "ERROR: tar encountered errors" >&2; return 1; }
+    if [ -d "${_mp}/var/empty" ]; then
+        #
+        # If /var/empty exists already try to extract with changing the
+        # flags (e.g. `schg'). But be tolerant with errors here.
+        #
+        tar -C "${_mp}" -xJp -f "${_basetxz}" ./var/empty
+    else
+        # Just extract /var/empty normally
+        tar -C "${_mp}" -xJp -f "${_basetxz}" ./var/empty || { echo "ERROR: tar encountered errors" >&2; return 1; }
+    fi
+
     find "${_mp}/boot" -type f -delete
 }