[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#700920: Immediately detect medium from live-media parameter



Package: live-boot
Severity: wishlist
Tags: patch

If a preferred medium (device or medium type) is given with the
live-media parameter then waiting for the timeout to expire before
scaning for these devices is not necessary. Just pick the device as soon
as it appears. If a criterium would match several devices the outcome is
undefined anyway. So choosing the first one is good enough.

If no removable or removable-usb device is found after the timeout
expires, just boot any live medium available instead of panicing.

The second change makes it possible to have a non-wirteable (ISO)
live-image with the default boot parameter set to
live-media=removable-usb for machines that can't boot directly from USB
devices. If a live medium on an USB device is present it'll be
preferred, but the ISO will also boot without an USB device.

The attached patch implements a solution to both of these issues.

Gaudenz

-- System Information:
Debian Release: 7.0
  APT prefers testing
  APT policy: (800, 'testing'), (700, 'unstable'), (50, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.2.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_CH.UTF-8, LC_CTYPE=de_CH.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
>From 50de32e9d644b09225937c0968dd7fb0095ab1d1 Mon Sep 17 00:00:00 2001
From: Gaudenz Steinlin <gaudenz@debian.org>
Date: Thu, 17 Jan 2013 16:45:27 +0100
Subject: [PATCH] Immediately detect medium from live-media parameter

If a preferred medium (device or medium type) is given with the
live-media parameter then waiting for the timeout to expire before
scaning for these devices is not necessary. Just pick the device as soon
as it appears. If a criterium would match several devices the outcome is
undefined anyway. So choosing the first one is good enough.

If no removable or removable-usb device is found after the timeout
expires, just boot any live medium available instead of panicing.
---
 scripts/boot/9990-misc-helpers.sh |   27 ++++++++++++++-------------
 1 file changed, 14 insertions(+), 13 deletions(-)

diff --git a/scripts/boot/9990-misc-helpers.sh b/scripts/boot/9990-misc-helpers.sh
index 888eeaf..1341972 100755
--- a/scripts/boot/9990-misc-helpers.sh
+++ b/scripts/boot/9990-misc-helpers.sh
@@ -259,16 +259,10 @@ find_livefs ()
 {
 	timeout="${1}"
 
-	# don't start autodetection before timeout has expired
-	if [ -n "${LIVE_MEDIA_TIMEOUT}" ]
-	then
-		if [ "${timeout}" -lt "${LIVE_MEDIA_TIMEOUT}" ]
-		then
-			return 1
-		fi
-	fi
-
-	# first look at the one specified in the command line
+	# first look at the one specified in the command line This is OK
+	# before the timeout has expired, if more than one device matches the
+	# criteria the outcome is undefined anyway, so we can pick the first
+	# one that appears.
 	case "${LIVE_MEDIA}" in
 		removable-usb)
 			for sysblock in $(removable_usb_dev "sys")
@@ -281,7 +275,6 @@ find_livefs ()
 					fi
 				done
 			done
-			return 1
 			;;
 
 		removable)
@@ -295,7 +288,6 @@ find_livefs ()
 					fi
 				done
 			done
-			return 1
 			;;
 
 		*)
@@ -309,7 +301,16 @@ find_livefs ()
 			;;
 	esac
 
-	# or do the scan of block devices
+	# don't start autodetection before timeout has expired
+	if [ -n "${LIVE_MEDIA_TIMEOUT}" ]
+	then
+		if [ "${timeout}" -lt "${LIVE_MEDIA_TIMEOUT}" ]
+		then
+			return 1
+		fi
+	fi
+
+	# autodetection of live media
 	# prefer removable devices over non-removable devices, so scan them first
 	devices_to_scan="$(removable_dev 'sys') $(non_removable_dev 'sys')"
 
-- 
1.7.10.4


Reply to: