mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00: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)$$)
|
||||
|
||||
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)
|
||||
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$$)
|
||||
|
||||
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 = \
|
||||
^(docs/apibuild.py|tests/virt-aa-helper-test|docs/js/.*\.js)$$
|
||||
|
@ -626,28 +626,6 @@ virQEMUCapsFindTarget(virArch hostarch,
|
||||
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
|
||||
virQEMUCapsSetDefaultMachine(virQEMUCapsPtr qemuCaps,
|
||||
@ -662,282 +640,6 @@ virQEMUCapsSetDefaultMachine(virQEMUCapsPtr qemuCaps,
|
||||
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 *
|
||||
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 {
|
||||
const char *value;
|
||||
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,
|
||||
virFileCachePtr capsCache,
|
||||
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,
|
||||
virDomainObjPtr vm ATTRIBUTE_UNUSED,
|
||||
void *opaque ATTRIBUTE_UNUSED)
|
||||
@ -4609,6 +3757,9 @@ virQEMUCapsProbeQMPSchemaCapabilities(virQEMUCapsPtr qemuCaps,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define QEMU_MIN_MAJOR 1
|
||||
#define QEMU_MIN_MINOR 2
|
||||
#define QEMU_MIN_MICRO 0
|
||||
|
||||
int
|
||||
virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
|
||||
@ -4639,8 +3790,12 @@ virQEMUCapsInitQMPMonitor(virQEMUCapsPtr qemuCaps,
|
||||
VIR_DEBUG("Got version %d.%d.%d (%s)",
|
||||
major, minor, micro, NULLSTR(package));
|
||||
|
||||
if (major < 1 || (major == 1 && minor < 2)) {
|
||||
VIR_DEBUG("Not new enough for QMP capabilities detection");
|
||||
if (major < QEMU_MIN_MAJOR ||
|
||||
(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;
|
||||
goto cleanup;
|
||||
}
|
||||
@ -5079,8 +4234,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
||||
uid_t runUid,
|
||||
gid_t runGid,
|
||||
unsigned int microcodeVersion,
|
||||
const char *kernelVersion,
|
||||
bool qmpOnly)
|
||||
const char *kernelVersion)
|
||||
{
|
||||
virQEMUCapsPtr qemuCaps;
|
||||
struct stat sb;
|
||||
@ -5116,7 +4270,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (qmpOnly && !qemuCaps->usedQMP) {
|
||||
if (!qemuCaps->usedQMP) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Failed to probe QEMU binary with QMP: %s"),
|
||||
qmperr ? qmperr : _("unknown error"));
|
||||
@ -5124,12 +4278,6 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
||||
goto error;
|
||||
}
|
||||
|
||||
if (!qemuCaps->usedQMP &&
|
||||
virQEMUCapsInitHelp(qemuCaps, runUid, runGid, qmperr) < 0) {
|
||||
virQEMUCapsLogProbeFailure(binary);
|
||||
goto error;
|
||||
}
|
||||
|
||||
qemuCaps->libvirtCtime = virGetSelfLastChanged();
|
||||
qemuCaps->libvirtVersion = LIBVIR_VERSION_NUMBER;
|
||||
|
||||
@ -5165,8 +4313,7 @@ virQEMUCapsNewData(const char *binary,
|
||||
priv->runUid,
|
||||
priv->runGid,
|
||||
priv->microcodeVersion,
|
||||
priv->kernelVersion,
|
||||
false);
|
||||
priv->kernelVersion);
|
||||
}
|
||||
|
||||
|
||||
|
@ -37,8 +37,7 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch,
|
||||
uid_t runUid,
|
||||
gid_t runGid,
|
||||
unsigned int microcodeVersion,
|
||||
const char *kernelVersion,
|
||||
bool qmpOnly);
|
||||
const char *kernelVersion);
|
||||
|
||||
int virQEMUCapsLoadCache(virArch hostArch,
|
||||
virQEMUCapsPtr qemuCaps,
|
||||
@ -86,20 +85,6 @@ virQEMUCapsSetGICCapabilities(virQEMUCapsPtr qemuCaps,
|
||||
virGICCapability *capabilities,
|
||||
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
|
||||
virQEMUCapsProbeQMPCPUDefinitions(virQEMUCapsPtr qemuCaps,
|
||||
qemuMonitorPtr mon,
|
||||
|
@ -121,7 +121,6 @@ EXTRA_DIST = \
|
||||
qemuargv2xmldata \
|
||||
qemucapabilitiesdata \
|
||||
qemucaps2xmldata \
|
||||
qemuhelpdata \
|
||||
qemuhotplugtestcpus \
|
||||
qemuhotplugtestdevices \
|
||||
qemuhotplugtestdomains \
|
||||
@ -279,7 +278,7 @@ endif WITH_LIBXL
|
||||
|
||||
if WITH_QEMU
|
||||
test_programs += qemuxml2argvtest qemuxml2xmltest \
|
||||
qemuargv2xmltest qemuhelptest domainsnapshotxml2xmltest \
|
||||
qemuargv2xmltest domainsnapshotxml2xmltest \
|
||||
qemumonitortest qemumonitorjsontest qemuhotplugtest \
|
||||
qemuagenttest qemucapabilitiestest qemucaps2xmltest \
|
||||
qemumemlocktest \
|
||||
@ -586,9 +585,6 @@ qemuargv2xmltest_SOURCES = \
|
||||
testutils.c testutils.h
|
||||
qemuargv2xmltest_LDADD = $(qemu_LDADDS) $(LDADDS)
|
||||
|
||||
qemuhelptest_SOURCES = qemuhelptest.c testutils.c testutils.h
|
||||
qemuhelptest_LDADD = $(qemu_LDADDS) $(LDADDS)
|
||||
|
||||
qemumonitortest_SOURCES = \
|
||||
qemumonitortest.c \
|
||||
testutils.c testutils.h \
|
||||
@ -676,7 +672,7 @@ qemumemlocktest_SOURCES = \
|
||||
qemumemlocktest_LDADD = $(qemu_LDADDS) $(LDADDS)
|
||||
else ! WITH_QEMU
|
||||
EXTRA_DIST += qemuxml2argvtest.c qemuxml2xmltest.c qemuargv2xmltest.c \
|
||||
qemuhelptest.c domainsnapshotxml2xmltest.c \
|
||||
domainsnapshotxml2xmltest.c \
|
||||
qemumonitortest.c testutilsqemu.c testutilsqemu.h \
|
||||
testutilsqemuschema.c testutilsqemuschema.h \
|
||||
qemumonitorjsontest.c qemuhotplugtest.c \
|
||||
|
@ -72,7 +72,7 @@ main(int argc, char **argv)
|
||||
return EXIT_FAILURE;
|
||||
|
||||
if (!(caps = virQEMUCapsNewForBinaryInternal(VIR_ARCH_NONE, argv[1], "/tmp",
|
||||
-1, -1, 0, NULL, true)))
|
||||
-1, -1, 0, NULL)))
|
||||
return EXIT_FAILURE;
|
||||
|
||||
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…
Reference in New Issue
Block a user