#include "petitboot-paths.h"
#include "devices/message.h"
-#define PBOOT_DEFAULT_ICON "usbpen.png"
+#define PBOOT_DEFAULT_ICON "tux.png"
static const char *default_icon = artwork_pathname(PBOOT_DEFAULT_ICON);
return TWIN_TRUE;
}
-int pboot_start_device_discovery(void)
+int pboot_start_device_discovery(int udev_trigger)
{
int sock;
struct sockaddr_un addr;
twin_set_file(pboot_proc_server_sock, sock, TWIN_READ, &_ctx);
+ if (udev_trigger) {
+ int rc = system("udevtrigger");
+ if (rc)
+ LOG("udevtrigger failed, rc %d\n", rc);
+ }
+
return TWIN_TRUE;
}
{
struct boot_option *opt = data;
char *kexec_opts[10];
- int nr_opts = 2;
+ int i, nr_opts = 2;
- kexec_opts[0] = "/sbin/kexec";
+ kexec_opts[0] = "/usr/sbin/kexec";
kexec_opts[1] = "-f";
- if (opt->initrd_file) {
+ if (opt->initrd_file && *opt->initrd_file) {
kexec_opts[nr_opts] = malloc(10 + strlen(opt->initrd_file));
sprintf(kexec_opts[nr_opts], "--initrd=%s", opt->initrd_file);
nr_opts++;
}
- if (opt->boot_args) {
+ if (opt->boot_args && *opt->boot_args) {
kexec_opts[nr_opts] = malloc(10 + strlen(opt->boot_args));
sprintf(kexec_opts[nr_opts], "--command-line=%s",
opt->boot_args);
kexec_opts[nr_opts++] = opt->boot_image_file;
kexec_opts[nr_opts] = NULL;
+
+ LOG("calling kexec:\n");
+ for (i = 0; i < nr_opts; i++) {
+ LOG("\t'%s'\n", kexec_opts[i]);
+ }
+ fflush(stdout);
+
execv(kexec_opts[0], kexec_opts);
+ pboot_message("kexec failed: %s", strerror(errno));
+ LOG("execv() failed: %s", strerror(errno));
}