aboutsummaryrefslogtreecommitdiffstats
path: root/patches/opnfv-fuel/0018-lib.sh-rm-Ubuntu-boot-entry-on-EFI-systems.patch
blob: 0dea963892fceaaacbe6613352bee2b1b3ba7505 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Date: Thu, 24 Aug 2017 04:09:59 +0200
Subject: [PATCH] lib.sh: rm Ubuntu boot entry on EFI systems

On EFI-enabled systems, grub-install from grub-efi-* package
installs a boot entry named "ubuntu".

MaaS relies on IPMI to set boot order to PXE first; however
on systems with buggy firmware or without full IPMI support,
that fails, leading to booting Ubuntu from hard disk instead.

Work around this by clearing any previous Ubuntu boot entry
from board flash, before starting a new baremetal deploy.

NOTE: This only runs against nodes that are online from a
previous deploy.

Closes: ARMBAND-47

Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
---
 mcp/scripts/lib.sh | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh
index bbb66a8..de7b9ec 100644
--- a/mcp/scripts/lib.sh
+++ b/mcp/scripts/lib.sh
@@ -20,6 +20,15 @@ get_base_image() {
   wget -P /tmp -nc "${base_image}"
 }

+cleanup_uefi() {
+  # Clean up Ubuntu boot entry if cfg01, kvm nodes online from previous deploy
+  # shellcheck disable=SC2086
+  ssh ${SSH_OPTS} "ubuntu@${SALT_MASTER}" "sudo salt -C 'kvm* or cmp*' cmd.run \
+    \"which efibootmgr > /dev/null 2>&1 && \
+    efibootmgr | grep -oP '(?<=Boot)[0-9]+(?=.*ubuntu)' | \
+    xargs -I{} efibootmgr --delete-bootnum --bootnum {}\"" || true
+}
+
 cleanup_vms() {
   # clean up existing nodes
   for node in $(virsh list --name | grep -P '\w{3}\d{2}'); do
@@ -34,6 +43,7 @@ prepare_vms() {
   local -n vnodes=$1
   local base_image=$2

+  cleanup_uefi
   cleanup_vms
   get_base_image "${base_image}"
   envsubst < user-data.template > user-data.sh