On Wed, Mar 5, 2025 at 4:11 AM Andrei Borzenkov <arvidj...@gmail.com> wrote:
>
> 05.03.2025 07:13, Aaron Pace wrote:
> > Hello,
> >
> > I apologize if this has already been answered somewhere.  I did a cursory
> > search of the mailing list history, but didn't find a clear answer.
> >
> > I have my own 4096-bit RSA PK, KEK, and DB key enrolled in my BIOS.
> > I have signed grub with the DB key, and it boots correctly.
> >
> > Rather than using shim / MOKmanager / etc., I would like to have GRUB read
> > the DB variable from the EFI store and use the certificates stored there to
> > validate my initrd / vmlinux.
> >
>
> Upstream grub does not do it. And initrd normally is not verified anyway
> because it is usually too volatile.
>
> > I haven't found a way to do this yet.  I can sign my initrd/vmlinux with a
> > GPG key which I then store in my boot partition, but would like to be able
> > to instead use the one set of keys from the UEFI DB variable to validate
> > everything.
> >
> > Can this be done?
> >
>
> Sure this can be done. Distributions patch grub "linux" command to
> invoke Linux kernel as EFI binary in which case firmware will
> automatically verify it. Upstream grub needs to explicitly verify image.
>
> If the question is - can this be done in the current upstream grub - I
> guess you could load Linux kernel with EFI stub using EFI chainloader
> command. It will go through normal EFI LoadImage which will implicitly
> verify it. But you will need to maintain grub configuration yourself,
> default grub-mkconfig has no provision for it (or add /etc/grub.d script
> to do it).
>
> It will not verify initrd though. The only solution that does it is
> systemd UKI (at least, the only known to me) where kernel and initrd are
> packed into the single EFI binary. Hmm ... if you have it, you can just
> as well load it using grub "chainloader".
>

Thank you greatly for that info, I will explore this.

-Aaron

Reply via email to