mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-12 04:58:32 +03:00
Force QMP capability probing
Remove the qmpOnly argument of virQEMUCapsNewForBinaryInternal and instead always assume it's true. This effectively sets the minimum QEMU version to 1.2.0. Signed-off-by: Ján Tomko <jtomko@redhat.com> Reviewed-by: Andrea Bolognani <abologna@redhat.com>
This commit is contained in:
parent
a5a777a8ba
commit
a7424faff0
4
cfg.mk
4
cfg.mk
@ -1177,7 +1177,7 @@ exclude_file_name_regexp--sc_prohibit_close = \
|
|||||||
(\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/vir.+mock\.c|tests/commandhelper\.c)$$)
|
(\.p[yl]$$|\.spec\.in$$|^docs/|^(src/util/virfile\.c|src/libvirt-stream\.c|tests/vir.+mock\.c|tests/commandhelper\.c)$$)
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
exclude_file_name_regexp--sc_prohibit_empty_lines_at_EOF = \
|
||||||
(^tests/(qemuhelp|virhostcpu|virpcitest)data/|docs/js/.*\.js|docs/fonts/.*\.woff|\.diff|tests/virconfdata/no-newline\.conf$$)
|
(^tests/(virhostcpu|virpcitest)data/|docs/js/.*\.js|docs/fonts/.*\.woff|\.diff|tests/virconfdata/no-newline\.conf$$)
|
||||||
|
|
||||||
_src2=src/(util/vircommand|libvirt|lxc/lxc_controller|locking/lock_daemon|logging/log_daemon|remote/remote_daemon)
|
_src2=src/(util/vircommand|libvirt|lxc/lxc_controller|locking/lock_daemon|logging/log_daemon|remote/remote_daemon)
|
||||||
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
exclude_file_name_regexp--sc_prohibit_fork_wrappers = \
|
||||||
@ -1225,7 +1225,7 @@ exclude_file_name_regexp--sc_require_config_h_first = \
|
|||||||
^(examples/|tools/virsh-edit\.c$$)
|
^(examples/|tools/virsh-edit\.c$$)
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_trailing_blank = \
|
exclude_file_name_regexp--sc_trailing_blank = \
|
||||||
/qemuhelpdata/|/sysinfodata/.*\.data|/virhostcpudata/.*\.cpuinfo|^gnulib/local/.*/.*diff$$
|
/sysinfodata/.*\.data|/virhostcpudata/.*\.cpuinfo|^gnulib/local/.*/.*diff$$
|
||||||
|
|
||||||
exclude_file_name_regexp--sc_unmarked_diagnostics = \
|
exclude_file_name_regexp--sc_unmarked_diagnostics = \
|
||||||
^(docs/apibuild.py|tests/virt-aa-helper-test|docs/js/.*\.js)$$
|
^(docs/apibuild.py|tests/virt-aa-helper-test|docs/js/.*\.js)$$
|
||||||
|
@ -626,28 +626,6 @@ virQEMUCapsFindTarget(virArch hostarch,
|
|||||||
return guestarch;
|
return guestarch;
|
||||||
}
|
}
|
||||||
|
|
||||||
static virCommandPtr
|
|
||||||
virQEMUCapsProbeCommand(const char *qemu,
|
|
||||||
virQEMUCapsPtr qemuCaps,
|
|
||||||
uid_t runUid, gid_t runGid)
|
|
||||||
{
|
|
||||||
virCommandPtr cmd = virCommandNew(qemu);
|
|
||||||
|
|
||||||
if (qemuCaps) {
|
|
||||||
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NO_USER_CONFIG))
|
|
||||||
virCommandAddArg(cmd, "-no-user-config");
|
|
||||||
else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NODEFCONFIG))
|
|
||||||
virCommandAddArg(cmd, "-nodefconfig");
|
|
||||||
}
|
|
||||||
|
|
||||||
virCommandAddEnvPassCommon(cmd);
|
|
||||||
virCommandClearCaps(cmd);
|
|
||||||
virCommandSetGID(cmd, runGid);
|
|
||||||
virCommandSetUID(cmd, runUid);
|
|
||||||
|
|
||||||
return cmd;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
virQEMUCapsSetDefaultMachine(virQEMUCapsPtr qemuCaps,
|
virQEMUCapsSetDefaultMachine(virQEMUCapsPtr qemuCaps,
|
||||||
@ -662,282 +640,6 @@ virQEMUCapsSetDefaultMachine(virQEMUCapsPtr qemuCaps,
|
|||||||
qemuCaps->machineTypes[0] = tmp;
|
qemuCaps->machineTypes[0] = tmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Format is:
|
|
||||||
* <machine> <desc> [(default)|(alias of <canonical>)]
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
virQEMUCapsParseMachineTypesStr(const char *output,
|
|
||||||
virQEMUCapsPtr qemuCaps)
|
|
||||||
{
|
|
||||||
const char *p = output;
|
|
||||||
const char *next;
|
|
||||||
size_t defIdx = 0;
|
|
||||||
|
|
||||||
do {
|
|
||||||
const char *t;
|
|
||||||
char *name;
|
|
||||||
char *canonical = NULL;
|
|
||||||
|
|
||||||
if ((next = strchr(p, '\n')))
|
|
||||||
++next;
|
|
||||||
|
|
||||||
if (STRPREFIX(p, "Supported machines are:"))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!(t = strchr(p, ' ')) || (next && t >= next))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (VIR_STRNDUP(name, p, t - p) < 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
p = t;
|
|
||||||
if ((t = strstr(p, "(default)")) && (!next || t < next))
|
|
||||||
defIdx = qemuCaps->nmachineTypes;
|
|
||||||
|
|
||||||
if ((t = strstr(p, "(alias of ")) && (!next || t < next)) {
|
|
||||||
p = t + strlen("(alias of ");
|
|
||||||
if (!(t = strchr(p, ')')) || (next && t >= next)) {
|
|
||||||
VIR_FREE(name);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_STRNDUP(canonical, p, t - p) < 0) {
|
|
||||||
VIR_FREE(name);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_REALLOC_N(qemuCaps->machineTypes, qemuCaps->nmachineTypes + 1) < 0) {
|
|
||||||
VIR_FREE(name);
|
|
||||||
VIR_FREE(canonical);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
qemuCaps->nmachineTypes++;
|
|
||||||
if (canonical) {
|
|
||||||
qemuCaps->machineTypes[qemuCaps->nmachineTypes-1].name = canonical;
|
|
||||||
qemuCaps->machineTypes[qemuCaps->nmachineTypes-1].alias = name;
|
|
||||||
} else {
|
|
||||||
qemuCaps->machineTypes[qemuCaps->nmachineTypes-1].name = name;
|
|
||||||
qemuCaps->machineTypes[qemuCaps->nmachineTypes-1].alias = NULL;
|
|
||||||
}
|
|
||||||
/* When parsing from command line we don't have information about maxCpus */
|
|
||||||
qemuCaps->machineTypes[qemuCaps->nmachineTypes-1].maxCpus = 0;
|
|
||||||
qemuCaps->machineTypes[qemuCaps->nmachineTypes-1].hotplugCpus = false;
|
|
||||||
} while ((p = next));
|
|
||||||
|
|
||||||
|
|
||||||
if (defIdx)
|
|
||||||
virQEMUCapsSetDefaultMachine(qemuCaps, defIdx);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
virQEMUCapsProbeMachineTypes(virQEMUCapsPtr qemuCaps,
|
|
||||||
uid_t runUid, gid_t runGid)
|
|
||||||
{
|
|
||||||
char *output;
|
|
||||||
int ret = -1;
|
|
||||||
virCommandPtr cmd;
|
|
||||||
int status;
|
|
||||||
|
|
||||||
/* Make sure the binary we are about to try exec'ing exists.
|
|
||||||
* Technically we could catch the exec() failure, but that's
|
|
||||||
* in a sub-process so it's hard to feed back a useful error.
|
|
||||||
*/
|
|
||||||
if (!virFileIsExecutable(qemuCaps->binary)) {
|
|
||||||
virReportSystemError(errno, _("Cannot find QEMU binary %s"),
|
|
||||||
qemuCaps->binary);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd = virQEMUCapsProbeCommand(qemuCaps->binary, qemuCaps, runUid, runGid);
|
|
||||||
virCommandAddArgList(cmd, "-M", "?", NULL);
|
|
||||||
virCommandSetOutputBuffer(cmd, &output);
|
|
||||||
|
|
||||||
/* Ignore failure from older qemu that did not understand '-M ?'. */
|
|
||||||
if (virCommandRun(cmd, &status) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virQEMUCapsParseMachineTypesStr(output, qemuCaps) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
VIR_FREE(output);
|
|
||||||
virCommandFree(cmd);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
typedef int
|
|
||||||
(*virQEMUCapsParseCPUModels)(const char *output,
|
|
||||||
virQEMUCapsPtr qemuCaps);
|
|
||||||
|
|
||||||
/* Format:
|
|
||||||
* <arch> <model>
|
|
||||||
* qemu-0.13 encloses some model names in []:
|
|
||||||
* <arch> [<model>]
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
virQEMUCapsParseX86Models(const char *output,
|
|
||||||
virQEMUCapsPtr qemuCaps)
|
|
||||||
{
|
|
||||||
const char *p = output;
|
|
||||||
const char *next;
|
|
||||||
virDomainCapsCPUModelsPtr cpus;
|
|
||||||
|
|
||||||
if (!(cpus = virDomainCapsCPUModelsNew(0)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
do {
|
|
||||||
const char *t;
|
|
||||||
size_t len;
|
|
||||||
|
|
||||||
if ((next = strchr(p, '\n')))
|
|
||||||
next++;
|
|
||||||
|
|
||||||
if (!(t = strchr(p, ' ')) || (next && t >= next))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!STRPREFIX(p, "x86"))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
p = t;
|
|
||||||
while (*p == ' ')
|
|
||||||
p++;
|
|
||||||
|
|
||||||
if (*p == '\0' || *p == '\n')
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (next)
|
|
||||||
len = next - p - 1;
|
|
||||||
else
|
|
||||||
len = strlen(p);
|
|
||||||
|
|
||||||
if (len > 2 && *p == '[' && p[len - 1] == ']') {
|
|
||||||
p++;
|
|
||||||
len -= 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virDomainCapsCPUModelsAdd(cpus, p, len,
|
|
||||||
VIR_DOMCAPS_CPU_USABLE_UNKNOWN, NULL) < 0)
|
|
||||||
goto error;
|
|
||||||
} while ((p = next));
|
|
||||||
|
|
||||||
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) {
|
|
||||||
virDomainCapsCPUModelsPtr kvmCPUs;
|
|
||||||
|
|
||||||
if (!(kvmCPUs = virDomainCapsCPUModelsCopy(cpus)))
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
qemuCaps->kvmCPUModels = kvmCPUs;
|
|
||||||
}
|
|
||||||
qemuCaps->tcgCPUModels = cpus;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error:
|
|
||||||
virObjectUnref(cpus);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ppc64 parser.
|
|
||||||
* Format : PowerPC <machine> <description>
|
|
||||||
*/
|
|
||||||
static int
|
|
||||||
virQEMUCapsParsePPCModels(const char *output,
|
|
||||||
virQEMUCapsPtr qemuCaps)
|
|
||||||
{
|
|
||||||
const char *p = output;
|
|
||||||
const char *next;
|
|
||||||
virDomainCapsCPUModelsPtr cpus;
|
|
||||||
|
|
||||||
if (!(cpus = virDomainCapsCPUModelsNew(0)))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
do {
|
|
||||||
const char *t;
|
|
||||||
|
|
||||||
if ((next = strchr(p, '\n')))
|
|
||||||
next++;
|
|
||||||
|
|
||||||
if (!STRPREFIX(p, "PowerPC "))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* Skip the preceding sub-string "PowerPC " */
|
|
||||||
p += 8;
|
|
||||||
|
|
||||||
/*Malformed string, does not obey the format 'PowerPC <model> <desc>'*/
|
|
||||||
if (!(t = strchr(p, ' ')) || (next && t >= next))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (*p == '\0')
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (*p == '\n')
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (virDomainCapsCPUModelsAdd(cpus, p, t - p - 1,
|
|
||||||
VIR_DOMCAPS_CPU_USABLE_UNKNOWN, NULL) < 0)
|
|
||||||
goto error;
|
|
||||||
} while ((p = next));
|
|
||||||
|
|
||||||
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_KVM)) {
|
|
||||||
virDomainCapsCPUModelsPtr kvmCPUs;
|
|
||||||
|
|
||||||
if (!(kvmCPUs = virDomainCapsCPUModelsCopy(cpus)))
|
|
||||||
goto error;
|
|
||||||
|
|
||||||
qemuCaps->kvmCPUModels = kvmCPUs;
|
|
||||||
}
|
|
||||||
qemuCaps->tcgCPUModels = cpus;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
error:
|
|
||||||
virObjectUnref(cpus);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
virQEMUCapsProbeCPUModels(virQEMUCapsPtr qemuCaps, uid_t runUid, gid_t runGid)
|
|
||||||
{
|
|
||||||
char *output = NULL;
|
|
||||||
int ret = -1;
|
|
||||||
virQEMUCapsParseCPUModels parse;
|
|
||||||
virCommandPtr cmd;
|
|
||||||
|
|
||||||
if (ARCH_IS_X86(qemuCaps->arch)) {
|
|
||||||
parse = virQEMUCapsParseX86Models;
|
|
||||||
} else if (ARCH_IS_PPC64(qemuCaps->arch)) {
|
|
||||||
parse = virQEMUCapsParsePPCModels;
|
|
||||||
} else {
|
|
||||||
VIR_DEBUG("don't know how to parse %s CPU models",
|
|
||||||
virArchToString(qemuCaps->arch));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd = virQEMUCapsProbeCommand(qemuCaps->binary, qemuCaps, runUid, runGid);
|
|
||||||
virCommandAddArgList(cmd, "-cpu", "?", NULL);
|
|
||||||
virCommandSetOutputBuffer(cmd, &output);
|
|
||||||
|
|
||||||
if (virCommandRun(cmd, NULL) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (parse(output, qemuCaps) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
VIR_FREE(output);
|
|
||||||
virCommandFree(cmd);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
virQEMUCapsFindBinary(const char *format,
|
virQEMUCapsFindBinary(const char *format,
|
||||||
@ -1256,312 +958,6 @@ virQEMUCapsInit(virFileCachePtr cache)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
virQEMUCapsComputeCmdFlags(const char *help,
|
|
||||||
unsigned int version,
|
|
||||||
virQEMUCapsPtr qemuCaps,
|
|
||||||
bool check_yajl ATTRIBUTE_UNUSED)
|
|
||||||
{
|
|
||||||
const char *p;
|
|
||||||
const char *fsdev, *netdev;
|
|
||||||
const char *cache;
|
|
||||||
|
|
||||||
if (strstr(help, "-no-kvm"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_KVM);
|
|
||||||
if (strstr(help, "-enable-kvm"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_ENABLE_KVM);
|
|
||||||
if (strstr(help, ",process="))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NAME_PROCESS);
|
|
||||||
|
|
||||||
cache = strstr(help, "cache=");
|
|
||||||
if (cache && (p = strchr(cache, ']'))) {
|
|
||||||
if (memmem(cache, p - cache, "directsync", sizeof("directsync") - 1))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC);
|
|
||||||
if (memmem(cache, p - cache, "unsafe", sizeof("unsafe") - 1))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_CACHE_UNSAFE);
|
|
||||||
}
|
|
||||||
if (strstr(help, "aio=threads|native"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_AIO);
|
|
||||||
if (strstr(help, "copy-on-read=on|off"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_COPY_ON_READ);
|
|
||||||
if (strstr(help, "bps="))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_IOTUNE);
|
|
||||||
|
|
||||||
if (strstr(help, "-display"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DISPLAY);
|
|
||||||
if ((p = strstr(help, "-vga")) && !strstr(help, "-std-vga")) {
|
|
||||||
const char *nl = strstr(p, "\n");
|
|
||||||
if ((p = strstr(p, "|none")) && p < nl)
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VGA_NONE);
|
|
||||||
}
|
|
||||||
if (strstr(help, "-spice"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SPICE);
|
|
||||||
if (strstr(help, "-vnc"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC);
|
|
||||||
if (strstr(help, "seamless-migration="))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SEAMLESS_MIGRATION);
|
|
||||||
if (strstr(help, "boot=on"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_BOOT);
|
|
||||||
if (strstr(help, "serial=s"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DRIVE_SERIAL);
|
|
||||||
if (strstr(help, "host=[seg:]bus"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_HOST_PCI_MULTIDOMAIN);
|
|
||||||
if (strstr(help, "-mem-path"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MEM_PATH);
|
|
||||||
if (strstr(help, "-chardev spicevmc"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC);
|
|
||||||
if (strstr(help, "-chardev spiceport"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEPORT);
|
|
||||||
if (strstr(help, "-nodefconfig"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NODEFCONFIG);
|
|
||||||
if (strstr(help, "-no-user-config"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_USER_CONFIG);
|
|
||||||
/* The trailing ' ' is important to avoid a bogus match */
|
|
||||||
if (strstr(help, "-rtc "))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_RTC);
|
|
||||||
/* to wit */
|
|
||||||
if (strstr(help, "-rtc-td-hack"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_RTC_TD_HACK);
|
|
||||||
if (strstr(help, "-no-hpet"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_HPET);
|
|
||||||
if (strstr(help, "-no-acpi"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_ACPI);
|
|
||||||
if (strstr(help, "-no-kvm-pit-reinjection"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_KVM_PIT);
|
|
||||||
if (strstr(help, "-tdf"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_TDF);
|
|
||||||
if (strstr(help, "-enable-nesting"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NESTING);
|
|
||||||
if (strstr(help, ",menu=on"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_BOOT_MENU);
|
|
||||||
if (strstr(help, ",reboot-timeout=rb_time"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_REBOOT_TIMEOUT);
|
|
||||||
if (strstr(help, ",splash-time=sp_time"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SPLASH_TIMEOUT);
|
|
||||||
if ((fsdev = strstr(help, "-fsdev"))) {
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV);
|
|
||||||
if (strstr(fsdev, "readonly"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_READONLY);
|
|
||||||
if (strstr(fsdev, "writeout"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_FSDEV_WRITEOUT);
|
|
||||||
}
|
|
||||||
if (strstr(help, "-smbios type"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SMBIOS_TYPE);
|
|
||||||
if (strstr(help, "-sandbox"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SECCOMP_SANDBOX);
|
|
||||||
|
|
||||||
if ((netdev = strstr(help, "-netdev"))) {
|
|
||||||
/* Disable -netdev on 0.12 since although it exists,
|
|
||||||
* the corresponding netdev_add/remove monitor commands
|
|
||||||
* do not, and we need them to be able to do hotplug. */
|
|
||||||
if (version >= 13000) {
|
|
||||||
if (strstr(netdev, "bridge"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV_BRIDGE);
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strstr(help, "-sdl"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_SDL);
|
|
||||||
|
|
||||||
if (strstr(help, ",vhost="))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VHOST_NET);
|
|
||||||
|
|
||||||
/* Do not use -no-shutdown if qemu doesn't support it or SIGTERM handling
|
|
||||||
* is most likely buggy when used with -no-shutdown (which applies for qemu
|
|
||||||
* 0.14.* and 0.15.0)
|
|
||||||
*/
|
|
||||||
if (strstr(help, "-no-shutdown") && (version < 14000 || version > 15000))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NO_SHUTDOWN);
|
|
||||||
|
|
||||||
if (strstr(help, "dump-guest-core=on|off"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DUMP_GUEST_CORE);
|
|
||||||
|
|
||||||
if (strstr(help, "-dtb"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DTB);
|
|
||||||
|
|
||||||
if (strstr(help, "-machine"))
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MACHINE_OPT);
|
|
||||||
|
|
||||||
/* While JSON mode was available in 0.12.0, it was too
|
|
||||||
* incomplete to contemplate using. The 0.13.0 release
|
|
||||||
* is good enough to use, even though it lacks one or
|
|
||||||
* two features. */
|
|
||||||
#if WITH_YAJL
|
|
||||||
if (version >= 13000)
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_MONITOR_JSON);
|
|
||||||
#else
|
|
||||||
/* Starting with qemu 0.15 and newer, upstream qemu no longer
|
|
||||||
* promises to keep the human interface stable, but requests that
|
|
||||||
* we use QMP (the JSON interface) for everything. If the user
|
|
||||||
* forgot to include YAJL libraries when building their own
|
|
||||||
* libvirt but is targeting a newer qemu, we are better off
|
|
||||||
* telling them to recompile (the spec file includes the
|
|
||||||
* dependency, so distros won't hit this). This check is
|
|
||||||
* also in m4/virt-yajl.m4 (see $with_yajl). */
|
|
||||||
if (version >= 15000) {
|
|
||||||
if (check_yajl) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("this qemu binary requires libvirt to be "
|
|
||||||
"compiled with yajl"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_NETDEV);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (version >= 13000)
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_PCI_MULTIFUNCTION);
|
|
||||||
|
|
||||||
if (version >= 1001000) {
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_IPV6_MIGRATION);
|
|
||||||
virQEMUCapsSet(qemuCaps, QEMU_CAPS_VNC_SHARE_POLICY);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We parse the output of 'qemu -help' to get the QEMU
|
|
||||||
* version number. The first bit is easy, just parse
|
|
||||||
* 'QEMU PC emulator version x.y.z'
|
|
||||||
* or
|
|
||||||
* 'QEMU emulator version x.y.z'.
|
|
||||||
*
|
|
||||||
* With qemu-kvm, however, that is followed by a string
|
|
||||||
* in parenthesis as follows:
|
|
||||||
* - qemu-kvm-x.y.z in stable releases
|
|
||||||
* - kvm-XX for kvm versions up to kvm-85
|
|
||||||
* - qemu-kvm-devel-XX for kvm version kvm-86 and later
|
|
||||||
*
|
|
||||||
* For qemu-kvm versions before 0.10.z, we need to detect
|
|
||||||
* the KVM version number for some features. With 0.10.z
|
|
||||||
* and later, we just need the QEMU version number and
|
|
||||||
* whether it is KVM QEMU or mainline QEMU.
|
|
||||||
*/
|
|
||||||
#define QEMU_VERSION_STR_1 "QEMU emulator version"
|
|
||||||
#define QEMU_VERSION_STR_2 "QEMU PC emulator version"
|
|
||||||
#define QEMU_KVM_VER_PREFIX "(qemu-kvm-"
|
|
||||||
#define KVM_VER_PREFIX "(kvm-"
|
|
||||||
|
|
||||||
#define SKIP_BLANKS(p) do { while ((*(p) == ' ') || (*(p) == '\t')) (p)++; } while (0)
|
|
||||||
|
|
||||||
int virQEMUCapsParseHelpStr(const char *qemu,
|
|
||||||
const char *help,
|
|
||||||
virQEMUCapsPtr qemuCaps,
|
|
||||||
unsigned int *version,
|
|
||||||
bool *is_kvm,
|
|
||||||
unsigned int *kvm_version,
|
|
||||||
bool check_yajl,
|
|
||||||
const char *qmperr)
|
|
||||||
{
|
|
||||||
unsigned major, minor, micro;
|
|
||||||
const char *p = help;
|
|
||||||
char *strflags;
|
|
||||||
|
|
||||||
*version = *kvm_version = 0;
|
|
||||||
*is_kvm = false;
|
|
||||||
|
|
||||||
if (STRPREFIX(p, QEMU_VERSION_STR_1))
|
|
||||||
p += strlen(QEMU_VERSION_STR_1);
|
|
||||||
else if (STRPREFIX(p, QEMU_VERSION_STR_2))
|
|
||||||
p += strlen(QEMU_VERSION_STR_2);
|
|
||||||
else
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
SKIP_BLANKS(p);
|
|
||||||
|
|
||||||
major = virParseNumber(&p);
|
|
||||||
if (major == -1 || *p != '.')
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
++p;
|
|
||||||
|
|
||||||
minor = virParseNumber(&p);
|
|
||||||
if (minor == -1)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
if (*p != '.') {
|
|
||||||
micro = 0;
|
|
||||||
} else {
|
|
||||||
++p;
|
|
||||||
micro = virParseNumber(&p);
|
|
||||||
if (micro == -1)
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
SKIP_BLANKS(p);
|
|
||||||
|
|
||||||
if (STRPREFIX(p, QEMU_KVM_VER_PREFIX)) {
|
|
||||||
*is_kvm = true;
|
|
||||||
p += strlen(QEMU_KVM_VER_PREFIX);
|
|
||||||
} else if (STRPREFIX(p, KVM_VER_PREFIX)) {
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
*is_kvm = true;
|
|
||||||
p += strlen(KVM_VER_PREFIX);
|
|
||||||
|
|
||||||
ret = virParseNumber(&p);
|
|
||||||
if (ret == -1)
|
|
||||||
goto fail;
|
|
||||||
|
|
||||||
*kvm_version = ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
*version = (major * 1000 * 1000) + (minor * 1000) + micro;
|
|
||||||
|
|
||||||
if (*version < 12000) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
_("QEMU version >= 0.12.00 is required, but %d.%d.%d found"),
|
|
||||||
major, minor, micro);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Refuse to parse -help output for QEMU releases >= 1.2.0 that should be
|
|
||||||
* using QMP probing.
|
|
||||||
*/
|
|
||||||
if (*version >= 1002000) {
|
|
||||||
if (qmperr && *qmperr) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("QEMU / QMP failed: %s"),
|
|
||||||
qmperr);
|
|
||||||
} else {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
_("QEMU %u.%u.%u is too new for help parsing"),
|
|
||||||
major, minor, micro);
|
|
||||||
}
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virQEMUCapsComputeCmdFlags(help, *version,
|
|
||||||
qemuCaps, check_yajl) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
strflags = virBitmapToString(qemuCaps->flags, true, false);
|
|
||||||
VIR_DEBUG("Version %u.%u.%u, cooked version %u, flags %s",
|
|
||||||
major, minor, micro, *version, NULLSTR(strflags));
|
|
||||||
VIR_FREE(strflags);
|
|
||||||
|
|
||||||
if (*kvm_version)
|
|
||||||
VIR_DEBUG("KVM version %d detected", *kvm_version);
|
|
||||||
else if (*is_kvm)
|
|
||||||
VIR_DEBUG("qemu-kvm version %u.%u.%u detected", major, minor, micro);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
fail:
|
|
||||||
p = strchr(help, '\n');
|
|
||||||
if (!p)
|
|
||||||
p = strchr(help, '\0');
|
|
||||||
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("cannot parse %s version number in '%.*s'"),
|
|
||||||
qemu, (int) (p - help), help);
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
struct virQEMUCapsStringFlags {
|
struct virQEMUCapsStringFlags {
|
||||||
const char *value;
|
const char *value;
|
||||||
int flag;
|
int flag;
|
||||||
@ -1990,184 +1386,6 @@ virQEMUCapsProcessStringFlags(virQEMUCapsPtr qemuCaps,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define OBJECT_TYPE_PREFIX "name \""
|
|
||||||
|
|
||||||
static int
|
|
||||||
virQEMUCapsParseDeviceStrObjectTypes(const char *str,
|
|
||||||
char ***types)
|
|
||||||
{
|
|
||||||
const char *tmp = str;
|
|
||||||
int ret = -1;
|
|
||||||
size_t ntypelist = 0;
|
|
||||||
char **typelist = NULL;
|
|
||||||
|
|
||||||
*types = NULL;
|
|
||||||
|
|
||||||
while ((tmp = strstr(tmp, OBJECT_TYPE_PREFIX))) {
|
|
||||||
char *end;
|
|
||||||
tmp += strlen(OBJECT_TYPE_PREFIX);
|
|
||||||
end = strstr(tmp, "\"");
|
|
||||||
if (!end) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
_("Malformed QEMU device list string, missing quote"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (VIR_EXPAND_N(typelist, ntypelist, 1) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
if (VIR_STRNDUP(typelist[ntypelist - 1], tmp, end-tmp) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
*types = typelist;
|
|
||||||
ret = ntypelist;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
if (ret < 0)
|
|
||||||
virStringListFreeCount(typelist, ntypelist);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
virQEMUCapsParseDeviceStrObjectProps(const char *str,
|
|
||||||
const char *type,
|
|
||||||
char ***props)
|
|
||||||
{
|
|
||||||
const char *tmp = str;
|
|
||||||
int ret = -1;
|
|
||||||
size_t nproplist = 0;
|
|
||||||
char **proplist = NULL;
|
|
||||||
|
|
||||||
VIR_DEBUG("Extract type %s", type);
|
|
||||||
*props = NULL;
|
|
||||||
|
|
||||||
while ((tmp = strchr(tmp, '\n'))) {
|
|
||||||
char *end;
|
|
||||||
tmp += 1;
|
|
||||||
|
|
||||||
if (*tmp == '\0')
|
|
||||||
break;
|
|
||||||
|
|
||||||
if (STRPREFIX(tmp, OBJECT_TYPE_PREFIX))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (!STRPREFIX(tmp, type))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
tmp += strlen(type);
|
|
||||||
if (*tmp != '.')
|
|
||||||
continue;
|
|
||||||
tmp++;
|
|
||||||
|
|
||||||
end = strstr(tmp, "=");
|
|
||||||
if (!end) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
|
||||||
_("Malformed QEMU device list string, missing '='"));
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
if (VIR_EXPAND_N(proplist, nproplist, 1) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
if (VIR_STRNDUP(proplist[nproplist - 1], tmp, end-tmp) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
*props = proplist;
|
|
||||||
ret = nproplist;
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
if (ret < 0)
|
|
||||||
virStringListFreeCount(proplist, nproplist);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
virQEMUCapsParseDeviceStr(virQEMUCapsPtr qemuCaps, const char *str)
|
|
||||||
{
|
|
||||||
int nvalues;
|
|
||||||
char **values;
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
if ((nvalues = virQEMUCapsParseDeviceStrObjectTypes(str, &values)) < 0)
|
|
||||||
return -1;
|
|
||||||
virQEMUCapsProcessStringFlags(qemuCaps,
|
|
||||||
ARRAY_CARDINALITY(virQEMUCapsObjectTypes),
|
|
||||||
virQEMUCapsObjectTypes,
|
|
||||||
nvalues, values);
|
|
||||||
virStringListFreeCount(values, nvalues);
|
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_CARDINALITY(virQEMUCapsObjectProps); i++) {
|
|
||||||
const char *type = virQEMUCapsObjectProps[i].type;
|
|
||||||
if ((nvalues = virQEMUCapsParseDeviceStrObjectProps(str,
|
|
||||||
type,
|
|
||||||
&values)) < 0)
|
|
||||||
return -1;
|
|
||||||
virQEMUCapsProcessStringFlags(qemuCaps,
|
|
||||||
virQEMUCapsObjectProps[i].nprops,
|
|
||||||
virQEMUCapsObjectProps[i].props,
|
|
||||||
nvalues, values);
|
|
||||||
virStringListFreeCount(values, nvalues);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Prefer -chardev spicevmc (detected earlier) over -device spicevmc */
|
|
||||||
if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CHARDEV_SPICEVMC))
|
|
||||||
virQEMUCapsClear(qemuCaps, QEMU_CAPS_DEVICE_SPICEVMC);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
|
||||||
virQEMUCapsExtractDeviceStr(const char *qemu,
|
|
||||||
virQEMUCapsPtr qemuCaps,
|
|
||||||
uid_t runUid, gid_t runGid)
|
|
||||||
{
|
|
||||||
char *output = NULL;
|
|
||||||
virCommandPtr cmd;
|
|
||||||
int ret = -1;
|
|
||||||
|
|
||||||
/* Cram together all device-related queries into one invocation;
|
|
||||||
* the output format makes it possible to distinguish what we
|
|
||||||
* need. With qemu 0.13.0 and later, unrecognized '-device
|
|
||||||
* bogus,?' cause an error in isolation, but are silently ignored
|
|
||||||
* in combination with '-device ?'. Upstream qemu 0.12.x doesn't
|
|
||||||
* understand '-device name,?', and always exits with status 1 for
|
|
||||||
* the simpler '-device ?', so this function is really only useful
|
|
||||||
* if -help includes "device driver,?". */
|
|
||||||
cmd = virQEMUCapsProbeCommand(qemu, qemuCaps, runUid, runGid);
|
|
||||||
virCommandAddArgList(cmd,
|
|
||||||
"-device", "?",
|
|
||||||
"-device", "pci-assign,?",
|
|
||||||
"-device", "virtio-blk-pci,?",
|
|
||||||
"-device", "virtio-net-pci,?",
|
|
||||||
"-device", "scsi-disk,?",
|
|
||||||
"-device", "PIIX4_PM,?",
|
|
||||||
"-device", "usb-redir,?",
|
|
||||||
"-device", "ide-drive,?",
|
|
||||||
"-device", "usb-host,?",
|
|
||||||
"-device", "scsi-generic,?",
|
|
||||||
"-device", "usb-storage,?",
|
|
||||||
"-device", "VGA,?",
|
|
||||||
"-device", "vmware-svga,?",
|
|
||||||
"-device", "qxl,?",
|
|
||||||
"-device", "qxl-vga,?",
|
|
||||||
NULL);
|
|
||||||
/* qemu -help goes to stdout, but qemu -device ? goes to stderr. */
|
|
||||||
virCommandSetErrorBuffer(cmd, &output);
|
|
||||||
|
|
||||||
if (virCommandRun(cmd, NULL) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
ret = virQEMUCapsParseDeviceStr(qemuCaps, output);
|
|
||||||
|
|
||||||
cleanup:
|
|
||||||
VIR_FREE(output);
|
|
||||||
virCommandFree(cmd);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int virQEMUCapsGetDefaultVersion(virCapsPtr caps,
|
int virQEMUCapsGetDefaultVersion(virCapsPtr caps,
|
||||||
virFileCachePtr capsCache,
|
virFileCachePtr capsCache,
|
||||||
unsigned int *version)
|
unsigned int *version)
|
||||||
@ -4402,76 +3620,6 @@ virQEMUCapsIsValid(void *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#define QEMU_SYSTEM_PREFIX "qemu-system-"
|
|
||||||
|
|
||||||
static int
|
|
||||||
virQEMUCapsInitHelp(virQEMUCapsPtr qemuCaps, uid_t runUid, gid_t runGid, const char *qmperr)
|
|
||||||
{
|
|
||||||
virCommandPtr cmd = NULL;
|
|
||||||
bool is_kvm;
|
|
||||||
char *help = NULL;
|
|
||||||
int ret = -1;
|
|
||||||
const char *tmp;
|
|
||||||
|
|
||||||
VIR_DEBUG("qemuCaps=%p", qemuCaps);
|
|
||||||
|
|
||||||
tmp = strstr(qemuCaps->binary, QEMU_SYSTEM_PREFIX);
|
|
||||||
if (tmp) {
|
|
||||||
tmp += strlen(QEMU_SYSTEM_PREFIX);
|
|
||||||
|
|
||||||
qemuCaps->arch = virQEMUCapsArchFromString(tmp);
|
|
||||||
} else {
|
|
||||||
qemuCaps->arch = virArchFromHost();
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd = virQEMUCapsProbeCommand(qemuCaps->binary, NULL, runUid, runGid);
|
|
||||||
virCommandAddArgList(cmd, "-help", NULL);
|
|
||||||
virCommandSetOutputBuffer(cmd, &help);
|
|
||||||
|
|
||||||
if (virCommandRun(cmd, NULL) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virQEMUCapsParseHelpStr(qemuCaps->binary,
|
|
||||||
help, qemuCaps,
|
|
||||||
&qemuCaps->version,
|
|
||||||
&is_kvm,
|
|
||||||
&qemuCaps->kvmVersion,
|
|
||||||
false,
|
|
||||||
qmperr) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
/* Older QEMU versions reported -no-acpi in the output of -help even
|
|
||||||
* though it was not supported by the architecture. The issue has since
|
|
||||||
* been fixed, but to maintain compatibility with all release we still
|
|
||||||
* need to filter out the capability for architectures that we know
|
|
||||||
* don't support the feature, eg. anything but x86 and aarch64 */
|
|
||||||
if (!ARCH_IS_X86(qemuCaps->arch) &&
|
|
||||||
qemuCaps->arch != VIR_ARCH_AARCH64) {
|
|
||||||
virQEMUCapsClear(qemuCaps, QEMU_CAPS_NO_ACPI);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* virQEMUCapsExtractDeviceStr will only set additional caps if qemu
|
|
||||||
* understands the 0.13.0+ notion of "-device driver,". */
|
|
||||||
if (strstr(help, "-device driver,?") &&
|
|
||||||
virQEMUCapsExtractDeviceStr(qemuCaps->binary,
|
|
||||||
qemuCaps, runUid, runGid) < 0) {
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virQEMUCapsProbeCPUModels(qemuCaps, runUid, runGid) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virQEMUCapsProbeMachineTypes(qemuCaps, runUid, runGid) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
cleanup:
|
|
||||||
virCommandFree(cmd);
|
|
||||||
VIR_FREE(help);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void virQEMUCapsMonitorNotify(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
|
static void virQEMUCapsMonitorNotify(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
|
||||||
virDomainObjPtr vm ATTRIBUTE_UNUSED,
|
virDomainObjPtr vm ATTRIBUTE_UNUSED,
|
||||||
void *opaque ATTRIBUTE_UNUSED)
|
void *opaque ATTRIBUTE_UNUSED)
|
||||||
@ -4609,6 +3757,9 @@ virQEMUCapsProbeQMPSchemaCapabilities(virQEMUCapsPtr qemuCaps,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define QEMU_MIN_MAJOR 1
|
||||||
|
#define QEMU_MIN_MINOR 2
|
||||||
|
#define QEMU_MIN_MICRO 0
|
||||||
|
|
||||||
int
|
int
|
||||||
virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
|
virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
|
||||||
@ -4639,8 +3790,12 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
|
|||||||
VIR_DEBUG("Got version %d.%d.%d (%s)",
|
VIR_DEBUG("Got version %d.%d.%d (%s)",
|
||||||
major, minor, micro, NULLSTR(package));
|
major, minor, micro, NULLSTR(package));
|
||||||
|
|
||||||
if (major < 1 || (major == 1 && minor < 2)) {
|
if (major < QEMU_MIN_MAJOR ||
|
||||||
VIR_DEBUG("Not new enough for QMP capabilities detection");
|
(major == QEMU_MIN_MAJOR && minor < QEMU_MIN_MINOR)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
|
_("QEMU version >= %d.%d.%d is required, but %d.%d.%d found"),
|
||||||
|
QEMU_MIN_MAJOR, QEMU_MIN_MINOR, QEMU_MIN_MICRO,
|
||||||
|
major, minor, micro);
|
||||||
ret = 0;
|
ret = 0;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@ -5079,8 +4234,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
|||||||
uid_t runUid,
|
uid_t runUid,
|
||||||
gid_t runGid,
|
gid_t runGid,
|
||||||
unsigned int microcodeVersion,
|
unsigned int microcodeVersion,
|
||||||
const char *kernelVersion,
|
const char *kernelVersion)
|
||||||
bool qmpOnly)
|
|
||||||
{
|
{
|
||||||
virQEMUCapsPtr qemuCaps;
|
virQEMUCapsPtr qemuCaps;
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
@ -5116,7 +4270,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qmpOnly && !qemuCaps->usedQMP) {
|
if (!qemuCaps->usedQMP) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("Failed to probe QEMU binary with QMP: %s"),
|
_("Failed to probe QEMU binary with QMP: %s"),
|
||||||
qmperr ? qmperr : _("unknown error"));
|
qmperr ? qmperr : _("unknown error"));
|
||||||
@ -5124,12 +4278,6 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!qemuCaps->usedQMP &&
|
|
||||||
virQEMUCapsInitHelp(qemuCaps, runUid, runGid, qmperr) < 0) {
|
|
||||||
virQEMUCapsLogProbeFailure(binary);
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
qemuCaps->libvirtCtime = virGetSelfLastChanged();
|
qemuCaps->libvirtCtime = virGetSelfLastChanged();
|
||||||
qemuCaps->libvirtVersion = LIBVIR_VERSION_NUMBER;
|
qemuCaps->libvirtVersion = LIBVIR_VERSION_NUMBER;
|
||||||
|
|
||||||
@ -5165,8 +4313,7 @@ virQEMUCapsNewData(const char *binary,
|
|||||||
priv->runUid,
|
priv->runUid,
|
||||||
priv->runGid,
|
priv->runGid,
|
||||||
priv->microcodeVersion,
|
priv->microcodeVersion,
|
||||||
priv->kernelVersion,
|
priv->kernelVersion);
|
||||||
false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,8 +37,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
|||||||
uid_t runUid,
|
uid_t runUid,
|
||||||
gid_t runGid,
|
gid_t runGid,
|
||||||
unsigned int microcodeVersion,
|
unsigned int microcodeVersion,
|
||||||
const char *kernelVersion,
|
const char *kernelVersion);
|
||||||
bool qmpOnly);
|
|
||||||
|
|
||||||
int virQEMUCapsLoadCache(virArch hostArch,
|
int virQEMUCapsLoadCache(virArch hostArch,
|
||||||
virQEMUCapsPtr qemuCaps,
|
virQEMUCapsPtr qemuCaps,
|
||||||
@ -86,20 +85,6 @@ virQEMUCapsSetGICCapabilities(virQEMUCapsPtr qemuCaps,
|
|||||||
virGICCapability *capabilities,
|
virGICCapability *capabilities,
|
||||||
size_t ncapabilities);
|
size_t ncapabilities);
|
||||||
|
|
||||||
int
|
|
||||||
virQEMUCapsParseHelpStr(const char *qemu,
|
|
||||||
const char *str,
|
|
||||||
virQEMUCapsPtr qemuCaps,
|
|
||||||
unsigned int *version,
|
|
||||||
bool *is_kvm,
|
|
||||||
unsigned int *kvm_version,
|
|
||||||
bool check_yajl,
|
|
||||||
const char *qmperr);
|
|
||||||
|
|
||||||
int
|
|
||||||
virQEMUCapsParseDeviceStr(virQEMUCapsPtr qemuCaps,
|
|
||||||
const char *str);
|
|
||||||
|
|
||||||
int
|
int
|
||||||
virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps,
|
virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps,
|
||||||
qemuMonitorPtr mon,
|
qemuMonitorPtr mon,
|
||||||
|
@ -121,7 +121,6 @@ EXTRA_DIST = \
|
|||||||
qemuargv2xmldata \
|
qemuargv2xmldata \
|
||||||
qemucapabilitiesdata \
|
qemucapabilitiesdata \
|
||||||
qemucaps2xmldata \
|
qemucaps2xmldata \
|
||||||
qemuhelpdata \
|
|
||||||
qemuhotplugtestcpus \
|
qemuhotplugtestcpus \
|
||||||
qemuhotplugtestdevices \
|
qemuhotplugtestdevices \
|
||||||
qemuhotplugtestdomains \
|
qemuhotplugtestdomains \
|
||||||
@ -279,7 +278,7 @@ endif WITH_LIBXL
|
|||||||
|
|
||||||
if WITH_QEMU
|
if WITH_QEMU
|
||||||
test_programs += qemuxml2argvtest qemuxml2xmltest \
|
test_programs += qemuxml2argvtest qemuxml2xmltest \
|
||||||
qemuargv2xmltest qemuhelptest domainsnapshotxml2xmltest \
|
qemuargv2xmltest domainsnapshotxml2xmltest \
|
||||||
qemumonitortest qemumonitorjsontest qemuhotplugtest \
|
qemumonitortest qemumonitorjsontest qemuhotplugtest \
|
||||||
qemuagenttest qemucapabilitiestest qemucaps2xmltest \
|
qemuagenttest qemucapabilitiestest qemucaps2xmltest \
|
||||||
qemumemlocktest \
|
qemumemlocktest \
|
||||||
@ -586,9 +585,6 @@ qemuargv2xmltest_SOURCES = \
|
|||||||
testutils.c testutils.h
|
testutils.c testutils.h
|
||||||
qemuargv2xmltest_LDADD = $(qemu_LDADDS) $(LDADDS)
|
qemuargv2xmltest_LDADD = $(qemu_LDADDS) $(LDADDS)
|
||||||
|
|
||||||
qemuhelptest_SOURCES = qemuhelptest.c testutils.c testutils.h
|
|
||||||
qemuhelptest_LDADD = $(qemu_LDADDS) $(LDADDS)
|
|
||||||
|
|
||||||
qemumonitortest_SOURCES = \
|
qemumonitortest_SOURCES = \
|
||||||
qemumonitortest.c \
|
qemumonitortest.c \
|
||||||
testutils.c testutils.h \
|
testutils.c testutils.h \
|
||||||
@ -676,7 +672,7 @@ qemumemlocktest_SOURCES = \
|
|||||||
qemumemlocktest_LDADD = $(qemu_LDADDS) $(LDADDS)
|
qemumemlocktest_LDADD = $(qemu_LDADDS) $(LDADDS)
|
||||||
else ! WITH_QEMU
|
else ! WITH_QEMU
|
||||||
EXTRA_DIST += qemuxml2argvtest.c qemuxml2xmltest.c qemuargv2xmltest.c \
|
EXTRA_DIST += qemuxml2argvtest.c qemuxml2xmltest.c qemuargv2xmltest.c \
|
||||||
qemuhelptest.c domainsnapshotxml2xmltest.c \
|
domainsnapshotxml2xmltest.c \
|
||||||
qemumonitortest.c testutilsqemu.c testutilsqemu.h \
|
qemumonitortest.c testutilsqemu.c testutilsqemu.h \
|
||||||
testutilsqemuschema.c testutilsqemuschema.h \
|
testutilsqemuschema.c testutilsqemuschema.h \
|
||||||
qemumonitorjsontest.c qemuhotplugtest.c \
|
qemumonitorjsontest.c qemuhotplugtest.c \
|
||||||
|
@ -72,7 +72,7 @@ main(int argc, char **argv)
|
|||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
if (!(caps = virQEMUCapsNewForBinaryInternal(VIR_ARCH_NONE, argv[1], "/tmp",
|
if (!(caps = virQEMUCapsNewForBinaryInternal(VIR_ARCH_NONE, argv[1], "/tmp",
|
||||||
-1, -1, 0, NULL, true)))
|
-1, -1, 0, NULL)))
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|
||||||
virObjectUnref(caps);
|
virObjectUnref(caps);
|
||||||
|
@ -1,198 +0,0 @@
|
|||||||
QEMU PC emulator version 0.12.1, Copyright (c) 2003-2008 Fabrice Bellard
|
|
||||||
usage: qemu [options] [disk_image]
|
|
||||||
|
|
||||||
'disk_image' is a raw hard image image for IDE hard disk 0
|
|
||||||
|
|
||||||
Standard options:
|
|
||||||
-h or -help display this help and exit
|
|
||||||
-version display version information and exit
|
|
||||||
-M machine select emulated machine (-M ? for list)
|
|
||||||
-cpu cpu select CPU (-cpu ? for list)
|
|
||||||
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
|
|
||||||
set the number of CPUs to 'n' [default=1]
|
|
||||||
maxcpus= maximum number of total cpus, including
|
|
||||||
offline CPUs for hotplug etc.
|
|
||||||
cores= number of CPU cores on one socket
|
|
||||||
threads= number of threads on one CPU core
|
|
||||||
sockets= number of discrete sockets in the system
|
|
||||||
-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
|
|
||||||
-fda/-fdb file use 'file' as floppy disk 0/1 image
|
|
||||||
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
|
|
||||||
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
|
|
||||||
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
|
|
||||||
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
|
|
||||||
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
|
|
||||||
[,cache=writethrough|writeback|none][,format=f][,serial=s]
|
|
||||||
[,addr=A][,id=name][,aio=threads|native]
|
|
||||||
use 'file' as a drive image
|
|
||||||
-set group.id.arg=value
|
|
||||||
set <arg> parameter for item <id> of type <group>
|
|
||||||
i.e. -set drive.$id.file=/path/to/image
|
|
||||||
-global driver.property=value
|
|
||||||
set a global default for a driver property
|
|
||||||
-mtdblock file use 'file' as on-board Flash memory image
|
|
||||||
-sd file use 'file' as SecureDigital card image
|
|
||||||
-pflash file use 'file' as a parallel flash image
|
|
||||||
-boot [order=drives][,once=drives][,menu=on|off]
|
|
||||||
'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
|
|
||||||
-snapshot write to temporary files instead of disk image files
|
|
||||||
-m megs set virtual RAM size to megs MB [default=128]
|
|
||||||
-k language use keyboard layout (for example 'fr' for French)
|
|
||||||
-audio-help print list of audio drivers and their options
|
|
||||||
-soundhw c1,... enable audio support
|
|
||||||
and only specified sound cards (comma separated list)
|
|
||||||
use -soundhw ? to get the list of supported cards
|
|
||||||
use -soundhw all to enable all of them
|
|
||||||
-usb enable the USB driver (will be the default soon)
|
|
||||||
-usbdevice name add the host or guest USB device 'name'
|
|
||||||
-device driver[,options] add device
|
|
||||||
-name string1[,process=string2] set the name of the guest
|
|
||||||
string1 sets the window title and string2 the process name (on Linux)
|
|
||||||
-uuid %08x-%04x-%04x-%04x-%012x
|
|
||||||
specify machine UUID
|
|
||||||
|
|
||||||
Display options:
|
|
||||||
-nographic disable graphical output and redirect serial I/Os to console
|
|
||||||
-curses use a curses/ncurses interface instead of SDL
|
|
||||||
-no-frame open SDL window without a frame and window decorations
|
|
||||||
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-no-quit disable SDL window close capability
|
|
||||||
-sdl enable SDL
|
|
||||||
-portrait rotate graphical output 90 deg left (only PXA LCD)
|
|
||||||
-vga [std|cirrus|vmware|xenfb|none]
|
|
||||||
select video card type
|
|
||||||
-full-screen start in full screen
|
|
||||||
-vnc display start a VNC server on display
|
|
||||||
|
|
||||||
i386 target only:
|
|
||||||
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
|
|
||||||
-no-fd-bootchk disable boot signature checking for floppy disks
|
|
||||||
-no-acpi disable ACPI
|
|
||||||
-no-hpet disable HPET
|
|
||||||
-balloon none disable balloon device
|
|
||||||
-balloon virtio[,addr=str]
|
|
||||||
enable virtio balloon device (default)
|
|
||||||
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]
|
|
||||||
ACPI table description
|
|
||||||
-smbios file=binary
|
|
||||||
Load SMBIOS entry from binary file
|
|
||||||
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
|
|
||||||
Specify SMBIOS type 0 fields
|
|
||||||
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
|
|
||||||
[,uuid=uuid][,sku=str][,family=str]
|
|
||||||
Specify SMBIOS type 1 fields
|
|
||||||
|
|
||||||
Network options:
|
|
||||||
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
|
|
||||||
create a new Network Interface Card and connect it to VLAN 'n'
|
|
||||||
-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=y|n]
|
|
||||||
[,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f]
|
|
||||||
[,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
|
|
||||||
connect the user mode network stack to VLAN 'n', configure its
|
|
||||||
DHCP server and enabled optional services
|
|
||||||
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,sndbuf=nbytes][,vnet_hdr=on|off]
|
|
||||||
connect the host TAP network interface to VLAN 'n' and use the
|
|
||||||
network scripts 'file' (default=/etc/qemu-ifup)
|
|
||||||
and 'dfile' (default=/etc/qemu-ifdown);
|
|
||||||
use '[down]script=no' to disable script execution;
|
|
||||||
use 'fd=h' to connect to an already opened TAP interface
|
|
||||||
use 'sndbuf=nbytes' to limit the size of the send buffer; the
|
|
||||||
default of 'sndbuf=1048576' can be disabled using 'sndbuf=0'
|
|
||||||
use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag; use
|
|
||||||
vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using a socket connection
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port]
|
|
||||||
connect the vlan 'n' to multicast maddr and port
|
|
||||||
-net dump[,vlan=n][,file=f][,len=n]
|
|
||||||
dump traffic on vlan 'n' to file 'f' (max n bytes per packet)
|
|
||||||
-net none use it alone to have zero network devices; if no -net option
|
|
||||||
is provided, the default is '-net nic -net user'
|
|
||||||
-netdev [user|tap|socket],id=str[,option][,option][,...]
|
|
||||||
|
|
||||||
Character device options:
|
|
||||||
-chardev null,id=id
|
|
||||||
-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
|
|
||||||
[,server][,nowait][,telnet] (tcp)
|
|
||||||
-chardev socket,id=id,path=path[,server][,nowait][,telnet] (unix)
|
|
||||||
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
|
|
||||||
[,localport=localport][,ipv4][,ipv6]
|
|
||||||
-chardev msmouse,id=id
|
|
||||||
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
|
|
||||||
-chardev file,id=id,path=path
|
|
||||||
-chardev pipe,id=id,path=path
|
|
||||||
-chardev pty,id=id
|
|
||||||
-chardev stdio,id=id
|
|
||||||
-chardev tty,id=id,path=path
|
|
||||||
-chardev parport,id=id,path=path
|
|
||||||
|
|
||||||
Bluetooth(R) options:
|
|
||||||
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
|
|
||||||
-bt hci,host[:id]
|
|
||||||
use host's HCI with the given name
|
|
||||||
-bt hci[,vlan=n]
|
|
||||||
emulate a standard HCI in virtual scatternet 'n'
|
|
||||||
-bt vhci[,vlan=n]
|
|
||||||
add host computer to virtual scatternet 'n' using VHCI
|
|
||||||
-bt device:dev[,vlan=n]
|
|
||||||
emulate a bluetooth device 'dev' in scatternet 'n'
|
|
||||||
|
|
||||||
Linux/Multiboot boot specific:
|
|
||||||
-kernel bzImage use 'bzImage' as kernel image
|
|
||||||
-append cmdline use 'cmdline' as kernel command line
|
|
||||||
-initrd file use 'file' as initial ram disk
|
|
||||||
|
|
||||||
Debug/Expert options:
|
|
||||||
-serial dev redirect the serial port to char device 'dev'
|
|
||||||
-parallel dev redirect the parallel port to char device 'dev'
|
|
||||||
-monitor dev redirect the monitor to char device 'dev'
|
|
||||||
-qmp dev like -monitor but opens in 'control' mode.
|
|
||||||
-mon chardev=[name][,mode=readline|control][,default]
|
|
||||||
-pidfile file write PID to 'file'
|
|
||||||
-singlestep always run in singlestep mode
|
|
||||||
-S freeze CPU at startup (use 'c' to start execution)
|
|
||||||
-gdb dev wait for gdb connection on 'dev'
|
|
||||||
-s shorthand for -gdb tcp::1234
|
|
||||||
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
|
|
||||||
-hdachs c,h,s[,t]
|
|
||||||
force hard disk 0 physical geometry and the optional BIOS
|
|
||||||
translation (t=none or lba) (usually qemu can guess them)
|
|
||||||
-L path set the directory for the BIOS, VGA BIOS and keymaps
|
|
||||||
-bios file set the filename for the BIOS
|
|
||||||
-enable-kvm enable KVM full virtualization support
|
|
||||||
-no-reboot exit instead of rebooting
|
|
||||||
-no-shutdown stop before shutdown
|
|
||||||
-loadvm [tag|id]
|
|
||||||
start right away with a saved state (loadvm in monitor)
|
|
||||||
-daemonize daemonize QEMU after initializing
|
|
||||||
-option-rom rom load a file, rom, into the option ROM space
|
|
||||||
-clock force the use of the given methods for timer alarm.
|
|
||||||
To see what timers are available use -clock ?
|
|
||||||
-rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew]
|
|
||||||
set the RTC base and clock, enable drift fix for clock ticks
|
|
||||||
-icount [N|auto]
|
|
||||||
enable virtual instruction counter with 2^N clock ticks per
|
|
||||||
instruction
|
|
||||||
-watchdog i6300esb|ib700
|
|
||||||
enable virtual hardware watchdog [default=none]
|
|
||||||
-watchdog-action reset|shutdown|poweroff|pause|debug|none
|
|
||||||
action when watchdog fires [default=reset]
|
|
||||||
-echr chr set terminal escape character instead of ctrl-a
|
|
||||||
-virtioconsole c
|
|
||||||
set virtio console
|
|
||||||
-show-cursor show cursor
|
|
||||||
-tb-size n set TB size
|
|
||||||
-incoming p prepare for incoming migration, listen on port p
|
|
||||||
-nodefaults don't create default devices.
|
|
||||||
-chroot dir Chroot to dir just before starting the VM.
|
|
||||||
-runas user Change to user id user just before starting the VM.
|
|
||||||
-readconfig <file>
|
|
||||||
-writeconfig <file>
|
|
||||||
read/write config file
|
|
||||||
During emulation, the following keys are useful:
|
|
||||||
ctrl-alt-f toggle full screen
|
|
||||||
ctrl-alt-n switch to virtual console 'n'
|
|
||||||
ctrl-alt toggle mouse and keyboard grab
|
|
||||||
|
|
||||||
When using -nographic, press 'ctrl-a h' to get some help.
|
|
@ -1,62 +0,0 @@
|
|||||||
name "pci-bridge", bus PCI
|
|
||||||
name "virtio-balloon-pci", bus PCI
|
|
||||||
name "virtio-console-pci", bus PCI
|
|
||||||
name "virtio-net-pci", bus PCI
|
|
||||||
name "virtio-blk-pci", bus PCI
|
|
||||||
name "i82562", bus PCI
|
|
||||||
name "i82559er", bus PCI
|
|
||||||
name "i82559c", bus PCI
|
|
||||||
name "i82559b", bus PCI
|
|
||||||
name "i82559a", bus PCI
|
|
||||||
name "i82558b", bus PCI
|
|
||||||
name "i82558a", bus PCI
|
|
||||||
name "i82557c", bus PCI
|
|
||||||
name "i82557b", bus PCI
|
|
||||||
name "i82557a", bus PCI
|
|
||||||
name "i82551", bus PCI
|
|
||||||
name "i82550", bus PCI
|
|
||||||
name "pcnet", bus PCI
|
|
||||||
name "rtl8139", bus PCI
|
|
||||||
name "e1000", bus PCI, desc "Intel Gigabit Ethernet"
|
|
||||||
name "ide-drive", bus IDE
|
|
||||||
name "isa-ide", bus ISA
|
|
||||||
name "piix4-ide", bus PCI, no-user
|
|
||||||
name "piix3-ide", bus PCI, no-user
|
|
||||||
name "i8042", bus ISA, no-user
|
|
||||||
name "sb16", bus ISA, desc "Creative Sound Blaster 16"
|
|
||||||
name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370"
|
|
||||||
name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio"
|
|
||||||
name "VGA", bus PCI
|
|
||||||
name "SUNW,fdtwo", bus System
|
|
||||||
name "sysbus-fdc", bus System
|
|
||||||
name "isa-fdc", bus ISA, no-user
|
|
||||||
name "mc146818rtc", bus ISA, no-user
|
|
||||||
name "isa-serial", bus ISA
|
|
||||||
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
|
|
||||||
name "isa-parallel", bus ISA
|
|
||||||
name "PIIX3", bus PCI, desc "ISA bridge", no-user
|
|
||||||
name "i440FX", bus PCI, desc "Host bridge", no-user
|
|
||||||
name "i440FX-pcihost", bus System, no-user
|
|
||||||
name "piix4-usb-uhci", bus PCI
|
|
||||||
name "piix3-usb-uhci", bus PCI
|
|
||||||
name "vmware-svga", bus PCI
|
|
||||||
name "ib700", bus ISA
|
|
||||||
name "ne2k_isa", bus ISA
|
|
||||||
name "smbus-eeprom", bus I2C
|
|
||||||
name "scsi-disk", bus SCSI, desc "virtual scsi disk or cdrom"
|
|
||||||
name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)"
|
|
||||||
name "usb-hub", bus USB
|
|
||||||
name "usb-host", bus USB
|
|
||||||
name "usb-kbd", bus USB
|
|
||||||
name "usb-mouse", bus USB
|
|
||||||
name "usb-tablet", bus USB
|
|
||||||
name "usb-storage", bus USB
|
|
||||||
name "usb-wacom-tablet", bus USB, desc "QEMU PenPartner Tablet"
|
|
||||||
name "usb-braille", bus USB
|
|
||||||
name "usb-serial", bus USB
|
|
||||||
name "usb-net", bus USB
|
|
||||||
name "usb-bt-dongle", bus USB
|
|
||||||
name "i6300esb", bus PCI
|
|
||||||
name "ne2k_pci", bus PCI
|
|
||||||
name "lsi53c895a", bus PCI, alias "lsi"
|
|
||||||
name "isabus-bridge", bus System, no-user
|
|
@ -1,253 +0,0 @@
|
|||||||
QEMU emulator version 1.0, Copyright (c) 2003-2008 Fabrice Bellard
|
|
||||||
usage: qemu [options] [disk_image]
|
|
||||||
|
|
||||||
'disk_image' is a raw hard disk image for IDE hard disk 0
|
|
||||||
|
|
||||||
Standard options:
|
|
||||||
-h or -help display this help and exit
|
|
||||||
-version display version information and exit
|
|
||||||
-machine [type=]name[,prop[=value][,...]]
|
|
||||||
selects emulated machine (-machine ? for list)
|
|
||||||
property accel=accel1[:accel2[:...]] selects accelerator
|
|
||||||
supported accelerators are kvm, xen, tcg (default: tcg)
|
|
||||||
-cpu cpu select CPU (-cpu ? for list)
|
|
||||||
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
|
|
||||||
set the number of CPUs to 'n' [default=1]
|
|
||||||
maxcpus= maximum number of total cpus, including
|
|
||||||
offline CPUs for hotplug, etc
|
|
||||||
cores= number of CPU cores on one socket
|
|
||||||
threads= number of threads on one CPU core
|
|
||||||
sockets= number of discrete sockets in the system
|
|
||||||
-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
|
|
||||||
-fda/-fdb file use 'file' as floppy disk 0/1 image
|
|
||||||
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
|
|
||||||
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
|
|
||||||
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
|
|
||||||
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
|
|
||||||
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
|
|
||||||
[,cache=writethrough|writeback|none|directsync|unsafe][,format=f]
|
|
||||||
[,serial=s][,addr=A][,id=name][,aio=threads|native]
|
|
||||||
[,readonly=on|off]
|
|
||||||
use 'file' as a drive image
|
|
||||||
-set group.id.arg=value
|
|
||||||
set <arg> parameter for item <id> of type <group>
|
|
||||||
i.e. -set drive.$id.file=/path/to/image
|
|
||||||
-global driver.property=value
|
|
||||||
set a global default for a driver property
|
|
||||||
-mtdblock file use 'file' as on-board Flash memory image
|
|
||||||
-sd file use 'file' as SecureDigital card image
|
|
||||||
-pflash file use 'file' as a parallel flash image
|
|
||||||
-boot [order=drives][,once=drives][,menu=on|off]
|
|
||||||
[,splash=sp_name][,splash-time=sp_time]
|
|
||||||
'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
|
|
||||||
'sp_name': the file's name that would be passed to bios as logo picture, if menu=on
|
|
||||||
'sp_time': the period that splash picture last if menu=on, unit is ms
|
|
||||||
-snapshot write to temporary files instead of disk image files
|
|
||||||
-m megs set virtual RAM size to megs MB [default=128]
|
|
||||||
-mem-path FILE provide backing storage for guest RAM
|
|
||||||
-mem-prealloc preallocate guest memory (use with -mem-path)
|
|
||||||
-k language use keyboard layout (for example 'fr' for French)
|
|
||||||
-audio-help print list of audio drivers and their options
|
|
||||||
-soundhw c1,... enable audio support
|
|
||||||
and only specified sound cards (comma separated list)
|
|
||||||
use -soundhw ? to get the list of supported cards
|
|
||||||
use -soundhw all to enable all of them
|
|
||||||
-usb enable the USB driver (will be the default soon)
|
|
||||||
-usbdevice name add the host or guest USB device 'name'
|
|
||||||
-device driver[,prop[=value][,...]]
|
|
||||||
add device (based on driver)
|
|
||||||
prop=value,... sets driver properties
|
|
||||||
use -device ? to print all possible drivers
|
|
||||||
use -device driver,? to print all possible properties
|
|
||||||
|
|
||||||
File system options:
|
|
||||||
-fsdev fsdriver,id=id,path=path,[security_model={mapped|passthrough|none}]
|
|
||||||
[,writeout=immediate][,readonly]
|
|
||||||
|
|
||||||
Virtual File system pass-through options:
|
|
||||||
-virtfs local,path=path,mount_tag=tag,security_model=[mapped|passthrough|none]
|
|
||||||
[,writeout=immediate][,readonly]
|
|
||||||
-virtfs_synth Create synthetic file system image
|
|
||||||
|
|
||||||
-name string1[,process=string2]
|
|
||||||
set the name of the guest
|
|
||||||
string1 sets the window title and string2 the process name (on Linux)
|
|
||||||
-uuid %08x-%04x-%04x-%04x-%012x
|
|
||||||
specify machine UUID
|
|
||||||
|
|
||||||
Display options:
|
|
||||||
-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]
|
|
||||||
[,window_close=on|off]|curses|none|
|
|
||||||
vnc=<display>[,<optargs>]
|
|
||||||
select display type
|
|
||||||
-nographic disable graphical output and redirect serial I/Os to console
|
|
||||||
-curses use a curses/ncurses interface instead of SDL
|
|
||||||
-no-frame open SDL window without a frame and window decorations
|
|
||||||
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-no-quit disable SDL window close capability
|
|
||||||
-sdl enable SDL
|
|
||||||
-spice <args> enable spice
|
|
||||||
-portrait rotate graphical output 90 deg left (only PXA LCD)
|
|
||||||
-rotate <deg> rotate graphical output some deg left (only PXA LCD)
|
|
||||||
-vga [std|cirrus|vmware|qxl|xenfb|none]
|
|
||||||
select video card type
|
|
||||||
-full-screen start in full screen
|
|
||||||
-g WxH[xDEPTH] Set the initial graphical resolution and depth
|
|
||||||
-vnc display start a VNC server on display
|
|
||||||
|
|
||||||
i386 target only:
|
|
||||||
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
|
|
||||||
-no-fd-bootchk disable boot signature checking for floppy disks
|
|
||||||
-no-acpi disable ACPI
|
|
||||||
-no-hpet disable HPET
|
|
||||||
-balloon none disable balloon device
|
|
||||||
-balloon virtio[,addr=str]
|
|
||||||
enable virtio balloon device (default)
|
|
||||||
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...]
|
|
||||||
ACPI table description
|
|
||||||
-smbios file=binary
|
|
||||||
load SMBIOS entry from binary file
|
|
||||||
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
|
|
||||||
specify SMBIOS type 0 fields
|
|
||||||
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
|
|
||||||
[,uuid=uuid][,sku=str][,family=str]
|
|
||||||
specify SMBIOS type 1 fields
|
|
||||||
|
|
||||||
Network options:
|
|
||||||
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
|
|
||||||
create a new Network Interface Card and connect it to VLAN 'n'
|
|
||||||
-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=on|off]
|
|
||||||
[,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f]
|
|
||||||
[,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
|
|
||||||
connect the user mode network stack to VLAN 'n', configure its
|
|
||||||
DHCP server and enabled optional services
|
|
||||||
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off]
|
|
||||||
connect the host TAP network interface to VLAN 'n' and use the
|
|
||||||
network scripts 'file' (default=/etc/qemu-ifup)
|
|
||||||
and 'dfile' (default=/etc/qemu-ifdown)
|
|
||||||
use '[down]script=no' to disable script execution
|
|
||||||
use 'fd=h' to connect to an already opened TAP interface
|
|
||||||
use 'sndbuf=nbytes' to limit the size of the send buffer (the
|
|
||||||
default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')
|
|
||||||
use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag
|
|
||||||
use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition
|
|
||||||
use vhost=on to enable experimental in kernel accelerator
|
|
||||||
(only has effect for virtio guests which use MSIX)
|
|
||||||
use vhostforce=on to force vhost on for non-MSIX virtio guests
|
|
||||||
use 'vhostfd=h' to connect to an already opened vhost net device
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using a socket connection
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port[,localaddr=addr]]
|
|
||||||
connect the vlan 'n' to multicast maddr and port
|
|
||||||
use 'localaddr=addr' to specify the host address to send packets from
|
|
||||||
-net dump[,vlan=n][,file=f][,len=n]
|
|
||||||
dump traffic on vlan 'n' to file 'f' (max n bytes per packet)
|
|
||||||
-net none use it alone to have zero network devices. If no -net option
|
|
||||||
is provided, the default is '-net nic -net user'
|
|
||||||
-netdev [user|tap|socket],id=str[,option][,option][,...]
|
|
||||||
|
|
||||||
Character device options:
|
|
||||||
-chardev null,id=id[,mux=on|off]
|
|
||||||
-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
|
|
||||||
[,server][,nowait][,telnet][,mux=on|off] (tcp)
|
|
||||||
-chardev socket,id=id,path=path[,server][,nowait][,telnet],[mux=on|off] (unix)
|
|
||||||
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
|
|
||||||
[,localport=localport][,ipv4][,ipv6][,mux=on|off]
|
|
||||||
-chardev msmouse,id=id[,mux=on|off]
|
|
||||||
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
|
|
||||||
[,mux=on|off]
|
|
||||||
-chardev file,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pipe,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pty,id=id[,mux=on|off]
|
|
||||||
-chardev stdio,id=id[,mux=on|off][,signal=on|off]
|
|
||||||
-chardev braille,id=id[,mux=on|off]
|
|
||||||
-chardev tty,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev parport,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev spicevmc,id=id,name=name[,debug=debug]
|
|
||||||
|
|
||||||
Bluetooth(R) options:
|
|
||||||
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
|
|
||||||
-bt hci,host[:id]
|
|
||||||
use host's HCI with the given name
|
|
||||||
-bt hci[,vlan=n]
|
|
||||||
emulate a standard HCI in virtual scatternet 'n'
|
|
||||||
-bt vhci[,vlan=n]
|
|
||||||
add host computer to virtual scatternet 'n' using VHCI
|
|
||||||
-bt device:dev[,vlan=n]
|
|
||||||
emulate a bluetooth device 'dev' in scatternet 'n'
|
|
||||||
|
|
||||||
Linux/Multiboot boot specific:
|
|
||||||
-kernel bzImage use 'bzImage' as kernel image
|
|
||||||
-append cmdline use 'cmdline' as kernel command line
|
|
||||||
-initrd file use 'file' as initial ram disk
|
|
||||||
|
|
||||||
Debug/Expert options:
|
|
||||||
-serial dev redirect the serial port to char device 'dev'
|
|
||||||
-parallel dev redirect the parallel port to char device 'dev'
|
|
||||||
-monitor dev redirect the monitor to char device 'dev'
|
|
||||||
-qmp dev like -monitor but opens in 'control' mode
|
|
||||||
-mon chardev=[name][,mode=readline|control][,default]
|
|
||||||
-debugcon dev redirect the debug console to char device 'dev'
|
|
||||||
-pidfile file write PID to 'file'
|
|
||||||
-singlestep always run in singlestep mode
|
|
||||||
-S freeze CPU at startup (use 'c' to start execution)
|
|
||||||
-gdb dev wait for gdb connection on 'dev'
|
|
||||||
-s shorthand for -gdb tcp::1234
|
|
||||||
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
|
|
||||||
-D logfile output log to logfile (instead of the default /tmp/qemu.log)
|
|
||||||
-hdachs c,h,s[,t]
|
|
||||||
force hard disk 0 physical geometry and the optional BIOS
|
|
||||||
translation (t=none or lba) (usually qemu can guess them)
|
|
||||||
-L path set the directory for the BIOS, VGA BIOS and keymaps
|
|
||||||
-bios file set the filename for the BIOS
|
|
||||||
-enable-kvm enable KVM full virtualization support
|
|
||||||
-xen-domid id specify xen guest domain id
|
|
||||||
-xen-create create domain using xen hypercalls, bypassing xend
|
|
||||||
warning: should not be used when xend is in use
|
|
||||||
-xen-attach attach to existing xen domain
|
|
||||||
xend will use this when starting qemu
|
|
||||||
-no-reboot exit instead of rebooting
|
|
||||||
-no-shutdown stop before shutdown
|
|
||||||
-loadvm [tag|id]
|
|
||||||
start right away with a saved state (loadvm in monitor)
|
|
||||||
-daemonize daemonize QEMU after initializing
|
|
||||||
-option-rom rom load a file, rom, into the option ROM space
|
|
||||||
-clock force the use of the given methods for timer alarm.
|
|
||||||
To see what timers are available use -clock ?
|
|
||||||
-rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew]
|
|
||||||
set the RTC base and clock, enable drift fix for clock ticks (x86 only)
|
|
||||||
-icount [N|auto]
|
|
||||||
enable virtual instruction counter with 2^N clock ticks per
|
|
||||||
instruction
|
|
||||||
-watchdog i6300esb|ib700
|
|
||||||
enable virtual hardware watchdog [default=none]
|
|
||||||
-watchdog-action reset|shutdown|poweroff|pause|debug|none
|
|
||||||
action when watchdog fires [default=reset]
|
|
||||||
-echr chr set terminal escape character instead of ctrl-a
|
|
||||||
-virtioconsole c
|
|
||||||
set virtio console
|
|
||||||
-show-cursor show cursor
|
|
||||||
-tb-size n set TB size
|
|
||||||
-incoming p prepare for incoming migration, listen on port p
|
|
||||||
-nodefaults don't create default devices
|
|
||||||
-chroot dir chroot to dir just before starting the VM
|
|
||||||
-runas user change to user id user just before starting the VM
|
|
||||||
-prom-env variable=value
|
|
||||||
set OpenBIOS nvram variables
|
|
||||||
-semihosting semihosting mode
|
|
||||||
-old-param old param mode
|
|
||||||
-readconfig <file>
|
|
||||||
-writeconfig <file>
|
|
||||||
read/write config file
|
|
||||||
-nodefconfig
|
|
||||||
do not load default config files at startup
|
|
||||||
-trace [events=<file>][,file=<file>]
|
|
||||||
specify tracing options
|
|
||||||
|
|
||||||
During emulation, the following keys are useful:
|
|
||||||
ctrl-alt-f toggle full screen
|
|
||||||
ctrl-alt-n switch to virtual console 'n'
|
|
||||||
ctrl-alt toggle mouse and keyboard grab
|
|
||||||
|
|
||||||
When using -nographic, press 'ctrl-a h' to get some help.
|
|
@ -1,148 +0,0 @@
|
|||||||
name "ib700", bus ISA
|
|
||||||
name "sga", bus ISA, desc "Serial Graphics Adapter"
|
|
||||||
name "qxl", bus PCI, desc "Spice QXL GPU (secondary)"
|
|
||||||
name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)"
|
|
||||||
name "ivshmem", bus PCI
|
|
||||||
name "isa-debugcon", bus ISA
|
|
||||||
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
|
|
||||||
name "virtio-9p-pci", bus PCI
|
|
||||||
name "usb-wacom-tablet", bus USB, desc "QEMU PenPartner Tablet"
|
|
||||||
name "usb-braille", bus USB
|
|
||||||
name "usb-serial", bus USB
|
|
||||||
name "usb-net", bus USB
|
|
||||||
name "usb-storage", bus USB
|
|
||||||
name "usb-host", bus USB
|
|
||||||
name "usb-hub", bus USB
|
|
||||||
name "usb-kbd", bus USB
|
|
||||||
name "usb-mouse", bus USB
|
|
||||||
name "usb-tablet", bus USB
|
|
||||||
name "usb-bt-dongle", bus USB
|
|
||||||
name "smbus-eeprom", bus I2C
|
|
||||||
name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)"
|
|
||||||
name "scsi-disk", bus SCSI, desc "virtual SCSI disk or CD-ROM (legacy)"
|
|
||||||
name "scsi-block", bus SCSI, desc "SCSI block device passthrough"
|
|
||||||
name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM"
|
|
||||||
name "scsi-hd", bus SCSI, desc "virtual SCSI disk"
|
|
||||||
name "x3130-upstream", bus PCI, desc "TI X3130 Upstream Port of PCI Express Switch"
|
|
||||||
name "xio3130-downstream", bus PCI, desc "TI X3130 Downstream Port of PCI Express Switch"
|
|
||||||
name "i6300esb", bus PCI
|
|
||||||
name "vmware-svga", bus PCI
|
|
||||||
name "virtio-balloon-pci", bus PCI, alias "virtio-balloon"
|
|
||||||
name "virtio-serial-pci", bus PCI, alias "virtio-serial"
|
|
||||||
name "virtio-net-pci", bus PCI, alias "virtio-net"
|
|
||||||
name "virtio-blk-pci", bus PCI, alias "virtio-blk"
|
|
||||||
name "virtserialport", bus virtio-serial-bus
|
|
||||||
name "virtconsole", bus virtio-serial-bus
|
|
||||||
name "VGA", bus PCI
|
|
||||||
name "isa-vga", bus ISA
|
|
||||||
name "ich9-usb-uhci3", bus PCI
|
|
||||||
name "ich9-usb-uhci2", bus PCI
|
|
||||||
name "ich9-usb-uhci1", bus PCI
|
|
||||||
name "vt82c686b-usb-uhci", bus PCI
|
|
||||||
name "piix4-usb-uhci", bus PCI
|
|
||||||
name "piix3-usb-uhci", bus PCI
|
|
||||||
name "sysbus-ohci", bus System, desc "OHCI USB Controller"
|
|
||||||
name "pci-ohci", bus PCI, desc "Apple USB Controller"
|
|
||||||
name "ich9-usb-ehci1", bus PCI
|
|
||||||
name "usb-ehci", bus PCI
|
|
||||||
name "usb-ccid", bus USB, desc "CCID Rev 1.1 smartcard reader"
|
|
||||||
name "isa-serial", bus ISA
|
|
||||||
name "sb16", bus ISA, desc "Creative Sound Blaster 16"
|
|
||||||
name "rtl8139", bus PCI
|
|
||||||
name "pcnet", bus PCI
|
|
||||||
name "isa-parallel", bus ISA
|
|
||||||
name "ne2k_pci", bus PCI
|
|
||||||
name "ne2k_isa", bus ISA
|
|
||||||
name "lsi53c895a", bus PCI, alias "lsi"
|
|
||||||
name "ioh3420", bus PCI, desc "Intel IOH device id 3420 PCIE Root Port"
|
|
||||||
name "intel-hda", bus PCI, desc "Intel HD Audio Controller"
|
|
||||||
name "ide-drive", bus IDE, desc "virtual IDE disk or CD-ROM (legacy)"
|
|
||||||
name "ide-cd", bus IDE, desc "virtual IDE CD-ROM"
|
|
||||||
name "ide-hd", bus IDE, desc "virtual IDE disk"
|
|
||||||
name "isa-ide", bus ISA
|
|
||||||
name "ich9-ahci", bus PCI, alias "ahci"
|
|
||||||
name "hda-duplex", bus HDA, desc "HDA Audio Codec, duplex"
|
|
||||||
name "hda-output", bus HDA, desc "HDA Audio Codec, output-only"
|
|
||||||
name "SUNW,fdtwo", bus System
|
|
||||||
name "sysbus-fdc", bus System
|
|
||||||
name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370"
|
|
||||||
name "i82801", bus PCI, desc "Intel i82801 Ethernet"
|
|
||||||
name "i82562", bus PCI, desc "Intel i82562 Ethernet"
|
|
||||||
name "i82559er", bus PCI, desc "Intel i82559ER Ethernet"
|
|
||||||
name "i82559c", bus PCI, desc "Intel i82559C Ethernet"
|
|
||||||
name "i82559b", bus PCI, desc "Intel i82559B Ethernet"
|
|
||||||
name "i82559a", bus PCI, desc "Intel i82559A Ethernet"
|
|
||||||
name "i82558b", bus PCI, desc "Intel i82558B Ethernet"
|
|
||||||
name "i82558a", bus PCI, desc "Intel i82558A Ethernet"
|
|
||||||
name "i82557c", bus PCI, desc "Intel i82557C Ethernet"
|
|
||||||
name "i82557b", bus PCI, desc "Intel i82557B Ethernet"
|
|
||||||
name "i82557a", bus PCI, desc "Intel i82557A Ethernet"
|
|
||||||
name "i82551", bus PCI, desc "Intel i82551 Ethernet"
|
|
||||||
name "i82550", bus PCI, desc "Intel i82550 Ethernet"
|
|
||||||
name "e1000", bus PCI, desc "Intel Gigabit Ethernet"
|
|
||||||
name "ccid-card-passthru", bus ccid-bus, desc "passthrough smartcard"
|
|
||||||
name "ccid-card-emulated", bus ccid-bus, desc "emulated smartcard"
|
|
||||||
name "isa-applesmc", bus ISA
|
|
||||||
name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio"
|
|
||||||
virtio-blk-pci.class=hex32
|
|
||||||
virtio-blk-pci.drive=drive
|
|
||||||
virtio-blk-pci.logical_block_size=uint16
|
|
||||||
virtio-blk-pci.physical_block_size=uint16
|
|
||||||
virtio-blk-pci.min_io_size=uint16
|
|
||||||
virtio-blk-pci.opt_io_size=uint32
|
|
||||||
virtio-blk-pci.bootindex=int32
|
|
||||||
virtio-blk-pci.discard_granularity=uint32
|
|
||||||
virtio-blk-pci.serial=string
|
|
||||||
virtio-blk-pci.ioeventfd=on/off
|
|
||||||
virtio-blk-pci.vectors=uint32
|
|
||||||
virtio-blk-pci.indirect_desc=on/off
|
|
||||||
virtio-blk-pci.event_idx=on/off
|
|
||||||
virtio-blk-pci.scsi=on/off
|
|
||||||
virtio-blk-pci.addr=pci-devfn
|
|
||||||
virtio-blk-pci.romfile=string
|
|
||||||
virtio-blk-pci.rombar=uint32
|
|
||||||
virtio-blk-pci.multifunction=on/off
|
|
||||||
virtio-blk-pci.command_serr_enable=on/off
|
|
||||||
virtio-net-pci.ioeventfd=on/off
|
|
||||||
virtio-net-pci.vectors=uint32
|
|
||||||
virtio-net-pci.indirect_desc=on/off
|
|
||||||
virtio-net-pci.event_idx=on/off
|
|
||||||
virtio-net-pci.csum=on/off
|
|
||||||
virtio-net-pci.guest_csum=on/off
|
|
||||||
virtio-net-pci.gso=on/off
|
|
||||||
virtio-net-pci.guest_tso4=on/off
|
|
||||||
virtio-net-pci.guest_tso6=on/off
|
|
||||||
virtio-net-pci.guest_ecn=on/off
|
|
||||||
virtio-net-pci.guest_ufo=on/off
|
|
||||||
virtio-net-pci.host_tso4=on/off
|
|
||||||
virtio-net-pci.host_tso6=on/off
|
|
||||||
virtio-net-pci.host_ecn=on/off
|
|
||||||
virtio-net-pci.host_ufo=on/off
|
|
||||||
virtio-net-pci.mrg_rxbuf=on/off
|
|
||||||
virtio-net-pci.status=on/off
|
|
||||||
virtio-net-pci.ctrl_vq=on/off
|
|
||||||
virtio-net-pci.ctrl_rx=on/off
|
|
||||||
virtio-net-pci.ctrl_vlan=on/off
|
|
||||||
virtio-net-pci.ctrl_rx_extra=on/off
|
|
||||||
virtio-net-pci.mac=macaddr
|
|
||||||
virtio-net-pci.vlan=vlan
|
|
||||||
virtio-net-pci.netdev=netdev
|
|
||||||
virtio-net-pci.bootindex=int32
|
|
||||||
virtio-net-pci.x-txtimer=uint32
|
|
||||||
virtio-net-pci.x-txburst=int32
|
|
||||||
virtio-net-pci.tx=string
|
|
||||||
virtio-net-pci.addr=pci-devfn
|
|
||||||
virtio-net-pci.romfile=string
|
|
||||||
virtio-net-pci.rombar=uint32
|
|
||||||
virtio-net-pci.multifunction=on/off
|
|
||||||
virtio-net-pci.command_serr_enable=on/off
|
|
||||||
scsi-generic.drive=drive
|
|
||||||
scsi-generic.logical_block_size=uint16
|
|
||||||
scsi-generic.physical_block_size=uint16
|
|
||||||
scsi-generic.min_io_size=uint16
|
|
||||||
scsi-generic.opt_io_size=uint32
|
|
||||||
scsi-generic.bootindex=int32
|
|
||||||
scsi-generic.discard_granularity=uint32
|
|
||||||
scsi-generic.channel=uint32
|
|
||||||
scsi-generic.scsi-id=uint32
|
|
||||||
scsi-generic.lun=uint32
|
|
@ -1,269 +0,0 @@
|
|||||||
QEMU emulator version 1.1.0, Copyright (c) 2003-2008 Fabrice Bellard
|
|
||||||
usage: qemu-system-x86_64 [options] [disk_image]
|
|
||||||
|
|
||||||
'disk_image' is a raw hard disk image for IDE hard disk 0
|
|
||||||
|
|
||||||
Standard options:
|
|
||||||
-h or -help display this help and exit
|
|
||||||
-version display version information and exit
|
|
||||||
-machine [type=]name[,prop[=value][,...]]
|
|
||||||
selects emulated machine (-machine ? for list)
|
|
||||||
property accel=accel1[:accel2[:...]] selects accelerator
|
|
||||||
supported accelerators are kvm, xen, tcg (default: tcg)
|
|
||||||
kernel_irqchip=on|off controls accelerated irqchip support
|
|
||||||
kvm_shadow_mem=size of KVM shadow MMU
|
|
||||||
-cpu cpu select CPU (-cpu ? for list)
|
|
||||||
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
|
|
||||||
set the number of CPUs to 'n' [default=1]
|
|
||||||
maxcpus= maximum number of total cpus, including
|
|
||||||
offline CPUs for hotplug, etc
|
|
||||||
cores= number of CPU cores on one socket
|
|
||||||
threads= number of threads on one CPU core
|
|
||||||
sockets= number of discrete sockets in the system
|
|
||||||
-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
|
|
||||||
-fda/-fdb file use 'file' as floppy disk 0/1 image
|
|
||||||
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
|
|
||||||
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
|
|
||||||
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
|
|
||||||
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
|
|
||||||
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
|
|
||||||
[,cache=writethrough|writeback|none|directsync|unsafe][,format=f]
|
|
||||||
[,serial=s][,addr=A][,id=name][,aio=threads|native]
|
|
||||||
[,readonly=on|off][,copy-on-read=on|off]
|
|
||||||
[[,bps=b]|[[,bps_rd=r][,bps_wr=w]]][[,iops=i]|[[,iops_rd=r][,iops_wr=w]]
|
|
||||||
use 'file' as a drive image
|
|
||||||
-set group.id.arg=value
|
|
||||||
set <arg> parameter for item <id> of type <group>
|
|
||||||
i.e. -set drive.$id.file=/path/to/image
|
|
||||||
-global driver.prop=value
|
|
||||||
set a global default for a driver property
|
|
||||||
-mtdblock file use 'file' as on-board Flash memory image
|
|
||||||
-sd file use 'file' as SecureDigital card image
|
|
||||||
-pflash file use 'file' as a parallel flash image
|
|
||||||
-boot [order=drives][,once=drives][,menu=on|off]
|
|
||||||
[,splash=sp_name][,splash-time=sp_time]
|
|
||||||
'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
|
|
||||||
'sp_name': the file's name that would be passed to bios as logo picture, if menu=on
|
|
||||||
'sp_time': the period that splash picture last if menu=on, unit is ms
|
|
||||||
-snapshot write to temporary files instead of disk image files
|
|
||||||
-m megs set virtual RAM size to megs MB [default=128]
|
|
||||||
-mem-path FILE provide backing storage for guest RAM
|
|
||||||
-mem-prealloc preallocate guest memory (use with -mem-path)
|
|
||||||
-k language use keyboard layout (for example 'fr' for French)
|
|
||||||
-audio-help print list of audio drivers and their options
|
|
||||||
-soundhw c1,... enable audio support
|
|
||||||
and only specified sound cards (comma separated list)
|
|
||||||
use -soundhw ? to get the list of supported cards
|
|
||||||
use -soundhw all to enable all of them
|
|
||||||
-balloon none disable balloon device
|
|
||||||
-balloon virtio[,addr=str]
|
|
||||||
enable virtio balloon device (default)
|
|
||||||
-usb enable the USB driver (will be the default soon)
|
|
||||||
-usbdevice name add the host or guest USB device 'name'
|
|
||||||
-device driver[,prop[=value][,...]]
|
|
||||||
add device (based on driver)
|
|
||||||
prop=value,... sets driver properties
|
|
||||||
use -device ? to print all possible drivers
|
|
||||||
use -device driver,? to print all possible properties
|
|
||||||
|
|
||||||
File system options:
|
|
||||||
-fsdev fsdriver,id=id[,path=path,][security_model={mapped-xattr|mapped-file|passthrough|none}]
|
|
||||||
[,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd]
|
|
||||||
|
|
||||||
Virtual File system pass-through options:
|
|
||||||
-virtfs local,path=path,mount_tag=tag,security_model=[mapped-xattr|mapped-file|passthrough|none]
|
|
||||||
[,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd]
|
|
||||||
-virtfs_synth Create synthetic file system image
|
|
||||||
|
|
||||||
-name string1[,process=string2]
|
|
||||||
set the name of the guest
|
|
||||||
string1 sets the window title and string2 the process name (on Linux)
|
|
||||||
-uuid %08x-%04x-%04x-%04x-%012x
|
|
||||||
specify machine UUID
|
|
||||||
|
|
||||||
Display options:
|
|
||||||
-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]
|
|
||||||
[,window_close=on|off]|curses|none|
|
|
||||||
vnc=<display>[,<optargs>]
|
|
||||||
select display type
|
|
||||||
-nographic disable graphical output and redirect serial I/Os to console
|
|
||||||
-curses use a curses/ncurses interface instead of SDL
|
|
||||||
-no-frame open SDL window without a frame and window decorations
|
|
||||||
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-no-quit disable SDL window close capability
|
|
||||||
-sdl enable SDL
|
|
||||||
-spice <args> enable spice
|
|
||||||
-portrait rotate graphical output 90 deg left (only PXA LCD)
|
|
||||||
-rotate <deg> rotate graphical output some deg left (only PXA LCD)
|
|
||||||
-vga [std|cirrus|vmware|qxl|xenfb|none]
|
|
||||||
select video card type
|
|
||||||
-full-screen start in full screen
|
|
||||||
-vnc display start a VNC server on display
|
|
||||||
|
|
||||||
i386 target only:
|
|
||||||
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
|
|
||||||
-no-fd-bootchk disable boot signature checking for floppy disks
|
|
||||||
-no-acpi disable ACPI
|
|
||||||
-no-hpet disable HPET
|
|
||||||
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...]
|
|
||||||
ACPI table description
|
|
||||||
-smbios file=binary
|
|
||||||
load SMBIOS entry from binary file
|
|
||||||
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
|
|
||||||
specify SMBIOS type 0 fields
|
|
||||||
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
|
|
||||||
[,uuid=uuid][,sku=str][,family=str]
|
|
||||||
specify SMBIOS type 1 fields
|
|
||||||
|
|
||||||
Network options:
|
|
||||||
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
|
|
||||||
create a new Network Interface Card and connect it to VLAN 'n'
|
|
||||||
-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=on|off]
|
|
||||||
[,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f]
|
|
||||||
[,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
|
|
||||||
connect the user mode network stack to VLAN 'n', configure its
|
|
||||||
DHCP server and enabled optional services
|
|
||||||
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off]
|
|
||||||
connect the host TAP network interface to VLAN 'n'
|
|
||||||
use network scripts 'file' (default=/etc/qemu-ifup)
|
|
||||||
to configure it and 'dfile' (default=/etc/qemu-ifdown)
|
|
||||||
to deconfigure it
|
|
||||||
use '[down]script=no' to disable script execution
|
|
||||||
use network helper 'helper' (default=/usr/libexec/qemu-bridge-helper) to
|
|
||||||
configure it
|
|
||||||
use 'fd=h' to connect to an already opened TAP interface
|
|
||||||
use 'sndbuf=nbytes' to limit the size of the send buffer (the
|
|
||||||
default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')
|
|
||||||
use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag
|
|
||||||
use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition
|
|
||||||
use vhost=on to enable experimental in kernel accelerator
|
|
||||||
(only has effect for virtio guests which use MSIX)
|
|
||||||
use vhostforce=on to force vhost on for non-MSIX virtio guests
|
|
||||||
use 'vhostfd=h' to connect to an already opened vhost net device
|
|
||||||
-net bridge[,vlan=n][,name=str][,br=bridge][,helper=helper]
|
|
||||||
connects a host TAP network interface to a host bridge device 'br'
|
|
||||||
(default=br0) using the program 'helper'
|
|
||||||
(default=/usr/libexec/qemu-bridge-helper)
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using a socket connection
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port[,localaddr=addr]]
|
|
||||||
connect the vlan 'n' to multicast maddr and port
|
|
||||||
use 'localaddr=addr' to specify the host address to send packets from
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,udp=host:port][,localaddr=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using an UDP tunnel
|
|
||||||
-net dump[,vlan=n][,file=f][,len=n]
|
|
||||||
dump traffic on vlan 'n' to file 'f' (max n bytes per packet)
|
|
||||||
-net none use it alone to have zero network devices. If no -net option
|
|
||||||
is provided, the default is '-net nic -net user'
|
|
||||||
-netdev [user|tap|bridge|socket],id=str[,option][,option][,...]
|
|
||||||
|
|
||||||
Character device options:
|
|
||||||
-chardev null,id=id[,mux=on|off]
|
|
||||||
-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
|
|
||||||
[,server][,nowait][,telnet][,mux=on|off] (tcp)
|
|
||||||
-chardev socket,id=id,path=path[,server][,nowait][,telnet],[mux=on|off] (unix)
|
|
||||||
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
|
|
||||||
[,localport=localport][,ipv4][,ipv6][,mux=on|off]
|
|
||||||
-chardev msmouse,id=id[,mux=on|off]
|
|
||||||
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
|
|
||||||
[,mux=on|off]
|
|
||||||
-chardev file,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pipe,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pty,id=id[,mux=on|off]
|
|
||||||
-chardev stdio,id=id[,mux=on|off][,signal=on|off]
|
|
||||||
-chardev braille,id=id[,mux=on|off]
|
|
||||||
-chardev tty,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev parport,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev spicevmc,id=id,name=name[,debug=debug]
|
|
||||||
|
|
||||||
-iscsi [user=user][,password=password]
|
|
||||||
[,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE
|
|
||||||
[,initiator-name=iqn]
|
|
||||||
iSCSI session parameters
|
|
||||||
Bluetooth(R) options:
|
|
||||||
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
|
|
||||||
-bt hci,host[:id]
|
|
||||||
use host's HCI with the given name
|
|
||||||
-bt hci[,vlan=n]
|
|
||||||
emulate a standard HCI in virtual scatternet 'n'
|
|
||||||
-bt vhci[,vlan=n]
|
|
||||||
add host computer to virtual scatternet 'n' using VHCI
|
|
||||||
-bt device:dev[,vlan=n]
|
|
||||||
emulate a bluetooth device 'dev' in scatternet 'n'
|
|
||||||
|
|
||||||
Linux/Multiboot boot specific:
|
|
||||||
-kernel bzImage use 'bzImage' as kernel image
|
|
||||||
-append cmdline use 'cmdline' as kernel command line
|
|
||||||
-initrd file use 'file' as initial ram disk
|
|
||||||
-dtb file use 'file' as device tree image
|
|
||||||
|
|
||||||
Debug/Expert options:
|
|
||||||
-serial dev redirect the serial port to char device 'dev'
|
|
||||||
-parallel dev redirect the parallel port to char device 'dev'
|
|
||||||
-monitor dev redirect the monitor to char device 'dev'
|
|
||||||
-qmp dev like -monitor but opens in 'control' mode
|
|
||||||
-mon chardev=[name][,mode=readline|control][,default]
|
|
||||||
-debugcon dev redirect the debug console to char device 'dev'
|
|
||||||
-pidfile file write PID to 'file'
|
|
||||||
-singlestep always run in singlestep mode
|
|
||||||
-S freeze CPU at startup (use 'c' to start execution)
|
|
||||||
-gdb dev wait for gdb connection on 'dev'
|
|
||||||
-s shorthand for -gdb tcp::1234
|
|
||||||
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
|
|
||||||
-D logfile output log to logfile (instead of the default /tmp/qemu.log)
|
|
||||||
-hdachs c,h,s[,t]
|
|
||||||
force hard disk 0 physical geometry and the optional BIOS
|
|
||||||
translation (t=none or lba) (usually QEMU can guess them)
|
|
||||||
-L path set the directory for the BIOS, VGA BIOS and keymaps
|
|
||||||
-bios file set the filename for the BIOS
|
|
||||||
-enable-kvm enable KVM full virtualization support
|
|
||||||
-xen-domid id specify xen guest domain id
|
|
||||||
-xen-create create domain using xen hypercalls, bypassing xend
|
|
||||||
warning: should not be used when xend is in use
|
|
||||||
-xen-attach attach to existing xen domain
|
|
||||||
xend will use this when starting QEMU
|
|
||||||
-no-reboot exit instead of rebooting
|
|
||||||
-no-shutdown stop before shutdown
|
|
||||||
-loadvm [tag|id]
|
|
||||||
start right away with a saved state (loadvm in monitor)
|
|
||||||
-daemonize daemonize QEMU after initializing
|
|
||||||
-option-rom rom load a file, rom, into the option ROM space
|
|
||||||
-clock force the use of the given methods for timer alarm.
|
|
||||||
To see what timers are available use -clock ?
|
|
||||||
-rtc [base=utc|localtime|date][,clock=host|rt|vm][,driftfix=none|slew]
|
|
||||||
set the RTC base and clock, enable drift fix for clock ticks (x86 only)
|
|
||||||
-icount [N|auto]
|
|
||||||
enable virtual instruction counter with 2^N clock ticks per
|
|
||||||
instruction
|
|
||||||
-watchdog i6300esb|ib700
|
|
||||||
enable virtual hardware watchdog [default=none]
|
|
||||||
-watchdog-action reset|shutdown|poweroff|pause|debug|none
|
|
||||||
action when watchdog fires [default=reset]
|
|
||||||
-echr chr set terminal escape character instead of ctrl-a
|
|
||||||
-virtioconsole c
|
|
||||||
set virtio console
|
|
||||||
-show-cursor show cursor
|
|
||||||
-tb-size n set TB size
|
|
||||||
-incoming p prepare for incoming migration, listen on port p
|
|
||||||
-nodefaults don't create default devices
|
|
||||||
-chroot dir chroot to dir just before starting the VM
|
|
||||||
-runas user change to user id user just before starting the VM
|
|
||||||
-readconfig <file>
|
|
||||||
-writeconfig <file>
|
|
||||||
read/write config file
|
|
||||||
-nodefconfig
|
|
||||||
do not load default config files at startup
|
|
||||||
-no-user-config
|
|
||||||
do not load user-provided config files at startup
|
|
||||||
-trace [events=<file>][,file=<file>]
|
|
||||||
specify tracing options
|
|
||||||
-qtest CHR specify tracing options
|
|
||||||
-qtest-log LOG specify tracing options
|
|
||||||
|
|
||||||
During emulation, the following keys are useful:
|
|
||||||
ctrl-alt-f toggle full screen
|
|
||||||
ctrl-alt-n switch to virtual console 'n'
|
|
||||||
ctrl-alt toggle mouse and keyboard grab
|
|
||||||
|
|
||||||
When using -nographic, press 'ctrl-a h' to get some help.
|
|
@ -1,170 +0,0 @@
|
|||||||
name "usb-storage", bus USB
|
|
||||||
name "VGA", bus PCI
|
|
||||||
name "scsi-hd", bus SCSI, desc "virtual SCSI disk"
|
|
||||||
name "i82559a", bus PCI, desc "Intel i82559A Ethernet"
|
|
||||||
name "i82559b", bus PCI, desc "Intel i82559B Ethernet"
|
|
||||||
name "i82559c", bus PCI, desc "Intel i82559C Ethernet"
|
|
||||||
name "sysbus-ohci", bus System, desc "OHCI USB Controller"
|
|
||||||
name "virtio-blk-pci", bus PCI, alias "virtio-blk"
|
|
||||||
name "qxl-vga", bus PCI, desc "Spice QXL GPU (primary, vga compatible)"
|
|
||||||
name "x3130-upstream", bus PCI, desc "TI X3130 Upstream Port of PCI Express Switch"
|
|
||||||
name "ide-drive", bus IDE, desc "virtual IDE disk or CD-ROM (legacy)"
|
|
||||||
name "virtio-9p-pci", bus PCI
|
|
||||||
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
|
|
||||||
name "ide-hd", bus IDE, desc "virtual IDE disk"
|
|
||||||
name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370"
|
|
||||||
name "ioh3420", bus PCI, desc "Intel IOH device id 3420 PCIE Root Port"
|
|
||||||
name "sga", bus ISA, desc "Serial Graphics Adapter"
|
|
||||||
name "scsi-block", bus SCSI, desc "SCSI block device passthrough"
|
|
||||||
name "usb-serial", bus USB
|
|
||||||
name "pc-sysfw", bus System, desc "PC System Firmware"
|
|
||||||
name "usb-mouse", bus USB
|
|
||||||
name "usb-hub", bus USB
|
|
||||||
name "usb-net", bus USB
|
|
||||||
name "ccid-card-emulated", bus ccid-bus, desc "emulated smartcard"
|
|
||||||
name "ne2k_isa", bus ISA
|
|
||||||
name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)"
|
|
||||||
name "pcnet", bus PCI
|
|
||||||
name "lsi53c895a", bus PCI, alias "lsi"
|
|
||||||
name "scsi-disk", bus SCSI, desc "virtual SCSI disk or CD-ROM (legacy)"
|
|
||||||
name "hda-micro", bus HDA, desc "HDA Audio Codec, duplex (speaker, microphone)"
|
|
||||||
name "xio3130-downstream", bus PCI, desc "TI X3130 Downstream Port of PCI Express Switch"
|
|
||||||
name "virtserialport", bus virtio-serial-bus
|
|
||||||
name "nec-usb-xhci", bus PCI
|
|
||||||
name "pci-ohci", bus PCI, desc "Apple USB Controller"
|
|
||||||
name "usb-braille", bus USB
|
|
||||||
name "scsi-cd", bus SCSI, desc "virtual SCSI CD-ROM"
|
|
||||||
name "usb-wacom-tablet", bus USB, desc "QEMU PenPartner Tablet"
|
|
||||||
name "isa-serial", bus ISA
|
|
||||||
name "i82550", bus PCI, desc "Intel i82550 Ethernet"
|
|
||||||
name "i82551", bus PCI, desc "Intel i82551 Ethernet"
|
|
||||||
name "isa-debugcon", bus ISA
|
|
||||||
name "ide-cd", bus IDE, desc "virtual IDE CD-ROM"
|
|
||||||
name "SUNW,fdtwo", bus System
|
|
||||||
name "ich9-usb-uhci1", bus PCI
|
|
||||||
name "ich9-usb-uhci2", bus PCI
|
|
||||||
name "ich9-usb-uhci3", bus PCI
|
|
||||||
name "isa-parallel", bus ISA
|
|
||||||
name "virtconsole", bus virtio-serial-bus
|
|
||||||
name "ne2k_pci", bus PCI
|
|
||||||
name "virtio-serial-pci", bus PCI, alias "virtio-serial"
|
|
||||||
name "hda-duplex", bus HDA, desc "HDA Audio Codec, duplex (line-out, line-in)"
|
|
||||||
name "intel-hda", bus PCI, desc "Intel HD Audio Controller"
|
|
||||||
name "i82559er", bus PCI, desc "Intel i82559ER Ethernet"
|
|
||||||
name "hda-output", bus HDA, desc "HDA Audio Codec, output-only (line-out)"
|
|
||||||
name "i82562", bus PCI, desc "Intel i82562 Ethernet"
|
|
||||||
name "sysbus-ahci", bus System
|
|
||||||
name "usb-ccid", bus USB, desc "CCID Rev 1.1 smartcard reader"
|
|
||||||
name "ivshmem", bus PCI
|
|
||||||
name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio"
|
|
||||||
name "e1000", bus PCI, desc "Intel Gigabit Ethernet"
|
|
||||||
name "sysbus-fdc", bus System
|
|
||||||
name "usb-bt-dongle", bus USB
|
|
||||||
name "usb-tablet", bus USB
|
|
||||||
name "isa-vga", bus ISA
|
|
||||||
name "usb-kbd", bus USB
|
|
||||||
name "isa-applesmc", bus ISA
|
|
||||||
name "rtl8139", bus PCI
|
|
||||||
name "qxl", bus PCI, desc "Spice QXL GPU (secondary)"
|
|
||||||
name "i82557a", bus PCI, desc "Intel i82557A Ethernet"
|
|
||||||
name "i82557b", bus PCI, desc "Intel i82557B Ethernet"
|
|
||||||
name "i82557c", bus PCI, desc "Intel i82557C Ethernet"
|
|
||||||
name "usb-audio", bus USB
|
|
||||||
name "piix3-usb-uhci", bus PCI
|
|
||||||
name "ccid-card-passthru", bus ccid-bus, desc "passthrough smartcard"
|
|
||||||
name "ib700", bus ISA
|
|
||||||
name "i82801", bus PCI, desc "Intel i82801 Ethernet"
|
|
||||||
name "smbus-eeprom", bus I2C
|
|
||||||
name "vmware-svga", bus PCI
|
|
||||||
name "isa-cirrus-vga", bus ISA
|
|
||||||
name "piix4-usb-uhci", bus PCI
|
|
||||||
name "sb16", bus ISA, desc "Creative Sound Blaster 16"
|
|
||||||
name "pci-bridge", bus PCI, desc "Standard PCI Bridge"
|
|
||||||
name "usb-ehci", bus PCI
|
|
||||||
name "i82558a", bus PCI, desc "Intel i82558A Ethernet"
|
|
||||||
name "i82558b", bus PCI, desc "Intel i82558B Ethernet"
|
|
||||||
name "virtio-net-pci", bus PCI, alias "virtio-net"
|
|
||||||
name "virtio-balloon-pci", bus PCI, alias "virtio-balloon"
|
|
||||||
name "ich9-usb-ehci1", bus PCI
|
|
||||||
name "isa-ide", bus ISA
|
|
||||||
name "i6300esb", bus PCI
|
|
||||||
name "ich9-ahci", bus PCI, alias "ahci"
|
|
||||||
name "usb-host", bus USB
|
|
||||||
name "vt82c686b-usb-uhci", bus PCI
|
|
||||||
name "virtio-scsi-pci", bus PCI
|
|
||||||
virtio-blk-pci.class=hex32
|
|
||||||
virtio-blk-pci.drive=drive
|
|
||||||
virtio-blk-pci.logical_block_size=blocksize
|
|
||||||
virtio-blk-pci.physical_block_size=blocksize
|
|
||||||
virtio-blk-pci.min_io_size=uint16
|
|
||||||
virtio-blk-pci.opt_io_size=uint32
|
|
||||||
virtio-blk-pci.bootindex=int32
|
|
||||||
virtio-blk-pci.discard_granularity=uint32
|
|
||||||
virtio-blk-pci.serial=string
|
|
||||||
virtio-blk-pci.scsi=on/off
|
|
||||||
virtio-blk-pci.ioeventfd=on/off
|
|
||||||
virtio-blk-pci.vectors=uint32
|
|
||||||
virtio-blk-pci.indirect_desc=on/off
|
|
||||||
virtio-blk-pci.event_idx=on/off
|
|
||||||
virtio-blk-pci.addr=pci-devfn
|
|
||||||
virtio-blk-pci.romfile=string
|
|
||||||
virtio-blk-pci.rombar=uint32
|
|
||||||
virtio-blk-pci.multifunction=on/off
|
|
||||||
virtio-blk-pci.command_serr_enable=on/off
|
|
||||||
virtio-net-pci.ioeventfd=on/off
|
|
||||||
virtio-net-pci.vectors=uint32
|
|
||||||
virtio-net-pci.indirect_desc=on/off
|
|
||||||
virtio-net-pci.event_idx=on/off
|
|
||||||
virtio-net-pci.csum=on/off
|
|
||||||
virtio-net-pci.guest_csum=on/off
|
|
||||||
virtio-net-pci.gso=on/off
|
|
||||||
virtio-net-pci.guest_tso4=on/off
|
|
||||||
virtio-net-pci.guest_tso6=on/off
|
|
||||||
virtio-net-pci.guest_ecn=on/off
|
|
||||||
virtio-net-pci.guest_ufo=on/off
|
|
||||||
virtio-net-pci.host_tso4=on/off
|
|
||||||
virtio-net-pci.host_tso6=on/off
|
|
||||||
virtio-net-pci.host_ecn=on/off
|
|
||||||
virtio-net-pci.host_ufo=on/off
|
|
||||||
virtio-net-pci.mrg_rxbuf=on/off
|
|
||||||
virtio-net-pci.status=on/off
|
|
||||||
virtio-net-pci.ctrl_vq=on/off
|
|
||||||
virtio-net-pci.ctrl_rx=on/off
|
|
||||||
virtio-net-pci.ctrl_vlan=on/off
|
|
||||||
virtio-net-pci.ctrl_rx_extra=on/off
|
|
||||||
virtio-net-pci.mac=macaddr
|
|
||||||
virtio-net-pci.vlan=vlan
|
|
||||||
virtio-net-pci.netdev=netdev
|
|
||||||
virtio-net-pci.bootindex=int32
|
|
||||||
virtio-net-pci.x-txtimer=uint32
|
|
||||||
virtio-net-pci.x-txburst=int32
|
|
||||||
virtio-net-pci.tx=string
|
|
||||||
virtio-net-pci.addr=pci-devfn
|
|
||||||
virtio-net-pci.romfile=string
|
|
||||||
virtio-net-pci.rombar=uint32
|
|
||||||
virtio-net-pci.multifunction=on/off
|
|
||||||
virtio-net-pci.command_serr_enable=on/off
|
|
||||||
scsi-disk.drive=drive
|
|
||||||
scsi-disk.logical_block_size=blocksize
|
|
||||||
scsi-disk.physical_block_size=blocksize
|
|
||||||
scsi-disk.min_io_size=uint16
|
|
||||||
scsi-disk.opt_io_size=uint32
|
|
||||||
scsi-disk.bootindex=int32
|
|
||||||
scsi-disk.discard_granularity=uint32
|
|
||||||
scsi-disk.ver=string
|
|
||||||
scsi-disk.serial=string
|
|
||||||
scsi-disk.removable=on/off
|
|
||||||
scsi-disk.dpofua=on/off
|
|
||||||
scsi-disk.channel=uint32
|
|
||||||
scsi-disk.scsi-id=uint32
|
|
||||||
scsi-disk.lun=uint32
|
|
||||||
scsi-generic.drive=drive
|
|
||||||
scsi-generic.logical_block_size=blocksize
|
|
||||||
scsi-generic.physical_block_size=blocksize
|
|
||||||
scsi-generic.min_io_size=uint16
|
|
||||||
scsi-generic.opt_io_size=uint32
|
|
||||||
scsi-generic.bootindex=int32
|
|
||||||
scsi-generic.discard_granularity=uint32
|
|
||||||
scsi-generic.channel=uint32
|
|
||||||
scsi-generic.scsi-id=uint32
|
|
||||||
scsi-generic.lun=uint32
|
|
@ -1,272 +0,0 @@
|
|||||||
QEMU emulator version 1.2.0, Copyright (c) 2003-2008 Fabrice Bellard
|
|
||||||
usage: qemu-system-x86_64 [options] [disk_image]
|
|
||||||
|
|
||||||
'disk_image' is a raw hard disk image for IDE hard disk 0
|
|
||||||
|
|
||||||
Standard options:
|
|
||||||
-h or -help display this help and exit
|
|
||||||
-version display version information and exit
|
|
||||||
-machine [type=]name[,prop[=value][,...]]
|
|
||||||
selects emulated machine (-machine ? for list)
|
|
||||||
property accel=accel1[:accel2[:...]] selects accelerator
|
|
||||||
supported accelerators are kvm, xen, tcg (default: tcg)
|
|
||||||
kernel_irqchip=on|off controls accelerated irqchip support
|
|
||||||
kvm_shadow_mem=size of KVM shadow MMU
|
|
||||||
dump-guest-core=on|off include guest memory in a core dump (default=on)
|
|
||||||
-cpu cpu select CPU (-cpu ? for list)
|
|
||||||
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
|
|
||||||
set the number of CPUs to 'n' [default=1]
|
|
||||||
maxcpus= maximum number of total cpus, including
|
|
||||||
offline CPUs for hotplug, etc
|
|
||||||
cores= number of CPU cores on one socket
|
|
||||||
threads= number of threads on one CPU core
|
|
||||||
sockets= number of discrete sockets in the system
|
|
||||||
-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
|
|
||||||
-fda/-fdb file use 'file' as floppy disk 0/1 image
|
|
||||||
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
|
|
||||||
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
|
|
||||||
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
|
|
||||||
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
|
|
||||||
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
|
|
||||||
[,cache=writethrough|writeback|none|directsync|unsafe][,format=f]
|
|
||||||
[,serial=s][,addr=A][,id=name][,aio=threads|native]
|
|
||||||
[,readonly=on|off][,copy-on-read=on|off]
|
|
||||||
[[,bps=b]|[[,bps_rd=r][,bps_wr=w]]][[,iops=i]|[[,iops_rd=r][,iops_wr=w]]
|
|
||||||
use 'file' as a drive image
|
|
||||||
-set group.id.arg=value
|
|
||||||
set <arg> parameter for item <id> of type <group>
|
|
||||||
i.e. -set drive.$id.file=/path/to/image
|
|
||||||
-global driver.prop=value
|
|
||||||
set a global default for a driver property
|
|
||||||
-mtdblock file use 'file' as on-board Flash memory image
|
|
||||||
-sd file use 'file' as SecureDigital card image
|
|
||||||
-pflash file use 'file' as a parallel flash image
|
|
||||||
-boot [order=drives][,once=drives][,menu=on|off]
|
|
||||||
[,splash=sp_name][,splash-time=sp_time]
|
|
||||||
'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
|
|
||||||
'sp_name': the file's name that would be passed to bios as logo picture, if menu=on
|
|
||||||
'sp_time': the period that splash picture last if menu=on, unit is ms
|
|
||||||
-snapshot write to temporary files instead of disk image files
|
|
||||||
-m megs set virtual RAM size to megs MB [default=128]
|
|
||||||
-mem-path FILE provide backing storage for guest RAM
|
|
||||||
-mem-prealloc preallocate guest memory (use with -mem-path)
|
|
||||||
-k language use keyboard layout (for example 'fr' for French)
|
|
||||||
-audio-help print list of audio drivers and their options
|
|
||||||
-soundhw c1,... enable audio support
|
|
||||||
and only specified sound cards (comma separated list)
|
|
||||||
use -soundhw ? to get the list of supported cards
|
|
||||||
use -soundhw all to enable all of them
|
|
||||||
-balloon none disable balloon device
|
|
||||||
-balloon virtio[,addr=str]
|
|
||||||
enable virtio balloon device (default)
|
|
||||||
-usb enable the USB driver (will be the default soon)
|
|
||||||
-usbdevice name add the host or guest USB device 'name'
|
|
||||||
-device driver[,prop[=value][,...]]
|
|
||||||
add device (based on driver)
|
|
||||||
prop=value,... sets driver properties
|
|
||||||
use -device ? to print all possible drivers
|
|
||||||
use -device driver,? to print all possible properties
|
|
||||||
|
|
||||||
File system options:
|
|
||||||
-fsdev fsdriver,id=id[,path=path,][security_model={mapped-xattr|mapped-file|passthrough|none}]
|
|
||||||
[,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd]
|
|
||||||
|
|
||||||
Virtual File system pass-through options:
|
|
||||||
-virtfs local,path=path,mount_tag=tag,security_model=[mapped-xattr|mapped-file|passthrough|none]
|
|
||||||
[,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd]
|
|
||||||
-virtfs_synth Create synthetic file system image
|
|
||||||
|
|
||||||
-name string1[,process=string2]
|
|
||||||
set the name of the guest
|
|
||||||
string1 sets the window title and string2 the process name (on Linux)
|
|
||||||
-uuid %08x-%04x-%04x-%04x-%012x
|
|
||||||
specify machine UUID
|
|
||||||
|
|
||||||
Display options:
|
|
||||||
-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]
|
|
||||||
[,window_close=on|off]|curses|none|
|
|
||||||
vnc=<display>[,<optargs>]
|
|
||||||
select display type
|
|
||||||
-nographic disable graphical output and redirect serial I/Os to console
|
|
||||||
-curses use a curses/ncurses interface instead of SDL
|
|
||||||
-no-frame open SDL window without a frame and window decorations
|
|
||||||
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-no-quit disable SDL window close capability
|
|
||||||
-sdl enable SDL
|
|
||||||
-spice <args> enable spice
|
|
||||||
-portrait rotate graphical output 90 deg left (only PXA LCD)
|
|
||||||
-rotate <deg> rotate graphical output some deg left (only PXA LCD)
|
|
||||||
-vga [std|cirrus|vmware|qxl|xenfb|none]
|
|
||||||
select video card type
|
|
||||||
-full-screen start in full screen
|
|
||||||
-vnc display start a VNC server on display
|
|
||||||
|
|
||||||
i386 target only:
|
|
||||||
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
|
|
||||||
-no-fd-bootchk disable boot signature checking for floppy disks
|
|
||||||
-no-acpi disable ACPI
|
|
||||||
-no-hpet disable HPET
|
|
||||||
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...]
|
|
||||||
ACPI table description
|
|
||||||
-smbios file=binary
|
|
||||||
load SMBIOS entry from binary file
|
|
||||||
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
|
|
||||||
specify SMBIOS type 0 fields
|
|
||||||
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
|
|
||||||
[,uuid=uuid][,sku=str][,family=str]
|
|
||||||
specify SMBIOS type 1 fields
|
|
||||||
|
|
||||||
Network options:
|
|
||||||
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
|
|
||||||
create a new Network Interface Card and connect it to VLAN 'n'
|
|
||||||
-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=on|off]
|
|
||||||
[,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f]
|
|
||||||
[,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
|
|
||||||
connect the user mode network stack to VLAN 'n', configure its
|
|
||||||
DHCP server and enabled optional services
|
|
||||||
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off]
|
|
||||||
connect the host TAP network interface to VLAN 'n'
|
|
||||||
use network scripts 'file' (default=/etc/qemu-ifup)
|
|
||||||
to configure it and 'dfile' (default=/etc/qemu-ifdown)
|
|
||||||
to deconfigure it
|
|
||||||
use '[down]script=no' to disable script execution
|
|
||||||
use network helper 'helper' (default=/usr/local/libexec/qemu-bridge-helper) to
|
|
||||||
configure it
|
|
||||||
use 'fd=h' to connect to an already opened TAP interface
|
|
||||||
use 'sndbuf=nbytes' to limit the size of the send buffer (the
|
|
||||||
default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')
|
|
||||||
use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag
|
|
||||||
use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition
|
|
||||||
use vhost=on to enable experimental in kernel accelerator
|
|
||||||
(only has effect for virtio guests which use MSIX)
|
|
||||||
use vhostforce=on to force vhost on for non-MSIX virtio guests
|
|
||||||
use 'vhostfd=h' to connect to an already opened vhost net device
|
|
||||||
-net bridge[,vlan=n][,name=str][,br=bridge][,helper=helper]
|
|
||||||
connects a host TAP network interface to a host bridge device 'br'
|
|
||||||
(default=br0) using the program 'helper'
|
|
||||||
(default=/usr/local/libexec/qemu-bridge-helper)
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using a socket connection
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port[,localaddr=addr]]
|
|
||||||
connect the vlan 'n' to multicast maddr and port
|
|
||||||
use 'localaddr=addr' to specify the host address to send packets from
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,udp=host:port][,localaddr=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using an UDP tunnel
|
|
||||||
-net dump[,vlan=n][,file=f][,len=n]
|
|
||||||
dump traffic on vlan 'n' to file 'f' (max n bytes per packet)
|
|
||||||
-net none use it alone to have zero network devices. If no -net option
|
|
||||||
is provided, the default is '-net nic -net user'
|
|
||||||
-netdev [user|tap|bridge|socket],id=str[,option][,option][,...]
|
|
||||||
|
|
||||||
Character device options:
|
|
||||||
-chardev null,id=id[,mux=on|off]
|
|
||||||
-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
|
|
||||||
[,server][,nowait][,telnet][,mux=on|off] (tcp)
|
|
||||||
-chardev socket,id=id,path=path[,server][,nowait][,telnet],[mux=on|off] (unix)
|
|
||||||
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
|
|
||||||
[,localport=localport][,ipv4][,ipv6][,mux=on|off]
|
|
||||||
-chardev msmouse,id=id[,mux=on|off]
|
|
||||||
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
|
|
||||||
[,mux=on|off]
|
|
||||||
-chardev file,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pipe,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pty,id=id[,mux=on|off]
|
|
||||||
-chardev stdio,id=id[,mux=on|off][,signal=on|off]
|
|
||||||
-chardev braille,id=id[,mux=on|off]
|
|
||||||
-chardev tty,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev parport,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev spicevmc,id=id,name=name[,debug=debug]
|
|
||||||
|
|
||||||
-iscsi [user=user][,password=password]
|
|
||||||
[,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE
|
|
||||||
[,initiator-name=iqn]
|
|
||||||
iSCSI session parameters
|
|
||||||
Bluetooth(R) options:
|
|
||||||
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
|
|
||||||
-bt hci,host[:id]
|
|
||||||
use host's HCI with the given name
|
|
||||||
-bt hci[,vlan=n]
|
|
||||||
emulate a standard HCI in virtual scatternet 'n'
|
|
||||||
-bt vhci[,vlan=n]
|
|
||||||
add host computer to virtual scatternet 'n' using VHCI
|
|
||||||
-bt device:dev[,vlan=n]
|
|
||||||
emulate a bluetooth device 'dev' in scatternet 'n'
|
|
||||||
|
|
||||||
Linux/Multiboot boot specific:
|
|
||||||
-kernel bzImage use 'bzImage' as kernel image
|
|
||||||
-append cmdline use 'cmdline' as kernel command line
|
|
||||||
-initrd file use 'file' as initial ram disk
|
|
||||||
-dtb file use 'file' as device tree image
|
|
||||||
|
|
||||||
Debug/Expert options:
|
|
||||||
-serial dev redirect the serial port to char device 'dev'
|
|
||||||
-parallel dev redirect the parallel port to char device 'dev'
|
|
||||||
-monitor dev redirect the monitor to char device 'dev'
|
|
||||||
-qmp dev like -monitor but opens in 'control' mode
|
|
||||||
-mon chardev=[name][,mode=readline|control][,default]
|
|
||||||
-debugcon dev redirect the debug console to char device 'dev'
|
|
||||||
-pidfile file write PID to 'file'
|
|
||||||
-singlestep always run in singlestep mode
|
|
||||||
-S freeze CPU at startup (use 'c' to start execution)
|
|
||||||
-gdb dev wait for gdb connection on 'dev'
|
|
||||||
-s shorthand for -gdb tcp::1234
|
|
||||||
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
|
|
||||||
-D logfile output log to logfile (instead of the default /tmp/qemu.log)
|
|
||||||
-hdachs c,h,s[,t]
|
|
||||||
force hard disk 0 physical geometry and the optional BIOS
|
|
||||||
translation (t=none or lba) (usually QEMU can guess them)
|
|
||||||
-L path set the directory for the BIOS, VGA BIOS and keymaps
|
|
||||||
-bios file set the filename for the BIOS
|
|
||||||
-enable-kvm enable KVM full virtualization support
|
|
||||||
-xen-domid id specify xen guest domain id
|
|
||||||
-xen-create create domain using xen hypercalls, bypassing xend
|
|
||||||
warning: should not be used when xend is in use
|
|
||||||
-xen-attach attach to existing xen domain
|
|
||||||
xend will use this when starting QEMU
|
|
||||||
-no-reboot exit instead of rebooting
|
|
||||||
-no-shutdown stop before shutdown
|
|
||||||
-loadvm [tag|id]
|
|
||||||
start right away with a saved state (loadvm in monitor)
|
|
||||||
-daemonize daemonize QEMU after initializing
|
|
||||||
-option-rom rom load a file, rom, into the option ROM space
|
|
||||||
-clock force the use of the given methods for timer alarm.
|
|
||||||
To see what timers are available use -clock ?
|
|
||||||
-rtc [base=utc|localtime|date][,clock=host|rt|vm][,driftfix=none|slew]
|
|
||||||
set the RTC base and clock, enable drift fix for clock ticks (x86 only)
|
|
||||||
-icount [N|auto]
|
|
||||||
enable virtual instruction counter with 2^N clock ticks per
|
|
||||||
instruction
|
|
||||||
-watchdog i6300esb|ib700
|
|
||||||
enable virtual hardware watchdog [default=none]
|
|
||||||
-watchdog-action reset|shutdown|poweroff|pause|debug|none
|
|
||||||
action when watchdog fires [default=reset]
|
|
||||||
-echr chr set terminal escape character instead of ctrl-a
|
|
||||||
-virtioconsole c
|
|
||||||
set virtio console
|
|
||||||
-show-cursor show cursor
|
|
||||||
-tb-size n set TB size
|
|
||||||
-incoming p prepare for incoming migration, listen on port p
|
|
||||||
-nodefaults don't create default devices
|
|
||||||
-chroot dir chroot to dir just before starting the VM
|
|
||||||
-runas user change to user id user just before starting the VM
|
|
||||||
-sandbox <arg> Enable seccomp mode 2 system call filter (default 'off').
|
|
||||||
-readconfig <file>
|
|
||||||
-writeconfig <file>
|
|
||||||
read/write config file
|
|
||||||
-nodefconfig
|
|
||||||
do not load default config files at startup
|
|
||||||
-no-user-config
|
|
||||||
do not load user-provided config files at startup
|
|
||||||
-trace [events=<file>][,file=<file>]
|
|
||||||
specify tracing options
|
|
||||||
-qtest CHR specify tracing options
|
|
||||||
-qtest-log LOG specify tracing options
|
|
||||||
-enable-fips enable FIPS 140-2 compliance
|
|
||||||
|
|
||||||
During emulation, the following keys are useful:
|
|
||||||
ctrl-alt-f toggle full screen
|
|
||||||
ctrl-alt-n switch to virtual console 'n'
|
|
||||||
ctrl-alt toggle mouse and keyboard grab
|
|
||||||
|
|
||||||
When using -nographic, press 'ctrl-a h' to get some help.
|
|
@ -1,215 +0,0 @@
|
|||||||
QEMU PC emulator version 0.12.3 (qemu-kvm-0.12.3), Copyright (c) 2003-2008 Fabrice Bellard
|
|
||||||
usage: qemu [options] [disk_image]
|
|
||||||
|
|
||||||
'disk_image' is a raw hard image image for IDE hard disk 0
|
|
||||||
|
|
||||||
Standard options:
|
|
||||||
-h or -help display this help and exit
|
|
||||||
-version display version information and exit
|
|
||||||
-M machine select emulated machine (-M ? for list)
|
|
||||||
-cpu cpu select CPU (-cpu ? for list)
|
|
||||||
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
|
|
||||||
set the number of CPUs to 'n' [default=1]
|
|
||||||
maxcpus= maximum number of total cpus, including
|
|
||||||
offline CPUs for hotplug etc.
|
|
||||||
cores= number of CPU cores on one socket
|
|
||||||
threads= number of threads on one CPU core
|
|
||||||
sockets= number of discrete sockets in the system
|
|
||||||
-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
|
|
||||||
-fda/-fdb file use 'file' as floppy disk 0/1 image
|
|
||||||
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
|
|
||||||
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
|
|
||||||
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
|
|
||||||
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
|
|
||||||
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
|
|
||||||
[,cache=writethrough|writeback|none][,format=f][,serial=s]
|
|
||||||
[,addr=A][,id=name][,aio=threads|native]
|
|
||||||
[,boot=on|off]
|
|
||||||
use 'file' as a drive image
|
|
||||||
-set group.id.arg=value
|
|
||||||
set <arg> parameter for item <id> of type <group>
|
|
||||||
i.e. -set drive.$id.file=/path/to/image
|
|
||||||
-global driver.property=value
|
|
||||||
set a global default for a driver property
|
|
||||||
-mtdblock file use 'file' as on-board Flash memory image
|
|
||||||
-sd file use 'file' as SecureDigital card image
|
|
||||||
-pflash file use 'file' as a parallel flash image
|
|
||||||
-boot [order=drives][,once=drives][,menu=on|off]
|
|
||||||
'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
|
|
||||||
-snapshot write to temporary files instead of disk image files
|
|
||||||
-m megs set virtual RAM size to megs MB [default=128]
|
|
||||||
-k language use keyboard layout (for example 'fr' for French)
|
|
||||||
-audio-help print list of audio drivers and their options
|
|
||||||
-soundhw c1,... enable audio support
|
|
||||||
and only specified sound cards (comma separated list)
|
|
||||||
use -soundhw ? to get the list of supported cards
|
|
||||||
use -soundhw all to enable all of them
|
|
||||||
-usb enable the USB driver (will be the default soon)
|
|
||||||
-usbdevice name add the host or guest USB device 'name'
|
|
||||||
-device driver[,options] add device
|
|
||||||
-name string1[,process=string2] set the name of the guest
|
|
||||||
string1 sets the window title and string2 the process name (on Linux)
|
|
||||||
-uuid %08x-%04x-%04x-%04x-%012x
|
|
||||||
specify machine UUID
|
|
||||||
|
|
||||||
Display options:
|
|
||||||
-nographic disable graphical output and redirect serial I/Os to console
|
|
||||||
-curses use a curses/ncurses interface instead of SDL
|
|
||||||
-no-frame open SDL window without a frame and window decorations
|
|
||||||
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-no-quit disable SDL window close capability
|
|
||||||
-sdl enable SDL
|
|
||||||
-portrait rotate graphical output 90 deg left (only PXA LCD)
|
|
||||||
-vga [std|cirrus|vmware|xenfb|none]
|
|
||||||
select video card type
|
|
||||||
-full-screen start in full screen
|
|
||||||
-vnc display start a VNC server on display
|
|
||||||
|
|
||||||
i386 target only:
|
|
||||||
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
|
|
||||||
-no-fd-bootchk disable boot signature checking for floppy disks
|
|
||||||
-no-acpi disable ACPI
|
|
||||||
-no-hpet disable HPET
|
|
||||||
-balloon none disable balloon device
|
|
||||||
-balloon virtio[,addr=str]
|
|
||||||
enable virtio balloon device (default)
|
|
||||||
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]
|
|
||||||
ACPI table description
|
|
||||||
-smbios file=binary
|
|
||||||
Load SMBIOS entry from binary file
|
|
||||||
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
|
|
||||||
Specify SMBIOS type 0 fields
|
|
||||||
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
|
|
||||||
[,uuid=uuid][,sku=str][,family=str]
|
|
||||||
Specify SMBIOS type 1 fields
|
|
||||||
|
|
||||||
Network options:
|
|
||||||
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
|
|
||||||
create a new Network Interface Card and connect it to VLAN 'n'
|
|
||||||
-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=y|n]
|
|
||||||
[,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f]
|
|
||||||
[,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
|
|
||||||
connect the user mode network stack to VLAN 'n', configure its
|
|
||||||
DHCP server and enabled optional services
|
|
||||||
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,sndbuf=nbytes][,vnet_hdr=on|off]
|
|
||||||
connect the host TAP network interface to VLAN 'n' and use the
|
|
||||||
network scripts 'file' (default=/etc/qemu-ifup)
|
|
||||||
and 'dfile' (default=/etc/qemu-ifdown);
|
|
||||||
use '[down]script=no' to disable script execution;
|
|
||||||
use 'fd=h' to connect to an already opened TAP interface
|
|
||||||
use 'sndbuf=nbytes' to limit the size of the send buffer; the
|
|
||||||
default of 'sndbuf=1048576' can be disabled using 'sndbuf=0'
|
|
||||||
use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag; use
|
|
||||||
vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using a socket connection
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port]
|
|
||||||
connect the vlan 'n' to multicast maddr and port
|
|
||||||
-net dump[,vlan=n][,file=f][,len=n]
|
|
||||||
dump traffic on vlan 'n' to file 'f' (max n bytes per packet)
|
|
||||||
-net none use it alone to have zero network devices; if no -net option
|
|
||||||
is provided, the default is '-net nic -net user'
|
|
||||||
-netdev [user|tap|socket],id=str[,option][,option][,...]
|
|
||||||
|
|
||||||
Character device options:
|
|
||||||
-chardev null,id=id
|
|
||||||
-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
|
|
||||||
[,server][,nowait][,telnet] (tcp)
|
|
||||||
-chardev socket,id=id,path=path[,server][,nowait][,telnet] (unix)
|
|
||||||
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
|
|
||||||
[,localport=localport][,ipv4][,ipv6]
|
|
||||||
-chardev msmouse,id=id
|
|
||||||
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
|
|
||||||
-chardev file,id=id,path=path
|
|
||||||
-chardev pipe,id=id,path=path
|
|
||||||
-chardev pty,id=id
|
|
||||||
-chardev stdio,id=id
|
|
||||||
-chardev tty,id=id,path=path
|
|
||||||
-chardev parport,id=id,path=path
|
|
||||||
|
|
||||||
Bluetooth(R) options:
|
|
||||||
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
|
|
||||||
-bt hci,host[:id]
|
|
||||||
use host's HCI with the given name
|
|
||||||
-bt hci[,vlan=n]
|
|
||||||
emulate a standard HCI in virtual scatternet 'n'
|
|
||||||
-bt vhci[,vlan=n]
|
|
||||||
add host computer to virtual scatternet 'n' using VHCI
|
|
||||||
-bt device:dev[,vlan=n]
|
|
||||||
emulate a bluetooth device 'dev' in scatternet 'n'
|
|
||||||
|
|
||||||
Linux/Multiboot boot specific:
|
|
||||||
-kernel bzImage use 'bzImage' as kernel image
|
|
||||||
-append cmdline use 'cmdline' as kernel command line
|
|
||||||
-initrd file use 'file' as initial ram disk
|
|
||||||
|
|
||||||
Debug/Expert options:
|
|
||||||
-serial dev redirect the serial port to char device 'dev'
|
|
||||||
-parallel dev redirect the parallel port to char device 'dev'
|
|
||||||
-monitor dev redirect the monitor to char device 'dev'
|
|
||||||
-qmp dev like -monitor but opens in 'control' mode.
|
|
||||||
-mon chardev=[name][,mode=readline|control][,default]
|
|
||||||
-pidfile file write PID to 'file'
|
|
||||||
-singlestep always run in singlestep mode
|
|
||||||
-S freeze CPU at startup (use 'c' to start execution)
|
|
||||||
-gdb dev wait for gdb connection on 'dev'
|
|
||||||
-s shorthand for -gdb tcp::1234
|
|
||||||
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
|
|
||||||
-hdachs c,h,s[,t]
|
|
||||||
force hard disk 0 physical geometry and the optional BIOS
|
|
||||||
translation (t=none or lba) (usually qemu can guess them)
|
|
||||||
-L path set the directory for the BIOS, VGA BIOS and keymaps
|
|
||||||
-bios file set the filename for the BIOS
|
|
||||||
-enable-kvm enable KVM full virtualization support
|
|
||||||
-no-reboot exit instead of rebooting
|
|
||||||
-no-shutdown stop before shutdown
|
|
||||||
-loadvm [tag|id]
|
|
||||||
start right away with a saved state (loadvm in monitor)
|
|
||||||
-daemonize daemonize QEMU after initializing
|
|
||||||
-option-rom rom load a file, rom, into the option ROM space
|
|
||||||
-clock force the use of the given methods for timer alarm.
|
|
||||||
To see what timers are available use -clock ?
|
|
||||||
-rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew]
|
|
||||||
set the RTC base and clock, enable drift fix for clock ticks
|
|
||||||
-icount [N|auto]
|
|
||||||
enable virtual instruction counter with 2^N clock ticks per
|
|
||||||
instruction
|
|
||||||
-watchdog i6300esb|ib700
|
|
||||||
enable virtual hardware watchdog [default=none]
|
|
||||||
-watchdog-action reset|shutdown|poweroff|pause|debug|none
|
|
||||||
action when watchdog fires [default=reset]
|
|
||||||
-echr chr set terminal escape character instead of ctrl-a
|
|
||||||
-virtioconsole c
|
|
||||||
set virtio console
|
|
||||||
-show-cursor show cursor
|
|
||||||
-tb-size n set TB size
|
|
||||||
-incoming p prepare for incoming migration, listen on port p
|
|
||||||
-nodefaults don't create default devices.
|
|
||||||
-chroot dir Chroot to dir just before starting the VM.
|
|
||||||
-runas user Change to user id user just before starting the VM.
|
|
||||||
-readconfig <file>
|
|
||||||
-writeconfig <file>
|
|
||||||
read/write config file
|
|
||||||
-no-kvm disable KVM hardware virtualization
|
|
||||||
-no-kvm-irqchip disable KVM kernel mode PIC/IOAPIC/LAPIC
|
|
||||||
-no-kvm-pit disable KVM kernel mode PIT
|
|
||||||
-no-kvm-pit-reinjection disable KVM kernel mode PIT interrupt reinjection
|
|
||||||
-pcidevice host=bus:dev.func[,dma=none][,name=string]
|
|
||||||
expose a PCI device to the guest OS.
|
|
||||||
dma=none: don't perform any dma translations (default is to use an iommu)
|
|
||||||
'string' is used in log output.
|
|
||||||
-enable-nesting enable support for running a VM inside the VM (AMD only)
|
|
||||||
-nvram FILE provide ia64 nvram contents
|
|
||||||
-tdf enable guest time drift compensation
|
|
||||||
-kvm-shadow-memory MEGABYTES
|
|
||||||
allocate MEGABYTES for kvm mmu shadowing
|
|
||||||
-mem-path FILE provide backing storage for guest RAM
|
|
||||||
-mem-prealloc preallocate guest memory (use with -mempath)
|
|
||||||
|
|
||||||
During emulation, the following keys are useful:
|
|
||||||
ctrl-alt-f toggle full screen
|
|
||||||
ctrl-alt-n switch to virtual console 'n'
|
|
||||||
ctrl-alt toggle mouse and keyboard grab
|
|
||||||
|
|
||||||
When using -nographic, press 'ctrl-a h' to get some help.
|
|
@ -1,63 +0,0 @@
|
|||||||
name "pci-bridge", bus PCI
|
|
||||||
name "virtio-balloon-pci", bus PCI
|
|
||||||
name "virtio-console-pci", bus PCI
|
|
||||||
name "virtio-net-pci", bus PCI
|
|
||||||
name "virtio-blk-pci", bus PCI
|
|
||||||
name "i82562", bus PCI
|
|
||||||
name "i82559er", bus PCI
|
|
||||||
name "i82559c", bus PCI
|
|
||||||
name "i82559b", bus PCI
|
|
||||||
name "i82559a", bus PCI
|
|
||||||
name "i82558b", bus PCI
|
|
||||||
name "i82558a", bus PCI
|
|
||||||
name "i82557c", bus PCI
|
|
||||||
name "i82557b", bus PCI
|
|
||||||
name "i82557a", bus PCI
|
|
||||||
name "i82551", bus PCI
|
|
||||||
name "i82550", bus PCI
|
|
||||||
name "pcnet", bus PCI
|
|
||||||
name "rtl8139", bus PCI
|
|
||||||
name "e1000", bus PCI, desc "Intel Gigabit Ethernet"
|
|
||||||
name "ide-drive", bus IDE
|
|
||||||
name "isa-ide", bus ISA
|
|
||||||
name "piix4-ide", bus PCI, no-user
|
|
||||||
name "piix3-ide", bus PCI, no-user
|
|
||||||
name "i8042", bus ISA, no-user
|
|
||||||
name "sb16", bus ISA, desc "Creative Sound Blaster 16"
|
|
||||||
name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370"
|
|
||||||
name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio"
|
|
||||||
name "VGA", bus PCI
|
|
||||||
name "SUNW,fdtwo", bus System
|
|
||||||
name "sysbus-fdc", bus System
|
|
||||||
name "isa-fdc", bus ISA, no-user
|
|
||||||
name "mc146818rtc", bus ISA, no-user
|
|
||||||
name "isa-serial", bus ISA
|
|
||||||
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
|
|
||||||
name "isa-parallel", bus ISA
|
|
||||||
name "PIIX3", bus PCI, desc "ISA bridge", no-user
|
|
||||||
name "i440FX", bus PCI, desc "Host bridge", no-user
|
|
||||||
name "i440FX-pcihost", bus System, no-user
|
|
||||||
name "piix4-usb-uhci", bus PCI
|
|
||||||
name "piix3-usb-uhci", bus PCI
|
|
||||||
name "vmware-svga", bus PCI
|
|
||||||
name "ib700", bus ISA
|
|
||||||
name "ne2k_isa", bus ISA
|
|
||||||
name "testdev", bus ISA
|
|
||||||
name "smbus-eeprom", bus I2C
|
|
||||||
name "scsi-disk", bus SCSI, desc "virtual scsi disk or cdrom"
|
|
||||||
name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)"
|
|
||||||
name "usb-hub", bus USB
|
|
||||||
name "usb-host", bus USB
|
|
||||||
name "usb-kbd", bus USB
|
|
||||||
name "usb-mouse", bus USB
|
|
||||||
name "usb-tablet", bus USB
|
|
||||||
name "usb-storage", bus USB
|
|
||||||
name "usb-wacom-tablet", bus USB, desc "QEMU PenPartner Tablet"
|
|
||||||
name "usb-braille", bus USB
|
|
||||||
name "usb-serial", bus USB
|
|
||||||
name "usb-net", bus USB
|
|
||||||
name "usb-bt-dongle", bus USB
|
|
||||||
name "i6300esb", bus PCI
|
|
||||||
name "ne2k_pci", bus PCI
|
|
||||||
name "lsi53c895a", bus PCI, alias "lsi"
|
|
||||||
name "isabus-bridge", bus System, no-user
|
|
@ -1,242 +0,0 @@
|
|||||||
QEMU emulator version 0.13.0 (qemu-kvm-0.13.0), Copyright (c) 2003-2008 Fabrice Bellard
|
|
||||||
usage: qemu [options] [disk_image]
|
|
||||||
|
|
||||||
'disk_image' is a raw hard disk image for IDE hard disk 0
|
|
||||||
|
|
||||||
Standard options:
|
|
||||||
-h or -help display this help and exit
|
|
||||||
-version display version information and exit
|
|
||||||
-M machine select emulated machine (-M ? for list)
|
|
||||||
-cpu cpu select CPU (-cpu ? for list)
|
|
||||||
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
|
|
||||||
set the number of CPUs to 'n' [default=1]
|
|
||||||
maxcpus= maximum number of total cpus, including
|
|
||||||
offline CPUs for hotplug, etc
|
|
||||||
cores= number of CPU cores on one socket
|
|
||||||
threads= number of threads on one CPU core
|
|
||||||
sockets= number of discrete sockets in the system
|
|
||||||
-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
|
|
||||||
-fda/-fdb file use 'file' as floppy disk 0/1 image
|
|
||||||
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
|
|
||||||
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
|
|
||||||
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
|
|
||||||
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
|
|
||||||
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
|
|
||||||
[,cache=writethrough|writeback|none|unsafe][,format=f]
|
|
||||||
[,serial=s][,addr=A][,id=name][,aio=threads|native]
|
|
||||||
[,readonly=on|off][,boot=on|off]
|
|
||||||
use 'file' as a drive image
|
|
||||||
-set group.id.arg=value
|
|
||||||
set <arg> parameter for item <id> of type <group>
|
|
||||||
i.e. -set drive.$id.file=/path/to/image
|
|
||||||
-global driver.property=value
|
|
||||||
set a global default for a driver property
|
|
||||||
-mtdblock file use 'file' as on-board Flash memory image
|
|
||||||
-sd file use 'file' as SecureDigital card image
|
|
||||||
-pflash file use 'file' as a parallel flash image
|
|
||||||
-boot [order=drives][,once=drives][,menu=on|off]
|
|
||||||
'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
|
|
||||||
-snapshot write to temporary files instead of disk image files
|
|
||||||
-m megs set virtual RAM size to megs MB [default=128]
|
|
||||||
-mem-path FILE provide backing storage for guest RAM
|
|
||||||
-mem-prealloc preallocate guest memory (use with -mem-path)
|
|
||||||
-k language use keyboard layout (for example 'fr' for French)
|
|
||||||
-audio-help print list of audio drivers and their options
|
|
||||||
-soundhw c1,... enable audio support
|
|
||||||
and only specified sound cards (comma separated list)
|
|
||||||
use -soundhw ? to get the list of supported cards
|
|
||||||
use -soundhw all to enable all of them
|
|
||||||
-usb enable the USB driver (will be the default soon)
|
|
||||||
-usbdevice name add the host or guest USB device 'name'
|
|
||||||
-device driver[,prop[=value][,...]]
|
|
||||||
add device (based on driver)
|
|
||||||
prop=value,... sets driver properties
|
|
||||||
use -device ? to print all possible drivers
|
|
||||||
use -device driver,? to print all possible properties
|
|
||||||
File system options:
|
|
||||||
-fsdev local,id=id,path=path,security_model=[mapped|passthrough]
|
|
||||||
Virtual File system pass-through options:
|
|
||||||
-virtfs local,path=path,mount_tag=tag,security_model=[mapped|passthrough]
|
|
||||||
|
|
||||||
-name string1[,process=string2]
|
|
||||||
set the name of the guest
|
|
||||||
string1 sets the window title and string2 the process name (on Linux)
|
|
||||||
-uuid %08x-%04x-%04x-%04x-%012x
|
|
||||||
specify machine UUID
|
|
||||||
|
|
||||||
Display options:
|
|
||||||
-nographic disable graphical output and redirect serial I/Os to console
|
|
||||||
-curses use a curses/ncurses interface instead of SDL
|
|
||||||
-no-frame open SDL window without a frame and window decorations
|
|
||||||
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-no-quit disable SDL window close capability
|
|
||||||
-sdl enable SDL
|
|
||||||
-portrait rotate graphical output 90 deg left (only PXA LCD)
|
|
||||||
-vga [std|cirrus|vmware|xenfb|none]
|
|
||||||
select video card type
|
|
||||||
-full-screen start in full screen
|
|
||||||
-g WxH[xDEPTH] Set the initial graphical resolution and depth
|
|
||||||
-vnc display start a VNC server on display
|
|
||||||
|
|
||||||
i386 target only:
|
|
||||||
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
|
|
||||||
-no-fd-bootchk disable boot signature checking for floppy disks
|
|
||||||
-no-acpi disable ACPI
|
|
||||||
-no-hpet disable HPET
|
|
||||||
-balloon none disable balloon device
|
|
||||||
-balloon virtio[,addr=str]
|
|
||||||
enable virtio balloon device (default)
|
|
||||||
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,data=file1[:file2]...]
|
|
||||||
ACPI table description
|
|
||||||
-smbios file=binary
|
|
||||||
load SMBIOS entry from binary file
|
|
||||||
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
|
|
||||||
specify SMBIOS type 0 fields
|
|
||||||
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
|
|
||||||
[,uuid=uuid][,sku=str][,family=str]
|
|
||||||
specify SMBIOS type 1 fields
|
|
||||||
|
|
||||||
Network options:
|
|
||||||
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
|
|
||||||
create a new Network Interface Card and connect it to VLAN 'n'
|
|
||||||
-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=y|n]
|
|
||||||
[,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f]
|
|
||||||
[,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
|
|
||||||
connect the user mode network stack to VLAN 'n', configure its
|
|
||||||
DHCP server and enabled optional services
|
|
||||||
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h]
|
|
||||||
connect the host TAP network interface to VLAN 'n' and use the
|
|
||||||
network scripts 'file' (default=/etc/qemu-ifup)
|
|
||||||
and 'dfile' (default=/etc/qemu-ifdown)
|
|
||||||
use '[down]script=no' to disable script execution
|
|
||||||
use 'fd=h' to connect to an already opened TAP interface
|
|
||||||
use 'sndbuf=nbytes' to limit the size of the send buffer (the
|
|
||||||
default of 'sndbuf=1048576' can be disabled using 'sndbuf=0')
|
|
||||||
use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag
|
|
||||||
use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition
|
|
||||||
use vhost=on to enable experimental in kernel accelerator
|
|
||||||
use 'vhostfd=h' to connect to an already opened vhost net device
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using a socket connection
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port]
|
|
||||||
connect the vlan 'n' to multicast maddr and port
|
|
||||||
-net dump[,vlan=n][,file=f][,len=n]
|
|
||||||
dump traffic on vlan 'n' to file 'f' (max n bytes per packet)
|
|
||||||
-net none use it alone to have zero network devices. If no -net option
|
|
||||||
is provided, the default is '-net nic -net user'
|
|
||||||
-netdev [user|tap|socket],id=str[,option][,option][,...]
|
|
||||||
|
|
||||||
Character device options:
|
|
||||||
-chardev null,id=id[,mux=on|off]
|
|
||||||
-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
|
|
||||||
[,server][,nowait][,telnet][,mux=on|off] (tcp)
|
|
||||||
-chardev socket,id=id,path=path[,server][,nowait][,telnet],[mux=on|off] (unix)
|
|
||||||
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
|
|
||||||
[,localport=localport][,ipv4][,ipv6][,mux=on|off]
|
|
||||||
-chardev msmouse,id=id[,mux=on|off]
|
|
||||||
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
|
|
||||||
[,mux=on|off]
|
|
||||||
-chardev file,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pipe,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pty,id=id[,mux=on|off]
|
|
||||||
-chardev stdio,id=id[,mux=on|off][,signal=on|off]
|
|
||||||
-chardev tty,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev parport,id=id,path=path[,mux=on|off]
|
|
||||||
|
|
||||||
Bluetooth(R) options:
|
|
||||||
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
|
|
||||||
-bt hci,host[:id]
|
|
||||||
use host's HCI with the given name
|
|
||||||
-bt hci[,vlan=n]
|
|
||||||
emulate a standard HCI in virtual scatternet 'n'
|
|
||||||
-bt vhci[,vlan=n]
|
|
||||||
add host computer to virtual scatternet 'n' using VHCI
|
|
||||||
-bt device:dev[,vlan=n]
|
|
||||||
emulate a bluetooth device 'dev' in scatternet 'n'
|
|
||||||
|
|
||||||
Linux/Multiboot boot specific:
|
|
||||||
-kernel bzImage use 'bzImage' as kernel image
|
|
||||||
-append cmdline use 'cmdline' as kernel command line
|
|
||||||
-initrd file use 'file' as initial ram disk
|
|
||||||
|
|
||||||
Debug/Expert options:
|
|
||||||
-serial dev redirect the serial port to char device 'dev'
|
|
||||||
-parallel dev redirect the parallel port to char device 'dev'
|
|
||||||
-monitor dev redirect the monitor to char device 'dev'
|
|
||||||
-qmp dev like -monitor but opens in 'control' mode
|
|
||||||
-mon chardev=[name][,mode=readline|control][,default]
|
|
||||||
-debugcon dev redirect the debug console to char device 'dev'
|
|
||||||
-pidfile file write PID to 'file'
|
|
||||||
-singlestep always run in singlestep mode
|
|
||||||
-S freeze CPU at startup (use 'c' to start execution)
|
|
||||||
-gdb dev wait for gdb connection on 'dev'
|
|
||||||
-s shorthand for -gdb tcp::1234
|
|
||||||
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
|
|
||||||
-hdachs c,h,s[,t]
|
|
||||||
force hard disk 0 physical geometry and the optional BIOS
|
|
||||||
translation (t=none or lba) (usually qemu can guess them)
|
|
||||||
-L path set the directory for the BIOS, VGA BIOS and keymaps
|
|
||||||
-bios file set the filename for the BIOS
|
|
||||||
-enable-kvm enable KVM full virtualization support
|
|
||||||
-xen-domid id specify xen guest domain id
|
|
||||||
-xen-create create domain using xen hypercalls, bypassing xend
|
|
||||||
warning: should not be used when xend is in use
|
|
||||||
-xen-attach attach to existing xen domain
|
|
||||||
xend will use this when starting qemu
|
|
||||||
-no-reboot exit instead of rebooting
|
|
||||||
-no-shutdown stop before shutdown
|
|
||||||
-loadvm [tag|id]
|
|
||||||
start right away with a saved state (loadvm in monitor)
|
|
||||||
-daemonize daemonize QEMU after initializing
|
|
||||||
-option-rom rom load a file, rom, into the option ROM space
|
|
||||||
-clock force the use of the given methods for timer alarm.
|
|
||||||
To see what timers are available use -clock ?
|
|
||||||
-rtc [base=utc|localtime|date][,clock=host|vm][,driftfix=none|slew]
|
|
||||||
set the RTC base and clock, enable drift fix for clock ticks (x86 only)
|
|
||||||
-icount [N|auto]
|
|
||||||
enable virtual instruction counter with 2^N clock ticks per
|
|
||||||
instruction
|
|
||||||
-watchdog i6300esb|ib700
|
|
||||||
enable virtual hardware watchdog [default=none]
|
|
||||||
-watchdog-action reset|shutdown|poweroff|pause|debug|none
|
|
||||||
action when watchdog fires [default=reset]
|
|
||||||
-echr chr set terminal escape character instead of ctrl-a
|
|
||||||
-virtioconsole c
|
|
||||||
set virtio console
|
|
||||||
-show-cursor show cursor
|
|
||||||
-tb-size n set TB size
|
|
||||||
-incoming p prepare for incoming migration, listen on port p
|
|
||||||
-nodefaults don't create default devices
|
|
||||||
-chroot dir chroot to dir just before starting the VM
|
|
||||||
-runas user change to user id user just before starting the VM
|
|
||||||
-prom-env variable=value
|
|
||||||
set OpenBIOS nvram variables
|
|
||||||
-semihosting semihosting mode
|
|
||||||
-old-param old param mode
|
|
||||||
-readconfig <file>
|
|
||||||
-writeconfig <file>
|
|
||||||
read/write config file
|
|
||||||
-nodefconfig
|
|
||||||
do not load default config files at startup
|
|
||||||
-no-kvm disable KVM hardware virtualization
|
|
||||||
-no-kvm-irqchip disable KVM kernel mode PIC/IOAPIC/LAPIC
|
|
||||||
-no-kvm-pit disable KVM kernel mode PIT
|
|
||||||
-no-kvm-pit-reinjection
|
|
||||||
disable KVM kernel mode PIT interrupt reinjection
|
|
||||||
-pcidevice host=[seg:]bus:dev.func[,dma=none][,name=string]
|
|
||||||
expose a PCI device to the guest OS
|
|
||||||
dma=none: don't perform any dma translations (default is to use an iommu)
|
|
||||||
'string' is used in log output
|
|
||||||
-enable-nesting enable support for running a VM inside the VM (AMD only)
|
|
||||||
-nvram FILE provide ia64 nvram contents
|
|
||||||
-tdf enable guest time drift compensation
|
|
||||||
-kvm-shadow-memory MEGABYTES
|
|
||||||
allocate MEGABYTES for kvm mmu shadowing
|
|
||||||
|
|
||||||
During emulation, the following keys are useful:
|
|
||||||
ctrl-alt-f toggle full screen
|
|
||||||
ctrl-alt-n switch to virtual console 'n'
|
|
||||||
ctrl-alt toggle mouse and keyboard grab
|
|
||||||
|
|
||||||
When using -nographic, press 'ctrl-a h' to get some help.
|
|
@ -1,90 +0,0 @@
|
|||||||
name "pci-bridge", bus PCI
|
|
||||||
name "virtio-balloon-pci", bus PCI
|
|
||||||
name "virtio-serial-pci", bus PCI, alias "virtio-serial"
|
|
||||||
name "virtio-net-pci", bus PCI
|
|
||||||
name "virtio-blk-pci", bus PCI
|
|
||||||
name "sysbus-ohci", bus System, desc "OHCI USB Controller"
|
|
||||||
name "pci-ohci", bus PCI, desc "Apple USB Controller"
|
|
||||||
name "rtl8139", bus PCI
|
|
||||||
name "e1000", bus PCI, desc "Intel Gigabit Ethernet"
|
|
||||||
name "ivshmem", bus PCI
|
|
||||||
name "smbus-eeprom", bus I2C
|
|
||||||
name "scsi-disk", bus SCSI, desc "virtual scsi disk or cdrom"
|
|
||||||
name "scsi-generic", bus SCSI, desc "pass through generic scsi device (/dev/sg*)"
|
|
||||||
name "usb-hub", bus USB
|
|
||||||
name "usb-host", bus USB
|
|
||||||
name "usb-kbd", bus USB
|
|
||||||
name "usb-mouse", bus USB
|
|
||||||
name "usb-tablet", bus USB
|
|
||||||
name "usb-storage", bus USB
|
|
||||||
name "usb-wacom-tablet", bus USB, desc "QEMU PenPartner Tablet"
|
|
||||||
name "usb-braille", bus USB
|
|
||||||
name "usb-serial", bus USB
|
|
||||||
name "usb-net", bus USB
|
|
||||||
name "usb-bt-dongle", bus USB
|
|
||||||
name "virtserialport", bus virtio-serial-bus
|
|
||||||
name "virtconsole", bus virtio-serial-bus
|
|
||||||
name "isa-serial", bus ISA
|
|
||||||
name "isa-parallel", bus ISA
|
|
||||||
name "vt82c686b-usb-uhci", bus PCI
|
|
||||||
name "piix4-usb-uhci", bus PCI
|
|
||||||
name "piix3-usb-uhci", bus PCI
|
|
||||||
name "SUNW,fdtwo", bus System
|
|
||||||
name "sysbus-fdc", bus System
|
|
||||||
name "i6300esb", bus PCI
|
|
||||||
name "ne2k_pci", bus PCI
|
|
||||||
name "i82801", bus PCI, desc "Intel i82801 Ethernet"
|
|
||||||
name "i82562", bus PCI, desc "Intel i82562 Ethernet"
|
|
||||||
name "i82559er", bus PCI, desc "Intel i82559ER Ethernet"
|
|
||||||
name "i82559c", bus PCI, desc "Intel i82559C Ethernet"
|
|
||||||
name "i82559b", bus PCI, desc "Intel i82559B Ethernet"
|
|
||||||
name "i82559a", bus PCI, desc "Intel i82559A Ethernet"
|
|
||||||
name "i82558b", bus PCI, desc "Intel i82558B Ethernet"
|
|
||||||
name "i82558a", bus PCI, desc "Intel i82558A Ethernet"
|
|
||||||
name "i82557c", bus PCI, desc "Intel i82557C Ethernet"
|
|
||||||
name "i82557b", bus PCI, desc "Intel i82557B Ethernet"
|
|
||||||
name "i82557a", bus PCI, desc "Intel i82557A Ethernet"
|
|
||||||
name "i82551", bus PCI, desc "Intel i82551 Ethernet"
|
|
||||||
name "i82550", bus PCI, desc "Intel i82550 Ethernet"
|
|
||||||
name "pcnet", bus PCI
|
|
||||||
name "ne2k_isa", bus ISA
|
|
||||||
name "ide-drive", bus IDE
|
|
||||||
name "isa-ide", bus ISA
|
|
||||||
name "lsi53c895a", bus PCI, alias "lsi"
|
|
||||||
name "VGA", bus PCI
|
|
||||||
name "vmware-svga", bus PCI
|
|
||||||
name "sb16", bus ISA, desc "Creative Sound Blaster 16"
|
|
||||||
name "ES1370", bus PCI, desc "ENSONIQ AudioPCI ES1370"
|
|
||||||
name "AC97", bus PCI, desc "Intel 82801AA AC97 Audio"
|
|
||||||
name "cirrus-vga", bus PCI, desc "Cirrus CLGD 54xx VGA"
|
|
||||||
name "isa-applesmc", bus ISA
|
|
||||||
name "ib700", bus ISA
|
|
||||||
name "isa-debugcon", bus ISA
|
|
||||||
name "testdev", bus ISA
|
|
||||||
name "PIIX4_PM", bus PCI, desc "PM"
|
|
||||||
name "pci-assign", bus PCI, desc "pass through host pci devices to the guest"
|
|
||||||
pci-assign.host=pci-hostaddr
|
|
||||||
pci-assign.iommu=uint32
|
|
||||||
pci-assign.configfd=string
|
|
||||||
virtio-net-pci.vectors=uint32
|
|
||||||
virtio-net-pci.indirect_desc=on/off
|
|
||||||
virtio-net-pci.csum=on/off
|
|
||||||
virtio-net-pci.guest_csum=on/off
|
|
||||||
virtio-net-pci.gso=on/off
|
|
||||||
virtio-net-pci.guest_tso4=on/off
|
|
||||||
virtio-net-pci.guest_tso6=on/off
|
|
||||||
virtio-net-pci.guest_ecn=on/off
|
|
||||||
virtio-net-pci.guest_ufo=on/off
|
|
||||||
virtio-net-pci.host_tso4=on/off
|
|
||||||
virtio-net-pci.host_tso6=on/off
|
|
||||||
virtio-net-pci.host_ecn=on/off
|
|
||||||
virtio-net-pci.host_ufo=on/off
|
|
||||||
virtio-net-pci.mrg_rxbuf=on/off
|
|
||||||
virtio-net-pci.status=on/off
|
|
||||||
virtio-net-pci.ctrl_vq=on/off
|
|
||||||
virtio-net-pci.ctrl_rx=on/off
|
|
||||||
virtio-net-pci.ctrl_vlan=on/off
|
|
||||||
virtio-net-pci.ctrl_rx_extra=on/off
|
|
||||||
virtio-net-pci.mac=macaddr
|
|
||||||
virtio-net-pci.vlan=vlan
|
|
||||||
virtio-net-pci.netdev=netdev
|
|
@ -1,277 +0,0 @@
|
|||||||
QEMU emulator version 1.2.0 (qemu-kvm-devel), Copyright (c) 2003-2008 Fabrice Bellard
|
|
||||||
usage: qemu-system-x86_64 [options] [disk_image]
|
|
||||||
|
|
||||||
'disk_image' is a raw hard disk image for IDE hard disk 0
|
|
||||||
|
|
||||||
Standard options:
|
|
||||||
-h or -help display this help and exit
|
|
||||||
-version display version information and exit
|
|
||||||
-machine [type=]name[,prop[=value][,...]]
|
|
||||||
selects emulated machine (-machine ? for list)
|
|
||||||
property accel=accel1[:accel2[:...]] selects accelerator
|
|
||||||
supported accelerators are kvm, xen, tcg (default: tcg)
|
|
||||||
kernel_irqchip=on|off controls accelerated irqchip support
|
|
||||||
kvm_shadow_mem=size of KVM shadow MMU
|
|
||||||
dump-guest-core=on|off include guest memory in a core dump (default=on)
|
|
||||||
-cpu cpu select CPU (-cpu ? for list)
|
|
||||||
-smp n[,maxcpus=cpus][,cores=cores][,threads=threads][,sockets=sockets]
|
|
||||||
set the number of CPUs to 'n' [default=1]
|
|
||||||
maxcpus= maximum number of total cpus, including
|
|
||||||
offline CPUs for hotplug, etc
|
|
||||||
cores= number of CPU cores on one socket
|
|
||||||
threads= number of threads on one CPU core
|
|
||||||
sockets= number of discrete sockets in the system
|
|
||||||
-numa node[,mem=size][,cpus=cpu[-cpu]][,nodeid=node]
|
|
||||||
-fda/-fdb file use 'file' as floppy disk 0/1 image
|
|
||||||
-hda/-hdb file use 'file' as IDE hard disk 0/1 image
|
|
||||||
-hdc/-hdd file use 'file' as IDE hard disk 2/3 image
|
|
||||||
-cdrom file use 'file' as IDE cdrom image (cdrom is ide1 master)
|
|
||||||
-drive [file=file][,if=type][,bus=n][,unit=m][,media=d][,index=i]
|
|
||||||
[,cyls=c,heads=h,secs=s[,trans=t]][,snapshot=on|off]
|
|
||||||
[,cache=writethrough|writeback|none|directsync|unsafe][,format=f]
|
|
||||||
[,serial=s][,addr=A][,id=name][,aio=threads|native]
|
|
||||||
[,readonly=on|off][,copy-on-read=on|off]
|
|
||||||
[[,bps=b]|[[,bps_rd=r][,bps_wr=w]]][[,iops=i]|[[,iops_rd=r][,iops_wr=w]]
|
|
||||||
use 'file' as a drive image
|
|
||||||
-set group.id.arg=value
|
|
||||||
set <arg> parameter for item <id> of type <group>
|
|
||||||
i.e. -set drive.$id.file=/path/to/image
|
|
||||||
-global driver.prop=value
|
|
||||||
set a global default for a driver property
|
|
||||||
-mtdblock file use 'file' as on-board Flash memory image
|
|
||||||
-sd file use 'file' as SecureDigital card image
|
|
||||||
-pflash file use 'file' as a parallel flash image
|
|
||||||
-boot [order=drives][,once=drives][,menu=on|off]
|
|
||||||
[,splash=sp_name][,splash-time=sp_time]
|
|
||||||
'drives': floppy (a), hard disk (c), CD-ROM (d), network (n)
|
|
||||||
'sp_name': the file's name that would be passed to bios as logo picture, if menu=on
|
|
||||||
'sp_time': the period that splash picture last if menu=on, unit is ms
|
|
||||||
-snapshot write to temporary files instead of disk image files
|
|
||||||
-m megs set virtual RAM size to megs MB [default=128]
|
|
||||||
-mem-path FILE provide backing storage for guest RAM
|
|
||||||
-mem-prealloc preallocate guest memory (use with -mem-path)
|
|
||||||
-k language use keyboard layout (for example 'fr' for French)
|
|
||||||
-audio-help print list of audio drivers and their options
|
|
||||||
-soundhw c1,... enable audio support
|
|
||||||
and only specified sound cards (comma separated list)
|
|
||||||
use -soundhw ? to get the list of supported cards
|
|
||||||
use -soundhw all to enable all of them
|
|
||||||
-balloon none disable balloon device
|
|
||||||
-balloon virtio[,addr=str]
|
|
||||||
enable virtio balloon device (default)
|
|
||||||
-usb enable the USB driver (will be the default soon)
|
|
||||||
-usbdevice name add the host or guest USB device 'name'
|
|
||||||
-device driver[,prop[=value][,...]]
|
|
||||||
add device (based on driver)
|
|
||||||
prop=value,... sets driver properties
|
|
||||||
use -device ? to print all possible drivers
|
|
||||||
use -device driver,? to print all possible properties
|
|
||||||
|
|
||||||
File system options:
|
|
||||||
-fsdev fsdriver,id=id[,path=path,][security_model={mapped-xattr|mapped-file|passthrough|none}]
|
|
||||||
[,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd]
|
|
||||||
|
|
||||||
Virtual File system pass-through options:
|
|
||||||
-virtfs local,path=path,mount_tag=tag,security_model=[mapped-xattr|mapped-file|passthrough|none]
|
|
||||||
[,writeout=immediate][,readonly][,socket=socket|sock_fd=sock_fd]
|
|
||||||
-virtfs_synth Create synthetic file system image
|
|
||||||
|
|
||||||
-name string1[,process=string2]
|
|
||||||
set the name of the guest
|
|
||||||
string1 sets the window title and string2 the process name (on Linux)
|
|
||||||
-uuid %08x-%04x-%04x-%04x-%012x
|
|
||||||
specify machine UUID
|
|
||||||
|
|
||||||
Display options:
|
|
||||||
-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]
|
|
||||||
[,window_close=on|off]|curses|none|
|
|
||||||
vnc=<display>[,<optargs>]
|
|
||||||
select display type
|
|
||||||
-nographic disable graphical output and redirect serial I/Os to console
|
|
||||||
-curses use a curses/ncurses interface instead of SDL
|
|
||||||
-no-frame open SDL window without a frame and window decorations
|
|
||||||
-alt-grab use Ctrl-Alt-Shift to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-ctrl-grab use Right-Ctrl to grab mouse (instead of Ctrl-Alt)
|
|
||||||
-no-quit disable SDL window close capability
|
|
||||||
-sdl enable SDL
|
|
||||||
-spice <args> enable spice
|
|
||||||
-portrait rotate graphical output 90 deg left (only PXA LCD)
|
|
||||||
-rotate <deg> rotate graphical output some deg left (only PXA LCD)
|
|
||||||
-vga [std|cirrus|vmware|qxl|xenfb|none]
|
|
||||||
select video card type
|
|
||||||
-full-screen start in full screen
|
|
||||||
-vnc display start a VNC server on display
|
|
||||||
|
|
||||||
i386 target only:
|
|
||||||
-win2k-hack use it when installing Windows 2000 to avoid a disk full bug
|
|
||||||
-no-fd-bootchk disable boot signature checking for floppy disks
|
|
||||||
-no-acpi disable ACPI
|
|
||||||
-no-hpet disable HPET
|
|
||||||
-acpitable [sig=str][,rev=n][,oem_id=str][,oem_table_id=str][,oem_rev=n][,asl_compiler_id=str][,asl_compiler_rev=n][,{data|file}=file1[:file2]...]
|
|
||||||
ACPI table description
|
|
||||||
-smbios file=binary
|
|
||||||
load SMBIOS entry from binary file
|
|
||||||
-smbios type=0[,vendor=str][,version=str][,date=str][,release=%d.%d]
|
|
||||||
specify SMBIOS type 0 fields
|
|
||||||
-smbios type=1[,manufacturer=str][,product=str][,version=str][,serial=str]
|
|
||||||
[,uuid=uuid][,sku=str][,family=str]
|
|
||||||
specify SMBIOS type 1 fields
|
|
||||||
|
|
||||||
Network options:
|
|
||||||
-net nic[,vlan=n][,macaddr=mac][,model=type][,name=str][,addr=str][,vectors=v]
|
|
||||||
create a new Network Interface Card and connect it to VLAN 'n'
|
|
||||||
-net user[,vlan=n][,name=str][,net=addr[/mask]][,host=addr][,restrict=on|off]
|
|
||||||
[,hostname=host][,dhcpstart=addr][,dns=addr][,tftp=dir][,bootfile=f]
|
|
||||||
[,hostfwd=rule][,guestfwd=rule][,smb=dir[,smbserver=addr]]
|
|
||||||
connect the user mode network stack to VLAN 'n', configure its
|
|
||||||
DHCP server and enabled optional services
|
|
||||||
-net tap[,vlan=n][,name=str][,fd=h][,ifname=name][,script=file][,downscript=dfile][,helper=helper][,sndbuf=nbytes][,vnet_hdr=on|off][,vhost=on|off][,vhostfd=h][,vhostforce=on|off]
|
|
||||||
connect the host TAP network interface to VLAN 'n'
|
|
||||||
use network scripts 'file' (default=/etc/qemu-ifup)
|
|
||||||
to configure it and 'dfile' (default=/etc/qemu-ifdown)
|
|
||||||
to deconfigure it
|
|
||||||
use '[down]script=no' to disable script execution
|
|
||||||
use network helper 'helper' (default=/usr/local/libexec/qemu-bridge-helper) to
|
|
||||||
configure it
|
|
||||||
use 'fd=h' to connect to an already opened TAP interface
|
|
||||||
use 'sndbuf=nbytes' to limit the size of the send buffer (the
|
|
||||||
default is disabled 'sndbuf=0' to enable flow control set 'sndbuf=1048576')
|
|
||||||
use vnet_hdr=off to avoid enabling the IFF_VNET_HDR tap flag
|
|
||||||
use vnet_hdr=on to make the lack of IFF_VNET_HDR support an error condition
|
|
||||||
use vhost=on to enable experimental in kernel accelerator
|
|
||||||
(only has effect for virtio guests which use MSIX)
|
|
||||||
use vhostforce=on to force vhost on for non-MSIX virtio guests
|
|
||||||
use 'vhostfd=h' to connect to an already opened vhost net device
|
|
||||||
-net bridge[,vlan=n][,name=str][,br=bridge][,helper=helper]
|
|
||||||
connects a host TAP network interface to a host bridge device 'br'
|
|
||||||
(default=br0) using the program 'helper'
|
|
||||||
(default=/usr/local/libexec/qemu-bridge-helper)
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,listen=[host]:port][,connect=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using a socket connection
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,mcast=maddr:port[,localaddr=addr]]
|
|
||||||
connect the vlan 'n' to multicast maddr and port
|
|
||||||
use 'localaddr=addr' to specify the host address to send packets from
|
|
||||||
-net socket[,vlan=n][,name=str][,fd=h][,udp=host:port][,localaddr=host:port]
|
|
||||||
connect the vlan 'n' to another VLAN using an UDP tunnel
|
|
||||||
-net dump[,vlan=n][,file=f][,len=n]
|
|
||||||
dump traffic on vlan 'n' to file 'f' (max n bytes per packet)
|
|
||||||
-net none use it alone to have zero network devices. If no -net option
|
|
||||||
is provided, the default is '-net nic -net user'
|
|
||||||
-netdev [user|tap|bridge|socket],id=str[,option][,option][,...]
|
|
||||||
|
|
||||||
Character device options:
|
|
||||||
-chardev null,id=id[,mux=on|off]
|
|
||||||
-chardev socket,id=id[,host=host],port=host[,to=to][,ipv4][,ipv6][,nodelay]
|
|
||||||
[,server][,nowait][,telnet][,mux=on|off] (tcp)
|
|
||||||
-chardev socket,id=id,path=path[,server][,nowait][,telnet],[mux=on|off] (unix)
|
|
||||||
-chardev udp,id=id[,host=host],port=port[,localaddr=localaddr]
|
|
||||||
[,localport=localport][,ipv4][,ipv6][,mux=on|off]
|
|
||||||
-chardev msmouse,id=id[,mux=on|off]
|
|
||||||
-chardev vc,id=id[[,width=width][,height=height]][[,cols=cols][,rows=rows]]
|
|
||||||
[,mux=on|off]
|
|
||||||
-chardev file,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pipe,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev pty,id=id[,mux=on|off]
|
|
||||||
-chardev stdio,id=id[,mux=on|off][,signal=on|off]
|
|
||||||
-chardev braille,id=id[,mux=on|off]
|
|
||||||
-chardev tty,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev parport,id=id,path=path[,mux=on|off]
|
|
||||||
-chardev spicevmc,id=id,name=name[,debug=debug]
|
|
||||||
|
|
||||||
-iscsi [user=user][,password=password]
|
|
||||||
[,header-digest=CRC32C|CR32C-NONE|NONE-CRC32C|NONE
|
|
||||||
[,initiator-name=iqn]
|
|
||||||
iSCSI session parameters
|
|
||||||
Bluetooth(R) options:
|
|
||||||
-bt hci,null dumb bluetooth HCI - doesn't respond to commands
|
|
||||||
-bt hci,host[:id]
|
|
||||||
use host's HCI with the given name
|
|
||||||
-bt hci[,vlan=n]
|
|
||||||
emulate a standard HCI in virtual scatternet 'n'
|
|
||||||
-bt vhci[,vlan=n]
|
|
||||||
add host computer to virtual scatternet 'n' using VHCI
|
|
||||||
-bt device:dev[,vlan=n]
|
|
||||||
emulate a bluetooth device 'dev' in scatternet 'n'
|
|
||||||
|
|
||||||
Linux/Multiboot boot specific:
|
|
||||||
-kernel bzImage use 'bzImage' as kernel image
|
|
||||||
-append cmdline use 'cmdline' as kernel command line
|
|
||||||
-initrd file use 'file' as initial ram disk
|
|
||||||
-dtb file use 'file' as device tree image
|
|
||||||
|
|
||||||
Debug/Expert options:
|
|
||||||
-serial dev redirect the serial port to char device 'dev'
|
|
||||||
-parallel dev redirect the parallel port to char device 'dev'
|
|
||||||
-monitor dev redirect the monitor to char device 'dev'
|
|
||||||
-qmp dev like -monitor but opens in 'control' mode
|
|
||||||
-mon chardev=[name][,mode=readline|control][,default]
|
|
||||||
-debugcon dev redirect the debug console to char device 'dev'
|
|
||||||
-pidfile file write PID to 'file'
|
|
||||||
-singlestep always run in singlestep mode
|
|
||||||
-S freeze CPU at startup (use 'c' to start execution)
|
|
||||||
-gdb dev wait for gdb connection on 'dev'
|
|
||||||
-s shorthand for -gdb tcp::1234
|
|
||||||
-d item1,... output log to /tmp/qemu.log (use -d ? for a list of log items)
|
|
||||||
-D logfile output log to logfile (instead of the default /tmp/qemu.log)
|
|
||||||
-hdachs c,h,s[,t]
|
|
||||||
force hard disk 0 physical geometry and the optional BIOS
|
|
||||||
translation (t=none or lba) (usually QEMU can guess them)
|
|
||||||
-L path set the directory for the BIOS, VGA BIOS and keymaps
|
|
||||||
-bios file set the filename for the BIOS
|
|
||||||
-enable-kvm enable KVM full virtualization support
|
|
||||||
-xen-domid id specify xen guest domain id
|
|
||||||
-xen-create create domain using xen hypercalls, bypassing xend
|
|
||||||
warning: should not be used when xend is in use
|
|
||||||
-xen-attach attach to existing xen domain
|
|
||||||
xend will use this when starting QEMU
|
|
||||||
-no-reboot exit instead of rebooting
|
|
||||||
-no-shutdown stop before shutdown
|
|
||||||
-loadvm [tag|id]
|
|
||||||
start right away with a saved state (loadvm in monitor)
|
|
||||||
-daemonize daemonize QEMU after initializing
|
|
||||||
-option-rom rom load a file, rom, into the option ROM space
|
|
||||||
-clock force the use of the given methods for timer alarm.
|
|
||||||
To see what timers are available use -clock ?
|
|
||||||
-rtc [base=utc|localtime|date][,clock=host|rt|vm][,driftfix=none|slew]
|
|
||||||
set the RTC base and clock, enable drift fix for clock ticks (x86 only)
|
|
||||||
-icount [N|auto]
|
|
||||||
enable virtual instruction counter with 2^N clock ticks per
|
|
||||||
instruction
|
|
||||||
-watchdog i6300esb|ib700
|
|
||||||
enable virtual hardware watchdog [default=none]
|
|
||||||
-watchdog-action reset|shutdown|poweroff|pause|debug|none
|
|
||||||
action when watchdog fires [default=reset]
|
|
||||||
-echr chr set terminal escape character instead of ctrl-a
|
|
||||||
-virtioconsole c
|
|
||||||
set virtio console
|
|
||||||
-show-cursor show cursor
|
|
||||||
-tb-size n set TB size
|
|
||||||
-incoming p prepare for incoming migration, listen on port p
|
|
||||||
-nodefaults don't create default devices
|
|
||||||
-chroot dir chroot to dir just before starting the VM
|
|
||||||
-runas user change to user id user just before starting the VM
|
|
||||||
-sandbox <arg> Enable seccomp mode 2 system call filter (default 'off').
|
|
||||||
-readconfig <file>
|
|
||||||
-writeconfig <file>
|
|
||||||
read/write config file
|
|
||||||
-nodefconfig
|
|
||||||
do not load default config files at startup
|
|
||||||
-no-user-config
|
|
||||||
do not load user-provided config files at startup
|
|
||||||
-trace [events=<file>][,file=<file>]
|
|
||||||
specify tracing options
|
|
||||||
-qtest CHR specify tracing options
|
|
||||||
-qtest-log LOG specify tracing options
|
|
||||||
-enable-fips enable FIPS 140-2 compliance
|
|
||||||
-no-kvm disable KVM hardware virtualization
|
|
||||||
-no-kvm-irqchip disable KVM kernel mode PIC/IOAPIC/LAPIC
|
|
||||||
-no-kvm-pit disable KVM kernel mode PIT
|
|
||||||
-no-kvm-pit-reinjection
|
|
||||||
disable KVM kernel mode PIT interrupt reinjection
|
|
||||||
|
|
||||||
During emulation, the following keys are useful:
|
|
||||||
ctrl-alt-f toggle full screen
|
|
||||||
ctrl-alt-n switch to virtual console 'n'
|
|
||||||
ctrl-alt toggle mouse and keyboard grab
|
|
||||||
|
|
||||||
When using -nographic, press 'ctrl-a h' to get some help.
|
|
@ -1,437 +0,0 @@
|
|||||||
#include <config.h>
|
|
||||||
|
|
||||||
#include "testutils.h"
|
|
||||||
|
|
||||||
#ifdef WITH_QEMU
|
|
||||||
|
|
||||||
# include <stdio.h>
|
|
||||||
# include <stdlib.h>
|
|
||||||
|
|
||||||
# include "qemu/qemu_capabilities.h"
|
|
||||||
# define __QEMU_CAPSPRIV_H_ALLOW__
|
|
||||||
# include "qemu/qemu_capspriv.h"
|
|
||||||
# undef __QEMU_CAPSPRIV_H_ALLOW__
|
|
||||||
|
|
||||||
# include "viralloc.h"
|
|
||||||
# include "virstring.h"
|
|
||||||
|
|
||||||
# define VIR_FROM_THIS VIR_FROM_NONE
|
|
||||||
|
|
||||||
struct testInfo {
|
|
||||||
const char *name;
|
|
||||||
virQEMUCapsPtr flags;
|
|
||||||
unsigned int version;
|
|
||||||
bool is_kvm;
|
|
||||||
unsigned int kvm_version;
|
|
||||||
int error;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void printMismatchedFlags(virQEMUCapsPtr got,
|
|
||||||
virQEMUCapsPtr expect)
|
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
for (i = 0; i < QEMU_CAPS_LAST; i++) {
|
|
||||||
bool gotFlag = virQEMUCapsGet(got, i);
|
|
||||||
bool expectFlag = virQEMUCapsGet(expect, i);
|
|
||||||
if (gotFlag && !expectFlag)
|
|
||||||
fprintf(stderr, "Extra flag %zu\n", i);
|
|
||||||
if (!gotFlag && expectFlag)
|
|
||||||
fprintf(stderr, "Missing flag %zu\n", i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static int testHelpStrParsing(const void *data)
|
|
||||||
{
|
|
||||||
const struct testInfo *info = data;
|
|
||||||
char *help = NULL;
|
|
||||||
unsigned int version, kvm_version;
|
|
||||||
bool is_kvm;
|
|
||||||
virQEMUCapsPtr flags = NULL;
|
|
||||||
int ret = -1;
|
|
||||||
char *got = NULL;
|
|
||||||
char *expected = NULL;
|
|
||||||
|
|
||||||
if (!(help = virTestLoadFilePath("qemuhelpdata/", info->name, NULL)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (!(flags = virQEMUCapsNew()))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virQEMUCapsParseHelpStr("QEMU", help, flags,
|
|
||||||
&version, &is_kvm, &kvm_version, false, NULL) == -1) {
|
|
||||||
virErrorPtr err = virGetLastError();
|
|
||||||
|
|
||||||
if (info->error && err && err->code == info->error)
|
|
||||||
ret = 0;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
# ifndef WITH_YAJL
|
|
||||||
if (virQEMUCapsGet(info->flags, QEMU_CAPS_MONITOR_JSON))
|
|
||||||
virQEMUCapsSet(flags, QEMU_CAPS_MONITOR_JSON);
|
|
||||||
# endif
|
|
||||||
|
|
||||||
VIR_FREE(help);
|
|
||||||
if (!(help = virTestLoadFilePath("qemuhelpdata/", info->name, "-device", NULL)))
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (virQEMUCapsParseDeviceStr(flags, help) < 0)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
got = virQEMUCapsFlagsString(flags);
|
|
||||||
expected = virQEMUCapsFlagsString(info->flags);
|
|
||||||
if (!got || !expected)
|
|
||||||
goto cleanup;
|
|
||||||
|
|
||||||
if (STRNEQ(got, expected)) {
|
|
||||||
VIR_TEST_DEBUG("%s: computed flags do not match: got %s, expected %s\n",
|
|
||||||
info->name, got, expected);
|
|
||||||
|
|
||||||
if (virTestGetDebug())
|
|
||||||
printMismatchedFlags(flags, info->flags);
|
|
||||||
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (version != info->version) {
|
|
||||||
fprintf(stderr, "%s: parsed versions do not match: got %u, expected %u\n",
|
|
||||||
info->name, version, info->version);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (is_kvm != info->is_kvm) {
|
|
||||||
fprintf(stderr,
|
|
||||||
"%s: parsed is_kvm flag does not match: got %u, expected %u\n",
|
|
||||||
info->name, is_kvm, info->is_kvm);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kvm_version != info->kvm_version) {
|
|
||||||
fprintf(stderr,
|
|
||||||
"%s: parsed KVM versions do not match: got %u, expected %u\n",
|
|
||||||
info->name, kvm_version, info->kvm_version);
|
|
||||||
goto cleanup;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = 0;
|
|
||||||
cleanup:
|
|
||||||
VIR_FREE(help);
|
|
||||||
virObjectUnref(flags);
|
|
||||||
VIR_FREE(got);
|
|
||||||
VIR_FREE(expected);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
mymain(void)
|
|
||||||
{
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
# define DO_TEST_FULL(name, version, is_kvm, kvm_version, error, ...) \
|
|
||||||
do { \
|
|
||||||
struct testInfo info = { \
|
|
||||||
name, NULL, version, is_kvm, kvm_version, error \
|
|
||||||
}; \
|
|
||||||
if (!(info.flags = virQEMUCapsNew())) \
|
|
||||||
return EXIT_FAILURE; \
|
|
||||||
virQEMUCapsSetList(info.flags, __VA_ARGS__, QEMU_CAPS_LAST); \
|
|
||||||
if (virTestRun("QEMU Help String Parsing " name, \
|
|
||||||
testHelpStrParsing, &info) < 0) \
|
|
||||||
ret = -1; \
|
|
||||||
virObjectUnref(info.flags); \
|
|
||||||
} while (0)
|
|
||||||
|
|
||||||
# define DO_TEST(name, version, is_kvm, kvm_version, ...) \
|
|
||||||
DO_TEST_FULL(name, version, is_kvm, kvm_version, VIR_ERR_OK, __VA_ARGS__)
|
|
||||||
|
|
||||||
DO_TEST("qemu-0.12.1", 12001, 0, 0,
|
|
||||||
QEMU_CAPS_DRIVE_SERIAL,
|
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
|
||||||
QEMU_CAPS_SDL,
|
|
||||||
QEMU_CAPS_RTC,
|
|
||||||
QEMU_CAPS_NO_HPET,
|
|
||||||
QEMU_CAPS_BOOT_MENU,
|
|
||||||
QEMU_CAPS_NAME_PROCESS,
|
|
||||||
QEMU_CAPS_SMBIOS_TYPE,
|
|
||||||
QEMU_CAPS_VGA_NONE,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
|
||||||
QEMU_CAPS_PIIX3_USB_UHCI,
|
|
||||||
QEMU_CAPS_PIIX4_USB_UHCI,
|
|
||||||
QEMU_CAPS_USB_HUB,
|
|
||||||
QEMU_CAPS_NO_SHUTDOWN,
|
|
||||||
QEMU_CAPS_NO_ACPI,
|
|
||||||
QEMU_CAPS_SCSI_LSI,
|
|
||||||
QEMU_CAPS_VNC,
|
|
||||||
QEMU_CAPS_DEVICE_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
|
||||||
QEMU_CAPS_DEVICE_USB_NET,
|
|
||||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
|
||||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
|
||||||
QEMU_CAPS_DEVICE_USB_STORAGE,
|
|
||||||
QEMU_CAPS_DEVICE_USB_KBD,
|
|
||||||
QEMU_CAPS_DEVICE_RTL8139,
|
|
||||||
QEMU_CAPS_DEVICE_E1000,
|
|
||||||
QEMU_CAPS_DEVICE_ISA_SERIAL,
|
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
|
||||||
DO_TEST("qemu-kvm-0.12.3", 12003, 1, 0,
|
|
||||||
QEMU_CAPS_DRIVE_BOOT,
|
|
||||||
QEMU_CAPS_KVM,
|
|
||||||
QEMU_CAPS_DRIVE_SERIAL,
|
|
||||||
QEMU_CAPS_MEM_PATH,
|
|
||||||
QEMU_CAPS_SDL,
|
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
|
||||||
QEMU_CAPS_RTC,
|
|
||||||
QEMU_CAPS_NO_HPET,
|
|
||||||
QEMU_CAPS_NO_KVM_PIT,
|
|
||||||
QEMU_CAPS_TDF,
|
|
||||||
QEMU_CAPS_BOOT_MENU,
|
|
||||||
QEMU_CAPS_NESTING,
|
|
||||||
QEMU_CAPS_NAME_PROCESS,
|
|
||||||
QEMU_CAPS_SMBIOS_TYPE,
|
|
||||||
QEMU_CAPS_VGA_NONE,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
|
||||||
QEMU_CAPS_PIIX3_USB_UHCI,
|
|
||||||
QEMU_CAPS_PIIX4_USB_UHCI,
|
|
||||||
QEMU_CAPS_USB_HUB,
|
|
||||||
QEMU_CAPS_NO_SHUTDOWN,
|
|
||||||
QEMU_CAPS_NO_ACPI,
|
|
||||||
QEMU_CAPS_SCSI_LSI,
|
|
||||||
QEMU_CAPS_VNC,
|
|
||||||
QEMU_CAPS_DEVICE_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
|
||||||
QEMU_CAPS_DEVICE_USB_NET,
|
|
||||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
|
||||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
|
||||||
QEMU_CAPS_DEVICE_USB_STORAGE,
|
|
||||||
QEMU_CAPS_DEVICE_USB_KBD,
|
|
||||||
QEMU_CAPS_DEVICE_RTL8139,
|
|
||||||
QEMU_CAPS_DEVICE_E1000,
|
|
||||||
QEMU_CAPS_DEVICE_ISA_SERIAL,
|
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
|
||||||
DO_TEST("qemu-kvm-0.13.0", 13000, 1, 0,
|
|
||||||
QEMU_CAPS_DRIVE_BOOT,
|
|
||||||
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
|
||||||
QEMU_CAPS_KVM,
|
|
||||||
QEMU_CAPS_DRIVE_SERIAL,
|
|
||||||
QEMU_CAPS_MEM_PATH,
|
|
||||||
QEMU_CAPS_SDL,
|
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
|
||||||
QEMU_CAPS_MONITOR_JSON,
|
|
||||||
QEMU_CAPS_NETDEV,
|
|
||||||
QEMU_CAPS_RTC,
|
|
||||||
QEMU_CAPS_VHOST_NET,
|
|
||||||
QEMU_CAPS_NO_HPET,
|
|
||||||
QEMU_CAPS_NO_KVM_PIT,
|
|
||||||
QEMU_CAPS_TDF,
|
|
||||||
QEMU_CAPS_PCI_CONFIGFD,
|
|
||||||
QEMU_CAPS_NODEFCONFIG,
|
|
||||||
QEMU_CAPS_BOOT_MENU,
|
|
||||||
QEMU_CAPS_FSDEV,
|
|
||||||
QEMU_CAPS_NESTING,
|
|
||||||
QEMU_CAPS_NAME_PROCESS,
|
|
||||||
QEMU_CAPS_SMBIOS_TYPE,
|
|
||||||
QEMU_CAPS_VGA_NONE,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
|
||||||
QEMU_CAPS_PCI_MULTIFUNCTION,
|
|
||||||
QEMU_CAPS_PIIX3_USB_UHCI,
|
|
||||||
QEMU_CAPS_PIIX4_USB_UHCI,
|
|
||||||
QEMU_CAPS_VT82C686B_USB_UHCI,
|
|
||||||
QEMU_CAPS_PCI_OHCI,
|
|
||||||
QEMU_CAPS_USB_HUB,
|
|
||||||
QEMU_CAPS_NO_SHUTDOWN,
|
|
||||||
QEMU_CAPS_NO_ACPI,
|
|
||||||
QEMU_CAPS_SCSI_LSI,
|
|
||||||
QEMU_CAPS_VNC,
|
|
||||||
QEMU_CAPS_DEVICE_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
|
||||||
QEMU_CAPS_DEVICE_USB_NET,
|
|
||||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
|
||||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
|
||||||
QEMU_CAPS_DEVICE_USB_KBD,
|
|
||||||
QEMU_CAPS_DEVICE_USB_STORAGE,
|
|
||||||
QEMU_CAPS_HOST_PCI_MULTIDOMAIN,
|
|
||||||
QEMU_CAPS_DEVICE_IVSHMEM,
|
|
||||||
QEMU_CAPS_DEVICE_RTL8139,
|
|
||||||
QEMU_CAPS_DEVICE_E1000,
|
|
||||||
QEMU_CAPS_DEVICE_ISA_SERIAL,
|
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET);
|
|
||||||
DO_TEST("qemu-1.0", 1000000, 0, 0,
|
|
||||||
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
|
||||||
QEMU_CAPS_DRIVE_SERIAL,
|
|
||||||
QEMU_CAPS_MEM_PATH,
|
|
||||||
QEMU_CAPS_SDL,
|
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
|
||||||
QEMU_CAPS_MONITOR_JSON,
|
|
||||||
QEMU_CAPS_NETDEV,
|
|
||||||
QEMU_CAPS_RTC,
|
|
||||||
QEMU_CAPS_VHOST_NET,
|
|
||||||
QEMU_CAPS_NO_HPET,
|
|
||||||
QEMU_CAPS_NODEFCONFIG,
|
|
||||||
QEMU_CAPS_BOOT_MENU,
|
|
||||||
QEMU_CAPS_FSDEV,
|
|
||||||
QEMU_CAPS_NAME_PROCESS,
|
|
||||||
QEMU_CAPS_SMBIOS_TYPE,
|
|
||||||
QEMU_CAPS_SPICE,
|
|
||||||
QEMU_CAPS_VGA_NONE,
|
|
||||||
QEMU_CAPS_BOOTINDEX,
|
|
||||||
QEMU_CAPS_HDA_DUPLEX,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
|
||||||
QEMU_CAPS_CCID_EMULATED,
|
|
||||||
QEMU_CAPS_CCID_PASSTHRU,
|
|
||||||
QEMU_CAPS_CHARDEV_SPICEVMC,
|
|
||||||
QEMU_CAPS_VIRTIO_TX_ALG,
|
|
||||||
QEMU_CAPS_PCI_MULTIFUNCTION,
|
|
||||||
QEMU_CAPS_VIRTIO_IOEVENTFD,
|
|
||||||
QEMU_CAPS_SGA,
|
|
||||||
QEMU_CAPS_VIRTIO_BLK_EVENT_IDX,
|
|
||||||
QEMU_CAPS_VIRTIO_NET_EVENT_IDX,
|
|
||||||
QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC,
|
|
||||||
QEMU_CAPS_PIIX3_USB_UHCI,
|
|
||||||
QEMU_CAPS_PIIX4_USB_UHCI,
|
|
||||||
QEMU_CAPS_USB_EHCI,
|
|
||||||
QEMU_CAPS_ICH9_USB_EHCI1,
|
|
||||||
QEMU_CAPS_VT82C686B_USB_UHCI,
|
|
||||||
QEMU_CAPS_PCI_OHCI,
|
|
||||||
QEMU_CAPS_USB_HUB,
|
|
||||||
QEMU_CAPS_NO_SHUTDOWN,
|
|
||||||
QEMU_CAPS_ICH9_AHCI,
|
|
||||||
QEMU_CAPS_NO_ACPI,
|
|
||||||
QEMU_CAPS_FSDEV_READONLY,
|
|
||||||
QEMU_CAPS_VIRTIO_BLK_SCSI,
|
|
||||||
QEMU_CAPS_FSDEV_WRITEOUT,
|
|
||||||
QEMU_CAPS_SCSI_BLOCK,
|
|
||||||
QEMU_CAPS_SCSI_CD,
|
|
||||||
QEMU_CAPS_IDE_CD,
|
|
||||||
QEMU_CAPS_SCSI_LSI,
|
|
||||||
QEMU_CAPS_BLOCKIO,
|
|
||||||
QEMU_CAPS_VNC,
|
|
||||||
QEMU_CAPS_MACHINE_OPT,
|
|
||||||
QEMU_CAPS_DEVICE_QXL,
|
|
||||||
QEMU_CAPS_DEVICE_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
|
||||||
QEMU_CAPS_DEVICE_USB_NET,
|
|
||||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
|
||||||
QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
|
|
||||||
QEMU_CAPS_DEVICE_USB_KBD,
|
|
||||||
QEMU_CAPS_DEVICE_USB_STORAGE,
|
|
||||||
QEMU_CAPS_SPLASH_TIMEOUT,
|
|
||||||
QEMU_CAPS_DEVICE_IVSHMEM,
|
|
||||||
QEMU_CAPS_DEVICE_IOH3420,
|
|
||||||
QEMU_CAPS_DEVICE_X3130_UPSTREAM,
|
|
||||||
QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
|
|
||||||
QEMU_CAPS_DEVICE_RTL8139,
|
|
||||||
QEMU_CAPS_DEVICE_E1000,
|
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET,
|
|
||||||
QEMU_CAPS_DEVICE_ISA_SERIAL,
|
|
||||||
QEMU_CAPS_DISPLAY);
|
|
||||||
DO_TEST("qemu-1.1.0", 1001000, 0, 0,
|
|
||||||
QEMU_CAPS_DRIVE_CACHE_UNSAFE,
|
|
||||||
QEMU_CAPS_DRIVE_SERIAL,
|
|
||||||
QEMU_CAPS_MEM_PATH,
|
|
||||||
QEMU_CAPS_SDL,
|
|
||||||
QEMU_CAPS_ENABLE_KVM,
|
|
||||||
QEMU_CAPS_MONITOR_JSON,
|
|
||||||
QEMU_CAPS_NETDEV,
|
|
||||||
QEMU_CAPS_RTC,
|
|
||||||
QEMU_CAPS_VHOST_NET,
|
|
||||||
QEMU_CAPS_NO_HPET,
|
|
||||||
QEMU_CAPS_NODEFCONFIG,
|
|
||||||
QEMU_CAPS_BOOT_MENU,
|
|
||||||
QEMU_CAPS_FSDEV,
|
|
||||||
QEMU_CAPS_NAME_PROCESS,
|
|
||||||
QEMU_CAPS_SMBIOS_TYPE,
|
|
||||||
QEMU_CAPS_SPICE,
|
|
||||||
QEMU_CAPS_VGA_NONE,
|
|
||||||
QEMU_CAPS_BOOTINDEX,
|
|
||||||
QEMU_CAPS_HDA_DUPLEX,
|
|
||||||
QEMU_CAPS_DRIVE_AIO,
|
|
||||||
QEMU_CAPS_CCID_EMULATED,
|
|
||||||
QEMU_CAPS_CCID_PASSTHRU,
|
|
||||||
QEMU_CAPS_CHARDEV_SPICEVMC,
|
|
||||||
QEMU_CAPS_VIRTIO_TX_ALG,
|
|
||||||
QEMU_CAPS_PCI_MULTIFUNCTION,
|
|
||||||
QEMU_CAPS_VIRTIO_IOEVENTFD,
|
|
||||||
QEMU_CAPS_SGA,
|
|
||||||
QEMU_CAPS_VIRTIO_BLK_EVENT_IDX,
|
|
||||||
QEMU_CAPS_VIRTIO_NET_EVENT_IDX,
|
|
||||||
QEMU_CAPS_DRIVE_CACHE_DIRECTSYNC,
|
|
||||||
QEMU_CAPS_PIIX3_USB_UHCI,
|
|
||||||
QEMU_CAPS_PIIX4_USB_UHCI,
|
|
||||||
QEMU_CAPS_USB_EHCI,
|
|
||||||
QEMU_CAPS_ICH9_USB_EHCI1,
|
|
||||||
QEMU_CAPS_VT82C686B_USB_UHCI,
|
|
||||||
QEMU_CAPS_PCI_OHCI,
|
|
||||||
QEMU_CAPS_USB_HUB,
|
|
||||||
QEMU_CAPS_NO_SHUTDOWN,
|
|
||||||
QEMU_CAPS_ICH9_AHCI,
|
|
||||||
QEMU_CAPS_NO_ACPI,
|
|
||||||
QEMU_CAPS_FSDEV_READONLY,
|
|
||||||
QEMU_CAPS_VIRTIO_BLK_SCSI,
|
|
||||||
QEMU_CAPS_DRIVE_COPY_ON_READ,
|
|
||||||
QEMU_CAPS_FSDEV_WRITEOUT,
|
|
||||||
QEMU_CAPS_DRIVE_IOTUNE,
|
|
||||||
QEMU_CAPS_SCSI_DISK_CHANNEL,
|
|
||||||
QEMU_CAPS_SCSI_BLOCK,
|
|
||||||
QEMU_CAPS_SCSI_CD,
|
|
||||||
QEMU_CAPS_IDE_CD,
|
|
||||||
QEMU_CAPS_NO_USER_CONFIG,
|
|
||||||
QEMU_CAPS_HDA_MICRO,
|
|
||||||
QEMU_CAPS_NEC_USB_XHCI,
|
|
||||||
QEMU_CAPS_NETDEV_BRIDGE,
|
|
||||||
QEMU_CAPS_SCSI_LSI,
|
|
||||||
QEMU_CAPS_VIRTIO_SCSI,
|
|
||||||
QEMU_CAPS_BLOCKIO,
|
|
||||||
QEMU_CAPS_VNC,
|
|
||||||
QEMU_CAPS_MACHINE_OPT,
|
|
||||||
QEMU_CAPS_DEVICE_QXL,
|
|
||||||
QEMU_CAPS_DEVICE_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_CIRRUS_VGA,
|
|
||||||
QEMU_CAPS_DEVICE_VMWARE_SVGA,
|
|
||||||
QEMU_CAPS_DEVICE_USB_SERIAL,
|
|
||||||
QEMU_CAPS_DEVICE_USB_NET,
|
|
||||||
QEMU_CAPS_DTB,
|
|
||||||
QEMU_CAPS_IPV6_MIGRATION,
|
|
||||||
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
|
||||||
QEMU_CAPS_DEVICE_SCSI_GENERIC,
|
|
||||||
QEMU_CAPS_DEVICE_SCSI_GENERIC_BOOTINDEX,
|
|
||||||
QEMU_CAPS_VNC_SHARE_POLICY,
|
|
||||||
QEMU_CAPS_DEVICE_USB_KBD,
|
|
||||||
QEMU_CAPS_DEVICE_USB_STORAGE,
|
|
||||||
QEMU_CAPS_OBJECT_USB_AUDIO,
|
|
||||||
QEMU_CAPS_SPLASH_TIMEOUT,
|
|
||||||
QEMU_CAPS_DEVICE_IVSHMEM,
|
|
||||||
QEMU_CAPS_DEVICE_IOH3420,
|
|
||||||
QEMU_CAPS_DEVICE_X3130_UPSTREAM,
|
|
||||||
QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM,
|
|
||||||
QEMU_CAPS_DEVICE_RTL8139,
|
|
||||||
QEMU_CAPS_DEVICE_E1000,
|
|
||||||
QEMU_CAPS_DEVICE_VIRTIO_NET,
|
|
||||||
QEMU_CAPS_DEVICE_ISA_SERIAL,
|
|
||||||
QEMU_CAPS_DISPLAY);
|
|
||||||
DO_TEST_FULL("qemu-1.2.0", 1002000, 0, 0, VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
QEMU_CAPS_LAST);
|
|
||||||
DO_TEST_FULL("qemu-kvm-1.2.0", 1002000, 1, 0, VIR_ERR_CONFIG_UNSUPPORTED,
|
|
||||||
QEMU_CAPS_LAST);
|
|
||||||
|
|
||||||
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
|
||||||
}
|
|
||||||
|
|
||||||
VIR_TEST_MAIN(mymain)
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
int main(void)
|
|
||||||
{
|
|
||||||
return EXIT_AM_SKIP;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* WITH_QEMU */
|
|
Loading…
x
Reference in New Issue
Block a user