Blob Blame History Raw
From 564c0c4577dfd676472f4a41798909470fee6744 Mon Sep 17 00:00:00 2001
From: Hari Bathini <hbathini@linux.vnet.ibm.com>
Date: Mon, 2 Jun 2014 16:27:37 +0530
Subject: [PATCH] lsinird: Adding option "-m|--mod" to list dracut modules in
 the image

This patch adds option "-m|--mod" to lsinitrd to list dracut
modules in the image  because sometimes  having an option to
only list the dracut modules in the image could be handy.

Sample output:
--------------

[hbathini@localhost dracut]$ sudo ./lsinitrd.sh initramfs-3.11.10-100.fc18.x86_64.img -m
Image: initramfs-3.11.10-100.fc18.x86_64.img: 33M
========================================================================
Version: dracut-029-1.fc18.2

dracut modules:
i18n
network
ifcfg
drm
plymouth
btrfs
crypt
dm
dmraid
kernel-modules
lvm
mdraid
cifs
iscsi
nfs
resume
rootfs-block
terminfo
udev-rules
biosdevname
systemd
usrmount
base
fs-lib
shutdown
========================================================================

Signed-off-by: Hari Bathini <hbathini@linux.vnet.ibm.com>
(cherry picked from commit 05d2a14526042417a4a2b1b3d003738b51ab3df7)
---
 lsinitrd.sh | 29 ++++++++++++++++++++++++-----
 1 file changed, 24 insertions(+), 5 deletions(-)

diff --git a/lsinitrd.sh b/lsinitrd.sh
index b36b34e2..b086a635 100755
--- a/lsinitrd.sh
+++ b/lsinitrd.sh
@@ -27,6 +27,7 @@ usage()
         echo
         echo "-h, --help                  print a help message and exit."
         echo "-s, --size                  sort the contents of the initramfs by size."
+        echo "-m, --mod                   list modules."
         echo "-f, --file <filename>       print the contents of <filename>."
         echo "-k, --kver <kernel version> inspect the initramfs of <kernel version>."
         echo
@@ -37,13 +38,15 @@ usage()
 [[ $dracutbasedir ]] || dracutbasedir=/usr/lib/dracut
 
 sorted=0
+modules=0
 declare -A filenames
 
 unset POSIXLY_CORRECT
 TEMP=$(getopt \
-    -o "shf:k:" \
+    -o "shmf:k:" \
     --long kver: \
     --long file: \
+    --long mod \
     --long help \
     --long size \
     -- "$@")
@@ -61,6 +64,7 @@ while (($# > 0)); do
         -f|--file)  filenames[${2#/}]=1; shift;;
         -s|--size)  sorted=1;;
         -h|--help)  usage; exit 0;;
+        -m|--mod)   modules=1;;
         --)         shift;break;;
         *)          usage; exit 1;;
     esac
@@ -119,6 +123,13 @@ extract_files()
     done
 }
 
+list_modules()
+{
+    echo "dracut modules:"
+    $CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- 'lib/dracut/modules.txt' 'usr/lib/dracut/modules.txt' 2>/dev/null
+    ((ret+=$?))
+}
+
 list_files()
 {
     echo "========================================================================"
@@ -211,10 +222,18 @@ if (( ${#filenames[@]} > 0 )); then
 else
     version=$($CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- 'lib/dracut/dracut-*' 'usr/lib/dracut/dracut-*' 2>/dev/null)
     ((ret+=$?))
-    echo "$version with dracut modules:"
-    $CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- '*lib/dracut/modules.txt' 2>/dev/null
-    ((ret+=$?))
-    list_files
+    echo "Version: $version"
+    echo
+    if [ "$modules" -eq 1 ]; then
+        list_modules
+        echo "========================================================================"
+    else
+        echo -n "Arguments: "
+        $CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- 'lib/dracut/build-parameter.txt' 'usr/lib/dracut/build-parameter.txt' 2>/dev/null
+        echo
+        list_modules
+        list_files
+    fi
 fi
 
 exit $ret