提交 e0f084bf 编写于 作者: J Jan Kiszka 提交者: Anthony Liguori

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: NJan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: NAnthony Liguori <aliguori@us.ibm.com>
上级 dda9b29f
...@@ -2402,6 +2402,16 @@ static int parse_bootdevices(char *devices) ...@@ -2402,6 +2402,16 @@ static int parse_bootdevices(char *devices)
return bitmap; 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) static void numa_add(const char *optarg)
{ {
char option[128]; char option[128];
...@@ -5111,9 +5121,10 @@ int main(int argc, char **argv, char **envp) ...@@ -5111,9 +5121,10 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_boot: case QEMU_OPTION_boot:
{ {
static const char * const params[] = { static const char * const params[] = {
"order", NULL "order", "once", NULL
}; };
char buf[sizeof(boot_devices)]; char buf[sizeof(boot_devices)];
char *standard_boot_devices;
int legacy = 0; int legacy = 0;
if (!strchr(optarg, '=')) { if (!strchr(optarg, '=')) {
...@@ -5131,6 +5142,16 @@ int main(int argc, char **argv, char **envp) ...@@ -5131,6 +5142,16 @@ int main(int argc, char **argv, char **envp)
boot_devices_bitmap = parse_bootdevices(buf); boot_devices_bitmap = parse_bootdevices(buf);
pstrcpy(boot_devices, sizeof(boot_devices), 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; break;
case QEMU_OPTION_fda: case QEMU_OPTION_fda:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册