Skip to contentSkip to conversation

grub-install --debug-image option

PATCH In review Colin Watson 2 participants 2 messages Jun 26, 2010 – Jun 28, 2010

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 grub-install --debug-image option

When debugging problems that make GRUB unable to load /boot/grub/grub.cfg, I often find myself telling people to edit grub-install to put 'set debug=all' in an embedded configuration file. I'd like this not to involve editing the grub-install script, and to just be a simple option. Does this patch look OK? It makes it possible to do --debug-image=all (say).

Like --debug, I've left it undocumented for the moment since it will spew vast quantities of output that probably require a developer to interpret them anyway. (I don't feel strongly about this; if we document --debug-image, then we should document the existing --debug too.)

2010-06-26 Colin Watson <[email protected]>

* util/grub-install.in: Add --debug-image= option.

=== modified file 'util/grub-install.in'

grub-install.in +15 -2
@@ -50,6 +50,7 @@ no_floppy=
 force_lba=
 recheck=no
 debug=no
+debug_image=
 
 if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then
     disk_module=biosdisk
@@ -180,6 +181,11 @@ do
     # This is an undocumented feature...
     --debug)
 	debug=yes ;;
+    --debug-image)
+	debug_image=`argument $option "$@"`; shift;;
+    --debug-image=*)
+	debug_image=`echo "$option" | sed 's/--debug-image=//'` ;;
+
     -f | --force)
         setup_force="--force" ;;
 
@@ -349,6 +355,13 @@ fi
 prefix_drive=
 config_opt=
 
+rm -f ${grubdir}/load.cfg
+
+if [ "x${debug_image}" != x ]; then
+    echo "set debug='${debug_image}'" >> ${grubdir}/load.cfg
+    config_opt="-c ${grubdir}/load.cfg "
+fi
+
 if [ "x${devabstraction_module}" = "x" ] ; then
     if [ x"${install_device}" != x ]; then
       if echo "${install_device}" | grep -qx "(.*)" ; then
@@ -369,7 +382,7 @@ if [ "x${devabstraction_module}" = "x" ]
           echo "UUID needed with ata mod, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
           exit 1
         fi
-        echo "search.fs_uuid ${uuid} root " > ${grubdir}/load.cfg
+        echo "search.fs_uuid ${uuid} root " >> ${grubdir}/load.cfg
 	echo 'set prefix=($root)'"${relative_grubdir}" >> ${grubdir}/load.cfg
 	config_opt="-c ${grubdir}/load.cfg "
         modules="$modules search_fs_uuid"
@@ -379,7 +392,7 @@ if [ "x${devabstraction_module}" = "x" ]
           echo "You attempted a cross-disk install, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
           exit 1
         fi
-        echo "search.fs_uuid ${uuid} root " > ${grubdir}/load.cfg
+        echo "search.fs_uuid ${uuid} root " >> ${grubdir}/load.cfg
 	echo 'set prefix=($root)'"${relative_grubdir}" >> ${grubdir}/load.cfg
 	config_opt="-c ${grubdir}/load.cfg "
         modules="$modules search_fs_uuid"

Thanks,

Signature · 1 line
Colin Watson                                       [[email protected]]
#1 lore raw
Quoted 13 lines · Colin Watson

When debugging problems that make GRUB unable to load /boot/grub/grub.cfg, I often find myself telling people to edit grub-install to put 'set debug=all' in an embedded configuration file. I'd like this not to involve editing the grub-install script, and to just be a simple option. Does this patch look OK? It makes it possible to do --debug-image=all (say).

Like --debug, I've left it undocumented for the moment since it will spew vast quantities of output that probably require a developer to interpret them anyway. (I don't feel strongly about this; if we document --debug-image, then we should document the existing --debug too.)

Quoted 5 lines

2010-06-26 Colin Watson <[email protected]>

* util/grub-install.in: Add --debug-image= option.

Go ahead

Quoted 59 lines

=== modified file 'util/grub-install.in'

grub-install.in +15 -2
@@ -50,6 +50,7 @@ no_floppy=
 force_lba=
 recheck=no
 debug=no
+debug_image=
 
 if [ "${target_cpu}-${platform}" = "i386-pc" ] ; then
     disk_module=biosdisk
@@ -180,6 +181,11 @@ do
     # This is an undocumented feature...
     --debug)
 	debug=yes ;;
+    --debug-image)
+	debug_image=`argument $option "$@"`; shift;;
+    --debug-image=*)
+	debug_image=`echo "$option" | sed 's/--debug-image=//'` ;;
+
     -f | --force)
         setup_force="--force" ;;
 
@@ -349,6 +355,13 @@ fi
 prefix_drive=
 config_opt=
 
+rm -f ${grubdir}/load.cfg
+
+if [ "x${debug_image}" != x ]; then
+    echo "set debug='${debug_image}'" >> ${grubdir}/load.cfg
+    config_opt="-c ${grubdir}/load.cfg "
+fi
+
 if [ "x${devabstraction_module}" = "x" ] ; then
     if [ x"${install_device}" != x ]; then
       if echo "${install_device}" | grep -qx "(.*)" ; then
@@ -369,7 +382,7 @@ if [ "x${devabstraction_module}" = "x" ]
           echo "UUID needed with ata mod, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
           exit 1
         fi
-        echo "search.fs_uuid ${uuid} root " > ${grubdir}/load.cfg
+        echo "search.fs_uuid ${uuid} root " >> ${grubdir}/load.cfg
 	echo 'set prefix=($root)'"${relative_grubdir}" >> ${grubdir}/load.cfg
 	config_opt="-c ${grubdir}/load.cfg "
         modules="$modules search_fs_uuid"
@@ -379,7 +392,7 @@ if [ "x${devabstraction_module}" = "x" ]
           echo "You attempted a cross-disk install, but the filesystem containing ${grubdir} does not support UUIDs." 1>&2
           exit 1
         fi
-        echo "search.fs_uuid ${uuid} root " > ${grubdir}/load.cfg
+        echo "search.fs_uuid ${uuid} root " >> ${grubdir}/load.cfg
 	echo 'set prefix=($root)'"${relative_grubdir}" >> ${grubdir}/load.cfg
 	config_opt="-c ${grubdir}/load.cfg "
         modules="$modules search_fs_uuid"

Thanks,

Signature · 2 lines
Regards
Vladimir 'φ-coder/phcoder' Serbinenko