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