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;