grub-install --debug-image option
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]]
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