Hello,
Since our bug was closed and we were asked to submit it here to
upstream, here we are :
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/2052381
When you want to "alterate" current generating grub.cfg.new in
/etc/grub.d/* scripts, you cant sed -i in /boot/grub/grub.cfg.new due to
the used method for generating grub.cfg.new 'exec redirection'
I propose a more 'common' method, wich permit, for example, alterating
grub.cfg.new content, generated from /etc/grub.d/30_linux, in a
/etc/grub.d/90_custom script.
Diff file :
19a20,22
# [grub-mkconfig] Problem with generation method in grub-mkconfig
# Patch submitted to bug-g...@gnu.org
39c42
< grub_cfg=""
---
grub_cfg="/boot/grub/grub.cfg"
271a275
NEW_GRUBCFG="${grub_cfg}.new"
273c277
< rm -f "${grub_cfg}.new"
---
rm -f "${NEW_GRUBCFG}"
275c279
< exec > "${grub_cfg}.new"
---
printf "" > "${NEW_GRUBCFG}"
281,282c285
< cat << EOF
< #
---
DISCLAIMER="#
288c291,292
< EOF
---
"
printf "%s\n" "${DISCLAIMER}" >> "${NEW_GRUBCFG}"
299,302c303,309
< echo
< echo "### BEGIN $i ###"
< "$i"
< echo "### END $i ###"
---
echo "" >> "${NEW_GRUBCFG}"
echo "### BEGIN $i ###" >> "${NEW_GRUBCFG}"
if ! "$i" >> "${NEW_GRUBCFG}";then
echo "[ERROR] '$i' failed !" >&2
exit 99
fi
echo "### END $i ###" >> "${NEW_GRUBCFG}"
308,311d314
< if [ "x${grub_cfg}" != "x" ] && ! grep "^password" ${grub_cfg}.new
>/dev/null; then
< chmod 444 ${grub_cfg}.new || true
< fi
<
318c321
< %s file attached." "${grub_cfg}.new" >&2
---
%s file attached." "${NEW_GRUBCFG}" >&2
See the attached patch.
Regards,
--
Guillaume Hilt
diff --git a/util/grub-mkconfig.in b/util/grub-mkconfig.in
index 32c480dae..bdabb7a0d 100644
--- a/util/grub-mkconfig.in
+++ b/util/grub-mkconfig.in
@@ -257,23 +257,24 @@ export GRUB_DEFAULT \
GRUB_OS_PROBER_SKIP_LIST \
GRUB_DISABLE_SUBMENU
+NEW_GRUBCFG="${grub_cfg}.new"
if test "x${grub_cfg}" != "x"; then
- rm -f "${grub_cfg}.new"
+ rm -f "${NEW_GRUBCFG}"
oldumask=$(umask); umask 077
- exec > "${grub_cfg}.new"
+ printf "" > "${NEW_GRUBCFG}"
umask $oldumask
fi
gettext "Generating grub configuration file ..." >&2
echo >&2
-cat << EOF
-#
+DISCLAIMER="#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by $self using templates
# from ${grub_mkconfig_dir} and settings from ${sysconfdir}/default/grub
#
-EOF
+"
+printf "%s\n" "${DISCLAIMER}" >> "${NEW_GRUBCFG}"
for i in "${grub_mkconfig_dir}"/* ; do
@@ -284,10 +285,13 @@ for i in "${grub_mkconfig_dir}"/* ; do
*/\#*\#) ;;
*)
if grub_file_is_not_garbage "$i" && test -x "$i" ; then
- echo
- echo "### BEGIN $i ###"
- "$i"
- echo "### END $i ###"
+ echo "" >> "${NEW_GRUBCFG}"
+ echo "### BEGIN $i ###" >> "${NEW_GRUBCFG}"
+ if ! "$i" >> "${NEW_GRUBCFG}";then
+ echo "[ERROR] '$i' failed !" >&2
+ exit 99
+ fi
+ echo "### END $i ###" >> "${NEW_GRUBCFG}"
fi
;;
esac
@@ -299,7 +303,7 @@ if test "x${grub_cfg}" != "x" ; then
gettext_printf "Syntax errors are detected in generated GRUB config file.
Ensure that there are no errors in /etc/default/grub
and /etc/grub.d/* files or please file a bug report with
-%s file attached." "${grub_cfg}.new" >&2
+%s file attached." "${NEW_GRUBCFG}" >&2
echo >&2
exit 1
else
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel