From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6808879013169201152 X-Received: by 2002:a2e:96c2:: with SMTP id d2mr16603291ljj.439.1593089809827; Thu, 25 Jun 2020 05:56:49 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a05:651c:298:: with SMTP id b24ls1158310ljo.4.gmail; Thu, 25 Jun 2020 05:56:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw75oGky1x9Za5pgeGaDU5Qs9xHSrDfZh8FCQFN2C+yNnq+ykzJCRhWSRCA7fZTS7KGKkk7 X-Received: by 2002:a2e:140a:: with SMTP id u10mr7112564ljd.35.1593089809196; Thu, 25 Jun 2020 05:56:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1593089809; cv=none; d=google.com; s=arc-20160816; b=ntXy5S5K+qUS+/SU55BokjYh/xzgZ+u0BUJBW5Diul0uf2bd3IN8OhpNuPbjwr4DrH bA35po8/oeqe2OMJ8GKf73rzOspBKub2L/FvKpYsDdvjla1adIqMdSzv9p8hGMB674PH LMVnosdjJlTtCWiqAHN0N6blbuKtKXttI3XPrfVejs88CWBMrMKZ9rmheh1rTmrwZCMr 16KF8IHGYcaXCTJqpZrR6srhLw6Fpu28y5AX2SsHL4BLrVjsUWfYFTS6ksYnrS5Tos0l zB6rTBpxVHpgfOovtwZq2WuXMyoWrxqki3IM6ZFsO/QleHXi/S8eGsIs32w6q7q8uk6N 0T1A== 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:date:subject:cc:to:from; bh=RTnTIeBQG1vss4NMGLCvCW1j0Yjr7SDDw8AzmtghTnI=; b=GuLNtbI7dx8Jri5f1+CC4Qo2Zc6tuZudKgC5doO+cOBpvnok68SVnozWz2U7lN+Mfs qnAclU3WLNnBZ6IKYg3Bq3B9GJom7lHZhnK+uQQZEI4gjBibh3vCYbMCRyz7mmcmqxXu 7WkFeXzg5vWQDF9dZMu/WXHHuBtU6f7+rqAidD0+SDyHnPGnBEruYq1b5xmyP2eMYKr2 vFXs/Wc0tBmDxKu8f0TsQwGR2gGjYv3QeLpTCYQlmtA4a5nHRBThRCNLRgO2x7tZjVC/ NeilvW0V+R5WlhGOJazFDalFY/2zaRoKfmcNHEsgqhwA4nbEndO+97nFR3jz6t/+gHNo tC8w== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of quirin.gylstorff@siemens.com designates 192.35.17.2 as permitted sender) smtp.mailfrom=Quirin.Gylstorff@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Return-Path: Received: from thoth.sbs.de (thoth.sbs.de. [192.35.17.2]) by gmr-mx.google.com with ESMTPS id h9si142671ljj.5.2020.06.25.05.56.48 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Thu, 25 Jun 2020 05:56:49 -0700 (PDT) Received-SPF: pass (google.com: domain of quirin.gylstorff@siemens.com designates 192.35.17.2 as permitted sender) client-ip=192.35.17.2; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of quirin.gylstorff@siemens.com designates 192.35.17.2 as permitted sender) smtp.mailfrom=Quirin.Gylstorff@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 thoth.sbs.de (8.15.2/8.15.2) with ESMTPS id 05PCulNj022576 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 25 Jun 2020 14:56:47 +0200 Received: from md2dvrtc.ad001.siemens.net ([167.87.6.122]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id 05PCukbS007145; Thu, 25 Jun 2020 14:56:47 +0200 From: "Q. Gylstorff" To: isar-users@googlegroups.com, hws@denx.de, jan.kiszka@siemens.com Cc: Quirin Gylstorff Subject: [PATCH v6 1/3] meta/support: Generate a custom initramfs Date: Thu, 25 Jun 2020 14:56:44 +0200 Message-Id: <20200625125646.13365-2-Quirin.Gylstorff@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200625125646.13365-1-Quirin.Gylstorff@siemens.com> References: <20200625125646.13365-1-Quirin.Gylstorff@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: ind2VwKrf6Bn 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 --- .../initramfs-config/initramfs-config_0.1.bb | 7 +++ .../initramfs-config/files/control.tmpl | 12 +++++ .../initramfs-config/files/postinst.tmpl | 50 +++++++++++++++++++ .../initramfs-config/files/postrm.tmpl | 41 +++++++++++++++ .../initramfs-config/initramfs-config.inc | 32 ++++++++++++ 5 files changed, 142 insertions(+) create mode 100644 meta-isar/recipes-support/initramfs-config/initramfs-config_0.1.bb 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/files/postrm.tmpl create mode 100644 meta/recipes-support/initramfs-config/initramfs-config.inc diff --git a/meta-isar/recipes-support/initramfs-config/initramfs-config_0.1.bb b/meta-isar/recipes-support/initramfs-config/initramfs-config_0.1.bb new file mode 100644 index 0000000..0eb70d7 --- /dev/null +++ b/meta-isar/recipes-support/initramfs-config/initramfs-config_0.1.bb @@ -0,0 +1,7 @@ +# +# Copyright (C) Siemens ag, 2020 +# +# SPDX-License-Identifier: MIT + +require recipes-support/initramfs-config/initramfs-config.inc + 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..66984eb --- /dev/null +++ b/meta/recipes-support/initramfs-config/files/control.tmpl @@ -0,0 +1,12 @@ +Source: ${PN} +Section: misc +Priority: optional +Standards-Version: 3.9.6 +Maintainer: isar-users +Build-Depends: debhelper (>= 9) + + +Package: ${PN} +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, initramfs-tools-core, ${DEBIAN_DEPENDS} +Description: Configuration files for a custom initramfs 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..e523906 --- /dev/null +++ b/meta/recipes-support/initramfs-config/files/postinst.tmpl @@ -0,0 +1,50 @@ +#!/bin/sh +# postinst script for initramfs-config +# +# see: dh_installdeb(1) + +set -e + +case "$1" in + configure) + 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_NET_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 + + update-initramfs -v -u + + ;; + abort-upgrade|abort-remove|abort-deconfigure) + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. +#DEBHELPER# + +exit 0 diff --git a/meta/recipes-support/initramfs-config/files/postrm.tmpl b/meta/recipes-support/initramfs-config/files/postrm.tmpl new file mode 100644 index 0000000..115d9b6 --- /dev/null +++ b/meta/recipes-support/initramfs-config/files/postrm.tmpl @@ -0,0 +1,41 @@ +#!/bin/sh +# postrm script for initramfs-config +# +# see: dh_installdeb(1) + +set -e + +case "$1" in + purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + # back to the debian defaults + INITRAMFS_CONF=/etc/initramfs-tools/initramfs.conf + sed -i -E 's/(^MODULES=).*/\1most/' ${INITRAMFS_CONF} + sed -i -E 's/(^BUSYBOX=).*/\1auto/' ${INITRAMFS_CONF} + sed -i -E 's/(^COMPRESS=).*/\1gzip/' ${INITRAMFS_CONF} + sed -i -E 's/(^KEYMAP=).*/\1n/' ${INITRAMFS_CONF} + sed -i -E 's/(^DEVICE=).*/\1/' ${INITRAMFS_CONF} + sed -i -E 's/(^NFSROOT=).*/\1auto/' ${INITRAMFS_CONF} + sed -i -E 's/(^RUNSIZE=).*/\110%/' ${INITRAMFS_CONF} + sed -i -E 's/(^ROOT=).*//' ${INITRAMFS_CONF} + + # remove the added modules + MODULES_LIST_FILE=/etc/initramfs-tools/modules + for modname in ${INITRAMFS_MODULE_LIST}; do + sed -i -E 's/$modname//' + done + + update-initramfs -v -u + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/meta/recipes-support/initramfs-config/initramfs-config.inc b/meta/recipes-support/initramfs-config/initramfs-config.inc new file mode 100644 index 0000000..16049a9 --- /dev/null +++ b/meta/recipes-support/initramfs-config/initramfs-config.inc @@ -0,0 +1,32 @@ +# 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" + +FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/files:" + +SRC_URI = "file://postinst.tmpl \ + file://postrm.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 ""}" +DEBIAN_DEPENDS += ", ${KERNEL_PACKAGE}" +TEMPLATE_FILES = "postinst.tmpl control.tmpl postrm.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 DEBIAN_DEPENDS PN" -- 2.20.1