X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive-helpers;h=31f84fa72f1dadbf4e479b543889db28ba733044;hb=309e26afef1c8f61f2ed83abed6d821666172958;hp=7f8649f4c57d2774a3fb381c310254d65dfb11b7;hpb=209828c38d8af6fa2eab68cd668ca9109261f249;p=live-boot-grml.git diff --git a/scripts/live-helpers b/scripts/live-helpers index 7f8649f..31f84fa 100644 --- a/scripts/live-helpers +++ b/scripts/live-helpers @@ -324,12 +324,24 @@ find_cow_device () if echo "${black_listed_devices}" | grep -q -w "${devname}" then # skip this subdevice - break + continue fi # Checking for a luks device - if [ "${PERSISTENT}" = "cryptsetup" ] && [ -e /sbin/cryptsetup ] && /sbin/cryptsetup isLuks ${devname} + if [ "${PERSISTENT_ENCRYPTION}" = "luks" ] && [ -e /sbin/cryptsetup ] then + if ! modprobe dm-crypt + then + log_warning_msg "Unable to load module dm-crypt" + continue + fi + + if ! /sbin/cryptsetup isLuks ${devname} + then + # we only look for encrypted subdevices + continue + fi + while true do load_keymap @@ -345,25 +357,26 @@ find_cow_device () break fi - echo + echo >&6 echo -n "There was an error decrypting ${devname} ... Retry? [Y/n] " >&6 read answer if [ "$(echo "${answer}" | cut -b1 | tr A-Z a-z)" = "n" ] then unset answer - break + # skip to next subdevice + continue 2 fi done fi - if [ "$(/sbin/blkid -s LABEL -o value $devname 2>/dev/null)" = "${pers_label}" ] + if echo ${PERSISTENT_STORAGE} | grep -qw filesystem && [ "$(/sbin/blkid -s LABEL -o value $devname 2>/dev/null)" = "${pers_label}" ] then echo "${devname}" return 0 fi - if [ "${PERSISTENT}" = "nofiles" ] + if ! echo ${PERSISTENT_STORAGE} | grep -qw file then # do not mount the device to find for image files # just skip this @@ -488,3 +501,73 @@ is_luks() fi } + +removable_dev () +{ + output_format="${1}" + want_usb="${2}" + ret= + + for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)") + do + dev_ok= + if [ "$(cat ${sysblock}/removable)" = "1" ] + then + if [ -z "${want_usb}" ] + then + dev_ok="yes" + else + if readlink ${sysblock} | grep -q usb + then + dev_ok="yes" + fi + fi + fi + + if [ "${dev_ok}" = "yes" ] + then + case "${output_format}" in + sys) + ret="${ret} ${sysblock}" + ;; + *) + devname=$(sys2dev "${sysblock}") + ret="${ret} ${devname}" + ;; + esac + fi + done + + echo "${ret}" +} + +removable_usb_dev () +{ + output_format="${1}" + + removable_dev "${output_format}" "want_usb" +} + +non_removable_dev () +{ + output_format="${1}" + ret= + + for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -vE "/(loop|ram|dm-|fd)") + do + if [ "$(cat ${sysblock}/removable)" = "0" ] + then + case "${output_format}" in + sys) + ret="${ret} ${sysblock}" + ;; + *) + devname=$(sys2dev "${sysblock}") + ret="${ret} ${devname}" + ;; + esac + fi + done + + echo "${ret}" +}