aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2009-07-02 00:19:02 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2009-07-16 08:28:12 -0500
commite0f084bfc941109047055e229d70695af11a0541 (patch)
tree22977b89bba43f5e626c1282b0925d1330535ca1
parentdda9b29f61b198681346191a52be417bc195b0df (diff)
Add boot-once support
This allows to specify an exceptional boot order only for the first startup of the guest. After reboot, qemu will switch back to the default order (or what was specified via 'order='). Makes installing from CD images and then booting the freshly set up harddisk more handy. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--vl.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/vl.c b/vl.c
index 963b8999f7..7360d4f021 100644
--- a/vl.c
+++ b/vl.c
@@ -2402,6 +2402,16 @@ static int parse_bootdevices(char *devices)
return bitmap;
}
+static void restore_boot_devices(void *opaque)
+{
+ char *standard_boot_devices = opaque;
+
+ qemu_boot_set(standard_boot_devices);
+
+ qemu_unregister_reset(restore_boot_devices, standard_boot_devices);
+ qemu_free(standard_boot_devices);
+}
+
static void numa_add(const char *optarg)
{
char option[128];
@@ -5111,9 +5121,10 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_boot:
{
static const char * const params[] = {
- "order", NULL
+ "order", "once", NULL
};
char buf[sizeof(boot_devices)];
+ char *standard_boot_devices;
int legacy = 0;
if (!strchr(optarg, '=')) {
@@ -5131,6 +5142,16 @@ int main(int argc, char **argv, char **envp)
boot_devices_bitmap = parse_bootdevices(buf);
pstrcpy(boot_devices, sizeof(boot_devices), buf);
}
+ if (!legacy) {
+ if (get_param_value(buf, sizeof(buf),
+ "once", optarg)) {
+ boot_devices_bitmap |= parse_bootdevices(buf);
+ standard_boot_devices = qemu_strdup(boot_devices);
+ pstrcpy(boot_devices, sizeof(boot_devices), buf);
+ qemu_register_reset(restore_boot_devices,
+ standard_boot_devices);
+ }
+ }
}
break;
case QEMU_OPTION_fda: