From 1181fb8543fcb100d608443e5d2078eef7da2724 Mon Sep 17 00:00:00 2001 From: Lucas Alvares Gomes Date: Thu, 6 Aug 2015 12:43:10 +0100 Subject: [PATCH] Reduce the size of the ironic-agent ramdisk This patch is reducing the size of the ramdisk image generated by the ironic-agent element. It does remove extra packages (graphical stuff, dev stuff, miscs, docs, etc...) and purges directories that are not needed for a ramdisk (like /boot since it boots using an external kernel) Currently it was tested generating a Fedora 22 image and reduced the size of the final image from 464 MB to 211MB compacted (54% decrease). I was able to boot a VM with 1.3 GiB of ram instead of the previous 3 GiB needed. Change-Id: Id6333ca5d99716ccad75ea1964896acf371fa72a --- elements/ironic-agent/README.rst | 3 ++ .../ironic-agent/cleanup.d/99-ramdisk-create | 2 +- .../finalise.d/99-remove-extra-packages | 28 +++++++++++++++++++ 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100755 elements/ironic-agent/finalise.d/99-remove-extra-packages diff --git a/elements/ironic-agent/README.rst b/elements/ironic-agent/README.rst index 6157c749d..51414cd10 100644 --- a/elements/ironic-agent/README.rst +++ b/elements/ironic-agent/README.rst @@ -15,3 +15,6 @@ Beyond installing the ironic-python-agent, this element does the following: * When installing from source, ``python-dev`` and ``gcc`` are also installed in order to support source based installation of ironic-python-agent and its dependencies. + +.. note:: + Using the ramdisk will require at least 1.5GB of ram diff --git a/elements/ironic-agent/cleanup.d/99-ramdisk-create b/elements/ironic-agent/cleanup.d/99-ramdisk-create index 7538ade13..a6d17b742 100755 --- a/elements/ironic-agent/cleanup.d/99-ramdisk-create +++ b/elements/ironic-agent/cleanup.d/99-ramdisk-create @@ -18,7 +18,7 @@ echo "#disabled" > ./tmp/fstab.new sudo mv ./tmp/fstab.new ./etc/fstab sudo ln -s ./sbin/init ./ -sudo find . -path ./sys -prune -o -path ./proc -prune -o -path './tmp/*' -prune -o -print | sudo cpio -o -H newc | gzip > ${IMAGE_PATH}.initramfs +sudo find . -path ./sys -prune -o -path ./proc -prune -o -path './tmp/*' -prune -o -path './boot/*' -prune -o -path './root/*' -prune -o -path './usr/lib/locale/*' -prune -o -path './usr/share/doc/*' -prune -o -path './usr/share/man/*' -prune -o -path './usr/share/info/*' -prune -o -path './usr/share/licenses/*' -prune -o -path './usr/share/misc/*' -prune -o -print | sudo cpio -o -H newc | gzip > ${IMAGE_PATH}.initramfs select_boot_kernel_initrd $TARGET_ROOT sudo cp $BOOTDIR/$KERNEL ${IMAGE_PATH}.vmlinuz diff --git a/elements/ironic-agent/finalise.d/99-remove-extra-packages b/elements/ironic-agent/finalise.d/99-remove-extra-packages new file mode 100755 index 000000000..91ccc14fe --- /dev/null +++ b/elements/ironic-agent/finalise.d/99-remove-extra-packages @@ -0,0 +1,28 @@ +#!/bin/bash + +if [ "${DIB_DEBUG_TRACE:-0}" -gt 0 ]; then + set -x +fi +set -eu +set -o pipefail + +# TODO(lucasagomes): optimize the ramdisk for other OSs +if [ $DISTRO_NAME = 'fedora' ] ; then + + install-packages -e kernel-debug-devel gcc fedora-logos python3 rsync sudo pykickstart grubby make genisoimage tcpdump man-db policycoreutils kbd-misc plymouth cronie + + if [ $DIB_RELEASE -ge 22 ]; then + # Remove yum, >= F22 defaults to dnf + dnf remove yum -y + # Remove package manager cache + dnf clean all + else + # Remove package manager cache + yum clean all + fi + + # Rebuilding the rpm database after removing packages will reduce + # its size + rpm --rebuilddb + +fi