Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test/parser: Add test for recent RHCOS grub2 config
Add a test for a RHCOS grub2 boot config, using the ignition firstboot facility. Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
- Loading branch information
Showing
3 changed files
with
233 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,194 @@ | ||
# | ||
# DO NOT EDIT THIS FILE | ||
# | ||
# It is automatically generated by grub2-mkconfig using templates | ||
# from /etc/grub.d and settings from /etc/default/grub | ||
# | ||
|
||
### BEGIN /etc/grub.d/00_header ### | ||
set pager=1 | ||
|
||
if [ -f ${config_directory}/grubenv ]; then | ||
load_env -f ${config_directory}/grubenv | ||
elif [ -s $prefix/grubenv ]; then | ||
load_env | ||
fi | ||
if [ "${next_entry}" ] ; then | ||
set default="${next_entry}" | ||
set next_entry= | ||
save_env next_entry | ||
set boot_once=true | ||
else | ||
set default="${saved_entry}" | ||
fi | ||
|
||
if [ x"${feature_menuentry_id}" = xy ]; then | ||
menuentry_id_option="--id" | ||
else | ||
menuentry_id_option="" | ||
fi | ||
|
||
export menuentry_id_option | ||
|
||
if [ "${prev_saved_entry}" ]; then | ||
set saved_entry="${prev_saved_entry}" | ||
save_env saved_entry | ||
set prev_saved_entry= | ||
save_env prev_saved_entry | ||
set boot_once=true | ||
fi | ||
|
||
function savedefault { | ||
if [ -z "${boot_once}" ]; then | ||
saved_entry="${chosen}" | ||
save_env saved_entry | ||
fi | ||
} | ||
|
||
function load_video { | ||
if [ x$feature_all_video_module = xy ]; then | ||
insmod all_video | ||
else | ||
insmod efi_gop | ||
insmod efi_uga | ||
insmod ieee1275_fb | ||
insmod vbe | ||
insmod vga | ||
insmod video_bochs | ||
insmod video_cirrus | ||
fi | ||
} | ||
|
||
terminal_output ofconsole | ||
if [ x$feature_timeout_style = xy ] ; then | ||
set timeout_style=menu | ||
set timeout=1 | ||
# Fallback normal timeout code in case the timeout_style feature is | ||
# unavailable. | ||
else | ||
set timeout=1 | ||
fi | ||
### END /etc/grub.d/00_header ### | ||
|
||
### BEGIN /etc/grub.d/01_menu_auto_hide ### | ||
if [ "${boot_success}" = "1" -o "${boot_indeterminate}" = "1" ]; then | ||
set last_boot_ok=1 | ||
else | ||
set last_boot_ok=0 | ||
fi | ||
|
||
# Reset boot_indeterminate after a successful boot | ||
if [ "${boot_success}" = "1" ] ; then | ||
set boot_indeterminate=0 | ||
# Avoid boot_indeterminate causing the menu to be hidden more then once | ||
elif [ "${boot_indeterminate}" = "1" ]; then | ||
set boot_indeterminate=2 | ||
fi | ||
set boot_success=0 | ||
save_env boot_success boot_indeterminate | ||
|
||
if [ x$feature_timeout_style = xy ] ; then | ||
if [ "${menu_show_once}" ]; then | ||
unset menu_show_once | ||
save_env menu_show_once | ||
set timeout_style=menu | ||
set timeout=60 | ||
elif [ "${menu_auto_hide}" -a "${last_boot_ok}" = "1" ]; then | ||
set orig_timeout_style=${timeout_style} | ||
set orig_timeout=${timeout} | ||
if [ "${fastboot}" = "1" ]; then | ||
# timeout_style=menu + timeout=0 avoids the countdown code keypress check | ||
set timeout_style=menu | ||
set timeout=0 | ||
else | ||
set timeout_style=hidden | ||
set timeout=1 | ||
fi | ||
fi | ||
fi | ||
### END /etc/grub.d/01_menu_auto_hide ### | ||
|
||
### BEGIN /etc/grub.d/01_users ### | ||
if [ -f ${prefix}/user.cfg ]; then | ||
source ${prefix}/user.cfg | ||
if [ -n "${GRUB2_PASSWORD}" ]; then | ||
set superusers="root" | ||
export superusers | ||
password_pbkdf2 root ${GRUB2_PASSWORD} | ||
fi | ||
fi | ||
### END /etc/grub.d/01_users ### | ||
|
||
### BEGIN /etc/grub.d/02_ignition_firstboot ### | ||
# We store the file on the /boot/ partition so find the | ||
# boot partition. On UEFI this may different than the grub | ||
# $root so we search for it here. | ||
# https://github.com/coreos/ignition-dracut/issues/51 | ||
search --set=bootpart --label boot | ||
# Determine if this is a first boot and set the variable | ||
# to be used later on the kernel command line. | ||
set ignition_firstboot="" | ||
if [ -f "(${bootpart})/ignition.firstboot" ]; then | ||
# default to dhcp networking parameters to be used with ignition | ||
set ignition_network_kcmdline='rd.neednet=1 ip=dhcp' | ||
|
||
# source in the `ignition.firstboot` file which could override the | ||
# above $ignition_network_kcmdline with static networking config. | ||
# This override feature is primarily used by coreos-installer to | ||
# persist static networking config provided during install to the | ||
# first boot of the machine. | ||
source "(${bootpart})/ignition.firstboot" | ||
|
||
# we support setting variables in the | ||
set ignition_firstboot="ignition.firstboot $ignition_network_kcmdline $ignition_extra_kcmdline" | ||
fi | ||
### END /etc/grub.d/02_ignition_firstboot ### | ||
|
||
### BEGIN /etc/grub.d/10_linux_bls ### | ||
|
||
### END /etc/grub.d/10_linux_bls ### | ||
|
||
### BEGIN /etc/grub.d/15_ostree ### | ||
menuentry 'Red Hat Enterprise Linux CoreOS 42.80.20191030.0 (Ootpa) (ostree)' --class gnu-linux --class gnu --class os --unrestricted 'ostree-0-645e1535-a6f3-4fa6-a82c-b8c032619a7b' { | ||
load_video | ||
set gfxpayload=keep | ||
insmod gzio | ||
insmod part_gpt | ||
insmod ext2 | ||
set root='hd0,gpt2' | ||
if [ x$feature_platform_search_hint = xy ]; then | ||
search --no-floppy --fs-uuid --set=root --hint='hd0,gpt2' 645e1535-a6f3-4fa6-a82c-b8c032619a7b | ||
else | ||
search --no-floppy --fs-uuid --set=root 645e1535-a6f3-4fa6-a82c-b8c032619a7b | ||
fi | ||
linux /ostree/rhcos-6264e4be818e20cf1021bd6e7aa8c76147ce07dec186468c7dfbbc9c5dfc7d8b/vmlinuz-4.18.0-80.11.2.el8_0.ppc64le console=tty0 console=hvc0,115200n8 rootflags=defaults,prjquota rw $ignition_firstboot root=UUID=8d8a5c3b-97e6-4d7b-bb87-206af5a9d851 ostree=/ostree/boot.0/rhcos/6264e4be818e20cf1021bd6e7aa8c76147ce07dec186468c7dfbbc9c5dfc7d8b/0 ignition.platform.id=openstack | ||
initrd /ostree/rhcos-6264e4be818e20cf1021bd6e7aa8c76147ce07dec186468c7dfbbc9c5dfc7d8b/initramfs-4.18.0-80.11.2.el8_0.ppc64le.img | ||
} | ||
### END /etc/grub.d/15_ostree ### | ||
|
||
### BEGIN /etc/grub.d/20_linux_xen ### | ||
### END /etc/grub.d/20_linux_xen ### | ||
|
||
### BEGIN /etc/grub.d/20_ppc_terminfo ### | ||
terminfo -g 80x24 ofconsole | ||
### END /etc/grub.d/20_ppc_terminfo ### | ||
|
||
### BEGIN /etc/grub.d/30_os-prober ### | ||
### END /etc/grub.d/30_os-prober ### | ||
|
||
### BEGIN /etc/grub.d/30_uefi-firmware ### | ||
### END /etc/grub.d/30_uefi-firmware ### | ||
|
||
### BEGIN /etc/grub.d/40_custom ### | ||
# This file provides an easy way to add custom menu entries. Simply type the | ||
# menu entries you want to add after this comment. Be careful not to change | ||
# the 'exec tail' line above. | ||
### END /etc/grub.d/40_custom ### | ||
|
||
### BEGIN /etc/grub.d/41_custom ### | ||
if [ -f ${config_directory}/custom.cfg ]; then | ||
source ${config_directory}/custom.cfg | ||
elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then | ||
source $prefix/custom.cfg; | ||
fi | ||
### END /etc/grub.d/41_custom ### |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
|
||
#include "parser-test.h" | ||
|
||
void run_test(struct parser_test *test) | ||
{ | ||
struct discover_boot_option *opt; | ||
struct discover_context *ctx; | ||
struct discover_device *dev; | ||
|
||
ctx = test->ctx; | ||
|
||
dev = test_create_device(test, "bootdev"); | ||
dev->label = "boot"; | ||
device_handler_add_device(test->handler, dev); | ||
|
||
test_read_conf_file(test, "grub2-rhcos-ootpa.conf", | ||
"/grub/grub.cfg"); | ||
|
||
/* add the ignition.firstboot file on the boot-labelled partition, | ||
* to check that we can source this correctly */ | ||
test_add_file_string(test, dev, | ||
"/ignition.firstboot", | ||
"ignition_extra_kcmdline=meep\n"); | ||
|
||
test_run_parser(test, "grub2"); | ||
|
||
check_boot_option_count(ctx, 1); | ||
|
||
opt = get_boot_option(ctx, 0); | ||
check_name(opt, | ||
"Red Hat Enterprise Linux CoreOS 42.80.20191030.0 (Ootpa) (ostree)"); | ||
check_args(opt, "console=tty0 console=hvc0,115200n8 " | ||
"rootflags=defaults,prjquota rw " | ||
"ignition.firstboot rd.neednet=1 ip=dhcp meep " | ||
"root=UUID=8d8a5c3b-97e6-4d7b-bb87-206af5a9d851 " | ||
"ostree=/ostree/boot.0/rhcos/6264e4be818e20cf1021bd6e7aa8c76147ce07dec186468c7dfbbc9c5dfc7d8b/0 " | ||
"ignition.platform.id=openstack"); | ||
} |