mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-05-11 09:48:24 +02:00
installer: Replace mountdest.sh script.
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
#!/bin/sh
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# #
|
# #
|
||||||
# IPFire.org - A linux based firewall #
|
# IPFire.org - A linux based firewall #
|
||||||
@@ -21,71 +20,87 @@
|
|||||||
|
|
||||||
echo "Scanning for possible destination drives"
|
echo "Scanning for possible destination drives"
|
||||||
|
|
||||||
# scan sd?
|
function _mount() {
|
||||||
echo "--> sd?"
|
local what=${1}
|
||||||
for DEVICE in `find /sys/block/* -maxdepth 0 -name sd* -or -name vd* -exec basename {} \; | sort | uniq`
|
|
||||||
do
|
# Don't mount if the device does not exist.
|
||||||
if [ "$(grep ${DEVICE} /proc/partitions)" = "" ]; then
|
[ -e "${what}" ] || return 1
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
echo "${DEVICE} is empty - SKIP"
|
mount ${what} /harddisk 2>/dev/null
|
||||||
continue
|
}
|
||||||
fi
|
|
||||||
mount /dev/${DEVICE} /harddisk 2> /dev/null
|
function _umount() {
|
||||||
|
umount -l /harddisk 2>/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_source_drive() {
|
||||||
|
local device="/dev/${1}"
|
||||||
|
|
||||||
|
local ret=1
|
||||||
|
local dev
|
||||||
|
for dev in ${device} ${device}1; do
|
||||||
|
# Mount the device (if possible).
|
||||||
|
_mount ${dev} || continue
|
||||||
|
|
||||||
if [ -n "$(ls /harddisk/ipfire-*.tlz 2>/dev/null)" ]; then
|
if [ -n "$(ls /harddisk/ipfire-*.tlz 2>/dev/null)" ]; then
|
||||||
umount /harddisk 2> /dev/null
|
ret=0
|
||||||
echo "${DEVICE} is source drive - SKIP"
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
mount /dev/${DEVICE}1 /harddisk 2> /dev/null
|
|
||||||
if [ -n "$(ls /harddisk/ipfire-*.tlz 2>/dev/null)" ]; then
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
echo "${DEVICE}1 is source drive - SKIP"
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
echo -n "$DEVICE" > /tmp/dest_device
|
|
||||||
echo "${DEVICE} - yes, it is our destination"
|
|
||||||
exit 1 # (always use /dev/sda as bootdevicename)
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
_umount
|
||||||
|
|
||||||
|
# Stop if the device has been detected as a source drive.
|
||||||
|
[ "${ret}" = "0" ] && break
|
||||||
|
done
|
||||||
|
|
||||||
|
return ${ret}
|
||||||
|
}
|
||||||
|
|
||||||
|
for path in /sys/block/*; do
|
||||||
|
device=$(basename ${path})
|
||||||
|
|
||||||
|
# Skip devices which cannot be used.
|
||||||
|
case "${device}" in
|
||||||
|
# Virtual devices.
|
||||||
|
loop*|ram*)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
# Floppy.
|
||||||
|
fd*)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Guess if this could be a raid device.
|
||||||
|
for dev in ${device} ${device}p1; do
|
||||||
|
if [ -e "/dev/${dev}" ]; then
|
||||||
|
device=${dev}
|
||||||
|
break
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Checking ${device}"
|
||||||
|
if check_source_drive ${device}; then
|
||||||
|
echo " is source drive - skipping"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Found it.
|
||||||
|
echo " OK, this is it..."
|
||||||
|
echo -n "${device}" > /tmp/dest_device
|
||||||
|
|
||||||
|
# Exit code table:
|
||||||
|
# 1: sda
|
||||||
|
# 2: RAID
|
||||||
|
# 10: nothing found
|
||||||
|
case "${device}" in
|
||||||
|
*p1)
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
# scan other
|
# Nothing found.
|
||||||
echo "--> other"
|
exit 10
|
||||||
for DEVICE in `find /sys/block/* -maxdepth 0 ! -name sd* ! -name sr* ! -name fd* ! -name loop* ! -name ram* -exec basename {} \; | sort | uniq`
|
|
||||||
do
|
|
||||||
mount /dev/${DEVICE}p1 /harddisk 2> /dev/null
|
|
||||||
if [ -n "$(ls /harddisk/ipfire-*.tlz 2>/dev/null)" ]; then
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
echo "${DEVICE}p1 is source drive - SKIP"
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
if [ "$(grep ${DEVICE} /proc/partitions)" = "" ]; then
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
echo "${DEVICE} is empty - SKIP"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
mount /dev/${DEVICE}1 /harddisk 2> /dev/null
|
|
||||||
if [ -n "$(ls /harddisk/ipfire-*.tlz 2>/dev/null)" ]; then
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
echo "${DEVICE}1 is source drive - SKIP"
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
mount /dev/${DEVICE} /harddisk 2> /dev/null
|
|
||||||
if [ -n "$(ls /harddisk/ipfire-*.tlz 2>/dev/null)" ]; then
|
|
||||||
umount /harddisk 2> /dev/null
|
|
||||||
echo "${DEVICE} is source drive - SKIP"
|
|
||||||
continue
|
|
||||||
else
|
|
||||||
echo -n "$DEVICE" > /tmp/dest_device
|
|
||||||
echo "${DEVICE} - yes, it is our destination"
|
|
||||||
exit 2 # Raid ( /dev/device/diskx )
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
exit 10 # Nothing found
|
|
||||||
|
|||||||
Reference in New Issue
Block a user