Skip to content

Instantly share code, notes, and snippets.

@jcttrll
Created September 27, 2017 17:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jcttrll/f5f5e148dcc1c91b3865716d29e25b55 to your computer and use it in GitHub Desktop.
Save jcttrll/f5f5e148dcc1c91b3865716d29e25b55 to your computer and use it in GitHub Desktop.
initrd-mod scripts for opennSUSE (and possibly RedHat)
#!/bin/bash -e
set -o pipefail
if [ $# -ne 0 ]; then
echo "Usage: ${0##*/}" >&2
exit 1
fi
EARLY_CPIO_DIR=.initrd-mod-early-cpio
ARCHIVE_DIR=.initrd-mod-archive
if [ ! -e "$EARLY_CPIO_DIR" -a ! -e "$ARCHIVE_DIR" ]; then
echo "No initrd mod in progress; nothing to do" >&2
exit 0
fi
rm -rf "$EARLY_CPIO_DIR" "$ARCHIVE_DIR"
#!/bin/bash -e
set -o pipefail
if [ $# -ne 1 ]; then
echo "Usage: ${0##*/} <initramfs-file>" >&2
exit 1
fi
EARLY_CPIO_DIR=.initrd-mod-early-cpio
ARCHIVE_DIR=.initrd-mod-archive
if [ ! -e "$EARLY_CPIO_DIR" ]; then
echo "ERROR: $EARLY_CPIO_DIR directory does not exist; was initrd-mod-start run?" >&2
exit 1
fi
if [ ! -e "$ARCHIVE_DIR" ]; then
echo "ERROR: $ARCHIVE_DIR directory does not exist; was initrd-mod-start run?" >&2
exit 1
fi
FILE="$(readlink -f "$1")"
if [ -e "$FILE" -a ! -f "$FILE" ]; then
echo "ERROR: $FILE already exists, and is not a regular file" >&2
exit 1
fi
pushd "$EARLY_CPIO_DIR" >/dev/null
find . | cpio -o -H newc >"$FILE" 2>/dev/null
popd >/dev/null
pushd "$ARCHIVE_DIR" >/dev/null
find . | cpio -o -H newc 2>/dev/null | xz -0 --format lzma --stdout >>"$FILE"
popd >/dev/null
rm -rf "$EARLY_CPIO_DIR" "$ARCHIVE_DIR"
#!/bin/bash -e
set -o pipefail
if [ $# -ne 1 ]; then
echo "Usage: ${0##*/} <initramfs-file>" >&2
exit 1
fi
EARLY_CPIO_DIR=.initrd-mod-early-cpio
ARCHIVE_DIR=.initrd-mod-archive
if [ -e "$EARLY_CPIO_DIR" ]; then
echo "ERROR: $EARLY_CPIO_DIR directory already exists; run either initrd-mod-abort or initrd-mod-finish" >&2
exit 1
fi
if [ -e "$ARCHIVE_DIR" ]; then
echo "ERROR: $ARCHIVE_DIR directory already exists; run either initrd-mod-abort or initrd-mod-finish" >&2
exit 1
fi
FILE="$(readlink -f "$1")"
if [ ! -f "$FILE" ]; then
echo "ERROR: $FILE does not exist, or is not a regular file" >&2
exit 1
fi
mkdir "$EARLY_CPIO_DIR" "$ARCHIVE_DIR"
pushd "$EARLY_CPIO_DIR" >/dev/null
cpio -imd <"$FILE" 2>/dev/null
popd >/dev/null
pushd "$ARCHIVE_DIR" >/dev/null
/usr/lib/dracut/skipcpio "$FILE" | xzcat | cpio -imd 2>/dev/null
popd >/dev/null
echo "Files available in $ARCHIVE_DIR"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment