summaryrefslogtreecommitdiffstats
path: root/patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2016-07-18 16:09:16 +0200
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2016-07-18 16:09:16 +0200
commitc303d39b58243eab8a255f58e0bfa07371df168c (patch)
treecad19c691650b931b80ffd21f9edea8f285ff7e0 /patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch
parent221eb505c30134d9e78d901d10d2744aa4d279d9 (diff)
fuel-astute: Erase EFI boot entry on EFI systems
On EFI-enabled systemd, grub-install from grub-efi-* package installs a boot entry named "ubuntu". Since this boot entry is saved in board flash memory, erasing the MBR bootloader code and/or partition signature will not clear the ubuntu boot entry, leaving it pointing to a loader on the ESP (EFI System Partition) that will try to load the kernel/initrd from an erased partition. In Fuel 8.0, the whole disk was erased, so the ubuntu EFI boot entry was skipped due to missing ESP, while for Fuel 9.0 and above we have to explicitly remove it to keep the system in a sane state. Note: efibootmgr is installed automatically on EFI systems as a dependency of grub-efi-*. Closes: ARMBAND-47 Change-Id: If715e960dfd96df807abb0e26f4b7604624ac408 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
Diffstat (limited to 'patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch')
-rw-r--r--patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch b/patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch
new file mode 100644
index 00000000..905834df
--- /dev/null
+++ b/patches/fuel-astute/0001-Erase-EFI-boot-entry-on-EFI-systems.patch
@@ -0,0 +1,43 @@
+From: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+Date: Mon, 18 Jul 2016 16:02:20 +0200
+Subject: [PATCH] Erase EFI boot entry on EFI systems.
+
+On EFI-enabled systemd, grub-install from grub-efi-* package
+installs a boot entry named "ubuntu".
+
+Since this boot entry is saved in board flash memory, erasing
+the MBR bootloader code and/or partition signature will not
+clear the ubuntu boot entry, leaving it pointing to a loader
+on the ESP (EFI System Partition) that will try to load the
+kernel/initrd from an erased partition.
+
+In Fuel 8.0, the whole disk was erased, so the ubuntu EFI boot
+entry was skipped due to missing ESP, while for Fuel 9.0 and
+above we have to explicitly remove it to keep the system in a
+sane state.
+
+Note: efibootmgr is installed automatically on EFI systems
+as a dependency of grub-efi-*.
+
+Closes: ARMBAND-47
+
+Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
+---
+ mcagents/erase_node.rb | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/mcagents/erase_node.rb b/mcagents/erase_node.rb
+index 3eb98e8..3bac36f 100644
+--- a/mcagents/erase_node.rb
++++ b/mcagents/erase_node.rb
+@@ -112,6 +112,10 @@ module MCollective
+ File.open('/proc/sys/kernel/panic','w') {|file| file.write("10\n")}
+
+ begin
++ # clear out EFI boot entry on EFI-enabled systems
++ system("(which efibootmgr > /dev/null 2>&1 && efibootmgr | "\
++ "grep -oP '(?<=Boot)[0-9]+(?=.*ubuntu)' | "\
++ "xargs -I{} efibootmgr --delete-bootnum --bootnum {}) || true")
+ get_devices(type='all').each do |dev|
+ debug_msg("erasing bootstrap code area in MBR of #{dev[:name]}")
+ # clear out the boot code in MBR