summaryrefslogtreecommitdiffstats
path: root/src/guestfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/guestfs.c')
-rw-r--r--src/guestfs.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/guestfs.c b/src/guestfs.c
index db6db910..5750a4f4 100644
--- a/src/guestfs.c
+++ b/src/guestfs.c
@@ -174,6 +174,7 @@ struct guestfs_h
char *path; /* Path to kernel, initrd. */
char *qemu; /* Qemu binary. */
char *append; /* Append to kernel command line. */
+ char *kernel; /* Override appliance kernel. */
int memsize; /* Size of RAM (megabytes). */
@@ -249,6 +250,12 @@ guestfs_create (void)
if (!g->append) goto error;
}
+ str = getenv ("LIBGUESTFS_KERNEL");
+ if (str) {
+ g->kernel = strdup (str);
+ if (!g->kernel) goto error;
+ }
+
/* Choose a suitable memory size. Previously we tried to choose
* a minimal memory size, but this isn't really necessary since
* recent QEMU and KVM don't do anything nasty like locking
@@ -674,6 +681,22 @@ guestfs_get_append (guestfs_h *g)
}
int
+guestfs_set_kernel (guestfs_h *g, const char *kernel)
+{
+ free (g->kernel);
+ g->kernel = NULL;
+
+ g->kernel = kernel ? safe_strdup (g, kernel) : NULL;
+ return 0;
+}
+
+const char *
+guestfs_get_kernel (guestfs_h *g)
+{
+ return g->kernel;
+}
+
+int
guestfs_set_memsize (guestfs_h *g, int memsize)
{
g->memsize = memsize;
@@ -1058,7 +1081,7 @@ guestfs_launch (guestfs_h *g)
add_cmdline (g, memsize_str);
add_cmdline (g, "-no-reboot"); /* Force exit instead of reboot on panic */
add_cmdline (g, "-kernel");
- add_cmdline (g, (char *) kernel);
+ add_cmdline (g, g->kernel ? : (char *) kernel);
add_cmdline (g, "-initrd");
add_cmdline (g, (char *) initrd);
add_cmdline (g, "-append");