[6/6] isar-installer: Added example target bootstrapper task to collect device information.

Message ID 20250922170445.1393839-7-alexander.heinisch@siemens.com
State Under Review
Headers show
Series Add target bootstrapper framework | expand

Commit Message

Heinisch, Alexander Sept. 22, 2025, 5:04 p.m. UTC
From: Alexander Heinisch <alexander.heinisch@siemens.com>

Signed-off-by: Alexander Heinisch <alexander.heinisch@siemens.com>
---
 kas/installer/Kconfig                         | 10 +++++++
 kas/installer/add-device-info-collector.yaml  | 14 ++++++++++
 .../device-info-collector.bb                  | 27 ++++++++++++++++++
 .../files/usr/bin/device-info-collector.sh    | 28 +++++++++++++++++++
 4 files changed, 79 insertions(+)
 create mode 100644 kas/installer/add-device-info-collector.yaml
 create mode 100644 meta-isar/recipes-installer/device-info-collector/device-info-collector.bb
 create mode 100755 meta-isar/recipes-installer/device-info-collector/files/usr/bin/device-info-collector.sh

Patch

diff --git a/kas/installer/Kconfig b/kas/installer/Kconfig
index 0b891c9a..ccac6471 100644
--- a/kas/installer/Kconfig
+++ b/kas/installer/Kconfig
@@ -82,6 +82,16 @@  config INSTALLER_TARGET_OVERWRITE
 
 endif
 
+
+config INSTALLER_ADD_DEVICE_INFO_COLLECTOR
+        bool "Add Device Info Collector"
+        default n
+
+config KAS_INCLUDE_INSTALLER_ADD_DEVICE_INFO_COLLECTOR
+	string
+	default "kas/installer/add-device-info-collector.yaml"
+    depends on INSTALLER_ADD_DEVICE_INFO_COLLECTOR
+
 config INSTALLER_TTY_SERVICES
 	string "TTY Service to use"
 	default "getty@tty1 serial-getty@ttyS0" if !INSTALL_UNATTENDED
diff --git a/kas/installer/add-device-info-collector.yaml b/kas/installer/add-device-info-collector.yaml
new file mode 100644
index 00000000..22020679
--- /dev/null
+++ b/kas/installer/add-device-info-collector.yaml
@@ -0,0 +1,14 @@ 
+# This software is a part of ISAR.
+# Copyright (C) Siemens AG, 2025
+#
+# SPDX-License-Identifier: MIT
+
+header:
+  version: 14
+
+local_conf_header:
+  target_bootstrapper-add-device-info-collector: |
+    TARGET_BOOTSTRAPPER_ADDITIONAL_PACKAGES:append = " device-info-collector"
+    TARGET_BOOTSTRAPPER_TASK_device-info-collector[script] = "device-info-collector.sh"
+    TARGET_BOOTSTRAPPER_TASK_device-info-collector[workdir] = "/usr/bin"
+    TARGET_BOOTSTRAPPER_TASK_device-info-collector[effort] = "1"
diff --git a/meta-isar/recipes-installer/device-info-collector/device-info-collector.bb b/meta-isar/recipes-installer/device-info-collector/device-info-collector.bb
new file mode 100644
index 00000000..e858869c
--- /dev/null
+++ b/meta-isar/recipes-installer/device-info-collector/device-info-collector.bb
@@ -0,0 +1,27 @@ 
+# This software is a part of ISAR.
+# Copyright (C) Siemens AG, 2024-2025
+#
+# SPDX-License-Identifier: MIT
+
+inherit dpkg-raw
+
+DEBIAN_DEPENDS += "\
+	, dmidecode \
+	, lshw, pci.ids, usb.ids \
+	, pciutils \
+	, usbutils \
+	, util-linux \
+	"
+
+SRC_URI += " \
+	file://usr/bin/device-info-collector.sh \
+	"
+
+do_install[cleandirs] = " \
+	${D}/usr/bin/ \
+	${D}/usr/lib/device-info-collector/ \
+	${D}/install/device-infos/ \
+	"
+do_install() {
+	install -m 0755  ${WORKDIR}/usr/bin/device-info-collector.sh ${D}/usr/bin/device-info-collector.sh
+}
diff --git a/meta-isar/recipes-installer/device-info-collector/files/usr/bin/device-info-collector.sh b/meta-isar/recipes-installer/device-info-collector/files/usr/bin/device-info-collector.sh
new file mode 100755
index 00000000..257d80a1
--- /dev/null
+++ b/meta-isar/recipes-installer/device-info-collector/files/usr/bin/device-info-collector.sh
@@ -0,0 +1,28 @@ 
+#!/usr/bin/env bash
+# This software is a part of ISAR.
+# Copyright (C) Siemens AG, 2024-2025
+#
+# SPDX-License-Identifier: MIT
+
+BASE_DIR="/install/device-infos"
+
+SERIAL_NUMBER=$(dmidecode -s system-serial-number | tr '[:upper:]' '[:lower:]' | tr -d "[:space:]")
+TARGET_DIR="${BASE_DIR}/${SERIAL_NUMBER}/$(date -u +%4Y-%m-%d_%H-%S)"
+
+echo "Use ${TARGET_DIR} to store the collected device infos."
+mkdir -p ${TARGET_DIR}
+
+echo "Collecting most important device attributes..."
+
+echo "Collecting peripherals"
+lshw >> ${TARGET_DIR}/lshw.out
+lspci >> ${TARGET_DIR}/lspci.out
+lsusb >> ${TARGET_DIR}/lsusb.out
+lsblk >> ${TARGET_DIR}/lsblk.out
+
+echo "Collecting cpu info..."
+lscpu >> ${TARGET_DIR}/lscpu.out
+cat /proc/cpuinfo > ${TARGET_DIR}/proc_cpuinfo
+
+echo "Collecting dmi / smbios..."
+dmidecode --dump-bin ${TARGET_DIR}/dmidecode.dump