All of lore.kernel.org
 help / color / mirror / Atom feed
From: Heinrich Schuchardt <xypron.glpk@gmx.de>
To: u-boot@lists.denx.de
Subject: [PATCH] efi_loader: improve detection of ESP for storing UEFI variables
Date: Mon, 9 Nov 2020 15:36:33 +0100	[thread overview]
Message-ID: <fddcca45-be85-6dc3-3b97-c7065b63aa40@gmx.de> (raw)
In-Reply-To: <e94a6aaad5229ee9@bloch.sibelius.xs4all.nl>

On 09.11.20 14:51, Mark Kettenis wrote:
>> From: Paulo Alcantara <pc@cjr.nz>
>> Date: Mon, 09 Nov 2020 10:24:08 -0300
>>
>> Heinrich Schuchardt <xypron.glpk@gmx.de> writes:
>>
>>> On 09.11.20 00:58, Paulo Alcantara wrote:
>>>> The UEFI specification does not restrict on the number and location of
>>>> ESPs in a system.  They are discovered as required by looking at the
>>>> partition type, but firmware implementations are allowed to support
>>>> ESPs which do not contain a valid partition type.
>>>
>>> I guess you refer to chapter "13.3.3 Number and Location of System
>>> Partitions" of the UEFI spec saying: "Further, UEFI implementations
>>> may allow the use of conforming FAT partitions which do not use the
>>> ESP GUID."
>>
>> Yep, sorry.  Thanks for pointing it out!
>>
>>> Why should U-Boot support FAT partitions that are not of type FAT 0xef
>>> and GPT partition that do not use the ESP GUID?
>>
>> In most UEFI (EDK2-based) systems I used, I could boot my OSes and
>> diagnostic tools by simply having a supported filesystem (FAT12/16/32)
>> and /EFI/BOOT/BOOT{ARCH}.EFI file and never cared about setting the
>> partition type at all.  It took me a while for figuring out why I
>> couldn't get my UEFI variables loaded from my FAT partition that
>> contained /ubootefi.var and /EFI/BOOT/BOOTAA64.efi files.
>
> The OpenBSD installation media for armv7 and arm64 use a FAT partition
> of type 0x0c because the Raspberry Pi firmware doesn't support 0xef.
> This allows us to have a single FAT partition with the Raspberry Pi
> firmware, U-Boot and /EFI/BOOT/BOOT{ARCH}.EFI.
>
> So far this works on all UEFI firmware I've tried (EDK2, U-Boot and
> AMI AptioV UEFI).
>

The issue Paulo was addressing is that U-Boot only persists non-volatile
UEFI variables if it can find a partition indicated as ESP by the
partition type.

This becomes interesting if you want to have both Linux and OpenBSD on
the same device and you want to use UEFI boot variables to decide which
operating system to boot or if you want to use secure boot.

On Debian the ESP is an 0xef partition mounted at /boot/efi.

SUSE recommends the same:
https://www.suse.com/support/kb/doc/?id=000017007
https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-uefi.html

For a Raspberry I typically would have the following partitions:

/ - root file system
/boot/firmware - *first* FAT partition
/boot/efi - ESP, FAT formatted

As /boot/firmware and /boot/efi can be separate partitions with
different partition type why does OpenBSD not use this scheme?

Best regards

Heinrich

  parent reply	other threads:[~2020-11-09 14:36 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-08 23:58 [PATCH] efi_loader: improve detection of ESP for storing UEFI variables Paulo Alcantara
2020-11-09 10:02 ` Heinrich Schuchardt
2020-11-09 13:24   ` Paulo Alcantara
2020-11-09 13:51     ` Mark Kettenis
2020-11-09 14:35       ` Paulo Alcantara
2020-11-09 14:46         ` Heinrich Schuchardt
2020-11-09 14:36       ` Heinrich Schuchardt [this message]
2020-11-09 17:08         ` Mark Kettenis
2020-11-14  4:56           ` Heinrich Schuchardt
2020-11-16  5:02             ` Jonathan Gray
2020-11-09 13:58     ` Heinrich Schuchardt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fddcca45-be85-6dc3-3b97-c7065b63aa40@gmx.de \
    --to=xypron.glpk@gmx.de \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.