From f8d2fa4312ba7989e30b60e5f287c91a1f4b7450 Mon Sep 17 00:00:00 2001 From: Daniel Molkentin Date: Mon, 3 Apr 2017 15:23:37 +0200 Subject: [PATCH] Make binutils optional when elfutils are available Binutils increase the size of initramfs by 36 MB. We only need "strip", which exists as eu-strip in elfutils, which in turn is < 1 MB in size. Note that the tests (TEST-04-FULL-SYSTEMD/test.sh) still depend on strip from binutils. It could use sstrip in the future. --- dracut.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/dracut.sh b/dracut.sh index d25da8e3..f4794d1d 100755 --- a/dracut.sh +++ b/dracut.sh @@ -1624,7 +1624,11 @@ fi # strip binaries if [[ $do_strip = yes ]] ; then - for p in strip xargs find; do + # Prefer strip from elfutils for package size + declare strip_cmd=$(command -v eu-strip) + test -z "$strip_cmd" && strip_cmd="strip" + + for p in $strip_cmd xargs find; do if ! type -P $p >/dev/null; then dinfo "Could not find '$p'. Not stripping the initramfs." do_strip=no @@ -1636,14 +1640,14 @@ if [[ $do_strip = yes ]] && ! [[ $DRACUT_FIPS_MODE ]]; then dinfo "*** Stripping files ***" find "$initdir" -type f \ -executable -not -path '*/lib/modules/*.ko' -print0 \ - | xargs -r -0 strip -g 2>/dev/null + | xargs -r -0 $strip_cmd -g 2>/dev/null # strip kernel modules, but do not touch signed modules find "$initdir" -type f -path '*/lib/modules/*.ko' -print0 \ | while read -r -d $'\0' f || [ -n "$f" ]; do SIG=$(tail -c 28 "$f" | tr -d '\000') [[ $SIG == '~Module signature appended~' ]] || { printf "%s\000" "$f"; } - done | xargs -r -0 strip -g + done | xargs -r -0 $strip_cmd -g dinfo "*** Stripping files done ***" fi -- 2.12.0