[PATCH 00/14] discover/grub2: Add support for grub2 file specifiers
Jeremy Kerr
jk at ozlabs.org
Wed Nov 20 13:42:52 AEDT 2019
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
---
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
--
2.20.1
More information about the Petitboot
mailing list