a56a5e
From 96f48da50cdc049c635cca8466b38084a3de0f48 Mon Sep 17 00:00:00 2001
90b079
From: Harald Hoyer <harald@redhat.com>
90b079
Date: Tue, 17 Sep 2013 12:23:20 -0500
90b079
Subject: [PATCH] Add option to turn on/off prelinking
90b079
90b079
--prelink, --noprelink
90b079
90b079
do_prelink=[yes|no]
90b079
---
90b079
 dracut.8.asc      |  6 ++++++
90b079
 dracut.conf.5.asc |  3 +++
90b079
 dracut.sh         | 34 ++++++++++++++++++++++------------
90b079
 3 files changed, 31 insertions(+), 12 deletions(-)
90b079
90b079
diff --git a/dracut.8.asc b/dracut.8.asc
1755ca
index ee9d8de2..76fc75c4 100644
90b079
--- a/dracut.8.asc
90b079
+++ b/dracut.8.asc
90b079
@@ -269,6 +269,12 @@ example:
90b079
 **--nostrip**::
90b079
     do not strip binaries in the initramfs
90b079
 
90b079
+**--prelink**::
90b079
+    prelink binaries in the initramfs (default)
90b079
+
90b079
+**--noprelink**::
90b079
+    do not prelink binaries in the initramfs
90b079
+
90b079
 **--hardlink**::
90b079
     hardlink files in the initramfs (default)
90b079
 
90b079
diff --git a/dracut.conf.5.asc b/dracut.conf.5.asc
1755ca
index a32516c4..63991d4f 100644
90b079
--- a/dracut.conf.5.asc
90b079
+++ b/dracut.conf.5.asc
90b079
@@ -67,6 +67,9 @@ Configuration files must have the extension .conf; other extensions are ignored.
90b079
 *do_strip=*"__{yes|no}__"::
90b079
     Strip binaries in the initramfs (default=yes)
90b079
 
90b079
+*do_prelink=*"__{yes|no}__"::
90b079
+    Prelink binaries in the initramfs (default=yes)
90b079
+
90b079
 *hostonly=*"__{yes|no}__"::
90b079
     Host-Only mode: Install only what is needed for booting the local host
90b079
     instead of a generic host and generate host-specific configuration.
90b079
diff --git a/dracut.sh b/dracut.sh
1755ca
index 196b3ad4..177e66d5 100755
90b079
--- a/dracut.sh
90b079
+++ b/dracut.sh
90b079
@@ -97,6 +97,8 @@ Creates initial ramdisk images for preloading modules
90b079
   --kernel-cmdline [PARAMETERS] Specify default kernel command line parameters
90b079
   --strip               Strip binaries in the initramfs
90b079
   --nostrip             Do not strip binaries in the initramfs
90b079
+  --prelink             Prelink binaries in the initramfs
90b079
+  --noprelink           Do not prelink binaries in the initramfs
90b079
   --hardlink            Hardlink files in the initramfs
90b079
   --nohardlink          Do not hardlink files in the initramfs
90b079
   --prefix [DIR]        Prefix initramfs files with [DIR]
90b079
@@ -315,6 +317,8 @@ TEMP=$(unset POSIXLY_CORRECT; getopt \
90b079
     --long kernel-cmdline: \
90b079
     --long strip \
90b079
     --long nostrip \
90b079
+    --long prelink \
90b079
+    --long noprelink \
90b079
     --long hardlink \
90b079
     --long nohardlink \
90b079
     --long noprefix \
90b079
@@ -394,6 +398,8 @@ while :; do
90b079
         --no-early-microcode) early_microcode_l="no";;
90b079
         --strip)       do_strip_l="yes";;
90b079
         --nostrip)     do_strip_l="no";;
90b079
+        --prelink)     do_prelink_l="yes";;
90b079
+        --noprelink)   do_prelink_l="no";;
90b079
         --hardlink)    do_hardlink_l="yes";;
90b079
         --nohardlink)  do_hardlink_l="no";;
90b079
         --noprefix)    prefix_l="/";;
90b079
@@ -651,6 +657,8 @@ stdloglvl=$((stdloglvl + verbosity_mod_l))
90b079
 [[ $drivers_dir_l ]] && drivers_dir=$drivers_dir_l
90b079
 [[ $do_strip_l ]] && do_strip=$do_strip_l
90b079
 [[ $do_strip ]] || do_strip=yes
90b079
+[[ $do_prelink_l ]] && do_prelink=$do_prelink_l
90b079
+[[ $do_prelink ]] || do_prelink=yes
90b079
 [[ $do_hardlink_l ]] && do_hardlink=$do_hardlink_l
90b079
 [[ $do_hardlink ]] || do_hardlink=yes
90b079
 [[ $prefix_l ]] && prefix=$prefix_l
90b079
@@ -1251,18 +1259,20 @@ if [[ $kernel_only != yes ]]; then
90b079
     fi
90b079
 fi
90b079
 
90b079
-PRELINK_BIN="$(command -v prelink)"
90b079
-if [[ $UID = 0 ]] && [[ $PRELINK_BIN ]]; then
90b079
-    if [[ $DRACUT_FIPS_MODE ]]; then
90b079
-        dinfo "*** Installing prelink files ***"
90b079
-        inst_multiple -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf /etc/prelink.cache
90b079
-    else
90b079
-        dinfo "*** Pre-linking files ***"
90b079
-        inst_multiple -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf
90b079
-        chroot "$initdir" "$PRELINK_BIN" -a
90b079
-        rm -f -- "$initdir/$PRELINK_BIN"
90b079
-        rm -fr -- "$initdir"/etc/prelink.*
90b079
-        dinfo "*** Pre-linking files done ***"
90b079
+if [[ $do_prelink == yes ]]; then
90b079
+    PRELINK_BIN="$(command -v prelink)"
90b079
+    if [[ $UID = 0 ]] && [[ $PRELINK_BIN ]]; then
90b079
+        if [[ $DRACUT_FIPS_MODE ]]; then
90b079
+            dinfo "*** Installing prelink files ***"
90b079
+            inst_multiple -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf /etc/prelink.cache
90b079
+        else
90b079
+            dinfo "*** Pre-linking files ***"
90b079
+            inst_multiple -o prelink /etc/prelink.conf /etc/prelink.conf.d/*.conf
90b079
+            chroot "$initdir" "$PRELINK_BIN" -a
90b079
+            rm -f -- "$initdir/$PRELINK_BIN"
90b079
+            rm -fr -- "$initdir"/etc/prelink.*
90b079
+            dinfo "*** Pre-linking files done ***"
90b079
+        fi
90b079
     fi
90b079
 fi
90b079