Comment 26 for bug 1918427

Revision history for this message
dann frazier (dannf) wrote : Re: [Bug 1918427] Re: curtin: install flash-kernel in arm64 UEFI unexpected

On Tue, Mar 16, 2021 at 10:05 AM Ryan Harper <email address hidden> wrote:
>
> Hi Dan,
>
> Could you summarize the problem with flash-kernel and this system?

Sure. flash-kernel recognizes Mustang boards and will generate uImage
and uInitrd files for it, which are required for booting with u-boot
firmware. However, these boards can also run in UEFI mode, which
Date's board does. In UEFI mode, flash-kernel still knows it is on a
Mustang and generates uImage/uInitrd files - which won't be used for
anything in that case, they are just wasting space, but does not cause
it to fail. This does cause problems in a curtin install though.
Curtin has logic to divert away tools that get executed during
initramfs hooks, to avoid failures in packaging scripts before an
initramfs is generated. flash-kernel in particular will fail if an
initramfs is not found on this system. Curtin tries to be smart here
and only divert flash-kernel 1) if it is installed and 2) on systems
that are*not* in UEFI mode, and both of these scenarios have escapes:

1) flash-kernel could get installed post-divert. In that case,
flash-kernel's own postinst will cause it to run and then fail. This
happens today if you start with a cloud image w/o flash-kernel
pre-baked because Ubuntu's kernel recommends flash-kernel, causing it
to be installed along with the kernel. Official cloud images happen to
have flash-kernel pre-baked which avoids this issue. I think curtin
should work whether or not the kernel recommends flash-kernel and
whether or not curtin is pre-baked (in fact, I'd like for us to stop
pre-baking it - the vast majoriy of ARM servers do not need it).

2) If flash-kernel is installed, and curtin finds we're in UEFI mode,
it chooses not to divert flash-kernel. flash-kernel will therefore run
and fail on UEFI Mustangs.

The way I've personally framed this issue is that Ubuntu should not be
trying to install flash-kernel on ARM systems that don't require it,
which is the reason I've added the various tasks here.
 - cloud images shouldn't prebake it
 - the kernel should allow non-flash-kernel bootloaders to satisfy its
recommends
 - curtin shouldn't install flash-kernel on efi-based arm64 servers.
It does this today, but - in what seems like a bug, only in the
ephemeral and not the target.

A separate issue is that flash-kernel should know to just exit if it's
running on an EFI system and not bother creating the unused
uImage/uInitrd - Date recently got a patched merged into Debian's f-k
to do that. That would seemingly also avoid the curtin issues here,
but only if we continue to install flash-kernel all the time.

 -dann