Re: Immediate "system reset" when booting UEFI?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Nov 18, 2024 at 01:46:57PM +0000, Andrea Bolognani wrote:
> On Fri, Nov 01, 2024 at 02:19:46PM +0000, Daniel P. Berrangé wrote:
> > On Fri, Nov 01, 2024 at 09:54:14AM -0400, Lars Kellogg-Stedman wrote:
> > > Hey folks,
> > >
> > > I'm running libvirt 10.1.0/qemu-system-x86-core-9.0.1-1.fc40.x86_64 on Fedora
> > > 40. I'm trying to boot an Ubuntu image in UEFI mode, like this:
> > >
> > >     virt-install -r 2048 -n ubuntu.virt --os-variant ubuntu24.04 \
> > >       --disk pool=default,size=10,backing_store=mantic-server-cloudimg-amd64.img,backing_format=qcow2
> > > \
> > >       --cloud-init root-ssh-key=$HOME/.ssh/id_ed25519.pub \
> > >       --boot uefi
> > >
> > > This results in the domain booting up and then immediately resetting:
> > >
> > >     BdsDxe: loading Boot0001 "UEFI Misc Device" from
> > > PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x0)
> > >     BdsDxe: starting Boot0001 "UEFI Misc Device" from
> > > PciRoot(0x0)/Pci(0x2,0x3)/Pci(0x0,0x0)
> > >     Reset System
> > >
> > >     Domain creation completed.
> > >
> > > At this point, the machine is actually powered down and needs to be
> > > restarted manually:
> > >
> > >     virsh start ubuntu.virt
> > >
> > > This works fine, and the domain boots successfully, but now the cloud-init
> > > metadata provided by the `--cloud-init` option to `virt-install` is no longer
> > > available (because this is no longer the initial, virt-install managed boot of
> > > the domain).
> > >
> > > What is causing the firmware to reset the system when it first boots?
> >
> > This will be shim configuring the NVRAM bootloade entries.
> >
> > You've taken a pre-installed disk image, but have not been provided
> > the associated UEFI NVRAM that was populated when the disk was first
> > installed. This is normal, since the NVRAM created at the time is
> > not guaranteed to be compatible with your EFI binary.
> >
> > Your VM is booting with a clean NVRAM, and no bootloader entries will
> > be present. Thus EFI launches the default binary $ESP/EFI/BOOT/BOOTX64.EFI,
> > which is a copy of shim.
> >
> > Shim sees that has been launched with no bootloader entries present,
> > and so will then invoke $ESP/EFI/BOOT/fbx64.efi which will read the
> > info in $ESP/<vendor>/BOOTX64.CSV file and create boot loader entries
> > in the EFI NVRAM. Then it will trigger a system reset, which is the
> > one you see. <vendor> in your case is probably 'ubuntu' I guess.
> >
> > When you run virsh start, EFI will see bootloader entries and so
> > instead of $ESP/EFI/BOOT/BOOTX64.EFI, it will probably be launching
> > $ESP/EFI/ubuntu/shim.efi, which will then run grub, etc, as normal
> > The latter will be done forever more, unless you purge the NVRAM
> > of all bootloader entries.
> >
> > Ideally virt-install would be aware of this and automatically restart
> > the VM after shim populates the NVRAM. Depends if we can come up with
> > a relativel foolproof way to identify this situation.
> 
> The need for a full reset (as opposed to shim just creating the
> missing entries and moving on) is apparently triggered by the
> presence of a TPM, which these days we add by default when UEFI is
> used.
> 
> virt-manager has added some code to deal with this very situation:
> 
>   https://github.com/virt-manager/virt-manager/commit/ec434948a8384541c56bfa04e4985f4fc709bc76
> 
> Unfortunately it's not part of any release yet, but once it is the
> scenario we're discussion should no longer present itself.

The approach in that patch of disabling the TPM is pretty undesirable
as a long term solution to this problem, because it assumes there are
no ill effects from disabling the TPM, which is dubious

Tieing it to use of --cloud-init seems fragile as well, as I'd expect
extra reboots could happen in non-cloud-init cases too.

That all said, doing anything better than that is pretty complicated

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




[Index of Archives]     [Virt Tools]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]

  Powered by Linux