summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2017-01-12 09:11:09 -0500
committerScott Moser <smoser@brickies.net>2017-01-20 10:12:29 -0500
commit399911e07fa11a95a4c912e6f7c047033321f7d5 (patch)
tree92ef37075bb6ca1221664b697c0dcd2fc0dbe3b2
parent3305c052862dabef40a5c7d649b6a88ca12bec6d (diff)
downloadvyos-cloud-init-399911e07fa11a95a4c912e6f7c047033321f7d5.tar.gz
vyos-cloud-init-399911e07fa11a95a4c912e6f7c047033321f7d5.zip
fix update-grub-legacy-ec2 to check config for CONFIG_XEN=y
Instead of relying on name and version based checking, update-grub-legacy-ec2 will now look at the config for a kernel if it is available to determine if it should be considered a xen kernel. LP: #1379080
-rwxr-xr-xdebian/update-grub-legacy-ec218
1 files changed, 18 insertions, 0 deletions
diff --git a/debian/update-grub-legacy-ec2 b/debian/update-grub-legacy-ec2
index 337757b3..e48f4edb 100755
--- a/debian/update-grub-legacy-ec2
+++ b/debian/update-grub-legacy-ec2
@@ -1398,8 +1398,23 @@ fi
if ! type is_xen_kernel >/dev/null 2>&1; then
+ check_xen_config_for_kernel() {
+ # input is like /boot/vmlinuz-2.6.35-13-virtual
+ # expected config path is /boot/config-2.6.35-13-virtual
+ local kernel="$1" config="" dir="" bname=""
+ dir=${kernel%/*}
+ [ "$dir" = "$kernel"] && dir="."
+ bname=${kernel##*/}
+ config="$dir/config-${bname#*-}"
+ [ -f "$config" ] || return 1
+ grep -q CONFIG_XEN=y "$config"
+ }
+
is_xen_kernel() {
# input is like /boot/vmlinuz-2.6.35-13-virtual
+ # return whether or not this kernel is xen bootable.
+ check_xen_config_for_kernel "$1" && return 0
+
# get the version string out of it.
local ver_flavor="";
ver_flavor="${1##*vmlinuz-}"
@@ -1419,6 +1434,9 @@ if ! type is_xen_kernel >/dev/null 2>&1; then
fi
for kern in /boot/vmlinuz-*; do
+ case "$kern" in
+ *.signed) continue;;
+ esac
is_xen_kernel "${kern}" &&
xen_verlist="${xen_verlist} ${kern#/boot/vmlinuz-}"
done