a3bdb368a2
- Version bump to 2.06 * rediff - 0001-add-support-for-UEFI-network-protocols.patch - 0002-net-read-bracketed-ipv6-addrs-and-port-numbers.patch - 0003-Make-grub_error-more-verbose.patch - 0003-bootp-New-net_bootp6-command.patch - 0005-grub.texi-Add-net_bootp6-doument.patch - 0006-bootp-Add-processing-DHCPACK-packet-from-HTTP-Boot.patch - 0006-efi-Set-image-base-address-before-jumping-to-the-PE-.patch - 0008-efinet-Setting-DNS-server-from-UEFI-protocol.patch - 0046-squash-verifiers-Move-verifiers-API-to-kernel-image.patch - grub-install-force-journal-draining-to-ensure-data-i.patch - grub2-btrfs-01-add-ability-to-boot-from-subvolumes.patch - grub2-diskfilter-support-pv-without-metadatacopies.patch - grub2-efi-HP-workaround.patch - grub2-efi-xen-cfg-unquote.patch - grub2-efi-xen-chainload.patch - grub2-fix-menu-in-xen-host-server.patch - grub2-gfxmenu-support-scrolling-menu-entry-s-text.patch - grub2-install-remove-useless-check-PReP-partition-is-empty.patch - grub2-lvm-allocate-metadata-buffer-from-raw-contents.patch - grub2-mkconfig-default-entry-correction.patch - grub2-pass-corret-root-for-nfsroot.patch - grub2-s390x-03-output-7-bit-ascii.patch - grub2-s390x-04-grub2-install.patch - grub2-secureboot-install-signed-grub.patch - grub2-setup-try-fs-embed-if-mbr-gap-too-small.patch - use-grub2-as-a-package-name.patch * update by patch squashed: - 0001-Add-support-for-Linux-EFI-stub-loading-on-aarch64.patch OBS-URL: https://build.opensuse.org/request/show/904721 OBS-URL: https://build.opensuse.org/package/show/Base:System/grub2?expand=0&rev=386
93 lines
2.7 KiB
Diff
93 lines
2.7 KiB
Diff
From: Petr Tesarik <ptesarik@suse.cz>
|
|
Subject: Unquote parameters written to Xen EFI config file
|
|
References: bsc#900418
|
|
Patch-mainline: not yet
|
|
|
|
The GRUB_CMDLINE_* value is copied verbatim to grub.conf, so it is first
|
|
parsed by GRUB2 before being passed down to the kernel. OTOH Xen EFI loader
|
|
takes the config file options verbatim. This means that any special GRUB2
|
|
syntax must be evaluated when generating that file.
|
|
|
|
Of course, some things are not even possible (e.g. substituting GRUB runtime
|
|
variables), but let's call them known limitations.
|
|
|
|
Signed-off-by: Petr Tesarik <ptesarik@suse.cz>
|
|
|
|
---
|
|
util/grub.d/20_linux_xen.in | 54 ++++++++++++++++++++++++++++++++++++++++++--
|
|
1 file changed, 52 insertions(+), 2 deletions(-)
|
|
|
|
Index: grub-2.06~rc1/util/grub.d/20_linux_xen.in
|
|
===================================================================
|
|
--- grub-2.06~rc1.orig/util/grub.d/20_linux_xen.in
|
|
+++ grub-2.06~rc1/util/grub.d/20_linux_xen.in
|
|
@@ -137,6 +137,52 @@ else
|
|
is_efi=false
|
|
fi
|
|
|
|
+grub2_unquote ()
|
|
+{
|
|
+ awk '
|
|
+ BEGIN {
|
|
+ bare = "[^{}|&$;<> \t\n'\''\"\\\\]+"
|
|
+ esc = "\\\\."
|
|
+ id = "[[:alpha:]_][[:alnum:]_]*|[[:digit:]]+|[?#*@]"
|
|
+ var = "\\$("id")|\\$\\{("id")\\}"
|
|
+ dqesc = "\\\\[$\"\\\\]"
|
|
+ dqstr = "\\$?\"([^\"]|"var"|"dqesc")*\""
|
|
+ sqstr = "'\''[^'\'']*'\''"
|
|
+ pat = bare"|"esc"|"var"|"dqstr"|"sqstr
|
|
+ ORS = ""
|
|
+ }
|
|
+ {
|
|
+ patsplit($0, words, pat, sep)
|
|
+ print sep[0]
|
|
+ for (i in words) {
|
|
+ w = words[i]
|
|
+ if (w ~ /^\$?"/) {
|
|
+ # Double-quoted string
|
|
+ patsplit(w, segs, var"|"dqesc, ssep)
|
|
+ print ssep[0]
|
|
+ for (j in segs) {
|
|
+ if (segs[j] ~ /^\\/)
|
|
+ print substr(segs[j], 2)
|
|
+ print ssep[j]
|
|
+ }
|
|
+ } else if (w ~ /^'\''/) {
|
|
+ # Single-quoted string
|
|
+ print substr(w, 2, length(w)-2)
|
|
+ } else if (w ~ /^\\/) {
|
|
+ # Escape sequence
|
|
+ print substr(w, 2)
|
|
+ } else if (w ~ /^\$/) {
|
|
+ # Variable expansion
|
|
+ } else {
|
|
+ # Bare word
|
|
+ print w
|
|
+ }
|
|
+ print sep[i]
|
|
+ }
|
|
+ print "\n"
|
|
+ }'
|
|
+}
|
|
+
|
|
linux_entry ()
|
|
{
|
|
linux_entry_xsm "$@" false
|
|
@@ -205,11 +251,13 @@ linux_entry_xsm ()
|
|
else
|
|
section="failsafe.$section_count"
|
|
fi
|
|
+ xen_args_unq=$(echo $xen_args | grub2_unquote)
|
|
+ args_unq=$(echo $args | grub2_unquote)
|
|
cat <<-EOF >> $grub_dir/$xen_cfg
|
|
|
|
[$section]
|
|
- options=${xen_args}
|
|
- kernel=${basename} root=${linux_root_device_thisversion} ${args}
|
|
+ options=${xen_args_unq}
|
|
+ kernel=${basename} root=${linux_root_device_thisversion} ${args_unq}
|
|
ramdisk=${initrd_real}
|
|
EOF
|
|
message="$(gettext_printf "Loading Xen %s with Linux %s ..." ${xen_version} ${version})"
|