patch provided. You probably don't want to apply it as-is as it breaks
other scenarios. I had to completely remove devicemapper support to
make it work.

It would be completely feasible to make it a compile option and
provide two binary packages, but that would be more of a headache.
diff -ur lilo-23.2/src/config.h lilo-23.2.mine/src/config.h
--- lilo-23.2/src/config.h	2006-12-16 17:55:12.000000000 -0800
+++ lilo-23.2.mine/src/config.h	2014-11-17 19:51:24.000000000 -0800
@@ -13,6 +13,8 @@
 #ifndef CONFIG_H
 #define CONFIG_H
 
+#undef HAS_LIBDEVMAPPER_H
+
 /* undefine LCF_DEVMAPPER if the library is not present */
 #ifdef LCF_DEVMAPPER
 # ifndef HAS_LIBDEVMAPPER_H
diff -ur lilo-23.2/src/device.c lilo-23.2.mine/src/device.c
--- lilo-23.2/src/device.c	2014-11-17 20:20:38.000000000 -0800
+++ lilo-23.2.mine/src/device.c	2014-11-17 20:28:23.000000000 -0800
@@ -924,8 +924,8 @@
         if (is_dm_major(major)) {
 #ifndef LCF_DEVMAPPER
             warn("device-mapper (%d) referenced in " PARTITIONS ",\n"
-                 "   but LILO is configured without DEVMAPPER option.  Skipping device.", major);
-            continue;
+                 "   but LILO is configured without DEVMAPPER option.", major);
+		/* This might be safe. */
 #endif
         }
         else if ((major>=60 && major<=63) || (major>=120 && major<=127) ) {
@@ -1307,10 +1307,13 @@
 #if BETA_TEST
 		if (verbose>=3) printf("J=%d  K=%d\n", j, k);
 #endif
+#if 0
+/* This check is simply wrong */
 		if (j<0 && k>=0) {
 		    die("Devices %04X and %04X are assigned to BIOS 0x%02X",
 		    	vm[k].device, walk->device, bios+0x80);
 		}
+#endif
 	    }
 	    codes |= 1L << bios;	
 	}
diff -ur lilo-23.2/src/geometry.c lilo-23.2.mine/src/geometry.c
--- lilo-23.2/src/geometry.c	2011-04-09 08:03:29.000000000 -0700
+++ lilo-23.2.mine/src/geometry.c	2014-11-17 20:31:58.000000000 -0800
@@ -721,7 +721,7 @@
 	    if (ioctl(fd,HDIO_GETGEO,&hdprm) < 0)
 		die("geo_query_dev HDIO_GETGEO (dev 0x%04x): %s",device,
 		  strerror(errno));
-	    if (all && !hdprm.sectors)
+	    if (all && !hdprm.sectors && (!geo->sectors || !geo->cylinders || !geo->heads))
 		die("HDIO_REQ not supported for your DAC960/IBM controller. "
 		  "Please use a DISK section");
 	    geo->heads = hdprm.heads;

Reply via email to