[PATCH 0/4] Several micro-optimizations

6 views
Skip to first unread message

Jan Kiszka

unread,
Sep 15, 2025, 6:07:18 AM (12 days ago) Sep 15
to isar-users, Felix Moessbauer
See patches for details.

Jan

Jan Kiszka (4):
rootfs: Implement update-initramfs stubs via symlink
sbuild-chroot: Skip initramfs generation while installing build
dependencies
rootfs: Avoid unneeded commands inside chroot
image-locales-extension: Optimize package removal

meta/classes/image-locales-extension.bbclass | 3 +-
meta/classes/rootfs.bbclass | 33 +++++++++++++------
.../sbuild-chroot/sbuild-chroot.inc | 2 ++
3 files changed, 26 insertions(+), 12 deletions(-)

--
2.51.0

Jan Kiszka

unread,
Sep 15, 2025, 6:07:18 AM (12 days ago) Sep 15
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

"apt-get autopurge" was already available in buster. Using it saves one
startup of apt with database processing etc., which is slow in case of
cross-installation.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/classes/image-locales-extension.bbclass | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/meta/classes/image-locales-extension.bbclass b/meta/classes/image-locales-extension.bbclass
index 9149d643..b6b07dba 100644
--- a/meta/classes/image-locales-extension.bbclass
+++ b/meta/classes/image-locales-extension.bbclass
@@ -105,8 +105,7 @@ EOSH
if [ "$localepurge_state" = 'p' ]
then
echo removing localepurge...
- chroot '${ROOTFSDIR}' apt-get purge --yes localepurge
- chroot '${ROOTFSDIR}' apt-get autoremove --purge --yes
+ chroot '${ROOTFSDIR}' apt-get autopurge --yes localepurge
fi
EOSUDO
}
--
2.51.0

Jan Kiszka

unread,
Sep 15, 2025, 6:07:18 AM (12 days ago) Sep 15
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

Avoid needless copying of any files. Consolidate the sudo calls into one
at this chance.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/classes/rootfs.bbclass | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 7b7859b9..d91fecb0 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -182,8 +182,12 @@ ROOTFS_CONFIGURE_COMMAND += "rootfs_disable_initrd_generation"
rootfs_disable_initrd_generation[weight] = "1"
rootfs_disable_initrd_generation() {
# fully disable initrd generation
- sudo mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
- sudo cp -a ${ROOTFSDIR}/usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update-initramfs
+ sudo -s <<'EOSUDO'
+ set -e
+
+ mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
+ ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update-initramfs
+EOSUDO
}

ROOTFS_INSTALL_COMMAND += "rootfs_install_pkgs_update"
--
2.51.0

MOESSBAUER, Felix

unread,
Sep 15, 2025, 6:33:05 AM (12 days ago) Sep 15
to isar-...@googlegroups.com, Kiszka, Jan
On Mon, 2025-09-15 at 12:07 +0200, Jan Kiszka wrote:
> From: Jan Kiszka <jan.k...@siemens.com>
>
> Avoid needless copying of any files. Consolidate the sudo calls into one
> at this chance.

Thanks!

Acked-by: Felix Moessbauer <felix.mo...@siemens.com>

>
> Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
> ---
> meta/classes/rootfs.bbclass | 8 ++++++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
> index 7b7859b9..d91fecb0 100644
> --- a/meta/classes/rootfs.bbclass
> +++ b/meta/classes/rootfs.bbclass
> @@ -182,8 +182,12 @@ ROOTFS_CONFIGURE_COMMAND += "rootfs_disable_initrd_generation"
> rootfs_disable_initrd_generation[weight] = "1"
> rootfs_disable_initrd_generation() {
> # fully disable initrd generation
> - sudo mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
> - sudo cp -a ${ROOTFSDIR}/usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update-initramfs
> + sudo -s <<'EOSUDO'
> + set -e
> +
> + mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
> + ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update-initramfs
> +EOSUDO
> }
>
> ROOTFS_INSTALL_COMMAND += "rootfs_install_pkgs_update"
> --
> 2.51.0

--
Siemens AG
Linux Expert Center
Friedrich-Ludwig-Bauer-Str. 3
85748 Garching, Germany

