From a49d0fb343798eda1264803adad75b19659a2aba Mon Sep 17 00:00:00 2001 From: Dan Mihai Date: Mon, 13 Jan 2025 16:52:38 +0000 Subject: [PATCH 1/3] rootfs: delete systemd units/files from rootfs.sh Move the deletion of unnecessary systemd units and files from image_builder.sh into rootfs.sh. The files being deleted can be applicable to other image file formats too, not just to the rootfs-image format created by image_builder.sh. Also, image_builder.sh was deleting these files *after* it calculated the size of the rootfs files, thus missing out on the opportunity to possibly create a smaller image file. Signed-off-by: Dan Mihai --- .../osbuilder/image-builder/image_builder.sh | 39 ---------------- tools/osbuilder/rootfs-builder/rootfs.sh | 44 +++++++++++++++++++ 2 files changed, 44 insertions(+), 39 deletions(-) diff --git a/tools/osbuilder/image-builder/image_builder.sh b/tools/osbuilder/image-builder/image_builder.sh index 88b81f2102..c0176d0c87 100755 --- a/tools/osbuilder/image-builder/image_builder.sh +++ b/tools/osbuilder/image-builder/image_builder.sh @@ -49,30 +49,6 @@ 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" -) - # Set a default value AGENT_INIT=${AGENT_INIT:-no} SELINUX=${SELINUX:-no} @@ -455,21 +431,6 @@ setup_selinux() { } setup_systemd() { - local mount_dir="$1" - - 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 "Creating empty machine-id to allow systemd to bind-mount it" touch "${mount_dir}/etc/machine-id" } diff --git a/tools/osbuilder/rootfs-builder/rootfs.sh b/tools/osbuilder/rootfs-builder/rootfs.sh index 337dbafaf2..e1aac6de05 100755 --- a/tools/osbuilder/rootfs-builder/rootfs.sh +++ b/tools/osbuilder/rootfs-builder/rootfs.sh @@ -66,6 +66,29 @@ if [ "${CROSS_BUILD}" == "true" ]; then fi fi +# 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" +) handle_error() { local exit_code="${?}" @@ -768,6 +791,8 @@ EOF info "Create /etc/resolv.conf file in rootfs if not exist" touch "$dns_file" + delete_unnecessary_files + info "Creating summary file" create_summary_file "${ROOTFS_DIR}" } @@ -807,6 +832,25 @@ detect_host_distro() esac } +delete_unnecessary_files() +{ + info "Removing unneeded systemd services and sockets" + for u in "${systemd_units[@]}"; do + find "${ROOTFS_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 "${ROOTFS_DIR}" \ + -type f \ + -name "${u}" \ + -exec rm -f {} \; + done +} + main() { parse_arguments $* From 5b8471ffce7517a0e2b8761475b95762206f1de0 Mon Sep 17 00:00:00 2001 From: Dan Mihai Date: Mon, 13 Jan 2025 19:03:05 +0000 Subject: [PATCH 2/3] rootfs: print the path to files being deleted Show the list of files being deleted. Signed-off-by: Dan Mihai --- tools/osbuilder/rootfs-builder/rootfs.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/osbuilder/rootfs-builder/rootfs.sh b/tools/osbuilder/rootfs-builder/rootfs.sh index e1aac6de05..4f79a3fba1 100755 --- a/tools/osbuilder/rootfs-builder/rootfs.sh +++ b/tools/osbuilder/rootfs-builder/rootfs.sh @@ -839,6 +839,7 @@ delete_unnecessary_files() find "${ROOTFS_DIR}" \ -type f \ \( -name "${u}.service" -o -name "${u}.socket" \) \ + -exec echo "deleting {}" \; \ -exec rm -f {} \; done @@ -847,6 +848,7 @@ delete_unnecessary_files() find "${ROOTFS_DIR}" \ -type f \ -name "${u}" \ + -exec echo "deleting {}" \; \ -exec rm -f {} \; done } From c4da2963264ece6afe47ee69d9017992afe2d160 Mon Sep 17 00:00:00 2001 From: Dan Mihai Date: Mon, 13 Jan 2025 21:07:53 +0000 Subject: [PATCH 3/3] rootfs: delete links to deleted files Delete symbolic links to files being deleted. Signed-off-by: Dan Mihai --- tools/osbuilder/rootfs-builder/rootfs.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/osbuilder/rootfs-builder/rootfs.sh b/tools/osbuilder/rootfs-builder/rootfs.sh index 4f79a3fba1..e377e25f7e 100755 --- a/tools/osbuilder/rootfs-builder/rootfs.sh +++ b/tools/osbuilder/rootfs-builder/rootfs.sh @@ -837,7 +837,7 @@ delete_unnecessary_files() info "Removing unneeded systemd services and sockets" for u in "${systemd_units[@]}"; do find "${ROOTFS_DIR}" \ - -type f \ + \( -type f -o -type l \) \ \( -name "${u}.service" -o -name "${u}.socket" \) \ -exec echo "deleting {}" \; \ -exec rm -f {} \; @@ -846,7 +846,7 @@ delete_unnecessary_files() info "Removing unneeded systemd files" for u in "${systemd_files[@]}"; do find "${ROOTFS_DIR}" \ - -type f \ + \( -type f -o -type l \) \ -name "${u}" \ -exec echo "deleting {}" \; \ -exec rm -f {} \;