Preserve /etc/crypttab (just like /etc/fstab)
authorRaphaël Hertzog <hertzog@debian.org>
Mon, 26 Aug 2013 13:02:02 +0000 (15:02 +0200)
committerRaphaël Hertzog <hertzog@debian.org>
Mon, 26 Aug 2013 13:02:02 +0000 (15:02 +0200)
This file is setup by partman-crypto before live-installer runs and
it must be preserved otherwise the encrypted filesystems are not properly
decrypted at boot time (and the system doesn't boot).

debian/changelog
debian/live-installer.postinst

index 5444bfc..69e2103 100644 (file)
@@ -1,3 +1,11 @@
+live-installer (43) UNRELEASED; urgency=low
+
+  * Preserve /etc/crypttab (just like /etc/fstab) setup by partman-crypto
+    before live-installer runs (and fix installation on encrypted
+    filesystems at the same time).
+
+ -- Raphaël Hertzog <hertzog@debian.org>  Mon, 26 Aug 2013 14:55:58 +0200
+
 live-installer (42) unstable; urgency=low
 
   [ Dmitrijs Ledkovs ]
index 9a39d8d..bc40b84 100644 (file)
@@ -8,6 +8,8 @@ db_capb backup
 # Architecture and OS detection
 ARCH=`udpkg --print-architecture`
 OS=`udpkg --print-os`
+# Files that must not be overwritten by copy of live system
+FILES_TO_PRESERVE="/etc/fstab /etc/crypttab"
 
 NEWLINE="
 "
@@ -34,11 +36,12 @@ install_live_system () {
        # symlinks there.
        rmdir /target/var/lock /target/var/run 2>/dev/null || true
 
-       # Backup pre-existing /etc/fstab as it will be overwritten by the
-       # copy of the live system
-       if [ -e /target/etc/fstab ] && [ ! -e /target/etc/fstab.live-installer ]; then
-               mv /target/etc/fstab /target/etc/fstab.live-installer
-       fi
+       # Backup files that should not be overwritten by the copy
+       for f in $FILES_TO_PRESERVE; do
+           if [ -e /target$f ] && [ ! -e /target/${f}.live-installer ]; then
+               mv /target$f /target${f}.live-installer
+           fi
+       done
 
        for place in $PLACES; do
                [ ! -e $place ] && continue
@@ -83,10 +86,12 @@ install_live_system () {
                eval ${SUPPORT}_teardown
        done
 
-       # Restore the fstab file created by d-i
-       if [ -e /target/etc/fstab.live-installer ]; then
-               mv /target/etc/fstab.live-installer /target/etc/fstab
-       fi
+       # Restore important configuration files
+       for f in $FILES_TO_PRESERVE; do
+               if [ -e /target${f}.live-installer ]; then
+                       mv /target${f}.live-installer /target$f
+               fi
+       done
 
        if [ ${PLACE_FOUND} -eq 0 ]; then
                error "Could not find any live images"