|
Harald Hoyer |
adf00e |
From 7d9bb76ac7cf6996318a0cfbc8576d8d307bff3e Mon Sep 17 00:00:00 2001
|
|
Harald Hoyer |
adf00e |
From: Harald Hoyer <harald@redhat.com>
|
|
Harald Hoyer |
adf00e |
Date: Tue, 16 Apr 2013 10:44:56 +0200
|
|
Harald Hoyer |
adf00e |
Subject: [PATCH] lsinitrd: switch to getopt and add "-f" and "-k" parameter
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
---
|
|
Harald Hoyer |
adf00e |
lsinitrd.1.asc | 10 +++++++++-
|
|
Harald Hoyer |
adf00e |
lsinitrd.sh | 61 +++++++++++++++++++++++++++++++++++++++++++---------------
|
|
Harald Hoyer |
adf00e |
2 files changed, 54 insertions(+), 17 deletions(-)
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
diff --git a/lsinitrd.1.asc b/lsinitrd.1.asc
|
|
Harald Hoyer |
adf00e |
index fd98161..4293910 100644
|
|
Harald Hoyer |
adf00e |
--- a/lsinitrd.1.asc
|
|
Harald Hoyer |
adf00e |
+++ b/lsinitrd.1.asc
|
|
Harald Hoyer |
adf00e |
@@ -10,7 +10,9 @@ lsinitrd - tool to show the contents of an initramfs image
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
SYNOPSIS
|
|
Harald Hoyer |
adf00e |
--------
|
|
Harald Hoyer |
adf00e |
-*lsinitrd* ['OPTION...'] [<image>]
|
|
Harald Hoyer |
adf00e |
+*lsinitrd* ['OPTION...'] [<image> [<filename> [<filename> [...] ]]]
|
|
Harald Hoyer |
adf00e |
+
|
|
Harald Hoyer |
adf00e |
+*lsinitrd* ['OPTION...'] -k <kernel-version>
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
DESCRIPTION
|
|
Harald Hoyer |
adf00e |
-----------
|
|
Harald Hoyer |
adf00e |
@@ -26,6 +28,12 @@ OPTIONS
|
|
Harald Hoyer |
adf00e |
**-s, --size**::
|
|
Harald Hoyer |
adf00e |
sort the contents of the initramfs by size.
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
+**-f, --file** _<filename>_::
|
|
Harald Hoyer |
adf00e |
+ print the contents of <filename>.
|
|
Harald Hoyer |
adf00e |
+
|
|
Harald Hoyer |
adf00e |
+**-k, --kver** _<kernel version>_::
|
|
Harald Hoyer |
adf00e |
+ inspect the initramfs of <kernel version>.
|
|
Harald Hoyer |
adf00e |
+
|
|
Harald Hoyer |
adf00e |
AVAILABILITY
|
|
Harald Hoyer |
adf00e |
------------
|
|
Harald Hoyer |
adf00e |
The lsinitrd command is part of the dracut package and is available from
|
|
Harald Hoyer |
adf00e |
diff --git a/lsinitrd.sh b/lsinitrd.sh
|
|
Harald Hoyer |
adf00e |
index 1b27393..42e30d9 100755
|
|
Harald Hoyer |
adf00e |
--- a/lsinitrd.sh
|
|
Harald Hoyer |
adf00e |
+++ b/lsinitrd.sh
|
|
Harald Hoyer |
adf00e |
@@ -22,29 +22,51 @@
|
|
Harald Hoyer |
adf00e |
usage()
|
|
Harald Hoyer |
adf00e |
{
|
|
Harald Hoyer |
adf00e |
{
|
|
Harald Hoyer |
adf00e |
- echo "Usage: ${0##*/} [-s] [<initramfs file> [<filename>]]"
|
|
Harald Hoyer |
adf00e |
+ echo "Usage: ${0##*/} [options] [<initramfs file> [<filename> [<filename> [...] ]]]"
|
|
Harald Hoyer |
adf00e |
+ echo "Usage: ${0##*/} [options] -k <kernel version>"
|
|
Harald Hoyer |
adf00e |
echo
|
|
Harald Hoyer |
adf00e |
- echo "-h, --help print a help message and exit."
|
|
Harald Hoyer |
adf00e |
- echo "-s, --size sort the contents of the initramfs by size."
|
|
Harald Hoyer |
adf00e |
+ echo "-h, --help print a help message and exit."
|
|
Harald Hoyer |
adf00e |
+ echo "-s, --size sort the contents of the initramfs by size."
|
|
Harald Hoyer |
adf00e |
+ echo "-f, --file <filename> print the contents of <filename>."
|
|
Harald Hoyer |
adf00e |
+ echo "-k, --kver <kernel version> inspect the initramfs of <kernel version>."
|
|
Harald Hoyer |
adf00e |
echo
|
|
Harald Hoyer |
adf00e |
} >&2
|
|
Harald Hoyer |
adf00e |
}
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
-[[ $# -le 2 ]] || { usage ; exit 1 ; }
|
|
Harald Hoyer |
adf00e |
-
|
|
Harald Hoyer |
adf00e |
sorted=0
|
|
Harald Hoyer |
adf00e |
-while getopts "s" opt; do
|
|
Harald Hoyer |
adf00e |
- case $opt in
|
|
Harald Hoyer |
adf00e |
- s) sorted=1;;
|
|
Harald Hoyer |
adf00e |
- h) usage; exit 0;;
|
|
Harald Hoyer |
adf00e |
- \?) usage; exit 1;;
|
|
Harald Hoyer |
adf00e |
+declare -A filenames
|
|
Harald Hoyer |
adf00e |
+
|
|
Harald Hoyer |
adf00e |
+unset POSIXLY_CORRECT
|
|
Harald Hoyer |
adf00e |
+TEMP=$(getopt \
|
|
Harald Hoyer |
adf00e |
+ -o "shf:k:" \
|
|
Harald Hoyer |
adf00e |
+ --long kver: \
|
|
Harald Hoyer |
adf00e |
+ --long file: \
|
|
Harald Hoyer |
adf00e |
+ --long help \
|
|
Harald Hoyer |
adf00e |
+ --long size \
|
|
Harald Hoyer |
adf00e |
+ -- "$@")
|
|
Harald Hoyer |
adf00e |
+
|
|
Harald Hoyer |
adf00e |
+if (( $? != 0 )); then
|
|
Harald Hoyer |
adf00e |
+ usage
|
|
Harald Hoyer |
adf00e |
+ exit 1
|
|
Harald Hoyer |
adf00e |
+fi
|
|
Harald Hoyer |
adf00e |
+
|
|
Harald Hoyer |
adf00e |
+eval set -- "$TEMP"
|
|
Harald Hoyer |
adf00e |
+
|
|
Harald Hoyer |
adf00e |
+while (($# > 0)); do
|
|
Harald Hoyer |
adf00e |
+ case $1 in
|
|
Harald Hoyer |
adf00e |
+ -k|--kver) KERNEL_VERSION="$2"; shift;;
|
|
Harald Hoyer |
adf00e |
+ -f|--file) filenames[${2#/}]=1; shift;;
|
|
Harald Hoyer |
adf00e |
+ -s|--size) sorted=1;;
|
|
Harald Hoyer |
adf00e |
+ -h|--help) usage; exit 0;;
|
|
Harald Hoyer |
adf00e |
+ --) shift;break;;
|
|
Harald Hoyer |
adf00e |
+ *) usage; exit 1;;
|
|
Harald Hoyer |
adf00e |
esac
|
|
Harald Hoyer |
adf00e |
+ shift
|
|
Harald Hoyer |
adf00e |
done
|
|
Harald Hoyer |
adf00e |
-shift $((OPTIND-1))
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
-KERNEL_VERSION="$(uname -r)"
|
|
Harald Hoyer |
adf00e |
+[[ $KERNEL_VERSION ]] || KERNEL_VERSION="$(uname -r)"
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
-if [[ "$1" ]]; then
|
|
Harald Hoyer |
adf00e |
+if [[ $1 ]]; then
|
|
Harald Hoyer |
adf00e |
image="$1"
|
|
Harald Hoyer |
adf00e |
if ! [[ -f "$image" ]]; then
|
|
Harald Hoyer |
adf00e |
{
|
|
Harald Hoyer |
adf00e |
@@ -57,13 +79,20 @@ if [[ "$1" ]]; then
|
|
Harald Hoyer |
adf00e |
else
|
|
Harald Hoyer |
adf00e |
[[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
- if [[ $MACHINE_ID ]] && [[ -d /boot/${MACHINE_ID} || -L /boot/${MACHINE_ID} ]] ; then
|
|
Harald Hoyer |
adf00e |
+ if [[ -d /boot/loader/entries || -L /boot/loader/entries ]] \
|
|
Harald Hoyer |
adf00e |
+ && [[ $MACHINE_ID ]] \
|
|
Harald Hoyer |
adf00e |
+ && [[ -d /boot/${MACHINE_ID} || -L /boot/${MACHINE_ID} ]] ; then
|
|
Harald Hoyer |
adf00e |
image="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
|
|
Harald Hoyer |
adf00e |
else
|
|
Harald Hoyer |
adf00e |
image="/boot/initramfs-${KERNEL_VERSION}.img"
|
|
Harald Hoyer |
adf00e |
fi
|
|
Harald Hoyer |
adf00e |
fi
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
+shift
|
|
Harald Hoyer |
adf00e |
+while (($# > 0)); do
|
|
Harald Hoyer |
adf00e |
+ filenames[${1#/}]=1;
|
|
Harald Hoyer |
adf00e |
+ shift
|
|
Harald Hoyer |
adf00e |
+done
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
if ! [[ -f "$image" ]]; then
|
|
Harald Hoyer |
adf00e |
{
|
|
Harald Hoyer |
adf00e |
@@ -93,8 +122,8 @@ elif [[ "$FILE_T" =~ :\ data ]]; then
|
|
Harald Hoyer |
adf00e |
CAT="xzcat $XZ_SINGLE_STREAM"
|
|
Harald Hoyer |
adf00e |
fi
|
|
Harald Hoyer |
adf00e |
|
|
Harald Hoyer |
adf00e |
-if [[ $# -eq 2 ]]; then
|
|
Harald Hoyer |
adf00e |
- $CAT $image | cpio --extract --verbose --quiet --to-stdout ${2#/} 2>/dev/null
|
|
Harald Hoyer |
adf00e |
+if (( ${#filenames[@]} > 0 )); then
|
|
Harald Hoyer |
adf00e |
+ $CAT $image | cpio --extract --verbose --quiet --to-stdout ${!filenames[@]} 2>/dev/null
|
|
Harald Hoyer |
adf00e |
exit $?
|
|
Harald Hoyer |
adf00e |
fi
|
|
Harald Hoyer |
adf00e |
|