From 564c0c4577dfd676472f4a41798909470fee6744 Mon Sep 17 00:00:00 2001 From: Hari Bathini 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 (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 print the contents of ." echo "-k, --kver inspect the initramfs of ." 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