summaryrefslogtreecommitdiffstats
path: root/ui/ncurses
diff options
context:
space:
mode:
Diffstat (limited to 'ui/ncurses')
-rw-r--r--ui/ncurses/nc-config-help.c8
-rw-r--r--ui/ncurses/nc-config.c44
-rw-r--r--ui/ncurses/nc-cui.c4
-rw-r--r--ui/ncurses/nc-sysinfo.c9
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:"));
OpenPOWER on IntegriCloud