File 99-copy-initramfs.install of Package pinephone-helpers
#!/bin/bash
#
# Este script copia el initramfs generado a una ruta de respaldo
# después de una instalación/actualización de kernel.
#
DESTINATION_DIR="/boot/efi/boot"
# -------------------------------------
# Variables proporcionadas por kernel-install
KERNEL_VERSION="$1" # Ej: 5.14.0-162.x86_64
KERNEL_IMAGE="$4" # Path to Image file
# STAGING_DIR="$2" (En RHEL 8/9 $2 es el BOOT_ENTRY_PATH)
INITRAMFS_IMAGE="$5" # Path to initramfs
COMMAND="$KERNEL_INSTALL_ACTION" # 'add' o 'remove'
# Archivo de log para depuración
LOG_FILE="/var/log/kernel_copy.log"
# Asegurarse de que el directorio de destino exista
mkdir -p "$DESTINATION_DIR"
# Solo actuamos cuando se 'añade' (add) un kernel
if [ "$COMMAND" = "add" ]; then
# Copy Initramfs
if [ -n "$INITRAMFS_IMAGE" ] && [ -f "$INITRAMFS_IMAGE" ]; then
cp "$INITRAMFS_IMAGE" "$DESTINATION_DIR/initrd"
echo "$(date): Copied $INITRAMFS_IMAGE to $DESTINATION_DIR/initrd" >> "$LOG_FILE"
else
echo "$(date): INITRAMFS_IMAGE ($INITRAMFS_IMAGE) not found" >> "$LOG_FILE"
fi
# Copy Image (kernel)
if [ -n "$KERNEL_IMAGE" ] && [ -f "$KERNEL_IMAGE" ]; then
cp "$KERNEL_IMAGE" "$DESTINATION_DIR/Image"
echo "$(date): Copied $KERNEL_IMAGE to $DESTINATION_DIR/Image" >> "$LOG_FILE"
else
echo "$(date): KERNEL_IMAGE ($KERNEL_IMAGE) not found" >> "$LOG_FILE"
fi
# Copy DTB files
DTB_SRC_PATH="/boot/dtb/"
if [ -d "$DTB_SRC_PATH" ]; then
cp -r "$DTB_SRC_PATH" "$DESTINATION_DIR/"
echo "$(date): Copied DTB $DTB_SRC_PATH to $DESTINATION_DIR/" >> "$LOG_FILE"
else
echo "$(date): DTB in $DTB_SRC_PATH not found." >> "$LOG_FILE"
fi
# Create boot.scr for u-boot
BOOT_SCRIPT="/usr/share/pp-helpers/boot.script"
if [ -n "$BOOT_SCRIPT" ] && [ -f "$BOOT_SCRIPT" ]; then
mkimage -A arm64 -O linux -T script -C none -n "Boot Script" -d ${BOOT_SCRIPT} $DESTINATION_DIR/boot.scr
echo "$(date): Created boot.scr file in $DESTINATION_DIR/" >> "$LOG_FILE"
else
echo "$(date): BOOT Script in $BOOT_SCRIPT not found." >> "$LOG_FILE"
fi
fi
exit 0