[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#514756: doesn't handle additional arguments in /proc/mdstat, and has device assumptions



Package: initramfs-tools
Version: 0.92o

A Debian user ran into a problem with initramfs-tools using a fairly
strange setup that's described at http://forum.qnap.com/viewtopic.php?f=147&t=11422

The entry for root in /proc/mdstat looks like this:

| md1 : active (auto-read-only) raid1 dm-2[1]

and this is parsed with:

| block=$(awk "/^${root}/{print substr(\$5, 1, 3); exit}" \
|         /proc/mdstat)

There are two problems with this:

1) initramfs-tools doesn't know about the additional argument
"(auto-read-only)" and so takes "raid1" rather than "dm-2" as the
relevant device to parse.

2) initramfs-tools only takes the first 3 characters of the device,
and while this will work for something like sda1, it won't work for
dm-2.

The full log is attached.
-- 
Martin Michlmayr
http://www.cyrius.com/
+ umask 0022
+ export PATH=/usr/bin:/sbin:/bin
+ PATH=/usr/bin:/sbin:/bin
+ keep=n
+ CONFDIR=/etc/initramfs-tools
+ verbose=n
+ errors_to='2>/dev/null'
+ BUSYBOXDIR=/bin
++ getopt -o d:ko:r:v --long supported-host-version:,supported-target-version: -n mkinitramfs -- -o /tmp/foo
+ OPTIONS=' -o '\''/tmp/foo'\'' --'
+ '[' 0 '!=' 0 ']'
+ eval set -- ' -o '\''/tmp/foo'\'' --'
++ set -- -o /tmp/foo --
+ true
+ case "$1" in
+ outfile=/tmp/foo
+ shift 2
+ true
+ case "$1" in
+ shift
+ break
+ '[' -n '' ']'
+ '[' -n '' ']'
+ . /usr/share/initramfs-tools/scripts/functions
+ . /usr/share/initramfs-tools/hook-functions
+ . /etc/initramfs-tools/initramfs.conf
++ MODULES=most
++ BUSYBOX=y
++ KEYMAP=n
++ BOOT=local
++ DEVICE=eth0
++ NFSROOT=auto
+ EXTRA_CONF=
+ for i in '/usr/share/initramfs-tools/conf.d/*' '${CONFDIR}/conf.d/*'
++ basename '/usr/share/initramfs-tools/conf.d/*'
++ grep '^[[:alnum:]][[:alnum:]\._-]*$'
++ grep -v '\.dpkg-.*$'
+ EXTRA_CONF=' '
+ for i in '/usr/share/initramfs-tools/conf.d/*' '${CONFDIR}/conf.d/*'
++ basename /etc/initramfs-tools/conf.d/driver-policy
++ grep '^[[:alnum:]][[:alnum:]\._-]*$'
++ grep -v '\.dpkg-.*$'
+ EXTRA_CONF='  driver-policy'
+ for i in '/usr/share/initramfs-tools/conf.d/*' '${CONFDIR}/conf.d/*'
++ basename /etc/initramfs-tools/conf.d/resume
++ grep '^[[:alnum:]][[:alnum:]\._-]*$'
++ grep -v '\.dpkg-.*$'
+ EXTRA_CONF='  driver-policy resume'
+ for i in '${EXTRA_CONF}'
+ '[' -e /etc/initramfs-tools/conf.d/driver-policy ']'
+ . /etc/initramfs-tools/conf.d/driver-policy
++ MODULES=dep
+ for i in '${EXTRA_CONF}'
+ '[' -e /etc/initramfs-tools/conf.d/resume ']'
+ . /etc/initramfs-tools/conf.d/resume
++ RESUME=/dev/mapper/Pino-swap_1
+ for i in '/usr/share/initramfs-tools/conf-hooks.d/*'
+ '[' -e '/usr/share/initramfs-tools/conf-hooks.d/*' ']'
+ '[' -n '' ']'
+ '[' -z /tmp/foo ']'
+ touch /tmp/foo
++ readlink -f /tmp/foo
+ outfile=/tmp/foo
+ '[' 0 -ne 1 ']'
++ uname -r
+ version=2.6.26-1-orion5x
+ check_minkver 2.6.26-1-orion5x
+ local curversion initdir DPKG_ARCH minversion cm_x tmp
+ curversion=2.6.26-1-orion5x
+ initdir=
+ '[' -z '' ']'
++ dpkg --print-installation-architecture
+ DPKG_ARCH=armel
+ case ${DPKG_ARCH} in
+ minversion=2.6.12
+ dpkg --compare-versions 2.6.26-1-orion5x lt 2.6.12
+ return 0
+ check_minkver 2.6.26-1-orion5x /usr/share/initramfs-tools/hooks
+ local curversion initdir DPKG_ARCH minversion cm_x tmp
+ curversion=2.6.26-1-orion5x
+ initdir=/usr/share/initramfs-tools/hooks
+ '[' -z /usr/share/initramfs-tools/hooks ']'
+ set_initlist
+ unset initlist
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/flash_kernel_set_root = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/flash_kernel_set_root ']'
+ '[' -d /usr/share/initramfs-tools/hooks/flash_kernel_set_root ']'
+ initlist=' flash_kernel_set_root'
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/kernelextras = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/kernelextras ']'
+ '[' -d /usr/share/initramfs-tools/hooks/kernelextras ']'
+ initlist=' flash_kernel_set_root kernelextras'
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/keymap = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/keymap ']'
+ '[' -d /usr/share/initramfs-tools/hooks/keymap ']'
+ initlist=' flash_kernel_set_root kernelextras keymap'
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/legacylvm = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/legacylvm ']'
+ '[' -d /usr/share/initramfs-tools/hooks/legacylvm ']'
+ initlist=' flash_kernel_set_root kernelextras keymap legacylvm'
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/lvm2 = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/lvm2 ']'
+ '[' -d /usr/share/initramfs-tools/hooks/lvm2 ']'
+ initlist=' flash_kernel_set_root kernelextras keymap legacylvm lvm2'
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/mdadm = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/mdadm ']'
+ '[' -d /usr/share/initramfs-tools/hooks/mdadm ']'
+ initlist=' flash_kernel_set_root kernelextras keymap legacylvm lvm2 mdadm'
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/thermal = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/thermal ']'
+ '[' -d /usr/share/initramfs-tools/hooks/thermal ']'
+ initlist=' flash_kernel_set_root kernelextras keymap legacylvm lvm2 mdadm thermal'
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/udev = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/udev ']'
+ '[' -d /usr/share/initramfs-tools/hooks/udev ']'
+ initlist=' flash_kernel_set_root kernelextras keymap legacylvm lvm2 mdadm thermal udev'
+ for si_x in '${initdir}/*'
+ '[' /usr/share/initramfs-tools/hooks/udevhelper = '/usr/share/initramfs-tools/hooks/*' ']'
+ case ${si_x#${initdir}/} in
+ '[' '!' -x /usr/share/initramfs-tools/hooks/udevhelper ']'
+ '[' -d /usr/share/initramfs-tools/hooks/udevhelper ']'
+ initlist=' flash_kernel_set_root kernelextras keymap legacylvm lvm2 mdadm thermal udev udevhelper'
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/flash_kernel_set_root
+ minver=
+ '[' -z '' ']'
+ continue
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/kernelextras
+ minver=
+ '[' -z '' ']'
+ continue
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/keymap
+ minver=
+ '[' -z '' ']'
+ continue
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/legacylvm
+ minver=
+ '[' -z '' ']'
+ continue
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/lvm2
+ minver=
+ '[' -z '' ']'
+ continue
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/mdadm
+ minver=
+ '[' -z '' ']'
+ continue
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/thermal
+ minver=
+ '[' -z '' ']'
+ continue
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/udev
+ minver=
+ '[' -z '' ']'
+ continue
+ for cm_x in '${initlist}'
++ sed '/^MINKVER=/!d;$!d;s/^MINKVER=//;s/[[:space:]]*$//' /usr/share/initramfs-tools/hooks/udevhelper
+ minver=
+ '[' -z '' ']'
+ continue
+ check_minkver 2.6.26-1-orion5x /etc/initramfs-tools/hooks
+ local curversion initdir DPKG_ARCH minversion cm_x tmp
+ curversion=2.6.26-1-orion5x
+ initdir=/etc/initramfs-tools/hooks
+ '[' -z /etc/initramfs-tools/hooks ']'
+ set_initlist
+ unset initlist
+ for si_x in '${initdir}/*'
+ '[' '/etc/initramfs-tools/hooks/*' = '/etc/initramfs-tools/hooks/*' ']'
+ return
+ case "${version}" in
+ case "${version}" in
+ '[' -d /tmp/foo ']'
+ MODULESDIR=/lib/modules/2.6.26-1-orion5x
+ '[' '!' -e /lib/modules/2.6.26-1-orion5x ']'
+ '[' '!' -e /lib/modules/2.6.26-1-orion5x/modules.dep ']'
++ mktemp -t -d mkinitramfs_XXXXXX
+ DESTDIR=/tmp/mkinitramfs_mWEbgO
++ mktemp -t mkinitramfs-OL_XXXXXX
+ __TMPCPIOGZ=/tmp/mkinitramfs-OL_gcyMtw
++ dpkg --print-installation-architecture
+ DPKG_ARCH=armel
+ export MODULESDIR
+ export version
+ export CONFDIR
+ export DESTDIR
+ export DPKG_ARCH
+ export verbose
+ export KEYMAP
+ export MODULES
+ export __TMPCPIOGZ
+ for d in bin conf/conf.d etc lib/modules sbin scripts '${MODULESDIR}'
+ mkdir -p /tmp/mkinitramfs_mWEbgO/bin
+ for d in bin conf/conf.d etc lib/modules sbin scripts '${MODULESDIR}'
+ mkdir -p /tmp/mkinitramfs_mWEbgO/conf/conf.d
+ for d in bin conf/conf.d etc lib/modules sbin scripts '${MODULESDIR}'
+ mkdir -p /tmp/mkinitramfs_mWEbgO/etc
+ for d in bin conf/conf.d etc lib/modules sbin scripts '${MODULESDIR}'
+ mkdir -p /tmp/mkinitramfs_mWEbgO/lib/modules
+ for d in bin conf/conf.d etc lib/modules sbin scripts '${MODULESDIR}'
+ mkdir -p /tmp/mkinitramfs_mWEbgO/sbin
+ for d in bin conf/conf.d etc lib/modules sbin scripts '${MODULESDIR}'
+ mkdir -p /tmp/mkinitramfs_mWEbgO/scripts
+ for d in bin conf/conf.d etc lib/modules sbin scripts '${MODULESDIR}'
+ mkdir -p /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x
+ for x in '"${CONFDIR}/modules"' '/usr/share/initramfs-tools/modules.d/*'
+ '[' -f /etc/initramfs-tools/modules ']'
+ add_modules_from_file /etc/initramfs-tools/modules
+ '[' '!' -e /etc/initramfs-tools/modules ']'
+ sed -e '/^#/d' /etc/initramfs-tools/modules
+ read module rest
+ for x in '"${CONFDIR}/modules"' '/usr/share/initramfs-tools/modules.d/*'
+ '[' -f '/usr/share/initramfs-tools/modules.d/*' ']'
+ case "${MODULES}" in
+ dep_add_modules
+ local block minor root FSTYPE root_dev_path x
++ mount
++ awk '/\/dev\// {if ($3 == "/") {print "root=" $1 "\nFSTYPE=" $5; exit}}'
+ eval 'root=/dev/md1
FSTYPE=ext3'
++ root=/dev/md1
++ FSTYPE=ext3
+ '[' /dev/md1 = /dev/root ']'
++ readlink -f /dev/md1
+ root=/dev/md1
+ '[' ext3 = auto ']'
+ '[' ext3 = unknown ']'
+ manual_add_modules ext3
+ local mam_x firmwares firmware
++ awk '/^insmod/ { print $2 }'
++ modprobe --set-version=2.6.26-1-orion5x --ignore-install --show-depends ext3
+ for mam_x in '$(modprobe --set-version="${version}" --ignore-install 	--show-depends "${1}" 2>/dev/null | awk '\''/^insmod/ { print $2 }'\'')'
+ '[' -e /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs/mbcache.ko ']'
++ dirname /lib/modules/2.6.26-1-orion5x/kernel/fs/mbcache.ko
+ mkdir -p /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs
++ dirname /lib/modules/2.6.26-1-orion5x/kernel/fs/mbcache.ko
+ ln -s /lib/modules/2.6.26-1-orion5x/kernel/fs/mbcache.ko /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs
+ '[' n = y ']'
++ modinfo -F firmware /lib/modules/2.6.26-1-orion5x/kernel/fs/mbcache.ko
+ firmwares=
+ '[' -z '' ']'
+ continue
+ for mam_x in '$(modprobe --set-version="${version}" --ignore-install 	--show-depends "${1}" 2>/dev/null | awk '\''/^insmod/ { print $2 }'\'')'
+ '[' -e /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs/jbd/jbd.ko ']'
++ dirname /lib/modules/2.6.26-1-orion5x/kernel/fs/jbd/jbd.ko
+ mkdir -p /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs/jbd
++ dirname /lib/modules/2.6.26-1-orion5x/kernel/fs/jbd/jbd.ko
+ ln -s /lib/modules/2.6.26-1-orion5x/kernel/fs/jbd/jbd.ko /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs/jbd
+ '[' n = y ']'
++ modinfo -F firmware /lib/modules/2.6.26-1-orion5x/kernel/fs/jbd/jbd.ko
+ firmwares=
+ '[' -z '' ']'
+ continue
+ for mam_x in '$(modprobe --set-version="${version}" --ignore-install 	--show-depends "${1}" 2>/dev/null | awk '\''/^insmod/ { print $2 }'\'')'
+ '[' -e /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs/ext3/ext3.ko ']'
++ dirname /lib/modules/2.6.26-1-orion5x/kernel/fs/ext3/ext3.ko
+ mkdir -p /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs/ext3
++ dirname /lib/modules/2.6.26-1-orion5x/kernel/fs/ext3/ext3.ko
+ ln -s /lib/modules/2.6.26-1-orion5x/kernel/fs/ext3/ext3.ko /tmp/mkinitramfs_mWEbgO//lib/modules/2.6.26-1-orion5x/kernel/fs/ext3
+ '[' n = y ']'
++ modinfo -F firmware /lib/modules/2.6.26-1-orion5x/kernel/fs/ext3/ext3.ko
+ firmwares=
+ '[' -z '' ']'
+ continue
+ '[' /dev/md1 '!=' /dev/md1 ']'
+ '[' /dev/md1 '!=' /dev/md1 ']'
+ '[' /dev/md1 '!=' /dev/md1 ']'
+ '[' 1 '!=' /dev/md1 ']'
+ root=md1
++ awk '/^md1/{print substr($5, 1, 3); exit}' /proc/mdstat
+ block=rai
+ '[' -z rai ']'
+ '[' '!' -e /sys/block/rai ']'
+ echo 'mkinitramfs: missing rai root md1 /sys entry'
mkinitramfs: missing rai root md1 /sys 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

Reply to: