[PATCH 00/14] discover/grub2: Add support for grub2 file specifiers
Samuel Mendoza-Jonas
sam at mendozajonas.com
Mon Dec 2 16:51:05 AEDT 2019
On Wed, 2019-11-20 at 10:42 +0800, Jeremy Kerr wrote:
> This series implements grub2-syle file references, of the form:
>
> (device)/path
>
> - as documented at
> https://www.gnu.org/software/grub/manual/grub/html_node/File-name-syntax.html
>
> This allows cross-device specifiers for boot option resources, as
> well
> as general scripting (eg., the '-f' tests, and a new 'source'
> command).
>
> The (device) component of these specifiers corresponds to the
> petitboot
> device ID, which in turn is just the kernel name for the device. As
> with
> actual grub, these names may be volatile, so are rarely used directly
> in
> scripts. Instead, most scripts will use the 'search' function to
> resolve
> a UUID or label into one of these IDs. To enable this, we extend
> support
> for proper resolution for the search builtin.
>
> We also add a 'source' command, supporting this specifier syntax.
>
> Finally, this change adds a couple of tests using example RHEL8 boot
> configs, which depend on these features.
>
> Cheers,
>
>
> Jeremy
Belated review but looks good! I look forward to the first bug report
titled "Petitboot only supports 10 nested grub configurations".
Reviewed-by: Samuel Mendoza-Jonas <sam at mendozajonas.com>
>
> ---
>
>
> Jeremy Kerr (14):
> discover/grub2: 'search' set-variable defaults to root
> discover/grub2: Use getopt for `search` argument parsing
> discover/grub2: test for (ignored) --no-floppy argument
> discover/grub2: Add support for UUID and label for 'search' command
> discover/grub2: expose a struct for grub2 file references
> discover/grub2: Add parsing code for grub2 file specifiers
> discover/grub2: add support for grub2-style path specifiers in
> resources
> discover/grub2: Allow (device)/path references in general script
> usage
> discover/grub2: Add a reference from script to parser
> discover/grub2: expose internal parse function
> discover/grub2: make statements_execute non-static
> discover/grub2: implement 'source' command
> test/parser: Add test for recent RHCOS grub2 config
> test/parser: Add RHEL8 grub config test
>
> discover/grub2/blscfg.c | 19 +-
> discover/grub2/builtins.c | 208 +++++++++++++++-
> --
> discover/grub2/grub2-parser.y | 17 +-
> discover/grub2/grub2.c | 110 +++++++--
> discover/grub2/grub2.h | 32 ++-
> discover/grub2/script.c | 3 +-
> test/parser/Makefile.am | 11 +
> test/parser/data/grub2-rhcos-ootpa.conf | 194 ++++++++++++++++
> test/parser/data/grub2-rhel8.conf | 190 ++++++++++++++++
> test/parser/test-grub2-devpath-scripting.c | 56 +++++
> test/parser/test-grub2-devpath.c | 88 ++++++++
> test/parser/test-grub2-rhcos-ootpa.c | 38 ++++
> test/parser/test-grub2-rhel8.c | 21 ++
> test/parser/test-grub2-search-args.c | 35 +++
> test/parser/test-grub2-search-label.c | 47 ++++
> test/parser/test-grub2-search-uuid.c | 55 +++++
> test/parser/test-grub2-source-functions.c | 46 ++++
> .../test-grub2-source-recursion-infinite.c | 43 ++++
> test/parser/test-grub2-source-recursion.c | 58 +++++
> test/parser/test-grub2-source.c | 54 +++++
> 20 files changed, 1254 insertions(+), 71 deletions(-)
> create mode 100644 test/parser/data/grub2-rhcos-ootpa.conf
> create mode 100644 test/parser/data/grub2-rhel8.conf
> create mode 100644 test/parser/test-grub2-devpath-scripting.c
> create mode 100644 test/parser/test-grub2-devpath.c
> create mode 100644 test/parser/test-grub2-rhcos-ootpa.c
> create mode 100644 test/parser/test-grub2-rhel8.c
> create mode 100644 test/parser/test-grub2-search-args.c
> create mode 100644 test/parser/test-grub2-search-label.c
> create mode 100644 test/parser/test-grub2-search-uuid.c
> create mode 100644 test/parser/test-grub2-source-functions.c
> create mode 100644 test/parser/test-grub2-source-recursion-
> infinite.c
> create mode 100644 test/parser/test-grub2-source-recursion.c
> create mode 100644 test/parser/test-grub2-source.c
>
More information about the Petitboot
mailing list