Jan Kiszka

unread,
Sep 16, 2025, 7:05:21 AM (11 days ago) Sep 16
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

We have no need for an initramfs while building packages. Therefore,
keep the update-initramfs stub inside the sbuild-chroots so that they
are working also while build dependencies are installed.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
Acked-by: Felix Moessbauer <felix.mo...@siemens.com>
---
meta/classes/rootfs.bbclass | 14 ++++++++++----
.../sbuild-chroot/sbuild-chroot.inc | 2 ++
2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 956a6089..605d5e01 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -187,6 +187,10 @@ rootfs_disable_initrd_generation() {

mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
ln -s /usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update-initramfs
+
+ mkdir -p '${ROOTFSDIR}/etc/apt/apt.conf.d'
+ echo 'DPkg::Path ${ROOTFS_STUBS_DIR}:/usr/sbin:/usr/bin:/sbin:/bin;' \
+ > '${ROOTFSDIR}/etc/apt/apt.conf.d/50isar-stubs'
EOSUDO
}

@@ -251,15 +255,17 @@ rootfs_install_pkgs_install[progress] = "custom:rootfs_progress.PkgsInstallProgr
rootfs_install_pkgs_install[network] = "${TASK_USE_SUDO}"
rootfs_install_pkgs_install() {
sudo -E chroot "${ROOTFSDIR}" \
- /usr/bin/apt-get ${ROOTFS_APT_ARGS} \
- -o DPkg::Path='${ROOTFS_STUBS_DIR}:/usr/sbin:/usr/bin:/sbin:/bin' \
- ${ROOTFS_PACKAGES}
+ /usr/bin/apt-get ${ROOTFS_APT_ARGS} ${ROOTFS_PACKAGES}
}

ROOTFS_INSTALL_COMMAND += "rootfs_restore_initrd_tooling"
rootfs_restore_initrd_tooling[weight] = "1"
rootfs_restore_initrd_tooling() {
- sudo rm -rf "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
+ sudo -s <<'EOSUDO'
+ set -e
+ rm -f "${ROOTFSDIR}/etc/apt/apt.conf.d/50isar-stubs"
+ rm -rf "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
+EOSUDO
}

ROOTFS_INSTALL_COMMAND += "${@bb.utils.contains('ROOTFS_FEATURES', 'no-generate-initrd', 'rootfs_clear_initrd_symlinks', '', d)}"
diff --git a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
index 98e427e5..479aa91d 100644
--- a/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
+++ b/meta/recipes-devtools/sbuild-chroot/sbuild-chroot.inc
@@ -57,6 +57,8 @@ ROOTFSDIR = "${SBUILD_CHROOT_DIR}"
ROOTFS_PACKAGES = "${SBUILD_CHROOT_PREINSTALL}"
ROOTFS_FEATURES += "no-generate-initrd"

+ROOTFS_INSTALL_COMMAND:remove = "rootfs_restore_initrd_tooling"
+
ROOTFS_POSTPROCESS_COMMAND:remove = "rootfs_cleanup_isar_apt"

# Do not cleanup base-apt
--
2.51.0

Jan Kiszka

unread,
Sep 16, 2025, 7:05:21 AM (11 days ago) Sep 16
to isar-users, Felix Moessbauer
Changes in v2:
- rebased over next
- pulled everything but update-initrams out of chroot (patch 3)

Jan

Jan Kiszka (4):
rootfs: Implement update-initramfs stubs via symlink
sbuild-chroot: Skip initramfs generation while installing build
dependencies
rootfs: Avoid unneeded commands inside chroot
image-locales-extension: Optimize package removal

meta/classes/image-locales-extension.bbclass | 3 +-
meta/classes/rootfs.bbclass | 45 ++++++++++++-------
.../sbuild-chroot/sbuild-chroot.inc | 2 +
3 files changed, 32 insertions(+), 18 deletions(-)

--
2.51.0

Jan Kiszka

unread,
Sep 16, 2025, 7:05:22 AM (11 days ago) Sep 16
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

