From 02b3b3b97766c46133ea89f8340459ccba12678a Mon Sep 17 00:00:00 2001 From: Julio Montes Date: Thu, 16 May 2019 11:16:29 -0500 Subject: [PATCH] image-builder: remove unneeded systemd units and files Remove systemd units and files that are not needed in Kata Containers. Removing this files we can improve the boot time. fixes #289 Signed-off-by: Julio Montes --- image-builder/Dockerfile | 2 +- image-builder/image_builder.sh | 38 ++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/image-builder/Dockerfile b/image-builder/Dockerfile index 0d1107ee7..457070f65 100644 --- a/image-builder/Dockerfile +++ b/image-builder/Dockerfile @@ -7,4 +7,4 @@ From fedora:latest RUN [ -n "$http_proxy" ] && sed -i '$ a proxy='$http_proxy /etc/dnf/dnf.conf ; true -RUN dnf install -y qemu-img parted gdisk e2fsprogs gcc xfsprogs +RUN dnf install -y qemu-img parted gdisk e2fsprogs gcc xfsprogs findutils diff --git a/image-builder/image_builder.sh b/image-builder/image_builder.sh index 44e15d6b7..fcb0eff14 100755 --- a/image-builder/image_builder.sh +++ b/image-builder/image_builder.sh @@ -34,6 +34,31 @@ readonly dax_header_sz=2 # [2] - https://nvdimm.wiki.kernel.org/2mib_fs_dax readonly dax_alignment=2 +# The list of systemd units and files that are not needed in Kata Containers +readonly -a systemd_units=( + "systemd-coredump@" + "systemd-journald" + "systemd-journald-dev-log" + "systemd-journal-flush" + "systemd-random-seed" + "systemd-timesyncd" + "systemd-tmpfiles-setup" + "systemd-udevd" + "systemd-udevd-control" + "systemd-udevd-kernel" + "systemd-udev-trigger" + "systemd-update-utmp" +) + +readonly -a systemd_files=( + "systemd-bless-boot-generator" + "systemd-fstab-generator" + "systemd-getty-generator" + "systemd-gpt-auto-generator" + "systemd-tmpfiles-cleanup.timer" + "tmp.mount" +) + # Set a default value AGENT_INIT=${AGENT_INIT:-no} @@ -344,6 +369,19 @@ create_rootfs_image() { sync OK "rootfs copied" + info "Removing unneeded systemd services and sockets" + for u in "${systemd_units[@]}"; do + find "${mount_dir}" -type f \( \ + -name "${u}.service" -o \ + -name "${u}.socket" \) \ + -exec rm -f {} \; + done + + info "Removing unneeded systemd files" + for u in "${systemd_files[@]}"; do + find "${mount_dir}" -type f -name "${u}" -exec rm -f {} \; + done + info "Unmounting root partition" umount "${mount_dir}" OK "Root partition unmounted"