From c45a111ca18cffe5b6752a64e85faa509818ee71 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Elan=20Ruusam=C3=A4e?= Date: Wed, 25 Feb 2015 23:57:37 +0200 Subject: [PATCH] search binaries from multiple initrd dirs --- geninitrd | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/geninitrd b/geninitrd index 3907387..b8ee2a3 100755 --- a/geninitrd +++ b/geninitrd @@ -115,7 +115,7 @@ die() { # find program from specified paths find_tool() { local x p b n - local paths="$initrd_dir /bin /sbin /usr/bin /usr/sbin" + local paths="$initrd_dirs /bin /sbin /usr/bin /usr/sbin" for x in "$@"; do debug "find_tool: checking $x" if [ -x "$x" ]; then @@ -534,7 +534,7 @@ inst_exec() { inst "$@" $dest - local obj lib libs + local obj lib libs libdir for obj in "$@"; do case "$obj" in /lib/ld-linux.so.2 | /lib64/ld-linux-x86-64.so.2 | /libx32/ld-linux-x32.so.2) @@ -1348,13 +1348,21 @@ if [ "$(id -u)" != 0 ]; then die "You need to be root to generate initrd" fi -if [ -d /lib64 -a -d /usr/lib64 ]; then +for dir in libx32 lib64 lib; do + initrd_dir=/usr/$dir/initrd + if [ -d "$initrd_dir" ]; then + initrd_dirs="$initrd_dirs $initrd_dir" + fi +done + +if [ -d /libx32 -a -d /usr/libx32 ]; then + _lib=libx32 +elif [ -d /lib64 -a -d /usr/lib64 ]; then _lib=lib64 else _lib=lib fi -initrd_dir=/usr/$_lib/initrd kernel_version=$(echo "$kernel" | awk -F. '{gsub(/[_-].*/, "", $0); print sprintf("%03d%03d",$1,$2)}') kernel_version_long=$(echo "$kernel" | awk -F. '{gsub(/[_-].*/, "", $0); print sprintf("%03d%03d%03d",$1,$2,$3)}') -- 2.44.0