#!/bin/sh
+###############################################################################
+# #
+# IPFire.org - A linux based firewall #
+# Copyright (C) 2007-2012 IPFire Team <info@ipfire.org> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <http://www.gnu.org/licenses/>. #
+# #
+###############################################################################
echo "Scanning source media"
-# scan CDROM devices
+# scan all Block devices
+for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
+do
+ mount /dev/${DEVICE} /cdrom 2> /dev/null
+ if [ -n "$(ls /cdrom/ipfire-*.tlz 2>/dev/null)" ]; then
+ echo -n ${DEVICE} > /tmp/source_device
+ echo "Found tarball on ${DEVICE}"
+ exit 0
+ else
+ echo "Found no tarballs on ${DEVICE} - SKIP"
+ fi
+ umount /cdrom 2> /dev/null
+done
-for DEVICE in $(hwinfo --cdrom | grep "Device File" | awk -F: '{ print $2 }' | cut -c 7- | sort | uniq); do
- mount /dev/${DEVICE} /cdrom 2> /dev/null
- if [ -e /cdrom/boot ]; then
- echo -n ${DEVICE} > /tmp/source_device
- exit 0
- fi
- umount /cdrom 2> /dev/null
+# scan all Partitions on block devices
+for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
+do
+ for DEVICEP in $(ls /dev/${DEVICE}? | sed "s/\/dev\///" 2> /dev/null);do
+ mount /dev/${DEVICEP} /cdrom 2> /dev/null
+ if [ -n "$(ls /cdrom/ipfire-*.tlz 2>/dev/null)" ]; then
+ echo -n ${DEVICEP} > /tmp/source_device
+ echo "Found tarball on ${DEVICEP}"
+ exit 0
+ else
+ echo "Found no tarballs on ${DEVICEP} - SKIP"
+ fi
+ umount /cdrom 2> /dev/null
+ done
done
-# scan HD device (usb sticks, etc.)
-for DEVICE in $(hwinfo --usb --disk | grep "Device File" | awk -F: '{ print $2 }' | cut -c 7- | sort | uniq); do
- mount /dev/${DEVICE}1 /cdrom 2> /dev/null
- if [ -e /cdrom/boot ]; then
- echo -n ${DEVICE}1 > /tmp/source_device
- exit 1
- fi
- umount /cdrom 2> /dev/null
+# scan all Partitions on raid/mmc devices
+for DEVICE in `find /sys/block/* -maxdepth 0 ! -name fd* ! -name loop* ! -name ram* -exec basename {} \;`
+do
+ for DEVICEP in $(ls /dev/${DEVICE}p? | sed "s/\/dev\///");do
+ mount /dev/${DEVICEP} /cdrom 2> /dev/null
+ if [ -n "$(ls /cdrom/ipfire-*.tlz 2>/dev/null)" ]; then
+ echo -n ${DEVICEP} > /tmp/source_device
+ echo "Found tarball on ${DEVICEP}"
+ exit 0
+ else
+ echo "Found no tarballs on ${DEVICEP} - SKIP"
+ fi
+ umount /cdrom 2> /dev/null
+ done
done
exit 10