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
openSUSE Build Service is sponsored by