Some systems have swap devices that aren't available at boot, but are still selected as resume devices. There used to be no way to disable this at build time, but it also used to be quite harmless. Now that we wait for the resume device to appear, this is a real problem and users of such systems will need to set RESUME=none. Therefore:
- If RESUME is invalid, warn about this - If RESUME is unset or invalid, and we automatically set a resume device, report this Also: - If RESUME=auto and we we fail to select a resume device, warn about this Signed-off-by: Ben Hutchings <b...@decadent.org.uk> --- hooks/resume | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/hooks/resume b/hooks/resume index 43eb146b1f42..06ff62af3f3c 100755 --- a/hooks/resume +++ b/hooks/resume @@ -16,12 +16,23 @@ prereqs) esac # First check if a location is set and is a valid swap partition -if [ -n "$RESUME" ] && [ "$RESUME" != auto ] && \ - { [ "$RESUME" = none ] || blkid -p -n swap $RESUME >/dev/null 2>&1; }; then - # As mkinitramfs copies the config file nothing to do. - exit 0 +if [ -n "$RESUME" ] && [ "$RESUME" != auto ]; then + if [ "$RESUME" = none ] || blkid -p -n swap $RESUME >/dev/null 2>&1; then + # As mkinitramfs copies the config file nothing to do. + exit 0 + fi + + echo >&2 "W: initramfs-tools configuration sets RESUME=$RESUME" + echo >&2 "W: but no matching swap device is available." fi +# If we were not explicitly requested to select a device, report that we +# are doing so +report_auto() +{ + test "$RESUME" = auto || echo >&2 "I: $*" +} + # We need to be able to read the listed swap partitions if ischroot || [ ! -r /proc/swaps ]; then resume_auto= @@ -30,13 +41,21 @@ else resume_auto=$(grep ^/dev/ /proc/swaps | sort -rnk3 | head -n 1 | cut -d " " -f 1) if [ -n "$resume_auto" ]; then UUID=$(blkid -s UUID -o value "$resume_auto" || true) + report_auto "The initramfs will attempt to resume from $resume_auto" if [ -n "$UUID" ]; then + report_auto "(UUID=$UUID)" resume_auto="UUID=$UUID" fi + report_auto "Set the RESUME variable to override this." fi fi # Write selected resume device to intramfs conf.d if [ "$RESUME" = auto ] || [ -n "$resume_auto" ]; then + # If we were explicitly requested to select a device, and we failed, + # report that + if [ -z "$resume_auto" ]; then + echo >&2 "W: initramfs-tools failed to select a resume device" + fi echo "RESUME=${resume_auto}" > ${DESTDIR}/conf/conf.d/zz-resume-auto fi
signature.asc
Description: Digital signature