[PATCH v10 00/10] enable menu-driven UEFI variable maintenance

Takahiro Akashi takahiro.akashi at linaro.org
Wed Jul 27 03:56:02 CEST 2022


On Wed, Jul 27, 2022 at 10:08:00AM +0900, Takahiro Akashi wrote:
> On Fri, Jul 22, 2022 at 11:45:49AM +0300, Ilias Apalodimas wrote:
> > Hi Kojima-san,
> > 
> > On Fri, 22 Jul 2022 at 05:36, Masahisa Kojima
> > <masahisa.kojima at linaro.org> wrote:
> > >
> > > This series adds the menu-driven UEFI boot variable maintenance
> > > through the "eficonfig" new command.
> > > This series also adds the removable media support in bootmenu.
> > >
> > > Initrd file selection and python based unit test are added in v10.
> > >
> > > Source code can be cloned with:
> > > $ git clone https://git.linaro.org/people/masahisa.kojima/u-boot.git -b eficonfig_upstream_v10
> > >
> > > [Major Changes]
> > > - rebased v2022.07
> > > - add initrd file selection
> > 
> > I tried to load an initrd, which on typical distros is not part of the
> > ESP.  While
> > => ls virtio 0:2
> > 
> > reads the filesystem contents fine, whenI try to navigate to that
> > virtio (and ext4 filesystem) device through the menu I am getting:
> > "Reading volume failed!"
> > 
> > Any ideas?
> 
> eficonfig_select_file()
>   efi_file_open_int()
>     file_open()
>       exists = fs_exists(fh->path);
>       ...
> 
> It seems that fat and ext4 work in a different way against a *directory* here.
> For instance, try this both on fat and ext4
> ("test -e" internally uses fs_exists().)
> => test -e virtio X:Y /
> => echo $?
> 
> I think eficonfig_select_file() can be rewritten with fs_opendir()/fs_readdir().

Correction:
Not all file systems support fs_opendir/fs_readdir interfaces, so this is not
a viable solution in general.
(Please note that UEFI spec says nothing about file systems other than fat, though.)

-Takahiro Akashi

> (Or much more preferably, efi_open(), and essentially fs_exists(), should be fixed.)
> 
> -Takahiro Akashi
> 
> > Regards
> > /Ilias
> > > - add python based unit test
> > > - there is detailed changelog in each commit
> > >
> > > Masahisa Kojima (10):
> > >   efi_loader: move udevice pointer into struct efi_object
> > >   eficonfig: menu-driven addition of UEFI boot option
> > >   eficonfig: add "Edit Boot Option" menu entry
> > >   menu: add KEY_PLUS and KEY_MINUS handling
> > >   eficonfig: add "Change Boot Order" menu entry
> > >   eficonfig: add "Delete Boot Option" menu entry
> > >   bootmenu: add removable media entries
> > >   doc:bootmenu: add description for UEFI boot support
> > >   doc:eficonfig: add documentation for eficonfig command
> > >   test: unit test for eficonfig
> > >
> > >  cmd/Kconfig                                   |    7 +
> > >  cmd/Makefile                                  |    1 +
> > >  cmd/bootmenu.c                                |  106 +-
> > >  cmd/eficonfig.c                               | 2103 +++++++++++++++++
> > >  common/menu.c                                 |    6 +
> > >  configs/sandbox_defconfig                     |    1 +
> > >  doc/usage/cmd/bootmenu.rst                    |   74 +
> > >  doc/usage/cmd/eficonfig.rst                   |   63 +
> > >  doc/usage/index.rst                           |    1 +
> > >  include/efi_config.h                          |   91 +
> > >  include/efi_loader.h                          |   67 +
> > >  include/menu.h                                |    2 +
> > >  lib/efi_driver/efi_block_device.c             |    3 +-
> > >  lib/efi_loader/efi_bootmgr.c                  |    7 +
> > >  lib/efi_loader/efi_boottime.c                 |   52 +-
> > >  lib/efi_loader/efi_console.c                  |   70 +
> > >  lib/efi_loader/efi_disk.c                     |   65 +-
> > >  lib/efi_loader/efi_file.c                     |   75 +-
> > >  lib/efi_loader/efi_helper.c                   |   13 +
> > >  test/py/tests/test_eficonfig/conftest.py      |   40 +
> > >  .../py/tests/test_eficonfig/test_eficonfig.py |  325 +++
> > >  21 files changed, 3109 insertions(+), 63 deletions(-)
> > >  create mode 100644 cmd/eficonfig.c
> > >  create mode 100644 doc/usage/cmd/eficonfig.rst
> > >  create mode 100644 include/efi_config.h
> > >  create mode 100644 test/py/tests/test_eficonfig/conftest.py
> > >  create mode 100644 test/py/tests/test_eficonfig/test_eficonfig.py
> > >
> > > --
> > > 2.17.1
> > >


More information about the U-Boot mailing list