dracut/0039-lsinitrd-add-unpack-to-lsinitrd.patch
Harald Hoyer b386772815 dracut-044-75
- fix for systemd >= 230
- git snapshot
2016-06-07 10:24:44 +02:00

131 lines
4.1 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 97bbba6938fc22605026b4cff3c5cc524c7bdf38 Mon Sep 17 00:00:00 2001
From: Harald Hoyer <harald@redhat.com>
Date: Thu, 17 Mar 2016 14:45:24 +0100
Subject: [PATCH] lsinitrd: add "--unpack" to lsinitrd
also "--unpackearly" and "--verbose"
---
lsinitrd.1.asc | 9 +++++++++
lsinitrd.sh | 43 ++++++++++++++++++++++++++++++++-----------
2 files changed, 41 insertions(+), 11 deletions(-)
diff --git a/lsinitrd.1.asc b/lsinitrd.1.asc
index 4293910..b6a704c 100644
--- a/lsinitrd.1.asc
+++ b/lsinitrd.1.asc
@@ -34,6 +34,15 @@ OPTIONS
**-k, --kver** _<kernel version>_::
inspect the initramfs of <kernel version>.
+**--unpack**::
+ unpack the initramfs to the current directory, instead of displaying the contents.
+
+**--unpackearly**::
+ unpack the early microcode initramfs to the current directory, instead of displaying the contents.
+
+**-v, --verbose**::
+ unpack verbosely
+
AVAILABILITY
------------
The lsinitrd command is part of the dracut package and is available from
diff --git a/lsinitrd.sh b/lsinitrd.sh
index 441fb92..224b9c1 100755
--- a/lsinitrd.sh
+++ b/lsinitrd.sh
@@ -27,6 +27,9 @@ usage()
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 "--unpack unpack the initramfs, instead of displaying the contents."
+ echo "--unpackearly unpack the early microcode part of the initramfs."
+ echo "-v, --verbose unpack verbosely."
echo "-k, --kver <kernel version> inspect the initramfs of <kernel version>."
echo
} >&2
@@ -37,16 +40,21 @@ usage()
sorted=0
modules=0
+unpack=0
+unset verbose
declare -A filenames
unset POSIXLY_CORRECT
TEMP=$(getopt \
- -o "shmf:k:" \
+ -o "vshmf:k:" \
--long kver: \
--long file: \
--long mod \
--long help \
--long size \
+ --long unpack \
+ --long unpackearly \
+ --long verbose \
-- "$@")
if (( $? != 0 )); then
@@ -58,13 +66,16 @@ eval set -- "$TEMP"
while (($# > 0)); do
case $1 in
- -k|--kver) KERNEL_VERSION="$2"; shift;;
- -f|--file) filenames[${2#/}]=1; shift;;
- -s|--size) sorted=1;;
- -h|--help) usage; exit 0;;
- -m|--mod) modules=1;;
- --) shift;break;;
- *) usage; exit 1;;
+ -k|--kver) KERNEL_VERSION="$2"; shift;;
+ -f|--file) filenames[${2#/}]=1; shift;;
+ -s|--size) sorted=1;;
+ -h|--help) usage; exit 0;;
+ -m|--mod) modules=1;;
+ -v|--verbose) verbose="--verbose";;
+ --unpack) unpack=1;;
+ --unpackearly) unpackearly=1;;
+ --) shift;break;;
+ *) usage; exit 1;;
esac
shift
done
@@ -147,8 +158,14 @@ list_files()
echo "========================================================================"
}
+unpack_files()
+{
+ $CAT "$image" | cpio -id --quiet $verbose
+ ((ret+=$?))
+}
+
-if (( ${#filenames[@]} <= 0 )); then
+if (( ${#filenames[@]} <= 0 )) && [[ -z "$unpack" ]] && [[ -z "$unpackearly" ]]; then
echo "Image: $image: $(du -h $image | while read a b || [ -n "$a" ]; do echo $a;done)"
echo "========================================================================"
fi
@@ -159,7 +176,9 @@ case $bin in
CAT="cat --"
is_early=$(cpio --extract --verbose --quiet --to-stdout -- 'early_cpio' < "$image" 2>/dev/null)
if [[ "$is_early" ]]; then
- if (( ${#filenames[@]} > 0 )); then
+ if [[ -n "$unpackearly" ]]; then
+ unpack_files
+ elif (( ${#filenames[@]} > 0 )); then
extract_files
else
echo "Early CPIO image"
@@ -218,7 +237,9 @@ fi
ret=0
-if (( ${#filenames[@]} > 0 )); then
+if [[ -n "$unpack" ]]; then
+ unpack_files
+elif (( ${#filenames[@]} > 0 )); then
extract_files
else
version=$($CAT "$image" | cpio --extract --verbose --quiet --to-stdout -- \