lsinitrd: use /boot/<machine-id>/<kernel-version>/initrd as the default image

if /boot/<machine-id> exists; then
use /boot/<machine-id>/<kernel-version>/initrd as the default image;
else fallback to /boot/initramfs-<kernel-version>.img
master
Harald Hoyer 2013-03-07 12:54:02 +01:00
parent cbc21754e5
commit dde2db3da9
2 changed files with 40 additions and 5 deletions

View File

@ -10,12 +10,13 @@ lsinitrd - tool to show the contents of an initramfs image


SYNOPSIS SYNOPSIS
-------- --------
*lsinit* ['OPTION...'] [<image>] *lsinitrd* ['OPTION...'] [<image>]


DESCRIPTION DESCRIPTION
----------- -----------
lsinitrd shows the contents of an initramfs image. if <image> is omitted, then lsinitrd shows the contents of an initramfs image. if <image> is omitted, then
lsinitrd uses the default image /boot/initramfs-<kernel version>.img. lsinitrd uses the default image _/boot/<machine-id>/<kernel-version>/initrd_ or
_/boot/initramfs-<kernel-version>.img_.


OPTIONS OPTIONS
------- -------

View File

@ -21,7 +21,13 @@


usage() usage()
{ {
echo "Usage: $(${0##*/}) [-s] [<initramfs file> [<filename>]]" {
echo "Usage: ${0##*/} [-s] [<initramfs file> [<filename>]]"
echo
echo "-h, --help print a help message and exit."
echo "-s, --size sort the contents of the initramfs by size."
echo
} >&2
} }


[[ $# -le 2 ]] || { usage ; exit 1 ; } [[ $# -le 2 ]] || { usage ; exit 1 ; }
@ -36,8 +42,36 @@ while getopts "s" opt; do
done done
shift $((OPTIND-1)) shift $((OPTIND-1))


image="${1:-/boot/initramfs-$(uname -r).img}" KERNEL_VERSION="$(uname -r)"
[[ -f "$image" ]] || { echo "$image does not exist" ; exit 1 ; }
if [[ "$1" ]]; then
image="$1"
if ! [[ -f "$image" ]]; then
{
echo "$image does not exist"
echo
} >&2
usage
exit 1
fi
fi

[[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id

if [[ $MACHINE_ID ]] && ( [[ -d /boot/${MACHINE_ID} ]] || [[ -L /boot/${MACHINE_ID} ]] ); then
image="/boot/${MACHINE_ID}/${KERNEL_VERSION}/initrd"
else
image="/boot/initramfs-${KERNEL_VERSION}.img}"
fi

if ! [[ -f "$image" ]]; then
{
echo "No <initramfs file> specified and the default image '$image' cannot be accessed!"
echo
} >&2
usage
exit 1
fi


CAT=zcat CAT=zcat
FILE_T=$(file --dereference "$image") FILE_T=$(file --dereference "$image")