- try_mount ro $1 /mnt && [ -e /mnt/$SRC/ramdisk.img ]
- [ $? -ne 0 ] && return 1
- zcat /mnt/$SRC/ramdisk.img | cpio -id > /dev/null
+ if [ "`dirname $1`" = "/dev" ]; then
+ [ -e $1 ] || return 1
+ blk=`basename $1`
+ [ ! -e /dev/block/$blk ] && ln $1 /dev/block
+ dev=/dev/block/$blk
+ else
+ dev=$1
+ fi
+ try_mount ro $dev /mnt || return 1
+ if [ -n "$iso" -a -e /mnt/$iso ]; then
+ mount --move /mnt /iso
+ mkdir /mnt/iso
+ mount -o loop /iso/$iso /mnt/iso
+ fi
+ if [ -e /mnt/$SRC/$RAMDISK ]; then
+ zcat /mnt/$SRC/$RAMDISK | cpio -id > /dev/null
+ elif [ -b /dev/$RAMDISK ]; then
+ zcat /dev/$RAMDISK | cpio -id > /dev/null
+ else
+ return 1
+ fi