-
-if [ "$luksheaders" == "yes" ]; then
- devices=`LC_ALL=C $SFDISK -l 2>/dev/null | grep "^Disk /dev" | @AWK@ '{print $2}' | cut -d: -f1`
- [ -n "$devices" ] || warning "No block device found"
- targetdevices=""
- for dev in $devices; do
- [ -b $dev ] || continue
- debug "$CRYPTSETUP isLuks $dev"
- $CRYPTSETUP isLuks $dev
- [ $? -eq 0 ] && targetdevices="$targetdevices $dev"
- done
- for dev in $targetdevices; do
- label=${dev#/dev/}
- label=${label//\//-}
- outputfile=${luksheadersfile//__star__/$label}
- # the following sizes are expressed in terms of 512-byte sectors
- debug "Let us find out the Luks header size for $dev"
- debug "$CRYPTSETUP luksDump \"$dev\" | grep '^Payload offset:' | @AWK@ '{print $3}'"
- headersize=`$CRYPTSETUP luksDump "$dev" | grep '^Payload offset:' | @AWK@ '{print $3}'`
- if [ $? -ne 0 ]; then
- warning "Could not compute the size of Luks header, skipping device $dev"
- continue
- elif [ -z "$headersize" -o -n "`echo \"$headersize\" | sed 's/[0-9]*//g'`" ]; then
- warning "The computed size of Luks header is not an integer, skipping device $dev"
- continue
- fi
- debug "Let us backup the Luks header of device $dev"
- debug "$DD if=\"${dev}\" of=\"${outputfile}\" bs=512 count=\"${headersize}\""
- output=`$DD if="${dev}" of="${outputfile}" bs=512 count="${headersize}" 2>&1`
- exit_code=$?
- if [ $exit_code -eq 0 ]; then
- debug $output
- info "The Luks header of $dev was saved to $outputfile."
- else
- debug $output
- fatal "The Luks header of $dev could not be saved."
- fi
- done
-fi