summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaus Herwig <c.herwig@checon.de>2010-04-30 02:27:55 +0200
committermaximilian attems <maks@debian.org>2010-05-28 16:42:17 -0700
commit81606da78671a6f2b4d54bb2b2e8dbd586ef9c61 (patch)
tree705f81a347e0e9356303de493326552ec3fb689d
parent9e7cebc5bc94634987b35bf08e150c179bd927c4 (diff)
downloadinitramfs-tools-81606da78671a6f2b4d54bb2b2e8dbd586ef9c61.tar.gz
initramfs-tools-81606da78671a6f2b4d54bb2b2e8dbd586ef9c61.zip
mkinitramfs: fix MODULES=dep on mylex raid devices (DAC960)
mkinitramfs fails to generate a initrd file for root filesystems on an old mylex raid controller (kernel module DAC960). In my case this breaks installation for lenny (5.0.3) on a FJS Primergy server - as this bug is not only in the mentioned version but also in 0.92 which ships on the lenny install cd: The installer can boot, as the old kernel module is still present. But the base install step fails when it tries to generate the initrd. The error in detail, when invoking mkinitramfs manually with -x ----------- (...) + manual_add_modules ext2 + local mam_x firmwares firmware ++ modprobe --set-version=2.6.29.6-vs2.3.0.36.14-beng --ignore-install --quiet --show-depends ext2 ++ awk '/^insmod/ { print $2 }' + for mam_x in '$(modprobe --set-version="${version}" --ignore-install --quiet --show-depends "${1}" | awk '\''/^insmod/ { print $2 }'\'')' + '[' -e /tmp/mkinitramfs_lNjzuV//lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/mbcache.ko ']' ++ dirname /lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/mbcache.ko + mkdir -p /tmp/mkinitramfs_lNjzuV//lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs ++ dirname /lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/mbcache.ko + ln -s /lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/mbcache.ko /tmp/mkinitramfs_lNjzuV//lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs + '[' n = y ']' ++ modinfo -F firmware /lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/mbcache.ko + firmwares= + '[' -z '' ']' + continue + for mam_x in '$(modprobe --set-version="${version}" --ignore-install --quiet --show-depends "${1}" | awk '\''/^insmod/ { print $2 }'\'')' + '[' -e /tmp/mkinitramfs_lNjzuV//lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/ext2/ext2.ko ']' ++ dirname /lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/ext2/ext2.ko + mkdir -p /tmp/mkinitramfs_lNjzuV//lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/ext2 ++ dirname /lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/ext2/ext2.ko + ln -s /lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/ext2/ext2.ko /tmp/mkinitramfs_lNjzuV//lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/ext2 + '[' n = y ']' ++ modinfo -F firmware /lib/modules/2.6.29.6-vs2.3.0.36.14-beng/kernel/fs/ext2/ext2.ko + firmwares= + '[' -z '' ']' + continue + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + '[' /dev/rd/c0d0p1 '!=' /dev/rd/c0d0p1 ']' + block=rd/c0d0p1 + block=rd/c + '[' -z rd/c ']' + '[' '!' -e /sys/block/rd/c ']' + echo 'mkinitramfs: for root /dev/rd/c0d0p1 missing rd/c /sys/block/ entry' mkinitramfs: for root /dev/rd/c0d0p1 missing rd/c /sys/block/ entry + echo 'mkinitramfs: workaround is MODULES=most' mkinitramfs: workaround is MODULES=most + echo 'mkinitramfs: Error please report the bug' mkinitramfs: Error please report the bug + exit 1 ------------- So the reason is that mkinitramfs fails to derive the correct block device notation from the root device as the DAC960 driver uses a strange format for it. Once figured out, this is easily corrected. Please find a short patch for /usr/share/initramfs-tools/hook-functions attached. Thank you, Claus Herwig -- CHECON EDV-Consulting und Redaktion Claus Herwig * Barer Straße 70 * 80799 München +49 89 27826981 * Fax 27826982 * c.herwig@checon.de Closes: #579702 [ whitespace cleanups -maks ] Signed-off-by: maximilian attems <maks@debian.org>
-rw-r--r--hook-functions6
1 files changed, 6 insertions, 0 deletions
diff --git a/hook-functions b/hook-functions
index c7308b8..744fc91 100644
--- a/hook-functions
+++ b/hook-functions
@@ -305,6 +305,12 @@ dep_add_modules()
elif [ "${root#/dev/mmcblk}" != "${root}" ]; then
block=${root#/dev/}
block=${block%%p[0-9]*}
+
+ # DAC960 - good old mylex raid - root dev format /dev/rd/cXdXpX
+ elif [ "${root#/dev/rd/c}" != "${root}" ]; then
+ block="rd!c${root#/dev/rd/c}"
+ block=${block%%p[0-9]*}
+
# classical root device
else
block=${root#/dev/}