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 <cjwat...@ubuntu.com> * util/grub-install.in: Add --debug-image= option. === modified file 'util/grub-install.in' --- util/grub-install.in 2010-06-13 00:36:39 +0000 +++ util/grub-install.in 2010-06-26 10:00:33 +0000 @@ -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, -- Colin Watson [cjwat...@ubuntu.com] _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel