crypt/module-setup.sh: filter /etc/crypttab in host-only mode
authorHarald Hoyer <harald@redhat.com>
Tue, 9 Apr 2013 08:48:26 +0000 (10:48 +0200)
committerHarald Hoyer <harald@redhat.com>
Tue, 9 Apr 2013 08:48:26 +0000 (10:48 +0200)
only take those /etc/crypttab entries, which we need to boot the system

modules.d/90crypt/module-setup.sh

index b76f6ae..3c9a1f1 100755 (executable)
@@ -56,7 +56,22 @@ install() {
     if ! dracut_module_included "systemd"; then
         inst_hook cleanup 30 "$moddir/crypt-cleanup.sh"
     fi
-    [[ $hostonly ]]  && inst_simple /etc/crypttab
+
+    if [[ $hostonly ]]; then
+        # filter /etc/crypttab for the devices we need
+        while read _mapper _dev _rest; do
+            [[ $_mapper = \#* ]] && continue
+            [[ $_dev ]] || continue
+            for _hdev in "${!host_fs_types[@]}"; do
+                [[ ${host_fs_types[$_hdev]} == "crypto_LUKS" ]] || continue
+                if [[ $_hdev -ef $_dev ]] || [[ /dev/block/$_hdev -ef $_dev ]]; then
+                    echo "$_mapper $_dev $_rest"
+                    break
+                fi
+            done
+        done < /etc/crypttab > $initdir/etc/crypttab
+    fi
+
     inst_simple "$moddir/crypt-lib.sh" "/lib/dracut-crypt-lib.sh"
 
     dracut_install -o \