From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6808879013169201152 X-Received: by 2002:a1c:c2d4:: with SMTP id s203mr6925584wmf.128.1586414365599; Wed, 08 Apr 2020 23:39:25 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a1c:a915:: with SMTP id s21ls2093158wme.0.gmail; Wed, 08 Apr 2020 23:39:25 -0700 (PDT) X-Google-Smtp-Source: APiQypK2aZLWaHLOzxdYVKm9jdHEttp9dHYyrHWoB+VYzT1QvZA7isfjXYrZXaMvHSD8SdqXuAJn X-Received: by 2002:a1c:9dd1:: with SMTP id g200mr8979372wme.82.1586414365049; Wed, 08 Apr 2020 23:39:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586414365; cv=none; d=google.com; s=arc-20160816; b=bDy/0QjvnWE+dIX/aI04q54mH+eIir1xk/WFVo9eCJmBKbnzil3l3DJIwbTQinEnho 0a2JEJc1WPo0TknvSutzbTQG7t3gS/KVIo1Apva03eZXxtolbFm+cIK0C/GKekhH6zss yZi3UOe2/QxQ5loF/ihqLGK8QVwCr7xKEuDkTfJWwBTIhWI8E4NBRoC0AOyEao9vth9h BjQTHgRpNYaNL51hAkZm8+AZasqdgkZBfFo7vCo5iUnkL9DazEDeZCjpwS27ALy4EnOd yE9i5/Shu+vrT71zxdhezwA9ckWQnvqrRdICfNrxcoJMVw+vFAnCCFB2Rkn9NVW6flUi lDXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:subject:cc:to:from:date; bh=lzoE/Gylp0sfh5q+ZSzGqsraxNe8Is0wsbYaqYmqZoA=; b=jpa9fyF3sfw4IfeTjzzrCikW9x7Vrj10ktxM9SVRshtBk9i5vzf47+C8cWMi1MqZZW sXuUfHI37fFHDwJPGTqbEOJmLPLcRbi+24889xsZrouOgoSZ65MUL6/jc4rdU1QKCw6Y yd+Z+cN5RuAtS0v9lKN5ZIi3jubJim/LUwtbMJD/dMBQZKhAI02FeicYiYNa2K+kHwZh 6yByLFESnmg0IZtkvSGvJdnOlcRfFWDX4nARXmYmoPxLWOXGxJlHIs0lMqS8okdlndFD FRbmcWR+w25+IFirVQ2QEXYgR+C9KsEtNsD4qo0RE0B4ShzVTCkLI5yEItPhZb5GxuD3 t/cQ== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=henning.schild@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from gecko.sbs.de (gecko.sbs.de. [194.138.37.40]) by gmr-mx.google.com with ESMTPS id l16si124466wmg.1.2020.04.08.23.39.24 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 08 Apr 2020 23:39:25 -0700 (PDT) Received-SPF: pass (google.com: domain of henning.schild@siemens.com designates 194.138.37.40 as permitted sender) client-ip=194.138.37.40; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 194.138.37.40 as permitted sender) smtp.mailfrom=henning.schild@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail2.sbs.de (mail2.sbs.de [192.129.41.66]) by gecko.sbs.de (8.15.2/8.15.2) with ESMTPS id 0396dOF6009549 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Thu, 9 Apr 2020 08:39:24 +0200 Received: from md1za8fc.ad001.siemens.net ([167.87.4.190]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 0396dNGR005625; Thu, 9 Apr 2020 08:39:23 +0200 Date: Thu, 9 Apr 2020 08:39:22 +0200 From: Henning Schild To: "Q. Gylstorff" Cc: Subject: Re: [PATCH v2 1/3] meta/support: Generate a custom initramfs Message-ID: <20200409083922.05f007ee@md1za8fc.ad001.siemens.net> In-Reply-To: <20200403145510.28120-2-Quirin.Gylstorff@siemens.com> References: <20200327132801.19835-1-Quirin.Gylstorff@siemens.com> <20200403145510.28120-1-Quirin.Gylstorff@siemens.com> <20200403145510.28120-2-Quirin.Gylstorff@siemens.com> X-Mailer: Claws Mail 3.17.4 (GTK+ 2.24.32; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-TUID: e/5lvR6ribgl Am Fri, 3 Apr 2020 16:55:08 +0200 schrieb "Q. Gylstorff" : > From: Quirin Gylstorff > > This package sets the Parameters for mkinitramfs/update-intramfs > before it regenerates the initrd.img of debian with a modified > version. > > Use cases are the remove unnecessary kernel modules to reduce the > size of the initrd by using the parameters: > ``` > INITRAMFS_MODULES = "list" > INITRAMFS_MODULE_LIST += "ext4" > ``` > > Set the boot root during the initrd generation by setting > `INITRAMFS_ROOT`. > > see also man pages of mkinitramfs and initramfs.conf. > > Signed-off-by: Quirin Gylstorff > --- > meta/classes/initramfs.bbclass | 44 > +++++++++++++++++++ .../initramfs-config/files/control.tmpl | > 12 +++++ .../initramfs-config/files/postinst.tmpl | 28 > ++++++++++++ .../initramfs-config/initramfs-config_0.1.bb | 30 > +++++++++++++ 4 files changed, 114 insertions(+) > create mode 100644 meta/classes/initramfs.bbclass > create mode 100644 > meta/recipes-support/initramfs-config/files/control.tmpl create mode > 100644 meta/recipes-support/initramfs-config/files/postinst.tmpl > create mode 100644 > meta/recipes-support/initramfs-config/initramfs-config_0.1.bb > > diff --git a/meta/classes/initramfs.bbclass > b/meta/classes/initramfs.bbclass new file mode 100644 > index 0000000..0cc91c2 > --- /dev/null > +++ b/meta/classes/initramfs.bbclass > @@ -0,0 +1,44 @@ > +# This software is a part of ISAR. > +# Copyright (C) 2020 Siemens AG > +# > +# SPDX-License-Identifier: MIT > + > +INITRAMFS_MODULES ?= "most" > +INITRAMFS_BUSYBOX ?= "auto" > +INITRAMFS_COMPRESS ?= "gzip" > +INITRAMFS_KEYMAP ?= "n" > +INITRAMFS_NET_DEVICE ?= "" > +INITRAMFS_NFSROOT ?= "auto" > +INITRAMFS_RUNSIZE ?= "10%" > +INITRAMFS_ROOT ?= "" > +INITRAMFS_MODULE_LIST ?= "" > +update_initramfs_modules() { > + for modname in ${INITRAMFS_MODULE_LIST}; do > + sudo -E tee --append '${ROOTFSDIR}/etc/initramfs-tools/modules' > << EOF +${modname} > +EOF > + done > +} > +update_initramfs_config() { > + sudo -E tee ${ROOTFSDIR}/etc/initramfs-tools/initramfs.conf << > EOF +MODULES=${INITRAMFS_MODULES} > +BUSYBOX=${INITRAMFS_BUSYBOX} > +COMPRESS=${INITRAMFS_COMPRESS} > +KEYMAP=${INITRAMFS_KEYMAP} > +DEVICE=${INITRAMFS_NET_DEVICE} > +NFSROOT=${INITRAMFS_NFSROOT} > +RUNSIZE=${INITRAMFS_RUNSIZE} > +ROOT=${INITRAMFS_ROOT} > +EOF > +} > + > +do_update_initramfs() { > + update_initramfs_modules > + update_initramfs_config > + export KERNEL_VERSION=$(ls ${ROOTFSDIR}/lib/modules) > + bbplain kernel_version: ${KERNEL_VERSION} > + sudo -E chroot '${ROOTFSDIR}' \ > + mkinitramfs -v -k -o /boot/initrd.img-${KERNEL_VERSION} > ${KERNEL_VERSION} +} > + > +addtask update_initramfs before do_copy_boot_files after > do_rootfs_install diff --git > a/meta/recipes-support/initramfs-config/files/control.tmpl > b/meta/recipes-support/initramfs-config/files/control.tmpl new file > mode 100644 index 0000000..5f57828 --- /dev/null > +++ b/meta/recipes-support/initramfs-config/files/control.tmpl > @@ -0,0 +1,12 @@ > +Source: initramfs-config I guess that could contain "isar", not sure but would like to avoid collisions. > +Section: misc > +Priority: optional > +Standards-Version: 3.9.6 > +Maintainer: Unknown maintainer MAINTAINER = "isar-users " > +Build-Depends: debhelper (>= 9) > + > + > +Package: initramfs-config > +Architecture: any > +Depends: ${shlibs:Depends}, ${misc:Depends}, initramfs-tools-core, > ${KERNEL_PACKAGE} +Description: Configuration files for a custom > initramfs \ No newline at end of file > diff --git > a/meta/recipes-support/initramfs-config/files/postinst.tmpl > b/meta/recipes-support/initramfs-config/files/postinst.tmpl new file > mode 100644 index 0000000..b03b09e --- /dev/null > +++ b/meta/recipes-support/initramfs-config/files/postinst.tmpl > @@ -0,0 +1,28 @@ > +#!/bin/bash > +set -x > +INITRAMFS_CONF=/etc/initramfs-tools/initramfs.conf > +if [ -f ${INITRAMFS_CONF} ]; then > + sed -i -E 's/(^MODULES=).*/\1${INITRAMFS_MODULES}/' > ${INITRAMFS_CONF} > + sed -i -E 's/(^BUSYBOX=).*/\1${INITRAMFS_BUSYBOX}/' > ${INITRAMFS_CONF} > + sed -i -E 's/(^COMPRESS=).*/\1${INITRAMFS_COMPRESS}/' > ${INITRAMFS_CONF} > + sed -i -E 's/(^KEYMAP=).*/\1${INITRAMFS_KEYMAP}/' > ${INITRAMFS_CONF} > + sed -i -E 's/(^DEVICE=).*/\1${INITRAMFS_DEVICE}/' > ${INITRAMFS_CONF} > + sed -i -E 's/(^NFSROOT=).*/\1${INITRAMFS_NFSROOT}/' > ${INITRAMFS_CONF} > + sed -i -E 's/(^RUNSIZE=).*/\1${INITRAMFS_RUNSIZE}/' > ${INITRAMFS_CONF} > + if ! grep -Fxq "ROOT" "${INITRAMFS_CONF}"; then > + sed -i -E 's/(^ROOT=).*/\1${INITRAMFS_ROOT}/' > ${INITRAMFS_CONF} > + else > + sed -i -E "$aROOT=${INITRAMFS_ROOT}" ${INITRAMFS_CONF} > + fi > +fi > + > +MODULES_LIST_FILE=/etc/initramfs-tools/modules > +if [ -f ${MODULES_LIST_FILE} ]; then > + for modname in ${INITRAMFS_MODULE_LIST}; do > + if ! grep -Fxq "$modname" "${MODULES_LIST_FILE}"; then > + echo "$modname" >> "${MODULES_LIST_FILE}" > + fi > + done > +fi I might be wrong but this looks like it can not run twice, which it would on a package update. Need a postrm or prerm? Henning > +update-initramfs -v -u > diff --git > a/meta/recipes-support/initramfs-config/initramfs-config_0.1.bb > b/meta/recipes-support/initramfs-config/initramfs-config_0.1.bb new > file mode 100644 index 0000000..8352681 --- /dev/null > +++ b/meta/recipes-support/initramfs-config/initramfs-config_0.1.bb > @@ -0,0 +1,30 @@ > +# This software is a part of ISAR. > +# Copyright (C) 2020 Siemens AG > +# > +# SPDX-License-Identifier: MIT > +inherit dpkg-raw > +inherit template > +DESCRIPTION = "Recipe to set the initramfs configuration and > generate a new ramfs" + > + > +SRC_URI = "file://postinst.tmpl \ > + file://control.tmpl \ > + " > + > +INITRAMFS_MODULES ?= "most" > +INITRAMFS_BUSYBOX ?= "auto" > +INITRAMFS_COMPRESS ?= "gzip" > +INITRAMFS_KEYMAP ?= "n" > +INITRAMFS_NET_DEVICE ?= "" > +INITRAMFS_NFSROOT ?= "auto" > +INITRAMFS_RUNSIZE ?= "10%" > +INITRAMFS_ROOT ?= "" > +INITRAMFS_MODULE_LIST ?= "" > +CREATE_NEW_INITRAMFS ?= "n" > +KERNEL_PACKAGE = "${@ ("linux-image-" + d.getVar("KERNEL_NAME", > True)) if d.getVar("KERNEL_NAME", True) else ""}" +TEMPLATE_FILES = > "postinst.tmpl control.tmpl" +TEMPLATE_VARS += "INITRAMFS_MODULES > INITRAMFS_BUSYBOX INITRAMFS_COMPRESS \ > + INITRAMFS_KEYMAP INITRAMFS_NET_DEVICE > INITRAMFS_NFSROOT \ > + INITRAMFS_RUNSIZE INITRAMFS_ROOT > INITRAMFS_MODULE_LIST CREATE_NEW_INITRAMFS KERNEL_PACKAGE" + > +