From: Antonio Ospite Date: Fri, 30 Sep 2011 20:49:38 +0000 (+0200) Subject: Fix several problems in linux_find_root_device X-Git-Tag: v0.2~1 X-Git-Url: https://git.ao2.it/kboot-utils.git/commitdiff_plain/3ef03f39291fbea80bccb342012446284d9ad5ce?hp=de2287f330a9c5ed89e706206b1d02b7f2cdcb4d Fix several problems in linux_find_root_device 'stat' returns the major and minor numbers in hexadecimal, while 'mountpoint' returns them in decimal; convert the ones from 'stat' so comparison actually work. Rename variables to reflect better the difference between the DEVICE representation (major:minor) and the NODE representation (a path of a file under /dev). Finally fix the invocation of linux_find_root_device as well. --- diff --git a/kboot-mkconfig_lib b/kboot-mkconfig_lib index 155cca0..080edf7 100644 --- a/kboot-mkconfig_lib +++ b/kboot-mkconfig_lib @@ -90,18 +90,20 @@ version_find_latest () } linux_find_root_device() { - RDEV=$(mountpoint -d /) + ROOT_DEVICE=$(mountpoint -d /) for devnode in $(find /dev); do - if [ $(stat --printf="%t:%T" "$devnode") = $RDEV ]; + # Get major and minor in decimal + CURRENT_DEVICE=$(printf "%d:%d" $(stat --printf="0x%t 0x%T" "$devnode")) + if [ $CURRENT_DEVICE = $ROOT_DEVICE ]; then - ROOTDEVICE="$devnode" + ROOT_NODE="$devnode" break fi done - echo "$ROOTDEVICE" + echo "$ROOT_NODE" } linux_entry () @@ -144,7 +146,7 @@ list_kernels () alt_version=`echo $version | sed -e "s,\.old$,,g"` # TODO: remove this too #linux_root_device_thisversion="${LINUX_ROOT_DEVICE}" - linux_root_device_thisversion=linux_find_root_device + linux_root_device_thisversion=`linux_find_root_device` initrd= for i in "initrd.img-${version}" "initrd-${version}.img" \