A better way to distribute the changelog
[virt-mem.git] / virt-mem.txt
1 NAME
2     virt-uname - system information for virtual machines
3
4     virt-dmesg - print kernel messages for virtual machines
5
6 SUMMARY
7     virt-uname [-options] [domains...]
8
9     virt-dmesg [-options] [domains...]
10
11 DESCRIPTION
12     These virtualization tools allow you to inspect the status of virtual
13     machines running Linux.
14
15     The tools all use libvirt so are capable of showing stats across a
16     variety of different virtualization systems.
17
18 COMMON OPTIONS
19     Each command obeys a common set of options. The general form is:
20
21     virt-*program* [-options] [domains...]
22
23     where *domains* is a list of guest names to act on. If no domains are
24     specified then we act on all active domains by default.
25
26     A *domain* may be specified either by its name or by its ID. Use *virsh
27     list* to get a list of active domain names and IDs.
28
29     The virt-mem tools do not work on domains which are not active (running
30     or paused). eg. They do not work on shut down domains.
31
32     -c uri, --connect uri
33         Connect to libvirt URI. The default is to connect to the default
34         libvirt URI, normally Xen.
35
36     --csv
37         Print the results in CSV format, suitable for importing into a
38         spreadsheet or database.
39
40         This option is only supported if virt-mem was built with CSV
41         support.
42
43     --debug
44         Emit debugging information on stderr. Please supply this if you
45         report a bug.
46
47     --help
48         Display usage summary.
49
50     -t memoryimage
51         Test mode. Instead of checking libvirt for domain information, this
52         runs the virt-mem tool directly on the memory image supplied. You
53         may specify the -t option multiple times.
54
55     --version
56         Display version and exit.
57
58     -E auto|littleendian|bigendian
59     -T auto|i386|x86-64|*address*
60     -W auto|32|64
61         These options force the endianness, text address, and word size for
62         the subsequent domains listed on the command line (or if no domains
63         are listed, then for all domains).
64
65         These default to *auto* which tries to do automatic detection (using
66         libvirt, or details from the memory images themselves). You only
67         need to use these options if virt-mem tools get the automatic
68         detection wrong.
69
70         Endianness (*-E*) sets the memory endianness, for data, pointers and
71         so on.
72
73         Text address (*-T*) sets the base address of the kernel image. *-T
74         i386* means to try some common addresses for i386-based kernels. *-T
75         x86-64* means to try some common addresses for x86-64-based kernels.
76         *-T *address** sets the address specifically (*0x* prefix is allowed
77         to specify hex addresses).
78
79         Word size (*-W*) sets the word size, 32 or 64 bits.
80
81     -A auto|i386|x86-64|...
82         This option sets the architecture to one of a collection of known
83         architectures. It is equivalent to setting endianness and wordsize
84         in one go, but not text address.
85
86 EXAMPLES
87      # virt-uname
88      f9x32kvm: Linux localhost.localdomain 2.6.24-0.155.rc7.git6.fc9 #1
89      SMP Tue Jan 15 17:52:31 EST 2008 i686 (none)
90
91      # virt-dmesg f9x32kvm | tail
92      <6>Bluetooth: Core ver 2.11
93      <6>NET: Registered protocol family 31
94      <6>Bluetooth: HCI device and connection manager initialized
95      <6>Bluetooth: HCI socket layer initialized
96      <6>Bluetooth: L2CAP ver 2.9
97      <6>Bluetooth: L2CAP socket layer initialized
98      <6>Bluetooth: RFCOMM socket layer initialized
99      <6>Bluetooth: RFCOMM TTY layer initialized
100      <6>Bluetooth: RFCOMM ver 1.8
101      <7>eth0: no IPv6 routers present
102
103 SHORTCOMINGS
104     The virt-mem tools spy on the guest's memory image. There are some
105     shortcomings to this, described here.
106
107     (1) Only works on specific, tested releases of Linux kernels. Support
108     for arbitrary Linux kernel versions may be patchy because of changes in
109     the internal structures used. Support for non-Linux kernels is currently
110     non-existent, and probably impossible for Windows because of lack of an
111     acceptable source license.
112
113     (2) Heuristics are used which may mean in the worst case that the output
114     is wrong.
115
116     (3) Structures which are frequently modified may cause errors. This
117     could be a problem if, for example, the process table in the guest is
118     being rapidly updated.
119
120     (4) We have to scan memory to find kernel symbols, etc., which can be
121     quite slow. Optimizing the memory scanner would help, and caching the
122     base address of the symbol table(s) would make it dramatically faster.
123
124 SECURITY
125     The current code tries hard to be secure against malicious guests, for
126     example guests which set up malicious kernel memory.
127
128 SEE ALSO
129     uname(1), dmesg(1), virsh(1), xm(1), <http://www.libvirt.org/ocaml/>,
130     <http://www.libvirt.org/>, <http://et.redhat.com/~rjones/>,
131     <http://caml.inria.fr/>
132
133 AUTHORS
134     Richard W.M. Jones <rjones @ redhat . com>
135
136 COPYRIGHT
137     (C) Copyright 2008 Red Hat Inc., Richard W.M. Jones http://libvirt.org/
138
139     This program is free software; you can redistribute it and/or modify it
140     under the terms of the GNU General Public License as published by the
141     Free Software Foundation; either version 2 of the License, or (at your
142     option) any later version.
143
144     This program is distributed in the hope that it will be useful, but
145     WITHOUT ANY WARRANTY; without even the implied warranty of
146     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
147     Public License for more details.
148
149     You should have received a copy of the GNU General Public License along
150     with this program; if not, write to the Free Software Foundation, Inc.,
151     675 Mass Ave, Cambridge, MA 02139, USA.
152
153 REPORTING BUGS
154     Bugs can be viewed on the Red Hat Bugzilla page:
155     <https://bugzilla.redhat.com/>.
156
157     If you find a bug in virt-mem, please follow these steps to report it:
158
159     1. Check for existing bug reports
160         Go to <https://bugzilla.redhat.com/> and search for similar bugs.
161         Someone may already have reported the same bug, and they may even
162         have fixed it.
163
164     2. Capture debug and error messages
165         Run
166
167         virt-*program* --debug > virt-mem.log 2>&1
168
169         and keep *virt-mem.log*. It contains error messages which you should
170         submit with your bug report.
171
172     3. Get version of virt-mem and version of libvirt.
173         Run
174
175         virt-*program* --version
176
177     4. Submit a bug report.
178         Go to <https://bugzilla.redhat.com/> and enter a new bug. Please
179         describe the problem in as much detail as possible.
180
181         Remember to include the version numbers (step 3) and the debug
182         messages file (step 2).
183
184     5. Assign the bug to rjones @ redhat.com
185         Assign or reassign the bug to rjones @ redhat.com (without the
186         spaces). You can also send me an email with the bug number if you
187         want a faster response.
188