I need to move on so quick and dirty hacks again:
--- /root/archive/system/2024-08-14/usr/share/grub/001c_grub-mkconfig_lib
2024-08-08 13:35:17.000000000 +0200
+++ /usr/share/grub/grub-mkconfig_lib 2024-08-14 16:59:19.047344532 +0200
@@ -120,23 +120,37 @@
prepare_grub_to_access_device ()
{
+ local -A insmod
+
old_ifs="$IFS"
IFS='
'
partmap="`"${grub_probe}" --device $@ --target=partmap`"
for module in ${partmap} ; do
+ if [ "${insmod[$module]}" ]; then
+ continue
+ fi
+
case "${module}" in
netbsd | openbsd)
echo "insmod part_bsd";;
*)
echo "insmod part_${module}";;
esac
+
+ insmod[$module]=1
done
# Abstraction modules aren't auto-loaded.
abstraction="`"${grub_probe}" --device $@ --target=abstraction`"
for module in ${abstraction} ; do
+ if [ "${insmod[$module]}" ]; then
+ continue
+ fi
+
echo "insmod ${module}"
+
+ insmod[$module]=1
done
fs="`"${grub_probe}" --device $@ --target=fs`"
@@ -154,7 +168,7 @@
# otherwise set root as per value in device.map.
fs_hint="`"${grub_probe}" --device $@ --target=compatibility_hint`"
if [ "x$fs_hint" != x ]; then
- echo "set root='$fs_hint'"
+ echo "set root='`head -1 <<< $fs_hint`'"
fi
if [ "x${GRUB_DISABLE_UUID}" != "xtrue" ] &&
fs_uuid="`"${grub_probe}" --device $@ --target=fs_uuid 2> /dev/null`"
; then
hints="`"${grub_probe}" --device $@ --target=hints_string 2>
/dev/null`" || hints=
Unfortunately Gmail web UI converts tabs to spaces so beware.
Regards,
Opty
On Fri, Aug 9, 2024 at 4:50 PM Opty <[email protected]> wrote:
> Oh right, I probably found the grub.cfg-breaking culprit:
>
> https://git.savannah.gnu.org/cgit/grub.git/tree/util/grub-mkconfig_lib.in?h=grub-2.12#n157
>
> $fs_hint contains newline when using encrypted BTRFS RAID1.