]> git.proxmox.com Git - pve-kernel-meta.git/commit
proxmox-boot: fix #3632 copy kernel+initrd unconditionally
authorStoiko Ivanov <s.ivanov@proxmox.com>
Thu, 23 Sep 2021 08:43:17 +0000 (10:43 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 1 Oct 2021 07:09:59 +0000 (09:09 +0200)
commit2a8a4b5e37e87a0a994fe3820b015e051e6259fb
tree57d39b4841c60615fd1563b37d6032e79350096e
parent221e6a67b1f7ee7a6e76e283305c69e5105ec18f
proxmox-boot: fix #3632 copy kernel+initrd unconditionally

do not use the -u (update) flag when copying kernel images and inird
from /boot to the ESPs:
* the ESPs are formatted with vfat, which has a 2 second precision for
  mtime (`linux/fs/fat/misc.c` - `fat_truncate_time`)
* cp -u compares the mtimes of source (kernel image in /boot not on
  vfat) and destination - leading to the copy always being carried
  out, if the source files remain the same (and do not happen to have
  a mtime exactly happening on a even second)

as laid out in the bug-report - the case where this leads to an
unbootable system is when a kernel-version is shipped twice (built
with different tool-chains) - e.g. currently the 5.11 kernels in PVE 6
and PVE 7.

tested the behavior of `cp -u` by running opensnopp-bpfcc and copying
a file twice onto ext4 (opened only once) and on vfat (opened twice).

additionally reproduced the issue (by dist-upgrading a PVE 6 VM to 7
with the pve-no-subscription repo) and verified this patch fixes it.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
proxmox-boot/zz-proxmox-boot