+ screen->widgets.autoboot_l = widget_new_label(set, 0, 0,
+ _("Autoboot:"));
+ screen->widgets.autoboot_f = widget_new_select(set, 0, 0, 55);
+
+ widget_select_on_change(screen->widgets.autoboot_f,
+ config_screen_autoboot_change, screen);
+
+ screen->widgets.boot_device_f = widget_new_select(set, 0, 0, 55);
+
+ widget_select_add_option(screen->widgets.autoboot_f,
+ AUTOBOOT_DISABLED,
+ _("Don't autoboot"),
+ screen->autoboot_type ==
+ AUTOBOOT_DISABLED);
+ widget_select_add_option(screen->widgets.autoboot_f,
+ AUTOBOOT_ANY,
+ _("Autoboot from any "
+ "disk/network device"),
+ screen->autoboot_type ==
+ AUTOBOOT_ANY);
+ widget_select_add_option(screen->widgets.autoboot_f,
+ AUTOBOOT_ONE,
+ _("Only autoboot from a specific "
+ "disk/network device"),
+ screen->autoboot_type ==
+ AUTOBOOT_ONE);
+
+ found = false;
+
+ for (i = 0; i < sysinfo->n_blockdevs; i++) {
+ struct blockdev_info *bd = sysinfo->blockdevs[i];
+ bool selected;
+ char *label;
+
+ selected = config->boot_device &&
+ !strcmp(config->boot_device, bd->uuid);
+ if (selected)
+ found = true;
+
+ label = talloc_asprintf(screen, _("disk: %s [uuid: %s]"),
+ bd->name, bd->uuid);
+
+ widget_select_add_option(screen->widgets.boot_device_f, i,
+ label, selected);
+ }
+
+ for (i = 0; i < sysinfo->n_interfaces; i++) {
+ struct interface_info *info = sysinfo->interfaces[i];
+ char *label, mac[20];
+ bool selected;
+
+ mac_str(info->hwaddr, info->hwaddr_size, mac, sizeof(mac));
+ selected = config->boot_device &&
+ !strcmp(config->boot_device, mac);
+ if (selected)
+ found = true;
+
+ label = talloc_asprintf(screen, _("net: %s [mac: %s]"),
+ info->name, mac);
+
+ widget_select_add_option(screen->widgets.boot_device_f,
+ i + sysinfo->n_blockdevs,
+ label, selected);
+ }
+
+ if (screen->autoboot_type == AUTOBOOT_ONE && !found) {
+ char *label;
+
+ label = talloc_asprintf(screen, _("Unknown UUID: %s"),
+ config->boot_device);
+
+ widget_select_add_option(screen->widgets.boot_device_f, -1,
+ label, true);
+ }