Hi, and thanks for the bug reports.
On Wed, Nov 08, 2006 at 05:16:56PM +0100, Loïc Minier wrote:
I'm getting this warning during "update-initramfs -u": cryptsetup: failed to determine cipher modules to load for /dev/mapper/bee--sata-root ... I only use cryptsetup for crypted partitions on USB keys (LUKS), but I do have a regular LVM setup for swap, /, and other partitions. I attach an "update-initramfs -u" run with set -x in the hook. The failure is caused by add_device() calling get_lvm_deps() which returns 1. The misleading comment "is it lvm?" suggests that "get_lvm_deps "$nodes"" on line 222 is a test for LVM devices. I think it is a test on whether $nodes is (are) *backed up* by a LVM device, but I'm not sure.
It checks whether the "$nodes" device (which is a /dev/mapper/<something> device but not listed in /etc/crypttab) depends on other device-mapper devices (i.e. whether it is a lvm device backed by dm-crypt devices).
It would be nice if you could pass a testsuite for cryptsetup to prevent regressions.
Yes it would. But since the initramfs hook/script looks at details of the running system, it'd be quite hard to do. I usually try to do a couple of different test runs (esp. using qemu and d-i), but the 2:1.0.4-3 to 2:1.0.4-4 upgrade included pretty big changes to the initramfs scripts to allow for more than one device (to support resume-from-encrypted swap). So unfortunately some bugs crept in...sorry about that.
Would you be willing to test the attached patch? It should solve both bugs you reported today.
-- David Härdeman
Index: initramfs-cryptroot-hook =================================================================== --- initramfs-cryptroot-hook (revision 325) +++ initramfs-cryptroot-hook (working copy) @@ -218,10 +218,11 @@ # Can we find this node in crypttab if ! node_is_in_crypttab "$nodes"; then - # It is a /dev/mapper node but not in crypttab, is it lvm? - lvmnodes=$(get_lvm_deps "$nodes") || return 1 + # It is a /dev/mapper node but not in crypttab, + # perhaps it is a crypto-backed lvm device? + lvmnodes=$(get_lvm_deps "$nodes") || return 0 - # It is a lvm device! + # Yep lastopts="lvm=$nodes" nodes="$lvmnodes" fi @@ -297,8 +298,7 @@ modules=$(add_device "$dev") if [ -z "$modules" ]; then - echo "cryptsetup: failed to determine cipher modules to load for $dev" >&2 - exit 1 + continue fi for mod in $modules; do