From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6808879013169201152 X-Received: by 2002:a5d:51c7:: with SMTP id n7mr6749303wrv.11.1585925712058; Fri, 03 Apr 2020 07:55:12 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a5d:61c8:: with SMTP id q8ls1009644wrv.10.gmail; Fri, 03 Apr 2020 07:55:11 -0700 (PDT) X-Google-Smtp-Source: APiQypIIrtbKJ5hLZfZQfjvtZEav9pSldonzwN4MSs7uO3ISt4ghkc/JUZPOs39gW7VwhD0q7OjP X-Received: by 2002:adf:bc12:: with SMTP id s18mr9998220wrg.220.1585925711541; Fri, 03 Apr 2020 07:55:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585925711; cv=none; d=google.com; s=arc-20160816; b=cva61ecy09pDO2PWwDOJ+280TNv9sRmt1+oNsH8e1w7bNctmml3vY3n4g7BZ1sI5B9 v9Cz0McDzrJ2B6CG7VGkLkbXE5b6Zqs6Wyq2a8wM0rUSe2kaMuETVOsWzVWR5/cbcjnR FyF28u9wK3ejEv2NOqPk9/ZRMGklV3GsQr/aKiQh8rWEjILNykF44hWZQzD4/sGol7Ob V5I/sv7/m2vWmtRyzYmRAhWRA0uDhuSrzZhS6iLHGq8Az8pN+thw9CVTt5IGOeQNE+nq nBHykiTVkZTCDm8eIBcuNVB07uExVira+KJUXN/YwSuWBZiz6w+61ks6jYdPRhG2Hs7/ 8IhA== 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=agRLbufxwOGq6Dr/mkky8QS+J20FS4H3dnf9WwCQ4xs=; b=AFLya48BFYgEjcbH+Vb1ppCBG9wyxUezjtQEh9WKZLRRB0TqcmF0p095CUMVEjkVxQ 64y6igcBIRtw2x2rsgOmRMzUmbUIqILkV3xTJfGOrnmOe6VhtN/adj7wx0wTrIoZqvnV PB1BFAK0AUd+rGUJMdkuaQnPZOAp46UAwNbUZnfjbEgN5PApbQj1BsctkH5eW7W8bvQa aGkEQ0fzc0fPINH/EIonr9jjhJixyYVPHX/0BaW+25o2IPLruKpBeVacPLsUWhwg2XhJ MJfjhJB/FKYx8RP8Yw5jd90w+EnF1A4IBXExx7v0RIbZuNtT65kezRT76EjS6paCQrWC +x6w== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of quirin.gylstorff@siemens.com designates 194.138.37.39 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 lizzard.sbs.de (lizzard.sbs.de. [194.138.37.39]) by gmr-mx.google.com with ESMTPS id z84si469172wmc.2.2020.04.03.07.55.11 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Apr 2020 07:55:11 -0700 (PDT) Received-SPF: pass (google.com: domain of quirin.gylstorff@siemens.com designates 194.138.37.39 as permitted sender) client-ip=194.138.37.39; Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of quirin.gylstorff@siemens.com designates 194.138.37.39 as permitted sender) smtp.mailfrom=Quirin.Gylstorff@siemens.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=siemens.com Received: from mail1.sbs.de (mail1.sbs.de [192.129.41.35]) by lizzard.sbs.de (8.15.2/8.15.2) with ESMTPS id 033EtBv8028510 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Fri, 3 Apr 2020 16:55:11 +0200 Received: from md2dvrtc.ad001.siemens.net ([139.22.40.121]) by mail1.sbs.de (8.15.2/8.15.2) with ESMTP id 033EtAXd028553; Fri, 3 Apr 2020 16:55:11 +0200 From: "Q. Gylstorff" To: isar-users@googlegroups.com, henning.schild@siemens.com Cc: Quirin Gylstorff Subject: [PATCH v2 1/3] meta/support: Generate a custom initramfs Date: Fri, 3 Apr 2020 16:55:08 +0200 Message-Id: <20200403145510.28120-2-Quirin.Gylstorff@siemens.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200403145510.28120-1-Quirin.Gylstorff@siemens.com> References: <20200327132801.19835-1-Quirin.Gylstorff@siemens.com> <20200403145510.28120-1-Quirin.Gylstorff@siemens.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUID: IRXhCrNKZ6GA 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 +Section: misc +Priority: optional +Standards-Version: 3.9.6 +Maintainer: Unknown maintainer +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 + +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" + + -- 2.20.1