summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xhooks/live3
-rwxr-xr-xscripts/live24
2 files changed, 27 insertions, 0 deletions
diff --git a/hooks/live b/hooks/live
index ca2a761..a4aced3 100755
--- a/hooks/live
+++ b/hooks/live
@@ -101,6 +101,9 @@ manual_add_modules ohci1394
manual_add_modules sbp2
manual_add_modules sr_mod
+# Hardware: usb
+manual_add_modules sd_mod
+
# Hardware: network
auto_add_modules net
diff --git a/scripts/live b/scripts/live
index 7632fc8..797f5df 100755
--- a/scripts/live
+++ b/scripts/live
@@ -994,6 +994,30 @@ setup_unionfs ()
# Looking for "${root_persistence}" device or file
if [ -n "${PERSISTENT}" ] && [ -z "${NOPERSISTENT}" ]
then
+ # Load USB modules
+ num_block=$(ls -l /sys/block | wc -l)
+ for module in sd_mod uhci-hcd ehci-hcd ohci-hcd usb-storage
+ do
+ modprobe -q -b ${module}
+ done
+
+ udevtrigger
+ udevsettle
+
+ # For some reason, udevsettle does not block in this scenario,
+ # so we sleep for a little while.
+ #
+ # See https://bugs.launchpad.net/ubuntu/+source/casper/+bug/84591
+ for timeout in 5 4 3 2 1
+ do
+ sleep 1
+
+ if [ $(ls -l /sys/block | wc -l) -gt ${num_block} ]
+ then
+ break
+ fi
+ done
+
cowprobe=$(find_cow_device "${root_persistence}")
if [ -b "${cowprobe}" ]