re Fatal: Duplicate "disk =" definition for /dev/sdb which seems to be root of all this ...
patch 16_geometry is at fault: cleverly, the stat is omitted when the disk is declared inaccessible. too bad, that disks are identified by their device number, which is only determined by a stat. ergo, an uninited var is used, which happens to still contain the value from the previous disk entry. the patch was supposed to fix bug #379518. not checking the partition table is obvious, but it is beyond me why the device node must not be stat()ed. the attached patch Works For Me (TM).
#! /bin/sh -e ## ## All lines beginning with `## DP:' are a description of the patch. ## DP: Make sure that disks marked 'inaccessible' do not have their ## DP: partition tables checked. Fixes #379518. ## DP: Doesn't fix the crash on missing /dev nodes, unfortunately. [ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts patch_opts="${patch_opts:--f --no-backup-if-mismatch}" if [ $# -ne 1 ]; then echo >&2 "`basename $0`: script expects -patch|-unpatch as argument " exit 1 fi case "$1" in -patch) patch $patch_opts -p1 < $0;; -unpatch) patch $patch_opts -p1 -R < $0;; *) echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" exit 1;; esac exit 0 @DPATCH@ diff -urN lilo-22.7.3.orig/geometry.c lilo-22.7.3/geometry.c --- lilo-22.7.3.orig/geometry.c 2006-12-03 20:12:42.009282000 +0000 +++ lilo-22.7.3/geometry.c 2006-12-03 20:23:23.960349187 +0000 @@ -381,7 +381,8 @@ die("do_disk: stat %s: %s",disk,strerror(errno)); } if (!S_ISBLK(st.st_mode) || - (has_partitions(st.st_rdev) && (MINOR(st.st_rdev) & P_MASK(st.st_rdev)))) + (!cfg_get_flag(cf_disk,"inaccessible") && + has_partitions(st.st_rdev) && (MINOR(st.st_rdev) & P_MASK(st.st_rdev)))) die(" '%s' is not a whole disk device",disk); entry = alloc_t(DT_ENTRY);