Package: initramfs-tools Severity: wishlist Version: 0.91e User: [EMAIL PROTECTED] Usertags: origin-ubuntu ubuntu-patch hardy ubuntu
Attached is a patch to allow scripts in either local-top or init-premount to register hook to perform specific actions in the event the root device cannot be found. A good use for this is when an attemt is made to find the device that contains an LVM volume. If the root device cannot be found, lvm can then be queried to present the user with information about what may be wrong with their volumes. This patch applies against git head. This is part of the Ubuntu specification for better initramfs reliability, found at the following URL: https://wiki.ubuntu.com/HardyInitramfsErrorHandling
diff -urN initramfs-tools/scripts/local initramfs-tools.new/scripts/local --- initramfs-tools/scripts/local 2008-02-26 10:36:10.443676705 +1100 +++ initramfs-tools.new/scripts/local 2008-02-26 11:31:15.247676705 +1100 @@ -87,7 +87,7 @@ esac echo "ALERT! ${ROOT} does not exist. Dropping to a shell!" echo " Check your root= boot argument (cat /proc/cmdline)" - panic " Check for missing modules (cat /proc/modules), or device files (ls /dev)" + panic -r " Check for missing modules (cat /proc/modules), or device files (ls /dev)" done # Get the root filesystem type if not set diff -urN initramfs-tools/scripts/functions initramfs-tools.new/scripts/functions --- initramfs-tools/scripts/functions 2008-02-26 10:36:10.407676705 +1100 +++ initramfs-tools.new/scripts/functions 2008-02-26 12:13:39.183676705 +1100 @@ -64,6 +64,19 @@ sleep ${panic} reboot fi + + # Call mountroot failure hooks if requested. + if [ "${1}" = "-r" ]; then + shift 1 + + if [ -r "/tmp/mountroot-fail.hooks" ]; then + mountroot_fail_hooks=$(cat /tmp/mountroot-fail.hooks) + for mr_fh in "${mountroot_fail_hooks}"; do + ${mr_fh} mountfail + done + fi + fi + modprobe i8042 modprobe atkbd echo $@ @@ -308,3 +321,8 @@ # source relevant ipconfig output . /tmp/net-${DEVICE}.conf } + +add_mountroot_fail_hook() +{ + echo "$0" >> /tmp/mountroot-fail.hooks +} --- 0.85e/initramfs-tools.8 2006-12-14 23:41:16.000000000 +0000 +++ 0.85eubuntu25/initramfs-tools.8 2008-02-12 03:31:09.000000000 +0000 @@ -303,6 +316,20 @@ user to investigate the situation. .PP .B Example: panic "Frobnication failed" +.fi +.RE +.RE + +.TP +\fB \fI +add_mountroot_fail_hook +Registers the script as able to provide possible further information, in the +event that the root device cannot be found. See the example script in the +initramfs-tools examples directory for more information. +.RS +.PP +.B Example: +add_mountroot_fail_hook .RE .SS Subdirectories --- 0.85e/docs/example_script 2006-07-16 20:47:13.000000000 +0100 +++ 0.85eubuntu25/docs/example_script 2008-02-12 03:24:34.000000000 +0000 @@ -60,10 +60,23 @@ prereqs) prereqs exit 0 ;; +mountfail) # Called if the script has previously registered a mountroot + # failure. + # Check status, and display any relevant information about the + # failure if there is a problem, then exit with a status of 1. + ;; esac # Do the work here. +# If this script is to be placed in either init-premount, or local-top, +# register a mountroot failure hook, so that further information can be given +# to the user, in the event that the root device cannot be found. + +. /scripts/functions + +add_mountroot_fail_hook + echo "Got here!" # Handle an error:
signature.asc
Description: Digital signature