From mboxrd@z Thu Jan 1 00:00:00 1970 X-GM-THRID: 6696398247980695552 X-Received: by 2002:a2e:81d9:: with SMTP id s25mr28761353ljg.139.1559129312103; Wed, 29 May 2019 04:28:32 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com Received: by 2002:a2e:417:: with SMTP id 23ls235661lje.10.gmail; Wed, 29 May 2019 04:28:31 -0700 (PDT) X-Google-Smtp-Source: APXvYqw7sjFd9WC7dhHp9gD3/cZyq6opZkw5/yLxn8+1oeGAOK7vo7KP7Eo4SanjtW0b1T96fRPI X-Received: by 2002:a2e:908d:: with SMTP id l13mr1799794ljg.125.1559129311617; Wed, 29 May 2019 04:28:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559129311; cv=none; d=google.com; s=arc-20160816; b=0x3jU5wp917rkvoZW/DXUFoyAheWDSYwCjjSTlijYMnxH6j2JROVzw+/5XDHe0KuQ4 scOw+SDd9jCXjEw2tLZ5ZXGm/wRBaeOavuBYLEsQmR1CdHVzYgHOFYpDHNbGA5A3bKrB TfjyPjPxbwWJFBiDJGhosfkMpq2jtsxeGyN2iqRxnLjiqsZDCkGwTpgPmiCsSdJ1MC5D S69zz4KdFDNInVYokX0BhOr9zIE88I1KrYsFH3TQpvqJu+53rvjz/IWQm6/qQY/7LPiN go/L3e2ZtteYKLLRd96P2MMZLhrP6Fj3V3p7LlVaFg3cwIe8i0/dNrxIE2cqp0mSxNrg Qz2w== 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=RO/+B1//eeUpRdGFaTSbEHSJq5HDx+aeScKR4kPdJ2M=; b=MFFwL8GZddsuj89O0NpgMip2NgAj5hzaLVWFvfrQKafjwLLXNxAfasFP6NxEu9cd6p kdsIT9m7WMiGzP5FMIBynXEgcJE7MURp1+4nT5BJF0v2wpvKdFpE25HsH3sWAVYtcDRS Ld3OOcTAhcNk9CtwhnJOsHJ3peME/cYLv4ifU7MCZf9qXXXbzJiL2dAGN2kEsf0RkU5k IosW5fqIanEF6NkxtfGwIxrM31UpSPNMpRRwkX5PstxPjF1t2iTy30VluQSvQSiJ4R2Y sIJijC5W9V3Inkg3yZDh/O3+n9Ero1/9IY3R7h9WzdwHOWVfUFDTQvYI8xBhPgILhMrM T2Dg== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of henning.schild@siemens.com designates 192.35.17.2 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 thoth.sbs.de (thoth.sbs.de. [192.35.17.2]) by gmr-mx.google.com with ESMTPS id i12si674818lfo.5.2019.05.29.04.28.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 May 2019 04:28:31 -0700 (PDT) Received-SPF: pass (google.com: domain of henning.schild@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 henning.schild@siemens.com designates 192.35.17.2 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 thoth.sbs.de (8.15.2/8.15.2) with ESMTPS id x4TBST50021180 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 29 May 2019 13:28:30 +0200 Received: from md1za8fc.ad001.siemens.net ([139.25.69.101]) by mail2.sbs.de (8.15.2/8.15.2) with ESMTP id x4TBSTPD013777; Wed, 29 May 2019 13:28:29 +0200 Date: Wed, 29 May 2019 13:28:29 +0200 From: Henning Schild To: "[ext] claudius.heine.ext@siemens.com" Cc: , Claudius Heine Subject: Re: [RFC PATCH 1/1] add minimization image extension Message-ID: <20190529132829.4300ffdd@md1za8fc.ad001.siemens.net> In-Reply-To: <20190529132215.09f61932@md1za8fc.ad001.siemens.net> References: <20190529104506.10508-1-claudius.heine.ext@siemens.com> <20190529104506.10508-2-claudius.heine.ext@siemens.com> <20190529132215.09f61932@md1za8fc.ad001.siemens.net> X-Mailer: Claws Mail 3.17.3 (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: x1QTP0mTFk3M Am Wed, 29 May 2019 13:22:15 +0200 schrieb "[ext] Henning Schild" : > Hey, > > looks good! I once had something similar but much less flexible in a > transient packages somehwere, uninstalling apt and removing a ton of > files. > > I did use "ncdu" to identify files to look at. And there is > https://wiki.debian.org/ReduceDebian with some more ideas. > > I guess one additional harsh but effective step could be deleting > kernel modules and rebuilding depmod. And if an initrd is used, > rebuild that as well. This one probably is not even worth the effort, because such restricted devices are rare and will die out soon (fingers crossed). And they will likely get a custom kernel anyways. But i would suggest the demo image to use a custom minimal kernel. So we can just "du -sh" that rootfs when someone asks how small you can get. Henning > Henning > > Am Wed, 29 May 2019 12:45:06 +0200 > schrieb "[ext] claudius.heine.ext@siemens.com" > : > > > From: Claudius Heine > > > > In case storage space on the device is limited, it is necessary to > > remove all packages and files that are not strictly needed for the > > device to perform its function. > > > > This minimization feature allows to remove packages and files after > > the creation of the image and possible break the package management. > > > > Signed-off-by: Claudius Heine > > --- > > .../recipes-core/images/isar-image-ubi.bb | 2 + > > .../image-minimizing-extension.bbclass | 80 > > +++++++++++++++++++ meta/classes/image.bbclass | > > 1 + meta/classes/rootfs.bbclass | 3 +- > > 4 files changed, 85 insertions(+), 1 deletion(-) > > create mode 100644 meta/classes/image-minimizing-extension.bbclass > > > > diff --git a/meta-isar/recipes-core/images/isar-image-ubi.bb > > b/meta-isar/recipes-core/images/isar-image-ubi.bb index > > 3b41f23..2971edf 100644 --- > > a/meta-isar/recipes-core/images/isar-image-ubi.bb +++ > > b/meta-isar/recipes-core/images/isar-image-ubi.bb @@ -24,3 +24,5 @@ > > DTB_IMG = "${PP_DEPLOY}/${DTB_FILE}" > > UBIFS_IMG = "${PP_DEPLOY}/${UBIFS_IMAGE_FILE}" > > FIT_IMG = "${PP_DEPLOY}/${FIT_IMAGE_FILE}" > > + > > +IMAGE_MINIMIZATION_FEATURES += "remove-bug remove-bash-completion > > remove-manpages remove-info remove-lintian remove-locale remove-apt > > remove-dpkg remove-doc remove-licenses" diff --git > > a/meta/classes/image-minimizing-extension.bbclass > > b/meta/classes/image-minimizing-extension.bbclass new file mode > > 100644 index 0000000..f26f545 --- /dev/null +++ > > b/meta/classes/image-minimizing-extension.bbclass @@ -0,0 +1,80 @@ > > +# This software is a part of ISAR. > > +# Copyright (C) Siemens AG, 2019 > > +# > > +# SPDX-License-Identifier: MIT > > +# > > +# This class extends the image.bbclass for minimizing the root file > > system + > > +# Features: > > +# remove-bug > > +# remove-bash-completion > > +# remove-manpages > > +# remove-info > > +# remove-lintian > > +# remove-locale > > +# remove-apt > > +# remove-dpkg > > +# remove-doc > > +# remove-licenses > > +IMAGE_MINIMIZATION_FEATURES ?= "" > > + > > +IMAGE_MINIMIZATION_PACKAGES ?= "" > > +IMAGE_MINIMIZATION_FILES ?= "" > > + > > +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', 'remove-bug', > > '/usr/share/bug', '', d)}" +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', > > 'remove-bash-completion', '/usr/share/bash-completion', '', d)}" > > +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', > > 'remove-manpages', '/usr/share/man /usr/share/man-db', '', d)}" > > +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', 'remove-info', > > '/usr/share/info', '', d)}" +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', > > 'remove-lintian', '/usr/share/lintian', '', d)}" > > +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', > > 'remove-locale', '/usr/share/locale', '', d)}" > > +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', 'remove-apt', > > '/var/cache/apt /var/lib/apt /etc/apt', '', d)}" > > +IMAGE_MINIMIZATION_PACKAGES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', 'remove-apt', > > d.getVar('IMAGE_MINIMIZATION_PACKAGES_APT'), '', d)}" > > +IMAGE_MINIMIZATION_PACKAGES_APT = 'apt libapt-pkg5.0 > > debian-archive-keyring' +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', 'remove-dpkg', > > '/var/lib/dpkg /etc/dpkg /etc/dpkg-cross', '', d)}" > > +IMAGE_MINIMIZATION_PACKAGES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', 'remove-dpkg', > > 'dpkg', '', d)}" +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', 'remove-doc', > > '/usr/share/doc-base', '', d)}" +IMAGE_MINIMIZATION_FILES += > > "${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', > > 'remove-licenses', '/usr/share/common-licenses', '', d)}" + > > +ROOTFS_INSTALL_COMMAND += "image_install_minimization" > > +image_install_minimization[weight] = "5" > > +image_install_minimization() { > > + sudo rm -rf '${WORKDIR}/dpkg-admin' > > + sudo cp -a '${ROOTFSDIR}/var/lib/dpkg' '${WORKDIR}/dpkg-admin' > > +} > > + > > +ROOTFS_POSTPROCESS_COMMAND += "image_postprocess_minimization" > > + > > +image_postprocess_minimization() { > > + image_do_mounts > > + > > + sudo mkdir -p '${BUILDROOT_ROOTFS}/dpkg-admin' > > + mountpoint -q '${BUILDROOT_ROOTFS}/dpkg-admin' || \ > > + sudo mount --bind '${WORKDIR}/dpkg-admin' > > '${BUILDROOT_ROOTFS}/dpkg-admin' + > > + for package in ${IMAGE_MINIMIZATION_PACKAGES}; do > > + sudo chroot ${BUILDCHROOT_DIR} /usr/bin/dpkg \ > > + --root='${PP_ROOTFS}' \ > > + --admindir='${PP_ROOTFS}/dpkg-admin' \ > > + --force-remove-essential --force-depends -P > > $package > > + done > > + > > + mountpoint -q '${BUILDROOT_ROOTFS}/dpkg-admin' && > > + sudo umount -l '${BUILDROOT_ROOTFS}/dpkg-admin' > > + sudo rmdir '${BUILDROOT_ROOTFS}/dpkg-admin' > > + > > + for file in ${IMAGE_MINIMIZATION_FILES}; do > > + sudo rm -rf '${IMAGE_ROOTFS}/'"$file" > > + done > > + > > + if [ -n '${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', > > 'remove-doc', '1', '', d)}' ]; then > > + sudo find '${IMAGE_ROOTFS}/usr/share/doc' -type f \ > > + \! -regex > > '${IMAGE_ROOTFS}/usr/share/doc/[^/]+/\(copyright\|CREDITS\|AUTHORS\).*' > > \ > > + -delete > > + fi > > + > > + if [ -n '${@bb.utils.contains('IMAGE_MINIMIZATION_FEATURES', > > 'remove-licenses', '1', '', d)}' ]; then > > + sudo find '${IMAGE_ROOTFS}/usr/share/doc' -type f \ > > + -regex > > '${IMAGE_ROOTFS}/usr/share/doc/[^/]+/\(copyright\|CREDITS\|AUTHORS\).*' > > \ > > + -delete > > + fi > > +} > > diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass > > index 5682134..681cdc4 100644 > > --- a/meta/classes/image.bbclass > > +++ b/meta/classes/image.bbclass > > @@ -67,6 +67,7 @@ inherit image-tools-extension > > inherit image-postproc-extension > > inherit image-locales-extension > > inherit image-account-extension > > +inherit image-minimizing-extension > > > > # Extra space for rootfs in MB > > ROOTFS_EXTRA ?= "64" > > diff --git a/meta/classes/rootfs.bbclass > > b/meta/classes/rootfs.bbclass index c7e0435..59a431e 100644 > > --- a/meta/classes/rootfs.bbclass > > +++ b/meta/classes/rootfs.bbclass > > @@ -205,7 +205,8 @@ rootfs_postprocess_finalize() { > > rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/isar-apt.list" > > rm -f "${ROOTFSDIR}/etc/apt/sources.list.d/base-apt.list" > > > > - mv "${ROOTFSDIR}/etc/apt/sources-list" \ > > + test -e "${ROOTFSDIR}/etc/apt/sources-list" && \ > > + mv "${ROOTFSDIR}/etc/apt/sources-list" \ > > "${ROOTFSDIR}/etc/apt/sources.list.d/bootstrap.list" > > > > rm -f "${ROOTFSDIR}/etc/apt/sources-list" >