From patchwork Fri Jul 26 10:01:06 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: amr.mohamed@arm.com X-Patchwork-Id: 46864 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 51FB6C3DA49 for ; Fri, 26 Jul 2024 10:01:28 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.57652.1721988085350063286 for ; Fri, 26 Jul 2024 03:01:25 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: amr.mohamed@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 8A1271007; Fri, 26 Jul 2024 03:01:50 -0700 (PDT) Received: from e125330.manchester.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 7C9773F73F; Fri, 26 Jul 2024 03:01:24 -0700 (PDT) From: amr.mohamed@arm.com To: meta-arm@lists.yoctoproject.org Cc: Amr Mohamed Subject: [PATCH scarthgap 1/4] arm-systemready/linux-distros: new inc file for unattended installation Date: Fri, 26 Jul 2024 11:01:06 +0100 Message-Id: <20240726100109.1878470-1-amr.mohamed@arm.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 26 Jul 2024 10:01:28 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/5920 From: Amr Mohamed Add a new inc file to unpack and repack the distro ISO image after adding the kickstart configuration file inside. Signed-off-by: Amr Mohamed --- ...m-systemready-linux-distros-unattended.inc | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros-unattended.inc diff --git a/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros-unattended.inc b/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros-unattended.inc new file mode 100644 index 00000000..f8c9c6c5 --- /dev/null +++ b/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros-unattended.inc @@ -0,0 +1,45 @@ +SUMMARY = "Arm SystemReady Linux distros unattended requirements" +DESCRIPTION = "Arm SystemReady Linux distro unattended configurations \ + and ISO image modification" + +EXTRACTED_ISO_TEMP_DIR = "${WORKDIR}/extracted_iso_temp_dir" +NEW_ISO_TEMP_DIR = "${WORKDIR}/new_iso_temp_dir" + +# oeqa test case must be added to TEST_SUITES to acknowledge that the unattended +# installation was successful. +inherit testimage + +python () { + unattended_required_vars = ['ISO_LABEL', 'BOOT_CATALOG', 'BOOT_IMAGE', 'EFI_IMAGE'] + + for var in unattended_required_vars: + if not d.getVar(var): + raise bb.parse.SkipRecipe(f'{var} variable is not set') +} + +unpackiso() { + # Unpack the ISO image + bsdtar -xf ${WORKDIR}/${ISO_IMAGE_NAME}.iso -C ${EXTRACTED_ISO_TEMP_DIR} + chmod -R u+rw ${EXTRACTED_ISO_TEMP_DIR} +} + +modifyiso() { + +} + +repackiso() { + # Repack the ISO image + mkisofs -o ${NEW_ISO_TEMP_DIR}/${ISO_IMAGE_NAME}.iso -U -r -v -T -J -joliet-long -V ${ISO_LABEL} \ + -volset ${ISO_LABEL} -A ${ISO_LABEL} -b ${BOOT_IMAGE} -c ${BOOT_CATALOG} -no-emul-boot \ + -boot-load-size 4 -boot-info-table -J -R -V ${ISO_LABEL} -eltorito-alt-boot \ + -eltorito-boot ${EFI_IMAGE} -no-emul-boot ${EXTRACTED_ISO_TEMP_DIR} + + mv -f ${NEW_ISO_TEMP_DIR}/${ISO_IMAGE_NAME}.iso ${WORKDIR} +} + +# Write the test data in IMAGE_POSTPROCESS_COMMAND +IMAGE_POSTPROCESS_COMMAND += "write_image_test_data; " + +do_unpack[depends] += "cdrtools-native:do_populate_sysroot libarchive-native:do_populate_sysroot" +do_unpack[postfuncs] += "unpackiso modifyiso repackiso" +do_unpack[cleandirs] += "${EXTRACTED_ISO_TEMP_DIR} ${NEW_ISO_TEMP_DIR}" \ No newline at end of file From patchwork Fri Jul 26 10:01:07 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: amr.mohamed@arm.com X-Patchwork-Id: 46865 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53072C49EA1 for ; Fri, 26 Jul 2024 10:01:28 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.58251.1721988086163500059 for ; Fri, 26 Jul 2024 03:01:26 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: amr.mohamed@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 686F91042; Fri, 26 Jul 2024 03:01:51 -0700 (PDT) Received: from e125330.manchester.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 5C48A3F73F; Fri, 26 Jul 2024 03:01:25 -0700 (PDT) From: amr.mohamed@arm.com To: meta-arm@lists.yoctoproject.org Cc: Amr Mohamed Subject: [PATCH scarthgap 2/4] arm-systemready/linux-distros: Add kickstart file for Fedora unattended Date: Fri, 26 Jul 2024 11:01:07 +0100 Message-Id: <20240726100109.1878470-2-amr.mohamed@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240726100109.1878470-1-amr.mohamed@arm.com> References: <20240726100109.1878470-1-amr.mohamed@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 26 Jul 2024 10:01:28 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/5921 From: Amr Mohamed Add the Fedora kickstart configuration file and define a function to modify the unpacked ISO image to add the kickstart file inside and modify the grub.cfg file. Signed-off-by: Amr Mohamed --- .../arm-systemready-linux-distros-fedora.bb | 16 ++++++++ .../arm-systemready-linux-distros.inc | 14 ++++++- .../unattended-boot-conf/Fedora/ks.cfg | 39 +++++++++++++++++++ 3 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 meta-arm-systemready/recipes-test/arm-systemready-linux-distros/unattended-boot-conf/Fedora/ks.cfg diff --git a/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros-fedora.bb b/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros-fedora.bb index 25990b30..de4ea36d 100644 --- a/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros-fedora.bb +++ b/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros-fedora.bb @@ -98,6 +98,22 @@ file://${COMMON_LICENSE_DIR}/OPUBL-1.0;md5=99367d4750dbf0ae6cc74209ddd52f6d \ ARM_SYSTEMREADY_LINUX_DISTRO_INSTALL_SIZE = "6144" +TEST_SUITES = "${@oe.utils.vartrue("DISTRO_UNATTENDED_INST_TESTS", "arm_systemready_fedora_unattended", "", d)}" + +ISO_LABEL = "${@oe.utils.vartrue("DISTRO_UNATTENDED_INST_TESTS", "Fedora-S-dvd-aarch64-39", "", d)}" +BOOT_CATALOG = "${@oe.utils.vartrue("DISTRO_UNATTENDED_INST_TESTS", "boot.catalog", "", d)}" +BOOT_IMAGE = "${@oe.utils.vartrue("DISTRO_UNATTENDED_INST_TESTS", "EFI/BOOT/BOOTAA64.EFI", "", d)}" +EFI_IMAGE = "${@oe.utils.vartrue("DISTRO_UNATTENDED_INST_TESTS", "images/efiboot.img", "", d)}" + PV = "39.1.5" SRC_URI = "https://download.fedoraproject.org/pub/fedora/linux/releases/39/Server/aarch64/iso/Fedora-Server-dvd-aarch64-39-1.5.iso;unpack=0;downloadfilename=${ISO_IMAGE_NAME}.iso" SRC_URI[sha256sum] = "d19dc2a39758155fa53e6fd555d0d173ccc8175b55dea48002d499f39cb30ce0" + +modifyiso() { + UNATTENDED_CONF_DIR="${THISDIR}/unattended-boot-conf/Fedora" + + cp "${UNATTENDED_CONF_DIR}/ks.cfg" ${EXTRACTED_ISO_TEMP_DIR} + sed -i 's/set default="1"/set default="0"/g' "${EXTRACTED_ISO_TEMP_DIR}/EFI/BOOT/grub.cfg" + sed -i 's/set timeout=60/set timeout=0/g' "${EXTRACTED_ISO_TEMP_DIR}/EFI/BOOT/grub.cfg" + sed -i '0,/vmlinuz/s/vmlinuz/& inst.ks=hd:LABEL=Fedora-S-dvd-aarch64-39:\/ks.cfg/' "${EXTRACTED_ISO_TEMP_DIR}/EFI/BOOT/grub.cfg" +} diff --git a/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros.inc b/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros.inc index fdca3cc0..5e8a18e2 100644 --- a/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros.inc +++ b/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/arm-systemready-linux-distros.inc @@ -2,8 +2,12 @@ SUMMARY = "Arm SystemReady Linux distros installation" DESCRIPTION = "Arm SystemReady Linux distro CD/DVD images and installation \ target disk image" -IMAGE_CLASSES:remove = "license_image testimage create-spdx-image-3.0" +DISTRO_UNATTENDED_INST_TESTS ?= "0" +require ${@oe.utils.vartrue("DISTRO_UNATTENDED_INST_TESTS", "arm-systemready-linux-distros-unattended.inc", "", d)} + +IMAGE_CLASSES:remove = "license_image create-spdx-image-3.0" +IMAGE_CLASSES:remove = "${@oe.utils.vartrue("DISTRO_UNATTENDED_INST_TESTS", "", "testimage", d)}" BUILDHISTORY_FEATURES:remove = "image" INHIBIT_DEFAULT_DEPS = "1" @@ -16,7 +20,7 @@ do_configure[noexec] = "1" do_compile[noexec] = "1" ISO_IMAGE_NAME = "${PN}-${PV}" -IMAGE_LINK_NAME = "${PN}-${PV}-${MACHINE}" +IMAGE_LINK_NAME = "${PN}-${MACHINE}" ARM_SYSTEMREADY_LINUX_DISTRO_ISO_IMAGE = \ "${DEPLOY_DIR_IMAGE}/${ISO_IMAGE_NAME}.iso" @@ -47,7 +51,13 @@ python do_image_complete() { from oe.utils import execute_pre_post_process post_process_cmds = d.getVar("IMAGE_POSTPROCESS_COMMAND") execute_pre_post_process(d, post_process_cmds) + + if d.getVar('DISTRO_UNATTENDED_INST_TESTS') == "1": + # Ensure an empty rootfs manifest exists (required by testimage) + fname = os.path.join(d.getVar('IMGDEPLOYDIR'), d.getVar('IMAGE_LINK_NAME') + ".manifest") + open(fname, 'w').close() } + do_image_complete[nostamp] = "1" addtask image_complete after do_deploy before do_build diff --git a/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/unattended-boot-conf/Fedora/ks.cfg b/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/unattended-boot-conf/Fedora/ks.cfg new file mode 100644 index 00000000..f8ea3bc6 --- /dev/null +++ b/meta-arm-systemready/recipes-test/arm-systemready-linux-distros/unattended-boot-conf/Fedora/ks.cfg @@ -0,0 +1,39 @@ +# Generated by Anaconda 39.32.6 +# Generated by pykickstart v3.48 +#version=DEVEL +# Use text mode install +text + +# Keyboard layouts +keyboard --vckeymap=us --xlayouts='us' +# System language +lang en_GB.UTF-8 + +# Use CDROM installation media +cdrom + +%packages --excludedocs --ignoremissing +@core --nodefaults + +%end + +# Run the Setup Agent on first boot +firstboot --enable +# Do not configure the X Window System +skipx + +# System bootloader configuration +bootloader --location=mbr --boot-drive=vda +autopart +# Partition clearing information +clearpart --all --initlabel --drives=vda + +# System timezone +timezone Europe/London --utc + +# Root password +rootpw --lock +user --groups=wheel --name=user --password=unsafe --gecos="usr1" + +# Reboot after installation with an attempt to eject the installation media +reboot --eject From patchwork Fri Jul 26 10:01:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: amr.mohamed@arm.com X-Patchwork-Id: 46866 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 82466C52CDA for ; Fri, 26 Jul 2024 10:01:28 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.57653.1721988086986116502 for ; Fri, 26 Jul 2024 03:01:27 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: amr.mohamed@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3BDBD1063; Fri, 26 Jul 2024 03:01:52 -0700 (PDT) Received: from e125330.manchester.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 2F9273F73F; Fri, 26 Jul 2024 03:01:26 -0700 (PDT) From: amr.mohamed@arm.com To: meta-arm@lists.yoctoproject.org Cc: Amr Mohamed Subject: [PATCH scarthgap 3/4] arm-systemready/oeqa: Add new test for Fedora unattended installation Date: Fri, 26 Jul 2024 11:01:08 +0100 Message-Id: <20240726100109.1878470-3-amr.mohamed@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240726100109.1878470-1-amr.mohamed@arm.com> References: <20240726100109.1878470-1-amr.mohamed@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 26 Jul 2024 10:01:28 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/5922 From: Amr Mohamed The oeqa test responds to the boot loader prompt error message and waits till the distro installation is finished. Signed-off-by: Amr Mohamed --- .../arm_systemready_fedora_unattended.py | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 meta-arm-systemready/lib/oeqa/runtime/cases/arm_systemready_fedora_unattended.py diff --git a/meta-arm-systemready/lib/oeqa/runtime/cases/arm_systemready_fedora_unattended.py b/meta-arm-systemready/lib/oeqa/runtime/cases/arm_systemready_fedora_unattended.py new file mode 100644 index 00000000..f607fb12 --- /dev/null +++ b/meta-arm-systemready/lib/oeqa/runtime/cases/arm_systemready_fedora_unattended.py @@ -0,0 +1,39 @@ +from oeqa.runtime.case import OERuntimeTestCase + + +class SystemReadyFedoraUnattendedTest(OERuntimeTestCase): + def setUp(self): + super().setUp() + self.console = self.target.DEFAULT_CONSOLE + + def test_fedora_unattended(self): + # Turn on the FVP. + self.target.transition('on') + + # Timeout value = elapsed time * 2; where elapsed time was collected + # from the elapsed time in the log.do_testimage for each function after + # the build is finished on the development machine. + self.target.expect(self.console, + ' Booting `Install Fedora 39\'', + timeout=(2 * 60)) + bb.plain('Installation status: Loading the installer, kernel and initrd...') + + self.target.expect(self.console, + 'Setting up the installation environment', + timeout=(2 * 60 * 60)) + bb.plain('Installation status: Setting up the installation environment...') + + self.target.expect(self.console, + 'Installing the software', + timeout=(30 * 60)) + bb.plain('Installation status: Installing the software packages...') + + # Waiting to respond to the boot loader prompt error message. + self.target.expect(self.console, + 'Please respond \'yes\' or \'no\': ', + timeout=(16 * 60 * 60)) + self.target.sendline(self.console, 'yes') + + # Waiting till the installation is finished. + self.target.expect(self.console, r'.*login: ', timeout=(5 * 60 * 60)) + bb.plain('Installation status: Fedora installation finished successfully.') From patchwork Fri Jul 26 10:01:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: amr.mohamed@arm.com X-Patchwork-Id: 46867 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B76CC3DA49 for ; Fri, 26 Jul 2024 10:01:38 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.57654.1721988088011506843 for ; Fri, 26 Jul 2024 03:01:28 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: amr.mohamed@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 3B3ED1042; Fri, 26 Jul 2024 03:01:53 -0700 (PDT) Received: from e125330.manchester.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 024FE3F73F; Fri, 26 Jul 2024 03:01:26 -0700 (PDT) From: amr.mohamed@arm.com To: meta-arm@lists.yoctoproject.org Cc: Amr Mohamed Subject: [PATCH scarthgap 4/4] kas: Add new yml file for Distros unattended installation Date: Fri, 26 Jul 2024 11:01:09 +0100 Message-Id: <20240726100109.1878470-4-amr.mohamed@arm.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240726100109.1878470-1-amr.mohamed@arm.com> References: <20240726100109.1878470-1-amr.mohamed@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Fri, 26 Jul 2024 10:01:38 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arm/message/5923 From: Amr Mohamed Define “DISTRO_UNATTENDED_INST_TESTS” variable in meta-arm-systemready independently from meta-arm-auto-solutions. This will allow running the unattended installation without meta-arm-auto-solutions. Signed-off-by: Amr Mohamed --- kas/arm-systemready-linux-distros-fedora.yml | 1 + ...temready-linux-distros-unattended-installation.yml | 11 +++++++++++ 2 files changed, 12 insertions(+) create mode 100644 kas/arm-systemready-linux-distros-unattended-installation.yml diff --git a/kas/arm-systemready-linux-distros-fedora.yml b/kas/arm-systemready-linux-distros-fedora.yml index b2b23d78..2faa19cb 100644 --- a/kas/arm-systemready-linux-distros-fedora.yml +++ b/kas/arm-systemready-linux-distros-fedora.yml @@ -2,6 +2,7 @@ header: version: 16 includes: - kas/arm-systemready-firmware.yml + - kas/arm-systemready-linux-distros-unattended-installation.yml target: - arm-systemready-linux-distros-fedora diff --git a/kas/arm-systemready-linux-distros-unattended-installation.yml b/kas/arm-systemready-linux-distros-unattended-installation.yml new file mode 100644 index 00000000..7976186f --- /dev/null +++ b/kas/arm-systemready-linux-distros-unattended-installation.yml @@ -0,0 +1,11 @@ +header: + version: 16 + +env: + DISTRO_UNATTENDED_INST_TESTS: + # The full testimage run typically takes around 12-24h on fvp-base. + TEST_OVERALL_TIMEOUT: "${@ 24*60*60}" + +local_conf_header: + systemready-unattended-inst: | + TESTIMAGE_AUTO = "${@oe.utils.vartrue("DISTRO_UNATTENDED_INST_TESTS", "1", "", d)}"