#!/bin/bash
-# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
-# ex: ts=8 sw=4 sts=4 et filetype=sh
export LANG=C
KERNEL_IMAGE="$2"
[[ -f /etc/os-release ]] && . /etc/os-release
+
+if [[ ! -f /etc/machine-id ]] || [[ ! -s /etc/machine-id ]]; then
+ systemd-machine-id-setup
+fi
+
[[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id
-INITRDFILE="/boot/initramfs-${MACHINE_ID}-rescue.img"
-[[ -f $INITRDFILE ]] && exit 0
+[[ $MACHINE_ID ]] || exit 1
+[[ -f $KERNEL_IMAGE ]] || exit 1
+
+INITRDFILE="/boot/initramfs-0-rescue-${MACHINE_ID}.img"
+NEW_KERNEL_IMAGE="${KERNEL_IMAGE%/*}/vmlinuz-0-rescue-${MACHINE_ID}"
+
+[[ -f $INITRDFILE ]] && [[ -f $NEW_KERNEL_IMAGE ]] && exit 0
dropindirs_sort()
{
[[ $dracut_rescue_image != "yes" ]] && exit 0
-dracut --no-hostonly -a "rescue" "$INITRDFILE" "$KERNEL_VERSION"
-((ret+=$?))
-
-cp "$KERNEL_IMAGE" "${KERNEL_IMAGE%/*}/vmlinuz-${MACHINE_ID}-rescue"
-((ret+=$?))
+if [[ ! -f $INITRDFILE ]]; then
+ dracut --no-hostonly -a "rescue" "$INITRDFILE" "$KERNEL_VERSION"
+ ((ret+=$?))
+fi
-KERNEL_IMAGE="${KERNEL_IMAGE%/*}/vmlinuz-${MACHINE_ID}-rescue"
+if [[ ! -f $NEW_KERNEL_IMAGE ]]; then
+ cp --reflink=auto "$KERNEL_IMAGE" "$NEW_KERNEL_IMAGE"
+ ((ret+=$?))
+fi
-new-kernel-pkg --install "$KERNEL_VERSION" --kernel-image "$KERNEL_IMAGE" --initrdfile "$INITRDFILE" --banner "$PRETTY_NAME Rescue"
+new-kernel-pkg --install "$KERNEL_VERSION" --kernel-image "$NEW_KERNEL_IMAGE" --initrdfile "$INITRDFILE" --banner "$NAME $VERSION_ID Rescue $MACHINE_ID"
((ret+=$?))