#!/bin/bash COMMAND="$1" KERNEL_VERSION="$2" BOOT_DIR_ABS="$3" KERNEL_IMAGE="$4" # If KERNEL_INSTALL_MACHINE_ID is defined but empty, BOOT_DIR_ABS is a fake directory. # So, let's skip to create initrd. if ! [[ ${KERNEL_INSTALL_MACHINE_ID-x} ]]; then exit 0 fi if [[ -d "$BOOT_DIR_ABS" ]]; then INITRD="initrd" else BOOT_DIR_ABS="/boot" INITRD="initramfs-${KERNEL_VERSION}.img" fi ret=0 case "$COMMAND" in add) INITRD_IMAGE_PREGENERATED=${KERNEL_IMAGE%/*}/initrd if [[ -f ${INITRD_IMAGE_PREGENERATED} ]]; then # we found an initrd at the same place as the kernel # use this and don't generate a new one cp --reflink=auto "$INITRD_IMAGE_PREGENERATED" "$BOOT_DIR_ABS/$INITRD" \ && chown root:root "$BOOT_DIR_ABS/$INITRD" \ && chmod 0600 "$BOOT_DIR_ABS/$INITRD" \ && exit 0 fi if [[ -f /etc/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline elif [[ -f /usr/lib/kernel/cmdline ]]; then read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline fi if ! [[ ${BOOT_OPTIONS[*]} ]]; then read -r -d '' -a BOOT_OPTIONS < /proc/cmdline fi unset noimageifnotneeded for ((i=0; i < "${#BOOT_OPTIONS[@]}"; i++)); do if [[ ${BOOT_OPTIONS[$i]} == root\=PARTUUID\=* ]]; then noimageifnotneeded="yes" break fi done dracut -f ${noimageifnotneeded:+--noimageifnotneeded} "$BOOT_DIR_ABS/$INITRD" "$KERNEL_VERSION" ret=$? ;; remove) rm -f -- "$BOOT_DIR_ABS/$INITRD" ret=$? ;; esac exit $ret