Blob Blame History Raw
From 0c2ac6b7503661948ead031f745736e35fef2e3f Mon Sep 17 00:00:00 2001
From: Kairui Song <kasong@redhat.com>
Date: Wed, 26 Dec 2018 17:38:02 +0800
Subject: [PATCH] lsinitrd: list squash content as well

When the initramfs is built with squash module enabled, the content
inside squash image will be invisible from the lsinitrd tool. This
commit make lsinitrd detect and list the content of the squash image as
well to avoid possible confusion.

Signed-off-by: Kairui Song <kasong@redhat.com>
(cherry picked from commit 1ff306a3964840fc548188a8aa4862143b347e8a)

Resolves: #1959336
---
 lsinitrd.sh | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/lsinitrd.sh b/lsinitrd.sh
index a2fa4d7a..0b42b9a4 100755
--- a/lsinitrd.sh
+++ b/lsinitrd.sh
@@ -160,6 +160,21 @@ list_files()
     echo "========================================================================"
 }
 
+list_squash_content()
+{
+    SQUASH_IMG="squash/root.img"
+    SQUASH_TMPFILE="$(mktemp -t --suffix=.root.sqsh lsinitrd.XXXXXX)"
+    trap "rm -f '$SQUASH_TMPFILE'" EXIT
+    $CAT "$image" 2>/dev/null | cpio --extract --verbose --quiet --to-stdout -- \
+        $SQUASH_IMG > "$SQUASH_TMPFILE" 2>/dev/null
+    if [[ -s $SQUASH_TMPFILE ]]; then
+        echo "Squashed content ($SQUASH_IMG):"
+        echo "========================================================================"
+        unsquashfs -ll "$SQUASH_TMPFILE" | tail -n +4
+        echo "========================================================================"
+    fi
+}
+
 unpack_files()
 {
     if (( ${#filenames[@]} > 0 )); then
@@ -287,6 +302,7 @@ else
         echo
         list_modules
         list_files
+        list_squash_content
     fi
 fi