[2/4] grub: Add file with cloud helping stuff

Message ID 20210727100710.5331-2-michael.tremer@ipfire.org
State Accepted
Commit 1e848ad3d45814977f950aeabfbeb7b32bc8d196
Headers
Series [1/4] flash-images: Label serial console option as "serial" |

Commit Message

Michael Tremer July 27, 2021, 10:07 a.m. UTC
  This file will detect whether to do certain actions depending on the
environment it is running on.

Currently this detects whether IPFire is booting up on AWS EC2 and
selects the serial console boot entry.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
---
 config/grub2/00_cloud                | 26 ++++++++++++++++++++++++++
 config/rootfiles/common/aarch64/grub |  1 +
 config/rootfiles/common/i586/grub    |  1 +
 config/rootfiles/common/x86_64/grub  |  1 +
 lfs/grub                             |  4 ++++
 5 files changed, 33 insertions(+)
 create mode 100644 config/grub2/00_cloud
  

Patch

diff --git a/config/grub2/00_cloud b/config/grub2/00_cloud
new file mode 100644
index 000000000..3f9c5a185
--- /dev/null
+++ b/config/grub2/00_cloud
@@ -0,0 +1,26 @@ 
+#!/bin/sh
+# This is an IPFire helper script for GRUB to enable the serial console
+# on AWS instances at the time of the first boost
+
+set -e
+
+# Do nothing if first boot isn't enabled
+if [ "${GRUB_FIRST_BOOT}" != "true" ]; then
+	exit 0
+fi
+
+. "${pkgdatadir}/grub-mkconfig_lib"
+
+if [ -z "${boot_device_id}" ]; then
+	boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
+fi
+
+cat <<EOF
+# Read the system manufacturer string from the BIOS
+smbios --type 1 --get-string 4 --set system_manufacturer
+
+# Are we on Amazon EC2?
+if [ "\$system_manufacturer" = "Amazon EC2" ]; then
+	next_entry=gnulinux-serial-${boot_device_id}
+fi
+EOF
diff --git a/config/rootfiles/common/aarch64/grub b/config/rootfiles/common/aarch64/grub
index 2c8951249..ae6bdfec3 100644
--- a/config/rootfiles/common/aarch64/grub
+++ b/config/rootfiles/common/aarch64/grub
@@ -4,6 +4,7 @@  boot/grub/splash.png
 #etc/bash_completion.d/grub
 etc/default/grub
 #etc/grub.d
+etc/grub.d/00_cloud
 etc/grub.d/00_header
 etc/grub.d/10_linux
 etc/grub.d/20_linux_xen
diff --git a/config/rootfiles/common/i586/grub b/config/rootfiles/common/i586/grub
index 72884a234..74e646150 100644
--- a/config/rootfiles/common/i586/grub
+++ b/config/rootfiles/common/i586/grub
@@ -5,6 +5,7 @@  boot/grub/splash.png
 #etc/bash_completion.d/grub
 etc/default/grub
 #etc/grub.d
+etc/grub.d/00_cloud
 etc/grub.d/00_header
 etc/grub.d/10_linux
 etc/grub.d/20_linux_xen
diff --git a/config/rootfiles/common/x86_64/grub b/config/rootfiles/common/x86_64/grub
index 8cddfcff9..5450499e3 100644
--- a/config/rootfiles/common/x86_64/grub
+++ b/config/rootfiles/common/x86_64/grub
@@ -5,6 +5,7 @@  boot/grub/splash.png
 #etc/bash_completion.d/grub
 etc/default/grub
 #etc/grub.d
+etc/grub.d/00_cloud
 etc/grub.d/00_header
 etc/grub.d/10_linux
 etc/grub.d/20_linux_xen
diff --git a/lfs/grub b/lfs/grub
index cc1581306..aed9e6ad8 100644
--- a/lfs/grub
+++ b/lfs/grub
@@ -125,6 +125,10 @@  ifeq "$(BUILD_PC)" "1"
 	touch /boot/grub/grub.cfg
 endif
 
+	# Install our own helpers
+	install -v -m 644 $(DIR_SRC)/config/grub2/00_cloud \
+		/etc/grub.cfg
+
 	# Install background image
 	-mkdir -pv /boot/grub
 	install -m 644 $(DIR_SRC)/config/grub2/splash.png /boot/grub/splash.png