Примерно так: if [ ! "$PDIR" ]; then
for DEV in $PDEV $(awk '/sr[0-9]|sd.[0-9]/ {print $4}' /proc/partitions)
do
PDIR=$(ls /mnt/$DEV/*/base/file.sgn 2>/dev/null | cut -d'/' -f4)
[ $PDIR ] || continue
PDEV=$DEV
done
fi
awk, конечно, штука хорошая, вот только в busybox его нет. А отдельно в initrd положить - так размером он побольше всего бизибокса будет.
$(grep -E 'sr[0-9]|sd.[0-9]|hd.[0-9]' /proc/partitions |tr -s ' '|cut -d' ' -f5) или
$(sed -n '/sr[0-9]\|sd.[0-9]\|hd.[0-9]/s/ *[0-9]\+ \+[0-9]\+ \+[0-9]\+ \+\([a-z]\+[0-9]\)/\1/p' /proc/partitions)
пострашнее на вид, но зато в бизибоксе присутствуют.