Wesley W. Terpstra wrote:
> On Thu, Jan 20, 2005 at 02:59:00PM -0500, Joey Hess wrote:
> > initrd-tools 0.1.76 changed to abort on install to LVM if dmsetup was
> > not installed. I think this was a mistake. I'm ccing tbm, who made the
> > change.
> 
> I made the change.

Right, tbm only committed it.

> > This was apparently added as part of a patch to support encrypted root
> > filesystems, which is not supported by d-i at all; silently adding a
> > requirement that dmsetup be installed for lvm systems when previously it
> > was not needed is not a good thing to have done.
> 
> Why is the d-i seeing the new initrd-tools at all?
> I thought base was frozen?

a) People can install unstable using d-i and we want this to keep working.
b) We had to let the new initrd-tools into testing because it fixed
   other RC bugs.

> > It seems to me that the above code could easily be rewritten to skip
> > calling dmsetup if it was not installed, and run the lvm function. This
> > might be a little less robust on systems that do use encrypted root
> > filesystems, but at least it wouldn't require us to make last-minute changes
> > to d-i and debian-cd to add dmsetup everywhere.
> 
> At any rate, I agree with your solution, if there is no dmsetup it makes
> sense to fall back to using lvm. Since cryptsetup depends on dmsetup, there
> is nothing wrong with this solution.

Great, so something like this? (Untested)

--- mkinitrd.orig       2005-01-20 16:15:03.000000000 -0500
+++ mkinitrd    2005-01-20 16:16:43.000000000 -0500
@@ -390,20 +390,19 @@
 dm() {
        local dmname
        
-       if ! command -v dmsetup > /dev/null 2>&1; then
-               echo Root is on a DM device, but dmsetup not installed >&2
-               exit 1
-       fi
+       if command -v dmsetup > /dev/null 2>&1; then
+               dmdev=$(printf "(%d, %d)" $major $minor)
        
-       dmdev=$(printf "(%d, %d)" $major $minor)
-       
-       if ! dmsetup ls | grep -q "$dmdev\$"; then
-               echo Unknown DM device $major:$minor >&2
-               exit 1
+               if ! dmsetup ls | grep -q "$dmdev\$"; then
+                       echo Unknown DM device $major:$minor >&2
+                       exit 1
+               fi
+               
+               dmname=$(dmsetup ls | grep "$dmdev\$" | sed 
's/^\([^[:space:]]*\).*$/\1/')
        fi
        
-       dmname=$(dmsetup ls | grep "$dmdev\$" | sed 
's/^\([^[:space:]]*\).*$/\1/')
-       if dmsetup table $dmname | cut -d" " -f3 | grep -q ^crypt$ ; then
+       if [ -n "$dmname" ] && \
+          dmsetup table $dmname | cut -d" " -f3 | grep -q ^crypt$ ; then
                dmcrypt
        elif command -v lvmiopversion > /dev/null 2>&1; then
                lvm

-- 
see shy jo

Attachment: signature.asc
Description: Digital signature

Reply via email to