Avoid needless copying of any files. Consolidate the sudo calls into one
at this chance.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
Acked-by: Felix Moessbauer <felix.mo...@siemens.com>
---
meta/classes/rootfs.bbclass | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index ebe3bf4a..956a6089 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -182,8 +182,12 @@ ROOTFS_CONFIGURE_COMMAND += "rootfs_disable_initrd_generation"
rootfs_disable_initrd_generation[weight] = "1"
rootfs_disable_initrd_generation() {
# fully disable initrd generation
- sudo mkdir -p "${ROOTFSDIR}${ROOTFS_STUBS_DIR}"
- sudo cp -a ${ROOTFSDIR}/usr/bin/true ${ROOTFSDIR}${ROOTFS_STUBS_DIR}/update-initramfs
+ sudo -s <<'EOSUDO'
+ set -e
+

Jan Kiszka

unread,
Sep 16, 2025, 7:05:23 AM (11 days ago) Sep 16
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

As the chroot implies emulation in case of cross-installation, any call
into it that can be avoided saves a few seconds.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
meta/classes/rootfs.bbclass | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/meta/classes/rootfs.bbclass b/meta/classes/rootfs.bbclass
index 605d5e01..5c48d91c 100644
--- a/meta/classes/rootfs.bbclass
+++ b/meta/classes/rootfs.bbclass
@@ -245,8 +245,11 @@ rootfs_export_package_cache() {
ROOTFS_INSTALL_COMMAND += "${@ 'rootfs_install_clean_files' if (d.getVar('ROOTFS_CLEAN_FILES') or '').strip() else ''}"
rootfs_install_clean_files[weight] = "2"
rootfs_install_clean_files() {
- sudo -E chroot '${ROOTFSDIR}' \
- /bin/rm -f ${ROOTFS_CLEAN_FILES}
+ sudo -s <<'EOSUDO'
+ for clean_file in ${ROOTFS_CLEAN_FILES}; do
+ rm -f "${ROOTFSDIR}/$clean_file"
+ done
+EOSUDO
}

ROOTFS_INSTALL_COMMAND += "rootfs_install_pkgs_install"
@@ -490,14 +493,14 @@ python do_generate_initramfs_setscene () {
rootfs_generate_initramfs[progress] = "custom:rootfs_progress.InitrdProgressHandler"
rootfs_generate_initramfs() {
if [ -n "$(sudo find '${ROOTFSDIR}/boot' -type f -name 'vmlinu[xz]*')" ]; then
- sudo -E chroot "${ROOTFSDIR}" sh -c '\
- for kernel in /boot/vmlinu[xz]-*; do \
- export kernel_version=$(basename $kernel | cut -d'-' -f2-); \
- mods_total="$(find /usr/lib/modules/$kernel_version -type f -name '*.ko*' | wc -l)"; \
- echo "Total number of modules: $mods_total"; \
- echo "Generating initrd for kernel version: $kernel_version"; \
- update-initramfs -u -v -k "$kernel_version"; \
- done;'
+ for kernel in ${ROOTFSDIR}/boot/vmlinu[xz]-*; do
+ export kernel_version=$(basename $kernel | cut -d'-' -f2-)
+ mods_total="$(find ${ROOTFSDIR}/usr/lib/modules/$kernel_version -type f -name '*.ko*' | wc -l)"
+ echo "Total number of modules: $mods_total"
+ echo "Generating initrd for kernel version: $kernel_version"
+ sudo -E chroot "${ROOTFSDIR}" sh -c ' \
+ update-initramfs -u -v -k "$kernel_version"'
+ done
if [ -n "${INITRD_DEPLOY_FILE}" ]; then
if [ -f "${ROOTFSDIR}/initrd.img" ]; then
# debian (mkinitramfs)
--
2.51.0

Jan Kiszka

unread,
Sep 16, 2025, 7:05:24 AM (11 days ago) Sep 16
to isar-users, Felix Moessbauer
From: Jan Kiszka <jan.k...@siemens.com>

"apt-get autopurge" was already available in buster. Using it saves one
startup of apt with database processing etc., which is slow in case of
cross-installation.

Signed-off-by: Jan Kiszka <jan.k...@siemens.com>
---
Reply all
Reply to author
Forward
0 new messages