Tags: patch I botched the first patch. This one fixes it correctly.
>From 6eb082b42ad9a7c22f08ecb9f18fab7f8891be95 Mon Sep 17 00:00:00 2001 From: David Lechner <da...@lechnology.com> Date: Fri, 24 Apr 2015 19:13:00 -0500 Subject: [PATCH] Handle case when kernel == kfile check in boot_kernel_path handler.
This only applies to Method: generic. Old behavior: If the db entry specifies Boot-Kernel-Path, one of Dtb-Append, Machine-Id or U-Boot-Kernel-Address must be specified which changes the value of $kernel. When checking what to do wht Boot-Kernel-Path, the script checks to see if $kernel was changed from the original value ($kfile). If it did not change, it does nothing. There is a TODO comment about handling symlinks, but this does not make sense since this is the generic method, not the symlink method. New behavior: If $kernel was not changed, copy it to a temporary file before calling backup_and_install. backup_and_install moves the temporary file, effectivly deleting it. Also applied same fix to initrd. Use case: On Raspberry Pi, the boot loader uses the vmlinux-* file directly, but it needs to be renamed to kernel.img, which flash-kernel should be doing. --- functions | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/functions b/functions index a7ff6de..6579b18 100644 --- a/functions +++ b/functions @@ -684,13 +684,11 @@ case "$method" in if [ -n "$boot_kernel_path" ]; then boot_kernel_path="$boot_mnt_dir/$boot_kernel_path" # don't mv the original kernel - if [ "$kernel" != "$kfile" ]; then - backup_and_install "$kernel" \ - "$boot_kernel_path" - else - # TODO add support for kernel symlink - : + if [ "$kernel" = "$kfile" ]; then + cp "$kernel" "$tmpdir/kernel" + kernel="$tmpdir/kernel" fi + backup_and_install "$kernel" "$boot_kernel_path" elif [ -n "$kmtd" ]; then flash_kernel "$tmpdir/uImage" "$kmtd" "" rm -f "$tmpdir/uImage" @@ -706,13 +704,11 @@ case "$method" in if [ -n "$boot_initrd_path" ]; then boot_initrd_path="$boot_mnt_dir/$boot_initrd_path" # don't mv the original initrd - if [ "$initrd" != "$ifile" ]; then - backup_and_install "$initrd" \ - "$boot_initrd_path" - else - # TODO add support for initrd symlink - : + if [ "$initrd" = "$ifile" ]; then + cp "$initrd" "$tmpdir/initrd" + initrd="$tmpdir/initrd" fi + backup_and_install "$initrd" "$boot_initrd_path" elif [ -n "$imtd" ]; then ipad=0 # padding isn't needed for U-Boot images -- 1.9.1