diff options
Diffstat (limited to 'ui/ncurses')
-rw-r--r-- | ui/ncurses/nc-config-help.c | 8 | ||||
-rw-r--r-- | ui/ncurses/nc-config.c | 44 | ||||
-rw-r--r-- | ui/ncurses/nc-cui.c | 4 | ||||
-rw-r--r-- | ui/ncurses/nc-sysinfo.c | 9 |
4 files changed, 62 insertions, 3 deletions
diff --git a/ui/ncurses/nc-config-help.c b/ui/ncurses/nc-config-help.c index 6b0d59f..7c3bf35 100644 --- a/ui/ncurses/nc-config-help.c +++ b/ui/ncurses/nc-config-help.c @@ -50,4 +50,10 @@ the pb-discover server will use these details.\n" "\n" "Disk R/W: Certain bootloader configurations may request write access to \ disks to save information or update parameters (eg. GRUB2). " -"Use this option to control access to disks.\n"); +"Use this option to control access to disks.\n" +"\n" +"Pre-boot check: Petitboot is able to check a payload for compatibility before \ +booting it. If this check fails, petitboot will determine that the payload will \ +not properly boot on this platform, and abort the boot. This configuration \ +option allows skipping this check.\n" +""); diff --git a/ui/ncurses/nc-config.c b/ui/ncurses/nc-config.c index 943ee8a..e231f4b 100644 --- a/ui/ncurses/nc-config.c +++ b/ui/ncurses/nc-config.c @@ -34,7 +34,7 @@ #include "nc-config.h" #include "nc-widgets.h" -#define N_FIELDS 51 +#define N_FIELDS 53 extern struct help_text config_help_text; @@ -70,6 +70,8 @@ struct config_screen { bool ipmi_mailbox; bool net_override; + bool preboot_check_enabled; + struct { struct nc_widget_label *autoboot_l; struct nc_widget_select *autoboot_f; @@ -124,6 +126,9 @@ struct config_screen { struct nc_widget_button *update_password_l; + struct nc_widget_label *preboot_check_l; + struct nc_widget_select *preboot_check_f; + struct nc_widget_label *net_override_l; struct nc_widget_label *safe_mode; struct nc_widget_button *ok_b; @@ -364,6 +369,9 @@ static int screen_process_form(struct config_screen *screen) } } + config->preboot_check_enabled = widget_select_get_value( + screen->widgets.preboot_check_f); + config->safe_mode = false; rc = cui_send_config(screen->cui, config); talloc_free(config); @@ -735,6 +743,17 @@ static void config_screen_layout_widgets(struct config_screen *screen) y += 1; } + wl = widget_label_base(screen->widgets.preboot_check_l); + widget_set_visible(wl, true); + widget_move(wl, y, screen->label_x); + + wf = widget_select_base(screen->widgets.preboot_check_f); + widget_set_visible(wf, true); + widget_move(wf, y, screen->field_x); + y += widget_height(wf); + + y += 1; + widget_move(widget_button_base(screen->widgets.ok_b), y, screen->field_x); widget_move(widget_button_base(screen->widgets.help_b), @@ -770,6 +789,15 @@ static void config_screen_autoboot_change(void *arg, int value) widgetset_post(screen->widgetset); } +static void config_screen_preboot_check_change(void *arg, int value) +{ + struct config_screen *screen = arg; + screen->preboot_check_enabled = !!value; + widgetset_unpost(screen->widgetset); + config_screen_layout_widgets(screen); + widgetset_post(screen->widgetset); +} + static void config_screen_add_device(void *arg) { struct config_screen *screen = arg; @@ -1196,6 +1224,20 @@ static void config_screen_setup_widgets(struct config_screen *screen, _("Update system password"), password_click, screen); #endif + screen->preboot_check_enabled = config->preboot_check_enabled; + screen->widgets.preboot_check_l = widget_new_label(set, 0, 0, + _("Pre-boot check:")); + screen->widgets.preboot_check_f = widget_new_select(set, 0, 0, + COLS - screen->field_x - 1); + + widget_select_add_option(screen->widgets.preboot_check_f, 0, _("Disabled"), + !screen->preboot_check_enabled); + widget_select_add_option(screen->widgets.preboot_check_f, 1, _("Enabled"), + screen->preboot_check_enabled); + + widget_select_on_change(screen->widgets.preboot_check_f, + config_screen_preboot_check_change, screen); + screen->widgets.ok_b = widget_new_button(set, 0, 0, 10, _("OK"), ok_click, screen); screen->widgets.help_b = widget_new_button(set, 0, 0, 10, _("Help"), diff --git a/ui/ncurses/nc-cui.c b/ui/ncurses/nc-cui.c index bd2eb68..66f34b6 100644 --- a/ui/ncurses/nc-cui.c +++ b/ui/ncurses/nc-cui.c @@ -1052,7 +1052,9 @@ static int cui_boot_option_add(struct device *dev, struct boot_option *opt, struct pmenu_item *item; unsigned int j; result = set_menu_items(cui->main->ncm, NULL); - for (j = 0 ; j < cui->main->item_count; j++) { + if (result) + pb_log_fn("unset_menu_items failed: %d\n", result); + for (j = 0 ; j < cui->main->item_count && !result; j++) { item = item_userptr(cui->main->items[j]); if (item->on_execute != menu_plugin_execute) continue; diff --git a/ui/ncurses/nc-sysinfo.c b/ui/ncurses/nc-sysinfo.c index 756f15d..9ca15ff 100644 --- a/ui/ncurses/nc-sysinfo.c +++ b/ui/ncurses/nc-sysinfo.c @@ -81,6 +81,15 @@ static void sysinfo_screen_populate(struct sysinfo_screen *screen, } } + line(NULL); + line("%s", _("Secure & trusted boot")); + line(" %-15s: %s", _("FW verification"), sysinfo->stb_fw_enforcing ? + _("enabled") : _("disabled")); + line(" %-15s: %s", _("FW measurement"), sysinfo->stb_fw_measurement ? + _("enabled") : _("disabled")); + line(" %-15s: %s", _("OS verification"), sysinfo->stb_os_enforcing ? + _("enforcing") : _("disabled")); + if (sysinfo->n_bmc_current) { line(NULL); line("%s", _("BMC current side:")); |