[PATCH] aarch64: appliance: Use AAVMF (UEFI) if available for running the appliance.
by Richard W.M. Jones
From: "Richard W.M. Jones" <rjones(a)redhat.com>
AAVMF is an open source UEFI implementation for aarch64 based on OVMF.
As aarch64 is heading for requiring UEFI even inside guests, if the
AAVMF firmware is installed on the host, use it as a hint that we
should boot the guest using AAVMF instead of the default "empty
machine".
Note this requires very recent AAVMF, libvirt, qemu. However that's
OK since it's only applicable to aarch64. On non-aarch64, this patch
does nothing.
Thanks: Laszlo Ersek for a lot of help getting this right.
---
src/appliance.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++-
src/guestfs-internal.h | 1 +
src/launch-direct.c | 14 +++++++++++
src/launch-libvirt.c | 25 +++++++++++++++++++
4 files changed, 105 insertions(+), 1 deletion(-)
diff --git a/src/appliance.c b/src/appliance.c
index d7aa6b1..5fa47f2 100644
--- a/src/appliance.c
+++ b/src/appliance.c
@@ -1,5 +1,5 @@
/* libguestfs
- * Copyright (C) 2010-2012 Red Hat Inc.
+ * Copyright (C) 2010-2014 Red Hat Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -459,3 +459,67 @@ dir_contains_files (const char *dir, ...)
va_end (args);
return 1;
}
+
+#ifdef __aarch64__
+
+#define AAVMF_DIR "/usr/share/AAVMF"
+
+/* Return the location of firmware needed to boot the appliance. This
+ * is aarch64 only currently, since that's the only architecture where
+ * UEFI is mandatory (and that only for RHEL).
+ *
+ * '*code' is initialized with the path to the read-only UEFI code
+ * file. '*vars' is initialized with the path to a copy of the UEFI
+ * vars file (which is cleaned up automatically on exit).
+ *
+ * If *code == *vars == NULL then no UEFI firmware is available.
+ *
+ * '*code' and '*vars' should be freed by the caller.
+ *
+ * If the function returns -1 then there was a real error which should
+ * cause appliance building to fail (no UEFI firmware is not an
+ * error).
+ */
+int
+guestfs___get_uefi (guestfs_h *g, char **code, char **vars)
+{
+ if (access (AAVMF_DIR "/AAVMF_CODE.fd", R_OK) == 0 &&
+ access (AAVMF_DIR "/AAVMF_VARS.fd", R_OK) == 0) {
+ CLEANUP_CMD_CLOSE struct command *copycmd = guestfs___new_command (g);
+ char *varst;
+ int r;
+
+ /* Make a copy of AAVMF_VARS.fd. You can't just map it into the
+ * address space read-only as that triggers a different path
+ * inside UEFI.
+ */
+ varst = safe_asprintf (g, "%s/AAVMF_VARS.fd.%d", g->tmpdir, ++g->unique);
+ guestfs___cmd_add_arg (copycmd, "cp");
+ guestfs___cmd_add_arg (copycmd, AAVMF_DIR "/AAVMF_VARS.fd");
+ guestfs___cmd_add_arg (copycmd, varst);
+ r = guestfs___cmd_run (copycmd);
+ if (r == -1 || !WIFEXITED (r) || WEXITSTATUS (r) != 0) {
+ free (varst);
+ return -1;
+ }
+
+ /* Caller frees. */
+ *code = safe_strdup (g, AAVMF_DIR "/AAVMF_CODE.fd");
+ *vars = varst;
+ return 0;
+ }
+
+ *code = *vars = NULL;
+ return 0;
+}
+
+#else /* !__aarch64__ */
+
+int
+guestfs___get_uefi (guestfs_h *g, char **code, char **vars)
+{
+ *code = *vars = NULL;
+ return 0;
+}
+
+#endif /* !__aarch64__ */
diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h
index 58f657c..d438be3 100644
--- a/src/guestfs-internal.h
+++ b/src/guestfs-internal.h
@@ -752,6 +752,7 @@ extern const char *guestfs___drive_protocol_to_string (enum drive_protocol proto
/* appliance.c */
extern int guestfs___build_appliance (guestfs_h *g, char **kernel, char **dtb, char **initrd, char **appliance);
+extern int guestfs___get_uefi (guestfs_h *g, char **code, char **vars);
/* launch.c */
extern int64_t guestfs___timeval_diff (const struct timeval *x, const struct timeval *y);
diff --git a/src/launch-direct.c b/src/launch-direct.c
index b74f689..e6ed54a 100644
--- a/src/launch-direct.c
+++ b/src/launch-direct.c
@@ -236,6 +236,7 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
int sv[2];
char guestfsd_sock[256];
struct sockaddr_un addr;
+ CLEANUP_FREE char *uefi_code = NULL, *uefi_vars = NULL;
CLEANUP_FREE char *kernel = NULL, *dtb = NULL,
*initrd = NULL, *appliance = NULL;
int has_appliance_drive;
@@ -444,6 +445,19 @@ launch_direct (guestfs_h *g, void *datav, const char *arg)
ADD_CMDLINE ("kvm-pit.lost_tick_policy=discard");
}
+ /* UEFI (firmware) if required. */
+ if (guestfs___get_uefi (g, &uefi_code, &uefi_vars) == -1)
+ goto cleanup0;
+ if (uefi_code) {
+ ADD_CMDLINE ("-drive");
+ ADD_CMDLINE_PRINTF ("if=pflash,format=raw,file=%s,readonly", uefi_code);
+ if (uefi_vars) {
+ ADD_CMDLINE ("-drive");
+ ADD_CMDLINE_PRINTF ("if=pflash,format=raw,file=%s", uefi_vars);
+ }
+ }
+
+ /* Kernel, DTB and initrd. */
ADD_CMDLINE ("-kernel");
ADD_CMDLINE (kernel);
if (dtb) {
diff --git a/src/launch-libvirt.c b/src/launch-libvirt.c
index 899742f..7a57f30 100644
--- a/src/launch-libvirt.c
+++ b/src/launch-libvirt.c
@@ -134,6 +134,8 @@ struct backend_libvirt_data {
unsigned long qemu_version; /* qemu version (from libvirt) */
struct secret *secrets; /* list of secrets */
size_t nr_secrets;
+ char *uefi_code; /* UEFI (firmware) code and variables. */
+ char *uefi_vars;
};
/* Parameters passed to construct_libvirt_xml and subfunctions. We
@@ -357,6 +359,10 @@ launch_libvirt (guestfs_h *g, void *datav, const char *libvirt_uri)
if (parse_capabilities (g, capabilities_xml, data) == -1)
goto cleanup;
+ /* UEFI code and variables, on architectures where that is required. */
+ if (guestfs___get_uefi (g, &data->uefi_code, &data->uefi_vars) == -1)
+ goto cleanup;
+
/* Misc backend settings. */
guestfs_push_error_handler (g, NULL, NULL);
free (data->selinux_label);
@@ -1145,6 +1151,20 @@ construct_libvirt_xml_boot (guestfs_h *g,
string ("hvm");
} end_element ();
+ if (params->data->uefi_code) {
+ start_element ("loader") {
+ attribute ("readonly", "yes");
+ attribute ("type", "pflash");
+ string (params->data->uefi_code);
+ } end_element ();
+
+ if (params->data->uefi_vars) {
+ start_element ("nvram") {
+ string (params->data->uefi_vars);
+ } end_element ();
+ }
+ }
+
start_element ("kernel") {
string (params->kernel);
} end_element ();
@@ -1984,6 +2004,11 @@ shutdown_libvirt (guestfs_h *g, void *datav, int check_for_errors)
data->secrets = NULL;
data->nr_secrets = 0;
+ free (data->uefi_code);
+ data->uefi_code = NULL;
+ free (data->uefi_vars);
+ data->uefi_vars = NULL;
+
return ret;
}
--
1.8.3.1
9 years, 9 months
[PATCH] gobject: fix printf conversion specifier
by Pino Toscano
Use PRIu64 to correctly handle uint64_t.
---
generator/gobject.ml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/generator/gobject.ml b/generator/gobject.ml
index 5deb87e..5b07edd 100644
--- a/generator/gobject.ml
+++ b/generator/gobject.ml
@@ -722,6 +722,7 @@ let generate_gobject_session_source () =
#include <stdint.h>
#include <stdio.h>
#include <string.h>
+ #include <inttypes.h>
/* Error quark */
@@ -780,7 +781,7 @@ guestfs_session_event_from_guestfs_event (uint64_t event)
pr "
}
- g_warning (\"guestfs_session_event_from_guestfs_event: invalid event %%lu\",
+ g_warning (\"guestfs_session_event_from_guestfs_event: invalid event %%\" PRIu64,
event);
return UINT32_MAX;
}
--
1.9.3
9 years, 9 months
[PATCH] daemon: use btrfs(1) to get btrfs labels
by Pino Toscano
blkid(1) (or actually, libblkid) seems to handle file system labels up
to 127 characters. Considering that btrfs labels can be up to 255
characters, this means long labels are not read correctly (i.e. get
truncated) by blkid.
Get the file system type, and if btrfs is available invoke
`btrfs filesystem` to get the label of btrfs file systems.
---
daemon/blkid.c | 6 ++++++
daemon/btrfs.c | 24 ++++++++++++++++++++++++
daemon/daemon.h | 3 +++
3 files changed, 33 insertions(+)
diff --git a/daemon/blkid.c b/daemon/blkid.c
index b98c155..2c9e2f1 100644
--- a/daemon/blkid.c
+++ b/daemon/blkid.c
@@ -26,6 +26,7 @@
#include "daemon.h"
#include "actions.h"
+#include "optgroups.h"
GUESTFSD_EXT_CMD(str_blkid, blkid);
@@ -76,6 +77,11 @@ do_vfs_type (const mountable_t *mountable)
char *
do_vfs_label (const mountable_t *mountable)
{
+ CLEANUP_FREE char *type = do_vfs_type (mountable);
+
+ if (type && STREQ (type, "btrfs") && optgroup_btrfs_available ())
+ return btrfs_get_label (mountable->device);
+
return get_blkid_tag (mountable->device, "LABEL");
}
diff --git a/daemon/btrfs.c b/daemon/btrfs.c
index 150c089..cf1507d 100644
--- a/daemon/btrfs.c
+++ b/daemon/btrfs.c
@@ -44,6 +44,30 @@ optgroup_btrfs_available (void)
return prog_exists (str_btrfs) && filesystem_available ("btrfs") > 0;
}
+char *
+btrfs_get_label (const char *device)
+{
+ int r;
+ CLEANUP_FREE char *err = NULL;
+ char *out = NULL;
+ size_t len;
+
+ r = command (&out, &err, str_btrfs, "filesystem", "label",
+ device, NULL);
+ if (r == -1) {
+ reply_with_error ("%s", err);
+ free (out);
+ return NULL;
+ }
+
+ /* Trim trailing \n if present. */
+ len = strlen (out);
+ if (len > 0 && out[len-1] == '\n')
+ out[len-1] = '\0';
+
+ return out;
+}
+
/* Takes optional arguments, consult optargs_bitmask. */
int
do_btrfs_filesystem_resize (const char *filesystem, int64_t size)
diff --git a/daemon/daemon.h b/daemon/daemon.h
index c101c3b..cf123bf 100644
--- a/daemon/daemon.h
+++ b/daemon/daemon.h
@@ -232,6 +232,9 @@ extern void wipe_device_before_mkfs (const char *device);
extern void aug_read_version (void);
extern void aug_finalize (void);
+/*-- in btrfs.c --*/
+extern char *btrfs_get_label (const char *device);
+
/* The version of augeas, saved as:
* (MAJOR << 16) | (MINOR << 8) | PATCH
*/
--
1.9.3
9 years, 9 months
[PATCH] build: check for single libsystemd before libsystemd-journal
by Pino Toscano
Since systemd 209, all the functionalities of the former libsystemd-*
(including libsystemd-journal) have been merged into a single
libsystemd, with the former libraries left as compatibility ones.
Thus, first look for libsystemd, and if not found try again with the
libsystemd-journal as used before.
---
configure.ac | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/configure.ac b/configure.ac
index 1784264..7f8743b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1015,12 +1015,19 @@ PKG_CHECK_MODULES([HIVEX], [hivex],[
AM_CONDITIONAL([HAVE_HIVEX],[test "x$HIVEX_LIBS" != "x"])
dnl systemd journal library (optional)
-PKG_CHECK_MODULES([SD_JOURNAL], [libsystemd-journal >= 196],[
+PKG_CHECK_MODULES([SD_JOURNAL], [libsystemd],[
AC_SUBST([SD_JOURNAL_CFLAGS])
AC_SUBST([SD_JOURNAL_LIBS])
AC_DEFINE([HAVE_SD_JOURNAL],[1],[systemd journal library found at compile time.])
-],
- [AC_MSG_WARN([systemd journal library not found, some features will be disabled])])
+],[
+ PKG_CHECK_MODULES([SD_JOURNAL], [libsystemd-journal >= 196],[
+ AC_SUBST([SD_JOURNAL_CFLAGS])
+ AC_SUBST([SD_JOURNAL_LIBS])
+ AC_DEFINE([HAVE_SD_JOURNAL],[1],[systemd journal library found at compile time.])
+ ],[
+ AC_MSG_WARN([systemd journal library not found, some features will be disabled])
+ ])
+])
dnl FUSE is optional to build the FUSE module.
AC_ARG_ENABLE([fuse],
--
1.9.3
9 years, 9 months
[PATCH 1/2] mllib: add simple qemu filename sanitizing function
by Pino Toscano
It mimics a bit in OCaml the logic used in
commit a95214b1985e694946e3426120a6fdc13a3f081f (for the main library)
and commit 588af1953e5f7ab74009b9175cc5d3efb8bb651a (in disk-create),
so in OCaml tools direct calls to qemu/qemu-img with filenames provided
by the user can properly handle filenames with e.g. ':'.
---
mllib/common_utils.ml | 13 +++++++++++++
mllib/common_utils.mli | 8 ++++++++
2 files changed, 21 insertions(+)
diff --git a/mllib/common_utils.ml b/mllib/common_utils.ml
index b143710..4d3bf95 100644
--- a/mllib/common_utils.ml
+++ b/mllib/common_utils.ml
@@ -603,3 +603,16 @@ let is_directory path =
let absolute_path path =
if not (Filename.is_relative path) then path
else Sys.getcwd () // path
+
+(* Sanitizes a filename for passing it safely to qemu/qemu-img.
+ *
+ * If the filename is something like "file:foo" then qemu-img will
+ * try to interpret that as "foo" in the file:/// protocol. To
+ * avoid that, if the path is relative prefix it with "./" since
+ * qemu-img won't try to interpret such a path.
+ *)
+let qemu_input_filename filename =
+ if String.length filename > 0 && filename.[0] <> '/' then
+ "./" ^ filename
+ else
+ filename
diff --git a/mllib/common_utils.mli b/mllib/common_utils.mli
index 2103ff1..e59d802 100644
--- a/mllib/common_utils.mli
+++ b/mllib/common_utils.mli
@@ -131,3 +131,11 @@ val is_directory : string -> bool
val absolute_path : string -> string
(** Convert any path to an absolute path. *)
+
+val qemu_input_filename : string -> string
+(** Sanitizes a filename for passing it safely to qemu/qemu-img.
+
+ If the filename is something like "file:foo" then qemu-img will
+ try to interpret that as "foo" in the file:/// protocol. To
+ avoid that, if the path is relative prefix it with "./" since
+ qemu-img won't try to interpret such a path. *)
--
1.9.3
9 years, 9 months
[PATCH] mkfs: add 'label' optional argument
by Pino Toscano
Add the 'label' optional argument to the mkfs action, so it is possible
to set a filesystem label direct when creating it. There may be
filesystems not supporting changing the label of existing filesystems
but only setting it at creation time, so this new optarg will help.
Implement it for the most common filesystems (ext*, fat, ntfs, btrfs,
xfs), giving an error for all the others, just like set_label does.
---
daemon/mkfs.c | 45 +++++++++++++++++++++++++++++++++++++++++++--
generator/actions.ml | 42 +++++++++++++++++++++++-------------------
2 files changed, 66 insertions(+), 21 deletions(-)
diff --git a/daemon/mkfs.c b/daemon/mkfs.c
index 95ab874..2994307 100644
--- a/daemon/mkfs.c
+++ b/daemon/mkfs.c
@@ -36,7 +36,7 @@ GUESTFSD_EXT_CMD(str_mkfs, mkfs);
/* Takes optional arguments, consult optargs_bitmask. */
int
do_mkfs (const char *fstype, const char *device, int blocksize,
- const char *features, int inode, int sectorsize)
+ const char *features, int inode, int sectorsize, const char *label)
{
const char *argv[MAX_ARGS];
size_t i = 0;
@@ -194,6 +194,47 @@ do_mkfs (const char *fstype, const char *device, int blocksize,
ADD_ARG (argv, i, sectorsize_str);
}
+ if (optargs_bitmask & GUESTFS_MKFS_LABEL_BITMASK) {
+ if (extfs) {
+ if (strlen (label) > EXT2_LABEL_MAX) {
+ reply_with_error ("%s: ext2 labels are limited to %d bytes",
+ label, EXT2_LABEL_MAX);
+ return -1;
+ }
+
+ ADD_ARG (argv, i, "-L");
+ ADD_ARG (argv, i, label);
+ }
+ else if (STREQ (fstype, "fat") || STREQ (fstype, "vfat") ||
+ STREQ (fstype, "msdos")) {
+ ADD_ARG (argv, i, "-n");
+ ADD_ARG (argv, i, label);
+ }
+ else if (STREQ (fstype, "ntfs")) {
+ ADD_ARG (argv, i, "-L");
+ ADD_ARG (argv, i, label);
+ }
+ else if (STREQ (fstype, "xfs")) {
+ if (strlen (label) > XFS_LABEL_MAX) {
+ reply_with_error ("%s: xfs labels are limited to %d bytes",
+ label, XFS_LABEL_MAX);
+ return -1;
+ }
+
+ ADD_ARG (argv, i, "-L");
+ ADD_ARG (argv, i, label);
+ }
+ else if (STREQ (fstype, "btrfs")) {
+ ADD_ARG (argv, i, "-L");
+ ADD_ARG (argv, i, label);
+ }
+ else {
+ reply_with_error ("don't know how to set the label for '%s' filesystems",
+ fstype);
+ return -1;
+ }
+ }
+
ADD_ARG (argv, i, device);
ADD_ARG (argv, i, NULL);
@@ -212,5 +253,5 @@ int
do_mkfs_b (const char *fstype, int blocksize, const char *device)
{
optargs_bitmask = GUESTFS_MKFS_BLOCKSIZE_BITMASK;
- return do_mkfs (fstype, device, blocksize, 0, 0, 0);
+ return do_mkfs (fstype, device, blocksize, 0, 0, 0, NULL);
}
diff --git a/generator/actions.ml b/generator/actions.ml
index a6a6dad..96a9dd6 100644
--- a/generator/actions.ml
+++ b/generator/actions.ml
@@ -3324,7 +3324,7 @@ let daemon_functions = [
tests = [
InitEmpty, Always, TestResultString (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["mount"; "/dev/sda1"; "/"];
["write"; "/new"; "new file contents"];
["cat"; "/new"]], "new file contents"), []
@@ -4138,12 +4138,12 @@ characters does I<not> work, even if the length is specified." };
tests = [
InitEmpty, Always, TestResult (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["mount"; "/dev/sda1"; "/"];
["mounts"]], "is_device_list (ret, 1, \"/dev/sda1\")"), [];
InitEmpty, Always, TestResult (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["mount"; "/dev/sda1"; "/"];
["umount"; "/"; "false"; "false"];
["mounts"]], "is_string_list (ret, 0)"), []
@@ -4186,9 +4186,9 @@ See also: C<guestfs_mountpoints>" };
["part_add"; "/dev/sda"; "p"; "64"; "204799"];
["part_add"; "/dev/sda"; "p"; "204800"; "409599"];
["part_add"; "/dev/sda"; "p"; "409600"; "-64"];
- ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""];
- ["mkfs"; "ext2"; "/dev/sda2"; ""; "NOARG"; ""; ""];
- ["mkfs"; "ext2"; "/dev/sda3"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
+ ["mkfs"; "ext2"; "/dev/sda2"; ""; "NOARG"; ""; ""; "NOARG"];
+ ["mkfs"; "ext2"; "/dev/sda3"; ""; "NOARG"; ""; ""; "NOARG"];
["mount"; "/dev/sda1"; "/"];
["mkdir"; "/mp1"];
["mount"; "/dev/sda2"; "/mp1"];
@@ -5478,7 +5478,7 @@ the human-readable, canonical hex dump of the file." };
tests = [
InitNone, Always, TestResultString (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "ext3"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ext3"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["mount"; "/dev/sda1"; "/"];
["write"; "/new"; "test file"];
["umount"; "/dev/sda1"; "false"; "false"];
@@ -5602,7 +5602,7 @@ are activated or deactivated." };
["pvcreate"; "/dev/sda1"];
["vgcreate"; "VG"; "/dev/sda1"];
["lvcreate"; "LV"; "VG"; "10"];
- ["mkfs"; "ext2"; "/dev/VG/LV"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ext2"; "/dev/VG/LV"; ""; "NOARG"; ""; ""; "NOARG"];
["mount"; "/dev/VG/LV"; "/"];
["write"; "/new"; "test content"];
["umount"; "/"; "false"; "false"];
@@ -5669,11 +5669,11 @@ Sleep for C<secs> seconds." };
tests = [
InitNone, Always, TestResult (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "ntfs"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ntfs"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["ntfs_3g_probe"; "true"; "/dev/sda1"]], "ret == 0"), [];
InitNone, Always, TestResult (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["ntfs_3g_probe"; "true"; "/dev/sda1"]], "ret == 12"), []
];
shortdesc = "probe NTFS volume";
@@ -8543,7 +8543,11 @@ a file in the host and attach it as a device." };
tests = [
InitBasicFS, Always, TestResultString (
[["set_label"; "/dev/sda1"; "LTEST"];
- ["vfs_label"; "/dev/sda1"]], "LTEST"), []
+ ["vfs_label"; "/dev/sda1"]], "LTEST"), [];
+ InitEmpty, Always, TestResultString (
+ [["part_disk"; "/dev/sda"; "mbr"];
+ ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""; "test-label"];
+ ["vfs_label"; "/dev/sda1"]], "test-label"), [];
];
shortdesc = "get the filesystem label";
longdesc = "\
@@ -9015,13 +9019,13 @@ See also C<guestfs_is_lv>, C<guestfs_canonical_device_name>." };
{ defaults with
name = "mkfs";
- style = RErr, [String "fstype"; Device "device"], [OInt "blocksize"; OString "features"; OInt "inode"; OInt "sectorsize"];
+ style = RErr, [String "fstype"; Device "device"], [OInt "blocksize"; OString "features"; OInt "inode"; OInt "sectorsize"; OString "label"];
proc_nr = Some 278;
once_had_no_optargs = true;
tests = [
InitEmpty, Always, TestResultString (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "ext2"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["mount"; "/dev/sda1"; "/"];
["write"; "/new"; "new file contents"];
["cat"; "/new"]], "new file contents"), []
@@ -9761,7 +9765,7 @@ device." };
optional = Some "ntfs3g";
tests = [
InitPartition, Always, TestRun (
- [["mkfs"; "ntfs"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ [["mkfs"; "ntfs"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["ntfsfix"; "/dev/sda1"; "false"]]), []
];
shortdesc = "fix common errors and force Windows to check NTFS";
@@ -9820,7 +9824,7 @@ any existing contents of this device." };
[["set_label"; "/dev/sda1"; "testlabel"];
["vfs_label"; "/dev/sda1"]], "testlabel"), [];
InitPartition, IfAvailable "ntfs3g", TestResultString (
- [["mkfs"; "ntfs"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ [["mkfs"; "ntfs"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["set_label"; "/dev/sda1"; "testlabel2"];
["vfs_label"; "/dev/sda1"]], "testlabel2"), [];
InitPartition, Always, TestLastFail (
@@ -10485,7 +10489,7 @@ call C<guestfs_max_disks>." };
tests = [
InitEmpty, Always, TestResult (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "xfs"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "xfs"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["mount"; "/dev/sda1"; "/"];
["xfs_info"; "/"]], "ret->xfs_blocksize == 4096"), []
];
@@ -10585,7 +10589,7 @@ in the returned structure is defined by the API." };
["pvcreate"; "/dev/sda1"];
["vgcreate"; "VG"; "/dev/sda1"];
["lvcreate"; "LV"; "VG"; "40"];
- ["mkfs"; "xfs"; "/dev/VG/LV"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "xfs"; "/dev/VG/LV"; ""; "NOARG"; ""; ""; "NOARG"];
["lvresize"; "/dev/VG/LV"; "80"];
["mount"; "/dev/VG/LV"; "/"];
["xfs_growfs"; "/"; "true"; "false"; "false"; ""; ""; ""; ""; ""];
@@ -10722,7 +10726,7 @@ with zeroes)." };
tests = [
InitEmpty, Always, TestResult (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "xfs"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "xfs"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["xfs_admin"; "/dev/sda1"; ""; ""; ""; ""; "false"; "NOARG"; "NOARG"];
["mount"; "/dev/sda1"; "/"];
["xfs_info"; "/"]], "ret->xfs_lazycount == 0"), [];
@@ -10956,7 +10960,7 @@ This is a wrapper around the L<hivex(3)> call of the same name." };
tests = [
InitEmpty, Always, TestRun (
[["part_disk"; "/dev/sda"; "mbr"];
- ["mkfs"; "xfs"; "/dev/sda1"; ""; "NOARG"; ""; ""];
+ ["mkfs"; "xfs"; "/dev/sda1"; ""; "NOARG"; ""; ""; "NOARG"];
["xfs_repair"; "/dev/sda1"; ""; "true"; ""; ""; ""; ""; ""; ""; "NOARG"; "NOARG"]
]), []
];
--
1.9.3
9 years, 9 months
Issue with Libguestfs
by Thirumalai Nambi
Hi,
I'm using SolusVM control panel to create KVM VPS. Suddenly, I can't make
any VPS on Host-Node. Their build log says the SolusVM can't read the
libguestfs in server.
During the debug, I've tried to mount existing VPS using guestmount command
and I can't mount the KVM image.
Please check here.
=============
[root@SG01KVM256-01 ~]# guestmount -i -a /dev/sgkvm256/kvm104_img /mnt
libguestfs: error: guestfs_launch failed.
See http://libguestfs.org/guestfs-faq.1.html#debugging-libguestfs
and/or run 'libguestfs-test-tool'.
[root@SG01KVM256-01 ~]#
[root@SG01KVM256-01 ~]# libguestfs-test-tool
************************************************************
* IMPORTANT NOTICE
*
* When reporting bugs, include the COMPLETE, UNEDITED
* output below in your bug report.
*
************************************************************
PATH=/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
SELinux: Disabled
library version: 1.20.11rhel=6,release=11.el6
guestfs_get_append: (null)
guestfs_get_attach_method: appliance
guestfs_get_autosync: 1
guestfs_get_cachedir: /var/tmp
guestfs_get_direct: 0
guestfs_get_memsize: 500
guestfs_get_network: 0
guestfs_get_path: /usr/lib64/guestfs
guestfs_get_pgroup: 0
guestfs_get_qemu: /usr/libexec/qemu-kvm
guestfs_get_recovery_proc: 1
guestfs_get_selinux: 0
guestfs_get_smp: 1
guestfs_get_tmpdir: /tmp
guestfs_get_trace: 0
guestfs_get_verbose: 1
host_cpu: x86_64
Launching appliance, timeout set to 600 seconds.
libguestfs: launch: attach-method=appliance
libguestfs: launch: tmpdir=/tmp/libguestfsSD4XN5
libguestfs: launch: umask=0022
libguestfs: launch: euid=0
libguestfs: command: run: febootstrap-supermin-helper
libguestfs: command: run: \ --verbose
libguestfs: command: run: \ -f checksum
libguestfs: command: run: \ /usr/lib64/guestfs/supermin.d
libguestfs: command: run: \ x86_64
supermin helper [00000ms] whitelist = (not specified), host_cpu = x86_64,
kernel = (null), initrd = (null), appliance = (null)
supermin helper [00000ms] inputs[0] = /usr/lib64/guestfs/supermin.d
checking modpath /lib/modules/2.6.32-358.el6.x86_64 is a directory
picked vmlinuz-2.6.32-358.el6.x86_64 because modpath
/lib/modules/2.6.32-358.el6.x86_64 exists
checking modpath /lib/modules/2.6.32-504.1.3.el6.x86_64 is a directory
picked vmlinuz-2.6.32-504.1.3.el6.x86_64 because modpath
/lib/modules/2.6.32-504.1.3.el6.x86_64 exists
checking modpath /lib/modules/2.6.32-504.3.3.el6.x86_64 is a directory
picked vmlinuz-2.6.32-504.3.3.el6.x86_64 because modpath
/lib/modules/2.6.32-504.3.3.el6.x86_64 exists
supermin helper [00000ms] finished creating kernel
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/base.img
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/daemon.img
supermin helper [00000ms] visiting /usr/lib64/guestfs/supermin.d/hostfiles
supermin helper [00018ms] visiting /usr/lib64/guestfs/supermin.d/init.img
supermin helper [00018ms] visiting
/usr/lib64/guestfs/supermin.d/ntfs.hostfiles
supermin helper [00018ms] visiting /usr/lib64/guestfs/supermin.d/ntfs.img
supermin helper [00018ms] visiting
/usr/lib64/guestfs/supermin.d/udev-rules.img
supermin helper [00018ms] adding kernel modules
supermin helper [00047ms] finished creating appliance
libguestfs: checksum of existing appliance:
558a0ef6c941d551c216f1e2cd4fe10e130fba5257fb0921e1ab130fc9f3387c
libguestfs: [00050ms] begin testing qemu features
libguestfs: command: run: /usr/libexec/qemu-kvm
libguestfs: command: run: \ -nographic
libguestfs: command: run: \ -help
libguestfs: command: run: /usr/libexec/qemu-kvm
libguestfs: command: run: \ -nographic
libguestfs: command: run: \ -version
libguestfs: qemu version 0.12
libguestfs: command: run: /usr/libexec/qemu-kvm
libguestfs: command: run: \ -nographic
libguestfs: command: run: \ -machine accel=kvm:tcg
libguestfs: command: run: \ -device ?
libguestfs: [00246ms] finished testing qemu features
libguestfs: accept_from_daemon: 0x1404740 g->state = 1
[00247ms] /usr/libexec/qemu-kvm \
-global virtio-blk-pci.scsi=off \
-nodefconfig \
-nodefaults \
-nographic \
-machine accel=kvm:tcg \
-cpu host,+kvmclock \
-m 500 \
-no-reboot \
-kernel /var/tmp/.guestfs-0/kernel.11800 \
-initrd /var/tmp/.guestfs-0/initrd.11800 \
-device virtio-scsi-pci,id=scsi \
-drive
file=/tmp/libguestfs-test-tool-sda-uLIKjd,cache=none,format=raw,id=hd0,if=none
\
-device scsi-hd,drive=hd0 \
-drive
file=/var/tmp/.guestfs-0/root.11800,snapshot=on,id=appliance,if=none,cache=unsafe
\
-device scsi-hd,drive=appliance \
-device virtio-serial \
-serial stdio \
-device sga \
-chardev socket,path=/tmp/libguestfsSD4XN5/guestfsd.sock,id=channel0 \
-device virtserialport,chardev=channel0,name=org.libguestfs.channel.0 \
-append 'panic=1 console=ttyS0 udevtimeout=6000 no_timer_check acpi=off
printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0
guestfs_verbose=1 TERM=xterm'
\x1b[1;256r\x1b[256;256H\x1b[6n
Google, Inc.
Serial Graphics Adapter 12/07/11
SGABIOS $Id: sgabios.S 8 2010-04-22 00:03:40Z nlaredo $ (
mockbuild(a)c6b18n1.dev.centos.org) Wed Dec 7 17:04:47 UTC 2011
Term: 80x24
4 0
SeaBIOS (version seabios-0.6.1.2-28.el6)
Probing EDD (edd=off to disable)... ok
\x1b[2JInitializing cgroup subsys cpuset
Initializing cgroup subsys cpu
Linux version 2.6.32-504.3.3.el6.x86_64 (mockbuild(a)c6b8.bsys.dev.centos.org)
(gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Dec 17
01:55:02 UTC 2014
Command line: panic=1 console=ttyS0 udevtimeout=6000 no_timer_check
acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0
guestfs_verbose=1 TERM=xterm
KERNEL supported cpus:
Intel GenuineIntel
AMD AuthenticAMD
Centaur CentaurHauls
Disabled fast string operations
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009d800 (usable)
BIOS-e820: 000000000009d800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000001f3fd000 (usable)
BIOS-e820: 000000001f3fd000 - 000000001f400000 (reserved)
BIOS-e820: 00000000fffbc000 - 0000000100000000 (reserved)
DMI 2.4 present.
SMBIOS version 2.4 @ 0xFDA40
Hypervisor detected: KVM
last_pfn = 0x1f3fd max_arch_pfn = 0x400000000
x86 PAT enabled: cpu 0, old 0x70106, new 0x7010600070106
Using GB pages for direct mapping
init_memory_mapping: 0000000000000000-000000001f3fd000
RAMDISK: 1f19d000 - 1f3ef000
No NUMA configuration found
Faking a node at 0000000000000000-000000001f3fd000
Bootmem setup node 0 0000000000000000-000000001f3fd000
NODE_DATA [0000000000009000 - 000000000003cfff]
bootmap [000000000003d000 - 0000000000040e7f] pages 4
(7 early reservations) ==> bootmem [0000000000 - 001f3fd000]
#0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 -
0000001000]
#1 [0000006000 - 0000008000] TRAMPOLINE ==> [0000006000 -
0000008000]
#2 [0001000000 - 0002029be4] TEXT DATA BSS ==> [0001000000 -
0002029be4]
#3 [001f19d000 - 001f3ef000] RAMDISK ==> [001f19d000 -
001f3ef000]
#4 [000009d800 - 0000100000] BIOS reserved ==> [000009d800 -
0000100000]
#5 [000202a000 - 000202a07d] BRK ==> [000202a000 -
000202a07d]
#6 [0000008000 - 0000009000] PGTABLE ==> [0000008000 -
0000009000]
found SMP MP-table at [ffff8800000fda60] fda60
kvm-clock: Using msrs 4b564d01 and 4b564d00
kvm-clock: cpu 0, msr 0:1c27841, boot clock
Zone PFN ranges:
DMA 0x00000001 -> 0x00001000
DMA32 0x00001000 -> 0x00100000
Normal 0x00100000 -> 0x00100000
Movable zone start PFN for each node
early_node_map[2] active PFN ranges
0: 0x00000001 -> 0x0000009d
0: 0x00000100 -> 0x0001f3fd
SFI: Simple Firmware Interface v0.7 http://simplefirmware.org
Intel MultiProcessor Specification v1.4
MPTABLE: OEM ID: BOCHSCPU
MPTABLE: Product ID: 0.1
MPTABLE: APIC at: 0xFEE00000
Processor #0 (Bootup-CPU)
I/O APIC #0 Version 17 at 0xFEC00000.
IOAPIC[0]: apic_id 0, version 17, address 0xfec00000, GSI 0-23
Processors: 1
SMP: Allowing 1 CPUs, 0 hotplug CPUs
PM: Registered nosave memory: 000000000009d000 - 000000000009e000
PM: Registered nosave memory: 000000000009e000 - 00000000000a0000
PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
PM: Registered nosave memory: 00000000000f0000 - 0000000000100000
Allocating PCI resources starting at 1f400000 (gap: 1f400000:e0bbc000)
Booting paravirtualized kernel on KVM
NR_CPUS:4096 nr_cpumask_bits:1 nr_cpu_ids:1 nr_node_ids:1
PERCPU: Embedded 30 pages/cpu @ffff880002200000 s90968 r8192 d23720 u2097152
pcpu-alloc: s90968 r8192 d23720 u2097152 alloc=1*2097152
pcpu-alloc: [0] 0
kvm-clock: cpu 0, msr 0:2215841, primary cpu clock
kvm-stealtime: cpu 0, msr 220d880
Built 1 zonelists in Node order, mobility grouping on. Total pages: 126045
Policy zone: DMA32
Kernel command line: panic=1 console=ttyS0 udevtimeout=6000 no_timer_check
acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0
guestfs_verbose=1 TERM=xterm
[ 0.000000] Disabling memory control group subsystem
[ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.000000] xsave/xrstor: enabled xstate_bv 0x7, cntxt size 0x340
[ 0.000000] Checking aperture...
[ 0.000000] No AGP bridge found
[ 0.000000] Memory: 483860k/511988k available (5336k kernel code, 400k
absent, 27728k reserved, 7017k data, 1288k init)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:33024 nr_irqs:256
[ 0.000000] Console: colour dummy device 80x25
[ 0.000000] console [ttyS0] enabled
[ 0.000000] TSC: cpu family 6 model 45, tsc initial value = 65ac3198
[ 0.000000] Detected 2394.230 MHz processor.
[ 0.001999] Calibrating delay loop (skipped) preset value.. 4788.46
BogoMIPS (lpj=2394230)
[ 0.002214] pid_max: default: 32768 minimum: 301
[ 0.002702] Security Framework initialized
[ 0.003010] SELinux: Disabled at boot.
[ 0.004070] Dentry cache hash table entries: 65536 (order: 7, 524288
bytes)
[ 0.004715] Inode-cache hash table entries: 32768 (order: 6, 262144
bytes)
[ 0.005069] Mount-cache hash table entries: 256
[ 0.006090] Initializing cgroup subsys ns
[ 0.006398] Initializing cgroup subsys cpuacct
[ 0.006743] Initializing cgroup subsys memory
[ 0.007015] Initializing cgroup subsys devices
[ 0.007353] Initializing cgroup subsys freezer
[ 0.007680] Initializing cgroup subsys net_cls
[ 0.008003] Initializing cgroup subsys blkio
[ 0.008329] Initializing cgroup subsys perf_event
[ 0.008678] Initializing cgroup subsys net_prio
[ 0.009091] Disabled fast string operations
[ 0.010057] mce: CPU supports 10 MCE banks
[ 0.010415] alternatives: switching to unfair spinlock
[ 0.013836] SMP alternatives: switching to UP code
[ 0.029234] Freeing SMP alternatives: 36k freed
[ 0.029578] ftrace: converting mcount calls to 0f 1f 44 00 00
[ 0.030003] ftrace: allocating 21918 entries in 86 pages
[ 0.032307] Enabling x2apic
[ 0.032559] Enabled x2apic
[ 0.033002] APIC routing finalized to physical x2apic.
[ 0.035254] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.035755] CPU0: Intel(R) Xeon(R) CPU E5-2609 0 @ 2.40GHz stepping 07
[ 0.138051] Performance Events: 16-deep LBR, SandyBridge events, Intel
PMU driver.
[ 0.138838] PEBS disabled due to CPU errata, please upgrade microcode
[ 0.138994] ... version: 2
[ 0.139335] ... bit width: 48
[ 0.139988] ... generic registers: 8
[ 0.140324] ... value mask: 0000ffffffffffff
[ 0.140770] ... max period: 000000007fffffff
[ 0.140988] ... fixed-purpose events: 3
[ 0.141321] ... event mask: 00000007000000ff
[ 0.142928] NMI watchdog enabled, takes one hw-pmu counter.
[ 0.143041] Brought up 1 CPUs
[ 0.143307] Total of 1 processors activated (4788.46 BogoMIPS).
[ 0.145019] devtmpfs: initialized
[ 0.148140] regulator: core version 0.5
[ 0.148532] NET: Registered protocol family 16
[ 0.149946] PCI: Using configuration type 1 for base access
[ 0.151262] bio: create slab <bio-0> at 0
[ 0.151716] ACPI: Interpreter disabled.
[ 0.152022] vgaarb: loaded
[ 0.152859] SCSI subsystem initialized
[ 0.153069] usbcore: registered new interface driver usbfs
[ 0.153553] usbcore: registered new interface driver hub
[ 0.154006] usbcore: registered new device driver usb
[ 0.154516] PCI: Probing PCI hardware
[ 0.155012] PCI host bridge to bus 0000:00
[ 0.155361] pci_bus 0000:00: root bus resource [io 0x0000-0xffff]
[ 0.155987] pci_bus 0000:00: root bus resource [mem
0x00000000-0x3fffffffffff]
[ 0.157727] pci 0000:00:01.3: quirk: [io 0xb000-0xb03f] claimed by
PIIX4 ACPI
[ 0.157993] pci 0000:00:01.3: quirk: [io 0xb100-0xb10f] claimed by
PIIX4 SMB
[ 0.160185] pci 0000:00:01.0: PIIX/ICH IRQ router [8086:7000]
[ 0.160834] NetLabel: Initializing
[ 0.160986] NetLabel: domain hash size = 128
[ 0.161353] NetLabel: protocols = UNLABELED CIPSOv4
[ 0.161785] NetLabel: unlabeled traffic allowed by default
[ 0.162023] Switching to clocksource kvm-clock
[ 0.170170] pnp: PnP ACPI: disabled
[ 0.170701] NET: Registered protocol family 2
[ 0.171141] IP route cache hash table entries: 4096 (order: 3, 32768
bytes)
[ 0.172355] TCP established hash table entries: 16384 (order: 6, 262144
bytes)
[ 0.173041] TCP bind hash table entries: 16384 (order: 6, 262144 bytes)
[ 0.173627] TCP: Hash tables configured (established 16384 bind 16384)
[ 0.174191] TCP reno registered
[ 0.174525] NET: Registered protocol family 1
[ 0.174915] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[ 0.175427] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[ 0.175920] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[ 0.176474] Trying to unpack rootfs image as initramfs...
[ 0.178720] Freeing initrd memory: 2376k freed
[ 0.179452] platform rtc_cmos: registered platform RTC device (no PNP
device found)
[ 0.180392] futex hash table entries: 256 (order: 2, 16384 bytes)
[ 0.180989] audit: initializing netlink socket (disabled)
[ 0.181485] type=2000 audit(1418908251.180:1): initialized
[ 0.190278] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 0.191523] VFS: Disk quotas dquot_6.5.2
[ 0.191888] Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[ 0.192529] msgmni has been set to 949
[ 0.193076] alg: No test for stdrng (krng)
[ 0.193436] ksign: Installing public key data
[ 0.193810] Loading keyring
[ 0.194077] - Added public key A25F8C29DC55AB79
[ 0.194464] - User ID: CentOS (Kernel Module GPG key)
[ 0.194921] Block layer SCSI generic (bsg) driver version 0.4 loaded
(major 251)
[ 0.195565] io scheduler noop registered
[ 0.195910] io scheduler anticipatory registered
[ 0.196311] io scheduler deadline registered
[ 0.196692] io scheduler cfq registered (default)
[ 0.197228] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 0.197729] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[ 0.198298] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.199783] Non-volatile memory driver v1.3
[ 0.200157] Linux agpgart interface v0.103
[ 0.200585] crash memory driver: version 1.1
[ 0.200957] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
\xff[ 0.445601] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 0.447662] brd: module loaded
[ 0.448342] loop: module loaded
[ 0.448647] input: Macintosh mouse button emulation as
/devices/virtual/input/input0
[ 0.449341] Fixed MDIO Bus: probed
[ 0.449666] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 0.450242] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[ 0.450777] uhci_hcd: USB Universal Host Controller Interface driver
[ 0.451837] PNP: No PS/2 controller found. Probing ports directly.
[ 0.452920] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 0.453356] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 0.453859] mice: PS/2 mouse device common for all mice
[ 0.454556] input: AT Translated Set 2 keyboard as
/devices/platform/i8042/serio0/input/input1
[ 0.455521] rtc_cmos rtc_cmos: rtc core: registered rtc_cmos as rtc0
[ 0.456140] rtc0: alarms up to one day, 114 bytes nvram
[ 0.456627] cpuidle: using governor ladder
[ 0.456991] cpuidle: using governor menu
[ 0.457335] EFI Variables Facility v0.08 2004-May-17
[ 0.459313] usbcore: registered new interface driver hiddev
[ 0.459802] usbcore: registered new interface driver usbhid
[ 0.460279] usbhid: v2.6:USB HID core driver
[ 0.460666] GRE over IPv4 demultiplexor driver
[ 0.461069] TCP cubic registered
[ 0.461370] Initializing XFRM netlink socket
[ 0.461737] NET: Registered protocol family 17
[ 0.462201] registered taskstats version 1
[ 0.462716] rtc_cmos rtc_cmos: setting system clock to 2014-12-18
13:10:50 UTC (1418908250)
[ 0.463460] Initalizing network drop monitor service
[ 0.463905] Freeing unused kernel memory: 1288k freed
[ 0.464668] Write protecting the kernel read-only data: 10240k
[ 0.465313] Freeing unused kernel memory: 788k freed
[ 0.466032] Freeing unused kernel memory: 1568k freed
febootstrap: mounting /proc
febootstrap: uptime: 0.46 0.27
febootstrap: ext2 mini initrd starting up: 3.21 zlib
febootstrap: cmdline: panic=1 console=ttyS0 udevtimeout=6000 no_timer_check
acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0
guestfs_verbose=1 TERM=xterm
febootstrap: mounting /sys
febootstrap: internal insmod libcrc32c.ko
febootstrap: internal insmod crc32c-intel.ko
febootstrap: internal insmod crc-itu-t.ko
febootstrap: internal insmod crc-t10dif.ko
[ 0.498473] STARTING CRC_T10DIF
febootstrap: internal insmod crc-ccitt.ko
febootstrap: internal insmod crc7.ko
febootstrap: internal insmod mbcache.ko
febootstrap: internal insmod cdrom.ko
febootstrap: internal insmod sr_mod.ko
febootstrap: internal insmod ata_piix.ko
[ 0.549216] scsi0 : ata_piix
[ 0.549551] scsi1 : ata_piix
[ 0.549835] ata1: PATA max MWDMA2 cmd 0x1f0 ctl 0x3f6 bmdma 0xc000 irq 14
[ 0.550420] ata2: PATA max MWDMA2 cmd 0x170 ctl 0x376 bmdma 0xc008 irq 15
febootstrap: internal insmod scsi_transport_spi.ko
febootstrap: internal insmod sym53c8xx.ko
febootstrap: internal insmod sd_mod.ko
febootstrap: internal insmod virtio_ring.ko
febootstrap: internal insmod virtio.ko
febootstrap: internal insmod virtio-rng.ko
febootstrap: internal insmod virtio_console.ko
febootstrap: internal insmod virtio_blk.ko
febootstrap: internal insmod virtio_scsi.ko
febootstrap: internal insmod virtio_net.ko
febootstrap: internal insmod virtio_pci.ko
[ 0.804785] virtio-pci 0000:00:02.0: PCI->APIC IRQ transform: INT A ->
IRQ 10
[ 0.842729] scsi2 : Virtio SCSI HBA
[ 0.844484] virtio-pci 0000:00:03.0: PCI->APIC IRQ transform: INT A ->
IRQ 11
[ 0.845127] scsi 2:0:0:0: Direct-Access QEMU QEMU HARDDISK
0.12 PQ: 0 ANSI: 5
[ 0.850752] scsi 2:0:1:0: Direct-Access QEMU QEMU HARDDISK
0.12 PQ: 0 ANSI: 5
[ 0.883105] sd 2:0:0:0: [sda] 204800 512-byte logical blocks: (104
MB/100 MiB)
[ 0.887102] sd 2:0:0:0: [sda] Write Protect is off
[ 0.888039] sd 2:0:1:0: [sdb] 8388608 512-byte logical blocks: (4.29
GB/4.00 GiB)
[ 0.889404] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled,
doesn't support DPO or FUA
[ 0.891458] sd 2:0:1:0: [sdb] Write Protect is off
[ 0.892440] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled,
doesn't support DPO or FUA
[ 0.893988] sda: unknown partition table
[ 0.896071] sdb:
[ 0.896674] sd 2:0:0:0: [sda] Attached SCSI disk
[ 0.897767] unknown partition table
[ 0.899114] sd 2:0:1:0: [sdb] Attached SCSI disk
febootstrap: internal insmod virtio_balloon.ko
febootstrap: internal insmod jbd2.ko
febootstrap: internal insmod ext4.ko
febootstrap: internal insmod ext2.ko
febootstrap: picked /sys/block/sdb/dev as root device
febootstrap: creating /dev/root as block special 8:16
febootstrap: mounting new root on /root
febootstrap: chroot
Starting /init script ...
[ 1.090794] input: ImExPS/2 Generic Explorer Mouse as
/devices/platform/i8042/serio1/input/input2
Starting udev: udevd[108]: specified group 'dialout' unknown
udevd[108]: specified group 'dialout' unknown
udevd[108]: specified group 'floppy' unknown
udevd[108]: specified group 'floppy' unknown
udevd[108]: specified user 'vcsa' unknown
udevd[108]: specified user 'vcsa' unknown
udevd[108]: specified group 'cdrom' unknown
udevd[108]: specified group 'cdrom' unknown
udevd[108]: specified group 'tape' unknown
udevd[108]: specified group 'tape' unknown
/sbin/start_udev: line 299: /etc/sysconfig/network: No such file or
directory
[ 1.227490] udev: starting version 147
[ 1.342135] ACPI Exception: AE_BAD_PARAMETER, Thread ffff88001db36aa0
could not acquire Mutex [0x1] (20090903/utmutex-290)
[ 1.343146] piix4_smbus 0000:00:01.3: SMBus Host Controller at 0xb100,
revision 0
[ 1.383174] sd 2:0:0:0: Attached scsi generic sg0 type 0
[ 1.384082] sd 2:0:1:0: Attached scsi generic sg1 type 0
[ OK ]
RTNETLINK answers: File exists
Cannot find device "eth0"
Cannot find device "eth0"
RTNETLINK answers: No such process
mdadm: No arrays found in config file or automatically
[ 2.276180] device-mapper: uevent: version 1.0.3
[ 2.277239] device-mapper: ioctl: 4.27.0-ioctl (2013-10-30) initialised:
dm-devel(a)redhat.com
WARNING: lvmetad is running but disabled. Restart lvmetad before enabling
it!
Reading all physical volumes. This may take a while...
No volume groups found
WARNING: lvmetad is running but disabled. Restart lvmetad before enabling
it!
No volume groups found
/init: line 99: ldmtool: command not found
/init: line 102: /sys/block/vd*/queue/rotational: No such file or directory
Linux (none) 2.6.32-504.3.3.el6.x86_64 #1 SMP Wed Dec 17 01:55:02 UTC 2014
x86_64 x86_64 x86_64 GNU/Linux
/dev:
total 0
lrwxrwxrwx 1 root root 13 Dec 18 21:10 MAKEDEV -> /sbin/MAKEDEV
drwxr-xr-x 2 root root 560 Dec 18 13:10 block
drwxr-xr-x 2 root root 80 Dec 18 21:10 bsg
drwxr-xr-x 2 root root 2220 Dec 18 21:10 char
crw------- 1 root root 5, 1 Dec 18 13:10 console
lrwxrwxrwx 1 root root 11 Dec 18 21:10 core -> /proc/kcore
drwxr-xr-x 3 root root 60 Dec 18 21:10 cpu
crw-rw---- 1 root root 10, 61 Dec 18 13:10 cpu_dma_latency
crw-rw---- 1 root root 10, 62 Dec 18 13:10 crash
drwxr-xr-x 5 root root 100 Dec 18 13:10 disk
lrwxrwxrwx 1 root root 13 Dec 18 21:10 fd -> /proc/self/fd
crw-rw-rw- 1 root root 1, 7 Dec 18 13:10 full
crw-rw-rw- 1 root root 10, 229 Dec 18 21:10 fuse
drwxr-xr-x 2 root root 40 Dec 18 21:10 hugepages
drwxr-xr-x 3 root root 180 Dec 18 13:10 input
crw-rw---- 1 root root 1, 11 Dec 18 13:10 kmsg
brw-rw---- 1 root disk 7, 0 Dec 18 13:10 loop0
brw-rw---- 1 root disk 7, 1 Dec 18 13:10 loop1
brw-rw---- 1 root disk 7, 2 Dec 18 13:10 loop2
brw-rw---- 1 root disk 7, 3 Dec 18 13:10 loop3
brw-rw---- 1 root disk 7, 4 Dec 18 13:10 loop4
brw-rw---- 1 root disk 7, 5 Dec 18 13:10 loop5
brw-rw---- 1 root disk 7, 6 Dec 18 13:10 loop6
brw-rw---- 1 root disk 7, 7 Dec 18 13:10 loop7
crw-rw---- 1 root lp 6, 0 Dec 18 21:10 lp0
crw-rw---- 1 root lp 6, 1 Dec 18 21:10 lp1
crw-rw---- 1 root lp 6, 2 Dec 18 21:10 lp2
crw-rw---- 1 root lp 6, 3 Dec 18 21:10 lp3
drwxr-xr-x 2 root root 60 Dec 18 21:10 mapper
crw-rw---- 1 root root 10, 227 Dec 18 13:10 mcelog
drwxr-xr-x 2 root root 60 Dec 18 21:10 md
crw-r----- 1 root kmem 1, 1 Dec 18 13:10 mem
drwxr-xr-x 2 root root 60 Dec 18 21:10 net
crw-rw---- 1 root root 10, 60 Dec 18 13:10 network_latency
crw-rw---- 1 root root 10, 59 Dec 18 13:10 network_throughput
crw-rw-rw- 1 root root 1, 3 Dec 18 13:10 null
crw-r----- 1 root kmem 10, 144 Dec 18 13:10 nvram
crw-rw---- 1 root root 1, 12 Dec 18 13:10 oldmem
crw-r----- 1 root kmem 1, 4 Dec 18 13:10 port
crw------- 1 root root 108, 0 Dec 18 21:10 ppp
crw-rw-rw- 1 root tty 5, 2 Dec 18 13:10 ptmx
drwxr-xr-x 2 root root 40 Dec 18 21:10 pts
brw-rw---- 1 root disk 1, 0 Dec 18 13:10 ram0
brw-rw---- 1 root disk 1, 1 Dec 18 13:10 ram1
brw-rw---- 1 root disk 1, 10 Dec 18 13:10 ram10
brw-rw---- 1 root disk 1, 11 Dec 18 13:10 ram11
brw-rw---- 1 root disk 1, 12 Dec 18 13:10 ram12
brw-rw---- 1 root disk 1, 13 Dec 18 13:10 ram13
brw-rw---- 1 root disk 1, 14 Dec 18 13:10 ram14
brw-rw---- 1 root disk 1, 15 Dec 18 13:10 ram15
brw-rw---- 1 root disk 1, 2 Dec 18 13:10 ram2
brw-rw---- 1 root disk 1, 3 Dec 18 13:10 ram3
brw-rw---- 1 root disk 1, 4 Dec 18 13:10 ram4
brw-rw---- 1 root disk 1, 5 Dec 18 13:10 ram5
brw-rw---- 1 root disk 1, 6 Dec 18 13:10 ram6
brw-rw---- 1 root disk 1, 7 Dec 18 13:10 ram7
brw-rw---- 1 root disk 1, 8 Dec 18 13:10 ram8
brw-rw---- 1 root disk 1, 9 Dec 18 13:10 ram9
crw-rw-rw- 1 root root 1, 8 Dec 18 13:10 random
drwxr-xr-x 2 root root 60 Dec 18 21:10 raw
lrwxrwxrwx 1 root root 4 Dec 18 21:10 rtc -> rtc0
crw-rw---- 1 root root 254, 0 Dec 18 21:10 rtc0
brw-rw---- 1 root disk 8, 0 Dec 18 13:10 sda
brw-rw---- 1 root disk 8, 16 Dec 18 13:10 sdb
crw-rw---- 1 root disk 21, 0 Dec 18 13:10 sg0
crw-rw---- 1 root disk 21, 1 Dec 18 13:10 sg1
drwxr-xr-x 2 root root 40 Dec 18 21:10 shm
crw-rw---- 1 root root 10, 231 Dec 18 13:10 snapshot
lrwxrwxrwx 1 root root 15 Dec 18 21:10 stderr -> /proc/self/fd/2
lrwxrwxrwx 1 root root 15 Dec 18 21:10 stdin -> /proc/self/fd/0
lrwxrwxrwx 1 root root 15 Dec 18 21:10 stdout -> /proc/self/fd/1
crw-rw-rw- 1 root tty 5, 0 Dec 18 13:10 tty
crw--w---- 1 root tty 4, 0 Dec 18 13:10 tty0
crw--w---- 1 root tty 4, 1 Dec 18 13:10 tty1
crw--w---- 1 root tty 4, 10 Dec 18 13:10 tty10
crw--w---- 1 root tty 4, 11 Dec 18 13:10 tty11
crw--w---- 1 root tty 4, 12 Dec 18 13:10 tty12
crw--w---- 1 root tty 4, 13 Dec 18 13:10 tty13
crw--w---- 1 root tty 4, 14 Dec 18 13:10 tty14
crw--w---- 1 root tty 4, 15 Dec 18 13:10 tty15
crw--w---- 1 root tty 4, 16 Dec 18 13:10 tty16
crw--w---- 1 root tty 4, 17 Dec 18 13:10 tty17
crw--w---- 1 root tty 4, 18 Dec 18 13:10 tty18
crw--w---- 1 root tty 4, 19 Dec 18 13:10 tty19
crw--w---- 1 root tty 4, 2 Dec 18 13:10 tty2
crw--w---- 1 root tty 4, 20 Dec 18 13:10 tty20
crw--w---- 1 root tty 4, 21 Dec 18 13:10 tty21
crw--w---- 1 root tty 4, 22 Dec 18 13:10 tty22
crw--w---- 1 root tty 4, 23 Dec 18 13:10 tty23
crw--w---- 1 root tty 4, 24 Dec 18 13:10 tty24
crw--w---- 1 root tty 4, 25 Dec 18 13:10 tty25
crw--w---- 1 root tty 4, 26 Dec 18 13:10 tty26
crw--w---- 1 root tty 4, 27 Dec 18 13:10 tty27
crw--w---- 1 root tty 4, 28 Dec 18 13:10 tty28
crw--w---- 1 root tty 4, 29 Dec 18 13:10 tty29
crw--w---- 1 root tty 4, 3 Dec 18 13:10 tty3
crw--w---- 1 root tty 4, 30 Dec 18 13:10 tty30
crw--w---- 1 root tty 4, 31 Dec 18 13:10 tty31
crw--w---- 1 root tty 4, 32 Dec 18 13:10 tty32
crw--w---- 1 root tty 4, 33 Dec 18 13:10 tty33
crw--w---- 1 root tty 4, 34 Dec 18 13:10 tty34
crw--w---- 1 root tty 4, 35 Dec 18 13:10 tty35
crw--w---- 1 root tty 4, 36 Dec 18 13:10 tty36
crw--w---- 1 root tty 4, 37 Dec 18 13:10 tty37
crw--w---- 1 root tty 4, 38 Dec 18 13:10 tty38
crw--w---- 1 root tty 4, 39 Dec 18 13:10 tty39
crw--w---- 1 root tty 4, 4 Dec 18 13:10 tty4
crw--w---- 1 root tty 4, 40 Dec 18 13:10 tty40
crw--w---- 1 root tty 4, 41 Dec 18 13:10 tty41
crw--w---- 1 root tty 4, 42 Dec 18 13:10 tty42
crw--w---- 1 root tty 4, 43 Dec 18 13:10 tty43
crw--w---- 1 root tty 4, 44 Dec 18 13:10 tty44
crw--w---- 1 root tty 4, 45 Dec 18 13:10 tty45
crw--w---- 1 root tty 4, 46 Dec 18 13:10 tty46
crw--w---- 1 root tty 4, 47 Dec 18 13:10 tty47
crw--w---- 1 root tty 4, 48 Dec 18 13:10 tty48
crw--w---- 1 root tty 4, 49 Dec 18 13:10 tty49
crw--w---- 1 root tty 4, 5 Dec 18 13:10 tty5
crw--w---- 1 root tty 4, 50 Dec 18 13:10 tty50
crw--w---- 1 root tty 4, 51 Dec 18 13:10 tty51
crw--w---- 1 root tty 4, 52 Dec 18 13:10 tty52
crw--w---- 1 root tty 4, 53 Dec 18 13:10 tty53
crw--w---- 1 root tty 4, 54 Dec 18 13:10 tty54
crw--w---- 1 root tty 4, 55 Dec 18 13:10 tty55
crw--w---- 1 root tty 4, 56 Dec 18 13:10 tty56
crw--w---- 1 root tty 4, 57 Dec 18 13:10 tty57
crw--w---- 1 root tty 4, 58 Dec 18 13:10 tty58
crw--w---- 1 root tty 4, 59 Dec 18 13:10 tty59
crw--w---- 1 root tty 4, 6 Dec 18 13:10 tty6
crw--w---- 1 root tty 4, 60 Dec 18 13:10 tty60
crw--w---- 1 root tty 4, 61 Dec 18 13:10 tty61
crw--w---- 1 root tty 4, 62 Dec 18 13:10 tty62
crw--w---- 1 root tty 4, 63 Dec 18 13:10 tty63
crw--w---- 1 root tty 4, 7 Dec 18 13:10 tty7
crw--w---- 1 root tty 4, 8 Dec 18 13:10 tty8
crw--w---- 1 root tty 4, 9 Dec 18 13:10 tty9
crw-rw---- 1 root root 4, 64 Dec 18 13:10 ttyS0
crw-rw---- 1 root root 4, 65 Dec 18 13:10 ttyS1
crw-rw---- 1 root root 4, 66 Dec 18 13:10 ttyS2
crw-rw---- 1 root root 4, 67 Dec 18 13:10 ttyS3
crw-rw-rw- 1 root root 1, 9 Dec 18 13:10 urandom
crw-rw---- 1 root root 250, 0 Dec 18 13:10 usbmon0
crw-rw---- 1 root tty 7, 0 Dec 18 13:10 vcs
crw-rw---- 1 root tty 7, 1 Dec 18 13:10 vcs1
crw-rw---- 1 root tty 7, 128 Dec 18 13:10 vcsa
crw-rw---- 1 root tty 7, 129 Dec 18 13:10 vcsa1
crw-rw---- 1 root root 10, 63 Dec 18 13:10 vga_arbiter
drwxr-xr-x 2 root root 60 Dec 18 21:10 virtio-ports
crw-rw---- 1 root root 248, 1 Dec 18 21:10 vport0p1
crw-rw-rw- 1 root root 1, 5 Dec 18 13:10 zero
/dev/block:
total 0
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:0 -> ../ram0
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:1 -> ../ram1
lrwxrwxrwx 1 root root 8 Dec 18 13:10 1:10 -> ../ram10
lrwxrwxrwx 1 root root 8 Dec 18 13:10 1:11 -> ../ram11
lrwxrwxrwx 1 root root 8 Dec 18 13:10 1:12 -> ../ram12
lrwxrwxrwx 1 root root 8 Dec 18 13:10 1:13 -> ../ram13
lrwxrwxrwx 1 root root 8 Dec 18 13:10 1:14 -> ../ram14
lrwxrwxrwx 1 root root 8 Dec 18 13:10 1:15 -> ../ram15
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:2 -> ../ram2
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:3 -> ../ram3
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:4 -> ../ram4
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:5 -> ../ram5
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:6 -> ../ram6
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:7 -> ../ram7
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:8 -> ../ram8
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:9 -> ../ram9
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:0 -> ../loop0
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:1 -> ../loop1
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:2 -> ../loop2
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:3 -> ../loop3
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:4 -> ../loop4
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:5 -> ../loop5
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:6 -> ../loop6
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:7 -> ../loop7
lrwxrwxrwx 1 root root 6 Dec 18 13:10 8:0 -> ../sda
lrwxrwxrwx 1 root root 6 Dec 18 13:10 8:16 -> ../sdb
/dev/bsg:
total 0
crw-rw---- 1 root root 251, 0 Dec 18 13:10 2:0:0:0
crw-rw---- 1 root root 251, 1 Dec 18 13:10 2:0:1:0
/dev/char:
total 0
lrwxrwxrwx 1 root root 8 Dec 18 13:10 10:144 -> ../nvram
lrwxrwxrwx 1 root root 9 Dec 18 13:10 10:227 -> ../mcelog
lrwxrwxrwx 1 root root 11 Dec 18 13:10 10:231 -> ../snapshot
lrwxrwxrwx 1 root root 17 Dec 18 21:10 10:58 -> ../mapper/control
lrwxrwxrwx 1 root root 21 Dec 18 13:10 10:59 -> ../network_throughput
lrwxrwxrwx 1 root root 18 Dec 18 13:10 10:60 -> ../network_latency
lrwxrwxrwx 1 root root 18 Dec 18 13:10 10:61 -> ../cpu_dma_latency
lrwxrwxrwx 1 root root 8 Dec 18 13:10 10:62 -> ../crash
lrwxrwxrwx 1 root root 14 Dec 18 13:10 10:63 -> ../vga_arbiter
lrwxrwxrwx 1 root root 15 Dec 18 13:10 13:32 -> ../input/mouse0
lrwxrwxrwx 1 root root 15 Dec 18 13:10 13:33 -> ../input/mouse1
lrwxrwxrwx 1 root root 13 Dec 18 13:10 13:63 -> ../input/mice
lrwxrwxrwx 1 root root 15 Dec 18 13:10 13:64 -> ../input/event0
lrwxrwxrwx 1 root root 15 Dec 18 13:10 13:65 -> ../input/event1
lrwxrwxrwx 1 root root 15 Dec 18 13:10 13:66 -> ../input/event2
lrwxrwxrwx 1 root root 13 Dec 18 13:10 162:0 -> ../raw/rawctl
lrwxrwxrwx 1 root root 6 Dec 18 13:10 1:1 -> ../mem
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:11 -> ../kmsg
lrwxrwxrwx 1 root root 9 Dec 18 13:10 1:12 -> ../oldmem
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:3 -> ../null
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:4 -> ../port
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:5 -> ../zero
lrwxrwxrwx 1 root root 7 Dec 18 13:10 1:7 -> ../full
lrwxrwxrwx 1 root root 9 Dec 18 13:10 1:8 -> ../random
lrwxrwxrwx 1 root root 10 Dec 18 13:10 1:9 -> ../urandom
lrwxrwxrwx 1 root root 12 Dec 18 13:10 202:0 -> ../cpu/0/msr
lrwxrwxrwx 1 root root 14 Dec 18 13:10 203:0 -> ../cpu/0/cpuid
lrwxrwxrwx 1 root root 6 Dec 18 13:10 21:0 -> ../sg0
lrwxrwxrwx 1 root root 6 Dec 18 13:10 21:1 -> ../sg1
lrwxrwxrwx 1 root root 11 Dec 18 21:10 248:1 -> ../vport0p1
lrwxrwxrwx 1 root root 10 Dec 18 13:10 250:0 -> ../usbmon0
lrwxrwxrwx 1 root root 14 Dec 18 13:10 251:0 -> ../bsg/2:0:0:0
lrwxrwxrwx 1 root root 14 Dec 18 13:10 251:1 -> ../bsg/2:0:1:0
lrwxrwxrwx 1 root root 7 Dec 18 21:10 254:0 -> ../rtc0
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:0 -> ../tty0
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:1 -> ../tty1
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:10 -> ../tty10
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:11 -> ../tty11
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:12 -> ../tty12
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:13 -> ../tty13
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:14 -> ../tty14
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:15 -> ../tty15
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:16 -> ../tty16
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:17 -> ../tty17
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:18 -> ../tty18
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:19 -> ../tty19
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:2 -> ../tty2
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:20 -> ../tty20
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:21 -> ../tty21
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:22 -> ../tty22
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:23 -> ../tty23
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:24 -> ../tty24
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:25 -> ../tty25
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:26 -> ../tty26
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:27 -> ../tty27
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:28 -> ../tty28
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:29 -> ../tty29
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:3 -> ../tty3
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:30 -> ../tty30
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:31 -> ../tty31
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:32 -> ../tty32
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:33 -> ../tty33
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:34 -> ../tty34
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:35 -> ../tty35
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:36 -> ../tty36
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:37 -> ../tty37
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:38 -> ../tty38
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:39 -> ../tty39
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:4 -> ../tty4
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:40 -> ../tty40
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:41 -> ../tty41
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:42 -> ../tty42
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:43 -> ../tty43
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:44 -> ../tty44
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:45 -> ../tty45
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:46 -> ../tty46
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:47 -> ../tty47
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:48 -> ../tty48
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:49 -> ../tty49
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:5 -> ../tty5
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:50 -> ../tty50
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:51 -> ../tty51
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:52 -> ../tty52
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:53 -> ../tty53
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:54 -> ../tty54
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:55 -> ../tty55
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:56 -> ../tty56
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:57 -> ../tty57
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:58 -> ../tty58
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:59 -> ../tty59
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:6 -> ../tty6
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:60 -> ../tty60
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:61 -> ../tty61
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:62 -> ../tty62
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:63 -> ../tty63
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:64 -> ../ttyS0
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:65 -> ../ttyS1
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:66 -> ../ttyS2
lrwxrwxrwx 1 root root 8 Dec 18 13:10 4:67 -> ../ttyS3
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:7 -> ../tty7
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:8 -> ../tty8
lrwxrwxrwx 1 root root 7 Dec 18 13:10 4:9 -> ../tty9
lrwxrwxrwx 1 root root 6 Dec 18 13:10 5:0 -> ../tty
lrwxrwxrwx 1 root root 10 Dec 18 13:10 5:1 -> ../console
lrwxrwxrwx 1 root root 7 Dec 18 13:10 5:2 -> ../ptmx
lrwxrwxrwx 1 root root 6 Dec 18 13:10 7:0 -> ../vcs
lrwxrwxrwx 1 root root 7 Dec 18 13:10 7:1 -> ../vcs1
lrwxrwxrwx 1 root root 7 Dec 18 13:10 7:128 -> ../vcsa
lrwxrwxrwx 1 root root 8 Dec 18 13:10 7:129 -> ../vcsa1
/dev/cpu:
total 0
drwxr-xr-x 2 root root 80 Dec 18 21:10 0
/dev/cpu/0:
total 0
cr--r--r-- 1 root root 203, 0 Dec 18 13:10 cpuid
crw-rw---- 1 root root 202, 0 Dec 18 13:10 msr
/dev/disk:
total 0
drwxr-xr-x 2 root root 80 Dec 18 13:10 by-id
drwxr-xr-x 2 root root 80 Dec 18 13:10 by-path
drwxr-xr-x 2 root root 60 Dec 18 13:10 by-uuid
/dev/disk/by-id:
total 0
lrwxrwxrwx 1 root root 9 Dec 18 13:10 scsi-0QEMU_QEMU_HARDDISK_appliance ->
../../sdb
lrwxrwxrwx 1 root root 9 Dec 18 13:10 scsi-0QEMU_QEMU_HARDDISK_hd0 ->
../../sda
/dev/disk/by-path:
total 0
lrwxrwxrwx 1 root root 9 Dec 18 13:10
pci-0000:00:02.0-virtio-pci-virtio0-scsi-0:0:0:0 -> ../../sda
lrwxrwxrwx 1 root root 9 Dec 18 13:10
pci-0000:00:02.0-virtio-pci-virtio0-scsi-0:0:1:0 -> ../../sdb
/dev/disk/by-uuid:
total 0
lrwxrwxrwx 1 root root 9 Dec 18 13:10 02de0480-f769-4ab6-b95f-1926b2aa42d4
-> ../../sdb
/dev/hugepages:
total 0
/dev/input:
total 0
drwxr-xr-x 2 root root 100 Dec 18 13:10 by-path
crw-r----- 1 root root 13, 64 Dec 18 13:10 event0
crw-r----- 1 root root 13, 65 Dec 18 13:10 event1
crw-r----- 1 root root 13, 66 Dec 18 13:10 event2
crw-r----- 1 root root 13, 63 Dec 18 13:10 mice
crw-r----- 1 root root 13, 32 Dec 18 13:10 mouse0
crw-r----- 1 root root 13, 33 Dec 18 13:10 mouse1
/dev/input/by-path:
total 0
lrwxrwxrwx 1 root root 9 Dec 18 13:10 platform-i8042-serio-0-event-kbd ->
../event1
lrwxrwxrwx 1 root root 9 Dec 18 13:10 platform-i8042-serio-1-event-mouse ->
../event2
lrwxrwxrwx 1 root root 9 Dec 18 13:10 platform-i8042-serio-1-mouse ->
../mouse1
/dev/mapper:
total 0
crw-rw---- 1 root root 10, 58 Dec 18 21:10 control
/dev/md:
total 0
-rw------- 1 root root 0 Dec 18 21:10 md-device-map
/dev/net:
total 0
crw-rw-rw- 1 root root 10, 200 Dec 18 21:10 tun
/dev/pts:
total 0
/dev/raw:
total 0
crw-rw---- 1 root disk 162, 0 Dec 18 13:10 rawctl
/dev/shm:
total 0
/dev/virtio-ports:
total 0
lrwxrwxrwx 1 root root 11 Dec 18 21:10 org.libguestfs.channel.0 ->
../vport0p1
rootfs / rootfs rw 0 0
proc /proc proc rw,relatime 0 0
/dev/root / ext2 rw,noatime,errors=continue 0 0
/proc /proc proc rw,relatime 0 0
/sys /sys sysfs rw,relatime 0 0
tmpfs /run tmpfs rw,nosuid,relatime,size=97984k,mode=755 0 0
/dev /dev devtmpfs rw,relatime,size=241948k,nr_inodes=60487,mode=755 0 0
WARNING: lvmetad is running but disabled. Restart lvmetad before enabling
it!
WARNING: lvmetad is running but disabled. Restart lvmetad before enabling
it!
No volume groups found
WARNING: lvmetad is running but disabled. Restart lvmetad before enabling
it!
No volume groups found
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
Module Size Used by
dm_mod 95622 0
sg 29318 0
i2c_piix4 11776 0
i2c_core 29964 1 i2c_piix4
ext2 68236 1
ext4 378476 0
jbd2 93427 1 ext4
virtio_balloon 4798 0
virtio_pci 7348 0
virtio_net 22438 0
virtio_scsi 10761 1
virtio_blk 7132 0
virtio_console 19089 0
virtio_rng 2816 0
virtio 4977 7
virtio_balloon,virtio_pci,virtio_net,virtio_scsi,virtio_blk,virtio_console,virtio_rng
virtio_ring 9115 7
virtio_balloon,virtio_pci,virtio_net,virtio_scsi,virtio_blk,virtio_console,virtio_rng
sd_mod 36998 1
sym53c8xx 75810 0
scsi_transport_spi 25447 1 sym53c8xx
ata_piix 24409 0
sr_mod 15049 0
cdrom 39085 1 sr_mod
mbcache 8193 2 ext2,ext4
crc7 1457 0
crc_ccitt 1717 0
crc_t10dif 1305 1 sd_mod
crc_itu_t 1717 0
crc32c_intel 2068 0
libcrc32c 1246 0
Thu Dec 18 21:10:52 SGT 2014
uptime: 2.50 1.11
verbose daemon enabled
linux commmand line: panic=1 console=ttyS0 udevtimeout=6000 no_timer_check
acpi=off printk.time=1 cgroup_disable=memory root=/dev/sdb selinux=0
guestfs_verbose=1 TERM=xterm
udevadm settle
libguestfs: recv_from_daemon: received GUESTFS_LAUNCH_FLAG
libguestfs: [03797ms] appliance is up
Guest launched OK.
libguestfs: send_to_daemon: 64 bytes: 00 00 00 3c | 20 00 f5 f5 | 00 00 00
04 | 00 00 00 d2 | 00 00 00 00 | ...
guestfsd: main_loop: new request, len 0x3c
udevadm settle
parted -s -- /dev/sda mklabel msdos mkpart primary 128s -128s
[ 2.660292] sda:
[ 2.672719] sda: sda1
Warning: The resulting partition is not properly aligned for best
performance.
udevadm settle
libguestfs: recv_from_daemon: 40 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00
00 d2 | 00 00 00 01 | 00 12 34 00 | ...
libguestfs: send_to_daemon: 84 bytes: 00 00 00 50 | 20 00 f5 f5 | 00 00 00
04 | 00 00 01 16 | 00 00 00 00 | ...
guestfsd: main_loop: proc 210 (part_disk) took 0.21 seconds
guestfsd: main_loop: new request, len 0x50
wipefs -a --force /dev/sda1
wipefs: unrecognized option '--force'
Usage: wipefs [options] <device>
Options:
-a, --all wipe all magic strings (BE CAREFUL!)
-h, --help this help
-n, --no-act everything to be done except for the write() call
-o, --offset <num> offset to erase, in bytes
-p, --parsable print out in parsable instead of printable format
For more information see wipefs(8).
wipefs -a /dev/sda1
mke2fs -t ext2 -F /dev/sda1
mke2fs 1.41.12 (17-May-2010)
libguestfs: recv_from_daemon: 40 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00
01 16 | 00 00 00 01 | 00 12 34 01 | ...
libguestfs: send_to_daemon: 68 bytes: 00 00 00 40 | 20 00 f5 f5 | 00 00 00
04 | 00 00 00 01 | 00 00 00 00 | ...
guestfsd: main_loop: proc 278 (mkfs) took 0.76 seconds
guestfsd: main_loop: new request, len 0x40
mount -o /dev/sda1 /sysroot/
libguestfs: recv_from_daemon: 40 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00
00 01 | 00 00 00 01 | 00 12 34 02 | ...
libguestfs: send_to_daemon: 56 bytes: 00 00 00 34 | 20 00 f5 f5 | 00 00 00
04 | 00 00 00 03 | 00 00 00 00 | ...
guestfsd: main_loop: proc 1 (mount) took 0.20 seconds
guestfsd: main_loop: new request, len 0x34
libguestfs: recv_from_daemon: 40 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00
00 03 | 00 00 00 01 | 00 12 34 03 | ...
libguestfs: send_to_daemon: 44 bytes: 00 00 00 28 | 20 00 f5 f5 | 00 00 00
04 | 00 00 01 1a | 00 00 00 00 | ...
guestfsd: main_loop: proc 3 (touch) took 0.00 seconds
guestfsd: main_loop: new request, len 0x28
umount /sysroot
fsync /dev/sda
guestfsd: main_loop: proc 282 (internal_autosync) took 0.05 seconds
libguestfs: recv_from_daemon: 40 bytes: 20 00 f5 f5 | 00 00 00 04 | 00 00
01 1a | 00 00 00 01 | 00 12 34 04 | ...
libguestfs: sending SIGTERM to process 11826
libguestfs: closing guestfs handle 0x1404740 (state 0)
libguestfs: command: run: rm
libguestfs: command: run: \ -rf /tmp/libguestfsSD4XN5
===== TEST FINISHED OK =====
========================
I did lot of troubleshooting, However, I've created a KVM on another Node
which is perfectly worked even I can mount it using guestmount command. and
I've migrated it to this Node. Guess what? I can't mount it using
guestmount command.
Here is the required details.
================
[root@SG01KVM256-01 ~]# rpm -qa | grep libguestfs
libguestfs-winsupport-1.0-7.el6.x86_64
libguestfs-1.20.11-11.el6.x86_64
libguestfs-tools-1.20.11-11.el6.x86_64
libguestfs-tools-c-1.20.11-11.el6.x86_64
libguestfs-javadoc-1.20.11-11.el6.x86_64
libguestfs-java-1.20.11-11.el6.x86_64
libguestfs-java-devel-1.20.11-11.el6.x86_64
libguestfs-devel-1.20.11-11.el6.x86_64
[root@SG01KVM256-01 ~]# uname -a
Linux SG01KVM256-01.VPSPLAZA.NET 2.6.32-504.3.3.el6.x86_64 #1 SMP Wed Dec
17 01:55:02 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@SG01KVM256-01 ~]# cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
================
If you need server logins, I'm happy to give you.
9 years, 9 months
[PATCH] mknod: filter modes in mkfifo, mknod_b, mknod_c (RHBZ#1182463).
by Pino Toscano
Since mkfifo, mknod_b, and mknod_c add the correct file type to the
modes of the resulting file, make sure the specified mode contains only
permissions bits.
---
daemon/mknod.c | 15 +++++++++++++++
generator/actions.ml | 21 ++++++++++++++++++---
2 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/daemon/mknod.c b/daemon/mknod.c
index 7f71210..9af8701 100644
--- a/daemon/mknod.c
+++ b/daemon/mknod.c
@@ -38,6 +38,15 @@ optgroup_mknod_available (void)
return 1;
}
+#define CHECK_MODE \
+ do { \
+ if ((mode & ~07777) != 0) { \
+ reply_with_error ("%o: mode must specify only file permission bits", \
+ (unsigned int) mode); \
+ return -1; \
+ } \
+ } while (0)
+
int
do_mknod (int mode, int devmajor, int devminor, const char *path)
{
@@ -63,18 +72,24 @@ do_mknod (int mode, int devmajor, int devminor, const char *path)
int
do_mkfifo (int mode, const char *path)
{
+ CHECK_MODE;
+
return do_mknod (mode | S_IFIFO, 0, 0, path);
}
int
do_mknod_b (int mode, int devmajor, int devminor, const char *path)
{
+ CHECK_MODE;
+
return do_mknod (mode | S_IFBLK, devmajor, devminor, path);
}
int
do_mknod_c (int mode, int devmajor, int devminor, const char *path)
{
+ CHECK_MODE;
+
return do_mknod (mode | S_IFCHR, devmajor, devminor, path);
}
diff --git a/generator/actions.ml b/generator/actions.ml
index 96a9dd6..c48ad1a 100644
--- a/generator/actions.ml
+++ b/generator/actions.ml
@@ -6173,7 +6173,9 @@ The mode actually set is affected by the umask." };
InitScratchFS, Always, TestResult (
[["mkfifo"; "0o777"; "/mkfifo"];
["stat"; "/mkfifo"]],
- "S_ISFIFO (ret->mode) && (ret->mode & 0777) == 0755"), []
+ "S_ISFIFO (ret->mode) && (ret->mode & 0777) == 0755"), [];
+ InitScratchFS, Always, TestLastFail (
+ [["mkfifo"; "0o20777"; "/mkfifo-2"]]), [];
];
shortdesc = "make FIFO (named pipe)";
longdesc = "\
@@ -6181,6 +6183,9 @@ This call creates a FIFO (named pipe) called C<path> with
mode C<mode>. It is just a convenient wrapper around
C<guestfs_mknod>.
+Unlike with C<guestfs_mknod>, C<mode> B<must> contain only permissions
+bits.
+
The mode actually set is affected by the umask." };
{ defaults with
@@ -6192,7 +6197,9 @@ The mode actually set is affected by the umask." };
InitScratchFS, Always, TestResult (
[["mknod_b"; "0o777"; "99"; "66"; "/mknod_b"];
["stat"; "/mknod_b"]],
- "S_ISBLK (ret->mode) && (ret->mode & 0777) == 0755"), []
+ "S_ISBLK (ret->mode) && (ret->mode & 0777) == 0755"), [];
+ InitScratchFS, Always, TestLastFail (
+ [["mknod_b"; "0o10777"; "99"; "66"; "/mknod_b-2"]]), [];
];
shortdesc = "make block device node";
longdesc = "\
@@ -6200,6 +6207,9 @@ This call creates a block device node called C<path> with
mode C<mode> and device major/minor C<devmajor> and C<devminor>.
It is just a convenient wrapper around C<guestfs_mknod>.
+Unlike with C<guestfs_mknod>, C<mode> B<must> contain only permissions
+bits.
+
The mode actually set is affected by the umask." };
{ defaults with
@@ -6211,7 +6221,9 @@ The mode actually set is affected by the umask." };
InitScratchFS, Always, TestResult (
[["mknod_c"; "0o777"; "99"; "66"; "/mknod_c"];
["stat"; "/mknod_c"]],
- "S_ISCHR (ret->mode) && (ret->mode & 0777) == 0755"), []
+ "S_ISCHR (ret->mode) && (ret->mode & 0777) == 0755"), [];
+ InitScratchFS, Always, TestLastFail (
+ [["mknod_c"; "0o20777"; "99"; "66"; "/mknod_c-2"]]), [];
];
shortdesc = "make char device node";
longdesc = "\
@@ -6219,6 +6231,9 @@ This call creates a char device node called C<path> with
mode C<mode> and device major/minor C<devmajor> and C<devminor>.
It is just a convenient wrapper around C<guestfs_mknod>.
+Unlike with C<guestfs_mknod>, C<mode> B<must> contain only permissions
+bits.
+
The mode actually set is affected by the umask." };
{ defaults with
--
1.9.3
9 years, 9 months
[PATCH 0/5] btrfs: add API for btrfs filesystem, check and scrub
by Hu Tao
Hi,
There is one problem: btrfs_filesystem_set_label just doesnt work,
giving error message:
libguestfs: error: btrfs_filesystem_set_label: /: ERROR: unable to set label Bad address
I'm almost sure the patch has no problem, but can't figure out what's
the cause. So patch 5 is only for review.
Other APIs have no problem.
Regards,
Hu
Hu Tao (5):
New API: btrfs_scrub
New API: btrfs_check
New API: btrfs_filesystem_get_label
New API: add btrfs_filesystem_defragment
New API: btrfs_filesystem_set_label
daemon/btrfs.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++
generator/actions.ml | 82 +++++++++++++++++++++++++++
src/MAX_PROC_NR | 2 +-
3 files changed, 236 insertions(+), 1 deletion(-)
--
2.2.1
9 years, 9 months
[PATCH] virt-buider: doc: Use osinfo-query to get OS variants
by Kashyap Chamarthy
Upstream dropped[1] support for '--os-variant list' in favor of using
`osinfo-query` tool provided by the libosinfo project.
To get a list of all accepted operating systems, invoke:
osinfo-query os
[1] https://git.fedorahosted.org/cgit/virt-manager.git/commit/?id=bcb60f0
---
builder/virt-builder.pod | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/builder/virt-builder.pod b/builder/virt-builder.pod
index 0177cc3a4edad8c1ce3d395759a15e043945b121..004eafb4691dee9b4cfb184c8bef834aff84dee5 100644
--- a/builder/virt-builder.pod
+++ b/builder/virt-builder.pod
@@ -876,7 +876,9 @@ I<--os-variant> is highly recommended, because it will present optimum
devices to enable the guest to run most efficiently. To get a list
of all variants, do:
- virt-install --os-variant list
+ osinfo-query os
+
+The above tool is provided by libosinfo package.
=item 3.
--
1.9.3
9 years, 9 months