From patchwork Thu Feb 22 14:58:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Quirin Gylstorff X-Patchwork-Id: 3367 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Thu, 22 Feb 2024 15:58:47 +0100 X-Sieve: CMU Sieve 2.4 Received: from mail-il1-f192.google.com (mail-il1-f192.google.com [209.85.166.192]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 41MEwkM9030003 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 22 Feb 2024 15:58:46 +0100 Received: by mail-il1-f192.google.com with SMTP id e9e14a558f8ab-365116383bdsf20075105ab.3 for ; Thu, 22 Feb 2024 06:58:46 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708613920; cv=pass; d=google.com; s=arc-20160816; b=jCtEKB/SjsPmxXhay0OV2nAApGXAkSLcdfd+j+k+WT327+4RaKaILPmyrzBZUKaxTn bK3/cNDPgfZp/I22ZgQzhK3Xs5CgA7pCaaKVtQ4Zh2bFuXeAIOLmYXm0fYVTwNaJBMy/ j6kLkjN/jfp84i/FGGPRWUvsP9rC89/UdaJPgY7JAKJn3/SdtIAe5T0twF2bw9fGPwr/ Kz96S0u6eKndbd2sJrzndWtH4EHLlHyjgjsm9aNI2Jyj1KbjV9rI7HcwF2xUzbDZr1s7 QzZbTdGcdEYsVcZjVNQTLbeVLhXQH5E/DLK/H2+bhAsP5Z8SZtK6AgxjDzzQlb2PJb00 Qbdg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:feedback-id:mime-version :message-id:date:subject:to:from:dkim-signature; bh=mwwBw0Xd2ASmXZjTCPK+Sd5Xa85TXZVHN+UH0c+RYLw=; fh=FSdj31W9DQF+gLjFSQuO3zIJbgqWPkjl6oM1RmDAjaA=; b=sGNW57TJbaYyn/usrPgextuy3Kx//VrzG2huDwkXydAXBIW2yja2wEOL/PbN4s7Hhi VlfcPZFii0Ap7aCk0cbq0MV7ge0K8Xrkh9I0nSCnNL07E/ucKf6JB9yRW385St5a1w2m 0TWbIDvvfbIQVrdH1mEr2zTtmy4gTUZ9TO3np4pINC0z8BBXf1vQbSEP8OllWvSQLoj4 mvx7Dsqvu9sdeCvhY7qzGvapqutYa+xrb/m2h8Bl0Bo0WNr32e3eU888+4iyaVZH4wvY PykmcCW5idi8n4szO686YQM+ExSvGlv4KoW828wzMPqgYlBDtNVtp4ASFU05k0oDboQ0 Ulmw==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=A1g2RK3k; spf=pass (google.com: domain of fm-51332-20240222145837931b22416bb361fad1-ckblvb@rts-flowmailer.siemens.com designates 185.136.65.228 as permitted sender) smtp.mailfrom=fm-51332-20240222145837931b22416bb361fad1-ckBLvB@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1708613920; x=1709218720; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=mwwBw0Xd2ASmXZjTCPK+Sd5Xa85TXZVHN+UH0c+RYLw=; b=SMSKc88PE9hDnXBVjFjBLOrffdjhZxzJZM47C+hE2dzbqSMOAKG06FG8rp+Tnprlp5 AYPGdQW0/NlEjj9hI4nWcu1qi32RCwg91i1GKD3zZ+pa9ENk2f27eliKdg0E3pl+glym XvEGgdJnKZv1Yny5NjrEtcec1/XO5POJxRf/mHjric4Ih1NE0/viN6U6NEQ1+uh2oAqD hMr94bK2FOw3rsLZ4U6Wj/H6tCEsqJMgz85EiDzZRGoWoaZ7K87rIEBJw93Jdo51WV6b ZFxyLQC0skoYgp+SV9MHQ63w0oxvNSOIRLh4oMWWH+4029JE006fqClj0rBcvPlHgw5g NLCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708613920; x=1709218720; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:feedback-id :mime-version:message-id:date:subject:to:from:x-beenthere :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=mwwBw0Xd2ASmXZjTCPK+Sd5Xa85TXZVHN+UH0c+RYLw=; b=vqWgRh+YH6WI4jdQCIYxb4HbTzNErcL6Ql/IlEdPztp0g19AnQn/3iAJzwBWP4S8c+ x7jLs/bEaA9TzRzrTxd92Wakhz5YtuH7OlJ3yvz3u1kyAQDo8WbW3sSKsW0wUQz0U45G U8mG9b1dFsUVeSRy+8CxdO5UqA/WwVLUoR8Vhozo/oxg2TIk2JocLZTX/VqRlrZ3BX1B XJPmrnktoiWbOOgdKzjAIecDqdsXLPYsPRZnKNtt+DcUUeLPzvZaxj1K6OOmHCEsZLBx vif63t7xiV+sDmX323m72FE9OYJfZdN2I5bs8o2JovGCvO8hnroPKV8s9tjfZUh9yBz+ Rszg== X-Forwarded-Encrypted: i=2; AJvYcCWCFoHFH5heS3J1/2O8siB0PLZBdRz0eGEyyoirYZh5KaFt+WAoW60noyPgCf7SETracXC8QVL9ABw6ejXwgwiEcW7SbsA= X-Gm-Message-State: AOJu0YwF7cvEx9oSC94LiIxHx2QdDBKLGNJIdoUYqtm0eDChXV6IIIZ/ XTaecLbdcJoNBQ/HHJrUPQA44JKzWB/ZPYdshtZHNqYncx3ND6M6XNM= X-Google-Smtp-Source: AGHT+IGC97bhhXTCq4yRAx4OWa1Wq7XuuvYTz0Q6JnMZs3uATi+JL9UGisafR/TNaUEOS1JaTa319g== X-Received: by 2002:a05:6e02:1d18:b0:365:105d:e0b5 with SMTP id i24-20020a056e021d1800b00365105de0b5mr21752280ila.8.1708613920313; Thu, 22 Feb 2024 06:58:40 -0800 (PST) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a92:c608:0:b0:363:d634:8954 with SMTP id p8-20020a92c608000000b00363d6348954ls3153038ilm.2.-pod-prod-06-us; Thu, 22 Feb 2024 06:58:39 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCWdgBVVMIdSQxg1QKYBvgHbxCCJjWurmpXHZXoSUKFtqltRlFSHiiA1WRX0flG+A0dG7fhLUTMrz3urUhGmyACjE9DReLF5Z2hU1VU= X-Received: by 2002:a05:6602:3f92:b0:7c7:2e6a:9bbe with SMTP id fb18-20020a0566023f9200b007c72e6a9bbemr23095280iob.10.1708613919180; Thu, 22 Feb 2024 06:58:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1708613919; cv=none; d=google.com; s=arc-20160816; b=Mn5ZraE9w3q8UVEnZRHlirn5+jYdOSS/mY5Pmk9nLQIbfbVoO2dNlHBgBOAFjEGImy eztD5LN0WoRU9YA61mK1Qx6CSevUb92Nrjj98OkMpYgAVrTjEwHiURItmFfslzLwbF8E daPb2spZ9WlAIjadP0+jgxlmU60FYOFI0SG41A2jKcxDR3giIHE8sNjbS39ymbTPzRKR 4welxQFpNX109iY6a2zOFj004xo/IERuqEPaBIzFHve5UNUu68Sci8FxRICY1gwh6rOn X/IFP9nVoHHmyAyt2SW3sZCz0+1sUdkkiXRXGZ+OaNICOVu64R6+U6sNEX10eKLFHSM7 c7xA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=feedback-id:content-transfer-encoding:mime-version:message-id:date :subject:to:from:dkim-signature; bh=bwAkiR6kzWcmDEUziBeQ0W/ZZNXMMzBQqAOWFSOngW8=; fh=lUCHAm10eNODxa07LSHl5FUb7qeEuEcWQoAJ+73LK7s=; b=O7kMWpJUc9ZKY0g/40z+F2d9Ayx4uWAc1MJJRSRk2wihK3dmVSpc0tSCtcARfkbQiz 5T5DOXOo434RXNPpzeGi9HgLq06Zbf3f3qxX5b7gMX3/U+f2s6mER6qAmUb7Q03naH0Z PXkvfulTjquw5qWIiENgmhY/OI+mGWDG48htsvMiJg3TdQp6ZZnwxTV8yfzAerEK0Du+ LD7tpN/dqwpIivLGb5aUzRH3MZYwEV3KFA5ZDboUCBo+ZragUb6HkXCgzOPRCTOW1T9l l57VPdtIg9WdGJyo2/oSs/4cC9qZ0TEkmNc473bizKTviidHlwb3RfahIGvn9w0RXe8F Qzpw==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=A1g2RK3k; spf=pass (google.com: domain of fm-51332-20240222145837931b22416bb361fad1-ckblvb@rts-flowmailer.siemens.com designates 185.136.65.228 as permitted sender) smtp.mailfrom=fm-51332-20240222145837931b22416bb361fad1-ckBLvB@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com Received: from mta-65-228.siemens.flowmailer.net (mta-65-228.siemens.flowmailer.net. [185.136.65.228]) by gmr-mx.google.com with ESMTPS id y10-20020a02730a000000b00473fb8430c0si1468362jab.7.2024.02.22.06.58.38 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 22 Feb 2024 06:58:38 -0800 (PST) Received-SPF: pass (google.com: domain of fm-51332-20240222145837931b22416bb361fad1-ckblvb@rts-flowmailer.siemens.com designates 185.136.65.228 as permitted sender) client-ip=185.136.65.228; Received: by mta-65-228.siemens.flowmailer.net with ESMTPSA id 20240222145837931b22416bb361fad1 for ; Thu, 22 Feb 2024 15:58:37 +0100 X-Patchwork-Original-From: "'Quirin Gylstorff' via isar-users" From: Quirin Gylstorff To: xujiew2015@gmail.com, isar-users@googlegroups.com, jan.kiszka@siemens.com, felix.moessbauer@siemens.com Subject: [PATCH v3] add simple installer to isar Date: Thu, 22 Feb 2024 15:58:06 +0100 Message-ID: <20240222145836.1436281-1-Quirin.Gylstorff@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-51332:519-21489:flowmailer X-Original-Sender: quirin.gylstorff@siemens.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@siemens.com header.s=fm1 header.b=A1g2RK3k; spf=pass (google.com: domain of fm-51332-20240222145837931b22416bb361fad1-ckblvb@rts-flowmailer.siemens.com designates 185.136.65.228 as permitted sender) smtp.mailfrom=fm-51332-20240222145837931b22416bb361fad1-ckBLvB@rts-flowmailer.siemens.com; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=siemens.com X-Original-From: Quirin Gylstorff Reply-To: Quirin Gylstorff Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, RCVD_IN_MSPIKE_H2,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Quirin Gylstorff This is a example to create installer image which contains another target image. It uses a multiconfig aproach to seperate the settings of the installer from the target settings. Signed-off-by: Quirin Gylstorff --- Changes v3: - remove disk size - add menu to select disk image if no wic image was found - allow empty target this will - set INSTALLDATA partition size to 4G - use --change-directory in wks file Changes v2: - Add dialog in case of multiple disk targets - Add dialog before starting the installtion This was added as there was no indication that an installation occurs - add `--use-uuid` for boot section in installer wic to avoid an error if the target disk is mount as /dev/sda - remove unnecessary /bin/sh from getty override kas/image/Kconfig | 17 +++ kas/image/isar-image-installer.yaml | 13 +++ .../conf/multiconfig/installer-target.conf | 6 + .../conf/multiconfig/isar-installer.conf | 5 + .../images/isar-image-installer.bb | 17 +++ .../deploy-image/deploy-image_0.1.bb | 21 ++++ .../deploy-image/files/deploy-image-wic.sh | 107 ++++++++++++++++++ .../deploy-image/files/install.override.conf | 5 + .../store-target-image_0.1.bb | 23 ++++ .../lib/wic/canned-wks/installer-efi.wks.in | 9 ++ 10 files changed, 223 insertions(+) create mode 100644 kas/image/isar-image-installer.yaml create mode 100644 meta-isar/conf/multiconfig/installer-target.conf create mode 100644 meta-isar/conf/multiconfig/isar-installer.conf create mode 100644 meta-isar/recipes-core/images/isar-image-installer.bb create mode 100644 meta-isar/recipes-installer/deploy-image/deploy-image_0.1.bb create mode 100644 meta-isar/recipes-installer/deploy-image/files/deploy-image-wic.sh create mode 100644 meta-isar/recipes-installer/deploy-image/files/install.override.conf create mode 100644 meta-isar/recipes-installer/store-target-image/store-target-image_0.1.bb create mode 100644 meta-isar/scripts/lib/wic/canned-wks/installer-efi.wks.in diff --git a/kas/image/Kconfig b/kas/image/Kconfig index 8e617386..bc789064 100644 --- a/kas/image/Kconfig +++ b/kas/image/Kconfig @@ -22,11 +22,28 @@ config IMAGE_DEBUG help This image includes some tools preinstalled useful for debug. +menuconfig IMAGE_INSTALLER + bool "Installer image" + help + This image contains a target image and scripts to install the target image on a device. + +config INSTALLER_TARGET_IMAGE + string "Install Base or Debug image" + default "isar-image-base" + help + This selects the target image of the installer: + - isar-image-base + - isar-image-debug + If left empty it will generate a installer image without payload. + The user of that image needs then to copy a image to the partition + labeled INSTALLDATA. + depends on IMAGE_INSTALLER endchoice config KAS_INCLUDE_IMAGE string default "kas/image/isar-image-base.yaml" if IMAGE_BASE default "kas/image/isar-image-debug.yaml" if IMAGE_DEBUG + default "kas/image/isar-image-installer.yaml" if IMAGE_INSTALLER endmenu diff --git a/kas/image/isar-image-installer.yaml b/kas/image/isar-image-installer.yaml new file mode 100644 index 00000000..a2c466dd --- /dev/null +++ b/kas/image/isar-image-installer.yaml @@ -0,0 +1,13 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# +# SPDX-License-Identifier: MIT + +header: + version: 14 + +target: mc:installer:isar-image-installer + +local_conf_header: + installer_multiconfig: | + BBMULTICONFIG += "installer installer-target" diff --git a/meta-isar/conf/multiconfig/installer-target.conf b/meta-isar/conf/multiconfig/installer-target.conf new file mode 100644 index 00000000..d987c5d0 --- /dev/null +++ b/meta-isar/conf/multiconfig/installer-target.conf @@ -0,0 +1,6 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# +# SPDX-License-Identifier: MIT + +IMAGE_FSTYPES += "wic.zst" diff --git a/meta-isar/conf/multiconfig/isar-installer.conf b/meta-isar/conf/multiconfig/isar-installer.conf new file mode 100644 index 00000000..11afcb85 --- /dev/null +++ b/meta-isar/conf/multiconfig/isar-installer.conf @@ -0,0 +1,5 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# +# SPDX-License-Identifier: MIT + diff --git a/meta-isar/recipes-core/images/isar-image-installer.bb b/meta-isar/recipes-core/images/isar-image-installer.bb new file mode 100644 index 00000000..27de03d5 --- /dev/null +++ b/meta-isar/recipes-core/images/isar-image-installer.bb @@ -0,0 +1,17 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# +# SPDX-License-Identifier: MIT + +inherit image +DESCRIPTION = "Example of a ISAR based Installer Image" + +# Use variable to switch easily to another wks +INSTALLER_WKS_FILE ??= "installer-efi.wks.in" +WKS_FILE = "${INSTALLER_WKS_FILE}" +IMAGER_INSTALL:wic:append = " systemd-boot" + +IMAGE_INSTALL += "store-target-image" +IMAGE_INSTALL += "deploy-image" + +IMAGE_INSTALL:remove = "expand-on-first-boot" diff --git a/meta-isar/recipes-installer/deploy-image/deploy-image_0.1.bb b/meta-isar/recipes-installer/deploy-image/deploy-image_0.1.bb new file mode 100644 index 00000000..ff5a9b4f --- /dev/null +++ b/meta-isar/recipes-installer/deploy-image/deploy-image_0.1.bb @@ -0,0 +1,21 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# +# SPDX-License-Identifier: MIT + +DESCRIPTION = "add target image to rootfs" + + +inherit dpkg-raw + +SRC_URI = "file://deploy-image-wic.sh \ + file://install.override.conf \ + " +DEPENDS = "store-target-image" +DEBIAN_DEPENDS = "store-target-image, bmap-tools, pv, dialog, util-linux, parted, fdisk, gdisk, pigz, xz-utils, pbzip2, zstd" +do_install[cleandirs] = "${D}/usr/bin/ \ + ${D}/usr/lib/systemd/system/getty@tty1.service.d/" +do_install() { + install -m 0755 ${WORKDIR}/deploy-image-wic.sh ${D}/usr/bin/deploy-image-wic.sh + install -m 0755 ${WORKDIR}/install.override.conf ${D}/usr/lib/systemd/system/getty@tty1.service.d/override.conf +} diff --git a/meta-isar/recipes-installer/deploy-image/files/deploy-image-wic.sh b/meta-isar/recipes-installer/deploy-image/files/deploy-image-wic.sh new file mode 100644 index 00000000..a3803302 --- /dev/null +++ b/meta-isar/recipes-installer/deploy-image/files/deploy-image-wic.sh @@ -0,0 +1,107 @@ +#!/usr/bin/env bash +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# +# SPDX-License-Identifier: MIT + +installdata=${INSTALL_DATA:-/install} + +DISK_IMAGE=$(find "$installdata" -type f -iname "*.wic*" -a -not -iname "*.wic.bmap") +if [ -z "$DISK_IMAGE" ]; then + pushd "$installdata" + shopt -s nullglob + array=(*) + shopt -u nullglob + DISK_IMAGE=$(dialog --clear \ + --no-tags --menu "Select image to be installed" 10 60 3 \ + "${array[@]}" --output-fd 1) + popd +fi +if [ ! -f "$DISK_IMAGE" ]; then + dialog --msgbox "Could not find an image to install. Installation aborted." 7 60 + exit 1 +fi +DISK_BMAP=$(find "$installdata" -type f -iname "$DISK_IMAGE.bmap") +# inspired by poky/meta/recipes-core/initrdscripts/files/install-efi.sh + +target_device_list="" +current_root_dev=$(grep "[[:blank:]]/[[:blank:]]" /proc/mounts | awk '{print $1}') +current_root_dev=${current_root_dev#\/dev/} +case $current_root_dev in + mmcblk*) + ;; + nvme*) + ;; + *) + current_root_dev=${current_root_dev%%[0-9]*} + ;; +esac + +echo "Searching for target device..." + +devices=$(find /sys/block/ -type b,c,f,l -not -iname "mmcblk*" -printf "%f\n") || true +mmc_devices=$(find /sys/block/ -type b,c,f,l -iname "mmcblk[0-9]" -printf "%f\n") || true +devices="$devices $mmc_devices" + +for device in $devices; do + case $device in + loop*) + # skip loop device + ;; + mtd*) + ;; + sr*) + # skip CDROM device + ;; + ram*) + # skip ram device + ;; + *) + case $device in + $current_root_dev*) + # skip the device we are running from + ;; + *) + target_device_list="$target_device_list $device" + ;; + esac + ;; + esac +done + +if [ -z "${target_device_list}" ]; then + dialog --msgbox "You need another device (besides the live device /dev/${current_root_dev}) to install the image. Installation aborted." 7 60 + exit 1 +fi + +if [ "$(echo "$target_device_list" | wc -w)" -gt 1 ]; then + array=() + for target in $target_device_list; do + array+=("$target" "/dev/$target") + done + TARGET_DEVICE=$(dialog --clear \ + --no-tags --menu "Select device to install $DISK_IMAGE" 10 60 3 \ + "${array[@]}" --output-fd 1) + +else + TARGET_DEVICE=$(echo "$target_device_list" | tr -d " ") +fi + +dialog --msgbox "Start installing '$DISK_IMAGE' to '$TARGET_DEVICE'." 7 60 + +set -e +bmap_options="" +if [ -z "$DISK_BMAP" ]; then + bmap_options="--nobmap" +fi +if ! bmaptool copy "${bmap_options}" "$DISK_IMAGE" "/dev/${TARGET_DEVICE}" > "$installdata"/bmap.log 2>&1; then + dialog --title "ERROR bmap failed with the following output" --textbox "$installdata"/bmap.log 24 140 + exit 1 +fi + +# we need to umount before reboot to avoid +# data corruption due to the use of vfat. +umount "$installdata" +sync +dialog --title "Reboot" --msgbox "Installation is successful. System will be rebooted. Please remove the USB stick." 7 60 +reboot diff --git a/meta-isar/recipes-installer/deploy-image/files/install.override.conf b/meta-isar/recipes-installer/deploy-image/files/install.override.conf new file mode 100644 index 00000000..73874caa --- /dev/null +++ b/meta-isar/recipes-installer/deploy-image/files/install.override.conf @@ -0,0 +1,5 @@ +[Service] +ExecStart= +ExecStart=/usr/bin/deploy-image-wic.sh +StandardInput=tty +StandardOutput=tty diff --git a/meta-isar/recipes-installer/store-target-image/store-target-image_0.1.bb b/meta-isar/recipes-installer/store-target-image/store-target-image_0.1.bb new file mode 100644 index 00000000..9150ce79 --- /dev/null +++ b/meta-isar/recipes-installer/store-target-image/store-target-image_0.1.bb @@ -0,0 +1,23 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# +# SPDX-License-Identifier: MIT + +DESCRIPTION = "Add a given target image to rootfs" + +inherit dpkg-raw + +INSTALLER_TARGET_IMAGE ??= "isar-image-base" +IMG_DATA_FILE ??= "${INSTALLER_TARGET_IMAGE}-${DISTRO}-${MACHINE}" +IMG_DATA_POSTFIX ??= "wic.zst" +do_install[mcdepends] = "${@ 'mc:installer:installer-target:' + d.getVar('INSTALLER_TARGET_IMAGE') + ':do_image_wic' if d.getVar('INSTALLER_TARGET_IMAGE') else ''}" +do_install[cleandirs] = "${D}/install/" +do_install() { + if [ -f ${DEPLOY_DIR_IMAGE}/${IMG_DATA_FILE}.${IMG_DATA_POSTFIX} ]; then + install -m 0600 ${DEPLOY_DIR_IMAGE}/${IMG_DATA_FILE}.${IMG_DATA_POSTFIX} ${D}/install/ + install -m 0600 ${DEPLOY_DIR_IMAGE}/${IMG_DATA_FILE}.wic.bmap ${D}/install/ + else + # mcopy cannot handle .keep or empty directory , therefore use visible file + touch ${D}/install/keep + fi +} diff --git a/meta-isar/scripts/lib/wic/canned-wks/installer-efi.wks.in b/meta-isar/scripts/lib/wic/canned-wks/installer-efi.wks.in new file mode 100644 index 00000000..daaec3f6 --- /dev/null +++ b/meta-isar/scripts/lib/wic/canned-wks/installer-efi.wks.in @@ -0,0 +1,9 @@ +# This software is a part of ISAR. +# Copyright (C) Siemens AG, 2024 +# +# SPDX-License-Identifier: MIT + +bootloader --ptable gpt --timeout 3 --append "rootwait console=ttyS0,115200 console=tty0 earlyprintk" +part /boot --source bootimg-efi-isar --sourceparams "loader=systemd-boot" --label efi --part-type EF00 --align 1024 --use-uuid +part / --source rootfs --fstype ext4 --label installroot --align 1024 --use-uuid +part /install --source rootfs --change-directory=install --label INSTALLDATA --size 4G --fstype=vfat --use-uuid --align 1024