Manpage for uname and dmesg
authorRichard W.M. Jones <rjones@redhat.com>
Tue, 10 Jun 2008 13:13:04 +0000 (14:13 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Tue, 10 Jun 2008 13:13:04 +0000 (14:13 +0100)
virt-mem.1
virt-mem.pod
virt-mem.txt

index 9f4bf59..6ae22bd 100644 (file)
 .IX Title "VIRT-MEM 1"
 .TH VIRT-MEM 1 "2008-06-10" "virt-mem-0.2.1" "Virtualization Support"
 .SH "NAME"
 .IX Title "VIRT-MEM 1"
 .TH VIRT-MEM 1 "2008-06-10" "virt-mem-0.2.1" "Virtualization Support"
 .SH "NAME"
-virt\-df \- 'df'\-like utility for virtualization stats
+virt\-uname \- system information for virtual machines
+.PP
+virt\-dmesg \- print kernel messages for virtual machines
 .SH "SUMMARY"
 .IX Header "SUMMARY"
 .SH "SUMMARY"
 .IX Header "SUMMARY"
-virt-df [\-options]
+virt-uname [\-options] [domains...]
+.PP
+virt-dmesg [\-options] [domains...]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
-virt-df is a \fIdf\fR\|(1)\-like utility for showing the actual disk usage
-of guests.  Many command line options are the same as for ordinary
-\&\fIdf\fR.
+These virtualization tools allow you to inspect the status of
+virtual machines running Linux.
 .PP
 .PP
-It uses libvirt so it is capable of showing stats across a variety of
-different virtualization systems.
-.SH "OPTIONS"
-.IX Header "OPTIONS"
-.IP "\fB\-a\fR, \fB\-\-all\fR" 4
-.IX Item "-a, --all"
-Show all domains.  The default is show only running (active) domains.
+The tools all use libvirt so are capable of showing stats across a
+variety of different virtualization systems.
+.SH "COMMON OPTIONS"
+.IX Header "COMMON OPTIONS"
 .IP "\fB\-c uri\fR, \fB\-\-connect uri\fR" 4
 .IX Item "-c uri, --connect uri"
 Connect to libvirt \s-1URI\s0.  The default is to connect to the default
 .IP "\fB\-c uri\fR, \fB\-\-connect uri\fR" 4
 .IX Item "-c uri, --connect uri"
 Connect to libvirt \s-1URI\s0.  The default is to connect to the default
@@ -157,74 +157,103 @@ libvirt \s-1URI\s0, normally Xen.
 Print the results in \s-1CSV\s0 format, suitable for importing into a
 spreadsheet or database.
 .Sp
 Print the results in \s-1CSV\s0 format, suitable for importing into a
 spreadsheet or database.
 .Sp
-This option is only supported if virt-df was built with \s-1CSV\s0 support.
+This option is only supported if virt-mem was built with \s-1CSV\s0 support.
 .IP "\fB\-\-debug\fR" 4
 .IX Item "--debug"
 Emit debugging information on stderr.  Please supply this if you
 report a bug.
 .IP "\fB\-\-debug\fR" 4
 .IX Item "--debug"
 Emit debugging information on stderr.  Please supply this if you
 report a bug.
-.IP "\fB\-h\fR, \fB\-\-human\-readable\fR" 4
-.IX Item "-h, --human-readable"
-Display human-readable sizes (eg. \*(L"10GiB\*(R" instead of large numbers).
-.IP "\fB\-i\fR, \fB\-\-inodes\fR" 4
-.IX Item "-i, --inodes"
-Display inode information.
-.Sp
-This option only works for Unix-like filesystems.
 .IP "\fB\-\-help\fR" 4
 .IX Item "--help"
 Display usage summary.
 .IP "\fB\-\-help\fR" 4
 .IX Item "--help"
 Display usage summary.
-.IP "\fB\-t diskimage\fR" 4
-.IX Item "-t diskimage"
+.IP "\fB\-t memoryimage\fR" 4
+.IX Item "-t memoryimage"
 Test mode.  Instead of checking libvirt for domain information, this
 Test mode.  Instead of checking libvirt for domain information, this
-runs virt-df directly on the disk image (or device) supplied.  You may
+runs the virt-mem tool directly on the memory image supplied.  You may
 specify the \fB\-t\fR option multiple times.
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 Display version and exit.
 specify the \fB\-t\fR option multiple times.
 .IP "\fB\-\-version\fR" 4
 .IX Item "--version"
 Display version and exit.
-.SH "EXAMPLE"
-.IX Header "EXAMPLE"
-.Vb 5
-\& # virt-df 
-\& Filesystem                1K-blocks    Used Available Type
-\& f9x32kvm:hda1                190740   24817    165923 Linux ext2/3
-\& f9x32kvm:VolGroup/LogVol00  6568348 3401656   3166692 Linux ext2/3
-\& f9x32kvm:VolGroup/LogVol01  1015808                   Linux swap
+.IP "\fB\-E auto|littleendian|bigendian\fR" 4
+.IX Item "-E auto|littleendian|bigendian"
+.PD 0
+.IP "\fB\-T auto|i386|x86\-64|\f(BIaddress\fB\fR" 4
+.IX Item "-T auto|i386|x86-64|address"
+.IP "\fB\-W auto|32|64\fR" 4
+.IX Item "-W auto|32|64"
+.PD
+These options force the endianness, text address, and word size for
+the subsequent domains listed on the command line (or if no domains
+are listed, then for all domains).
+.Sp
+These default to \fIauto\fR which tries to do automatic detection (using
+libvirt, or details from the memory images themselves).  You only need
+to use these options if virt-mem tools get the automatic detection
+wrong.
+.Sp
+Endianness (\fI\-E\fR) sets the memory endianness, for data, pointers and
+so on.
+.Sp
+Text address (\fI\-T\fR) sets the base address of the kernel image.  \fI\-T
+i386\fR means to try some common addresses for i386\-based kernels.  \fI\-T
+x86\-64\fR means to try some common addresses for x86\-64\-based kernels.
+\&\fI\-T \fIaddress\fI\fR sets the address specifically (\fI0x\fR prefix is
+allowed to specify hex addresses).
+.Sp
+Word size (\fI\-W\fR) sets the word size, 32 or 64 bits.
+.IP "\fB\-A auto|i386|x86\-64|...\fR" 4
+.IX Item "-A auto|i386|x86-64|..."
+This option sets the architecture to one of a collection of known
+architectures.  It is equivalent to setting endianness and wordsize in
+one go, but not text address.
+.SH "EXAMPLES"
+.IX Header "EXAMPLES"
+.Vb 3
+\& # virt-uname
+\& f9x32kvm: Linux localhost.localdomain 2.6.24-0.155.rc7.git6.fc9 #1
+\& SMP Tue Jan 15 17:52:31 EST 2008 i686 (none)
+.Ve
+.PP
+.Vb 11
+\& # virt-dmesg f9x32kvm | tail
+\& <6>Bluetooth: Core ver 2.11
+\& <6>NET: Registered protocol family 31
+\& <6>Bluetooth: HCI device and connection manager initialized
+\& <6>Bluetooth: HCI socket layer initialized
+\& <6>Bluetooth: L2CAP ver 2.9
+\& <6>Bluetooth: L2CAP socket layer initialized
+\& <6>Bluetooth: RFCOMM socket layer initialized
+\& <6>Bluetooth: RFCOMM TTY layer initialized
+\& <6>Bluetooth: RFCOMM ver 1.8
+\& <7>eth0: no IPv6 routers present
 .Ve
 .SH "SHORTCOMINGS"
 .IX Header "SHORTCOMINGS"
 .Ve
 .SH "SHORTCOMINGS"
 .IX Header "SHORTCOMINGS"
-virt-df spies on the guest's disk image to try to work out how much
-disk space it is actually using.  There are some shortcomings to this,
-described here.
+The virt-mem tools spy on the guest's memory image.  There are some
+shortcomings to this, described here.
+.PP
+(1) Only works on specific, tested releases of Linux kernels.  Support
+for arbitrary Linux kernel versions may be patchy because of changes
+in the internal structures used.  Support for non-Linux kernels is
+currently non\-existent, and probably impossible for Windows because of
+lack of an acceptable source license.
 .PP
 .PP
-(1) It only understands a limited set of partition types.  Assuming
-that the files and partitions that we get back from libvirt / Xen
-correspond to block devices in the guests, we can go some way towards
-manually parsing those partitions to find out what they contain.  We
-can read the \s-1MBR\s0, \s-1LVM\s0, superblocks and so on.  However that's a lot of
-parsing work, and currently there is no library which understands a
-wide range of partition schemes and filesystem types (not even
-libparted which doesn't support \s-1LVM\s0 yet).  The Linux kernel does
-support that, but there's not really any good way to access that work.
+(2) Heuristics are used which may mean in the worst case that the
+output is wrong.
 .PP
 .PP
-The current implementation uses a hand-coded parser which understands
-some formats (\s-1MBR\s0, \s-1LVM2\s0, ext2/3, \s-1DOS\s0 \s-1FAT\s0, Windows \s-1NTFS\s0, Linux swap and
-Linux suspend partitions).
+(3) Structures which are frequently modified may cause errors.  This
+could be a problem if, for example, the process table in the guest is
+being rapidly updated.
 .PP
 .PP
-(2) The statistics you get are delayed.  The real state of, for
-example, an ext2 filesystem is only stored in the memory of the
-guest's kernel.  The ext2 superblock contains some meta-information
-about blocks used and free, but this superblock is not up to date.  In
-fact the guest kernel may not update it even on a 'sync', not until
-the filesystem is unmounted.  Some operations do appear to write the
-superblock, for example \fIfsync\fR\|(2) [that is my reading of the ext2/3
-source code at least].
+(4) We have to scan memory to find kernel symbols, etc., which can be
+quite slow.  Optimizing the memory scanner would help, and caching the
+base address of the symbol table(s) would make it dramatically faster.
 .SH "SECURITY"
 .IX Header "SECURITY"
 The current code tries hard to be secure against malicious guests, for
 .SH "SECURITY"
 .IX Header "SECURITY"
 The current code tries hard to be secure against malicious guests, for
-example guests which set up malicious disk partitions.
+example guests which set up malicious kernel memory.
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
 .SH "SEE ALSO"
 .IX Header "SEE ALSO"
-\&\fIdf\fR\|(1),
+\&\fIuname\fR\|(1),\fIdmesg\fR\|(1),
 \&\fIvirsh\fR\|(1),
 \&\fIxm\fR\|(1),
 <http://www.libvirt.org/ocaml/>,
 \&\fIvirsh\fR\|(1),
 \&\fIxm\fR\|(1),
 <http://www.libvirt.org/ocaml/>,
@@ -236,7 +265,7 @@ example guests which set up malicious disk partitions.
 Richard W.M. Jones <rjones @ redhat . com>
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
 Richard W.M. Jones <rjones @ redhat . com>
 .SH "COPYRIGHT"
 .IX Header "COPYRIGHT"
-(C) Copyright 2007\-2008 Red Hat Inc., Richard W.M. Jones
+(C) Copyright 2008 Red Hat Inc., Richard W.M. Jones
 http://libvirt.org/
 .PP
 This program is free software; you can redistribute it and/or modify
 http://libvirt.org/
 .PP
 This program is free software; you can redistribute it and/or modify
@@ -257,7 +286,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, \s-1MA\s0 02139, \s-1USA\s0.
 Bugs can be viewed on the Red Hat Bugzilla page:
 <https://bugzilla.redhat.com/>.
 .PP
 Bugs can be viewed on the Red Hat Bugzilla page:
 <https://bugzilla.redhat.com/>.
 .PP
-If you find a bug in virt\-df, please follow these steps to report it:
+If you find a bug in virt\-mem, please follow these steps to report it:
 .IP "1. Check for existing bug reports" 4
 .IX Item "1. Check for existing bug reports"
 Go to <https://bugzilla.redhat.com/> and search for similar bugs.
 .IP "1. Check for existing bug reports" 4
 .IX Item "1. Check for existing bug reports"
 Go to <https://bugzilla.redhat.com/> and search for similar bugs.
@@ -268,17 +297,17 @@ have fixed it.
 Run
 .Sp
 .Vb 1
 Run
 .Sp
 .Vb 1
-\& virt-df --debug > virt-df.log 2>&1
+\& virt-[program] --debug > virt-mem.log 2>&1
 .Ve
 .Sp
 .Ve
 .Sp
-and keep \fIvirt\-df.log\fR.  It contains error messages which you should
+and keep \fIvirt\-mem.log\fR.  It contains error messages which you should
 submit with your bug report.
 submit with your bug report.
-.IP "3. Get version of virt-df and version of libvirt." 4
-.IX Item "3. Get version of virt-df and version of libvirt."
+.IP "3. Get version of virt-mem and version of libvirt." 4
+.IX Item "3. Get version of virt-mem and version of libvirt."
 Run
 .Sp
 .Vb 1
 Run
 .Sp
 .Vb 1
-\& virt-df --version
+\& virt-[program] --version
 .Ve
 .IP "4. Submit a bug report." 4
 .IX Item "4. Submit a bug report."
 .Ve
 .IP "4. Submit a bug report." 4
 .IX Item "4. Submit a bug report."
index f5dc3c3..1c81e29 100644 (file)
@@ -1,28 +1,27 @@
 =head1 NAME
 
 =head1 NAME
 
-virt-df - 'df'-like utility for virtualization stats
+virt-uname - system information for virtual machines
+
+virt-dmesg - print kernel messages for virtual machines
 
 =head1 SUMMARY
 
 
 =head1 SUMMARY
 
-virt-df [-options]
+virt-uname [-options] [domains...]
+
+virt-dmesg [-options] [domains...]
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
-virt-df is a L<df(1)>-like utility for showing the actual disk usage
-of guests.  Many command line options are the same as for ordinary
-I<df>.
+These virtualization tools allow you to inspect the status of
+virtual machines running Linux.
 
 
-It uses libvirt so it is capable of showing stats across a variety of
-different virtualization systems.
+The tools all use libvirt so are capable of showing stats across a
+variety of different virtualization systems.
 
 
-=head1 OPTIONS
+=head1 COMMON OPTIONS
 
 =over 4
 
 
 =over 4
 
-=item B<-a>, B<--all>
-
-Show all domains.  The default is show only running (active) domains.
-
 =item B<-c uri>, B<--connect uri>
 
 Connect to libvirt URI.  The default is to connect to the default
 =item B<-c uri>, B<--connect uri>
 
 Connect to libvirt URI.  The default is to connect to the default
@@ -33,84 +32,109 @@ libvirt URI, normally Xen.
 Print the results in CSV format, suitable for importing into a
 spreadsheet or database.
 
 Print the results in CSV format, suitable for importing into a
 spreadsheet or database.
 
-This option is only supported if virt-df was built with CSV support.
+This option is only supported if virt-mem was built with CSV support.
 
 =item B<--debug>
 
 Emit debugging information on stderr.  Please supply this if you
 report a bug.
 
 
 =item B<--debug>
 
 Emit debugging information on stderr.  Please supply this if you
 report a bug.
 
-=item B<-h>, B<--human-readable>
-
-Display human-readable sizes (eg. "10GiB" instead of large numbers).
-
-=item B<-i>, B<--inodes>
-
-Display inode information.
-
-This option only works for Unix-like filesystems.
-
 =item B<--help>
 
 Display usage summary.
 
 =item B<--help>
 
 Display usage summary.
 
-=item B<-t diskimage>
+=item B<-t memoryimage>
 
 Test mode.  Instead of checking libvirt for domain information, this
 
 Test mode.  Instead of checking libvirt for domain information, this
-runs virt-df directly on the disk image (or device) supplied.  You may
+runs the virt-mem tool directly on the memory image supplied.  You may
 specify the B<-t> option multiple times.
 
 =item B<--version>
 
 Display version and exit.
 
 specify the B<-t> option multiple times.
 
 =item B<--version>
 
 Display version and exit.
 
+=item B<-E auto|littleendian|bigendian>
+
+=item B<-T auto|i386|x86-64|I<address>>
+
+=item B<-W auto|32|64>
+
+These options force the endianness, text address, and word size for
+the subsequent domains listed on the command line (or if no domains
+are listed, then for all domains).
+
+These default to I<auto> which tries to do automatic detection (using
+libvirt, or details from the memory images themselves).  You only need
+to use these options if virt-mem tools get the automatic detection
+wrong.
+
+Endianness (I<-E>) sets the memory endianness, for data, pointers and
+so on.
+
+Text address (I<-T>) sets the base address of the kernel image.  I<-T
+i386> means to try some common addresses for i386-based kernels.  I<-T
+x86-64> means to try some common addresses for x86-64-based kernels.
+I<-T I<address>> sets the address specifically (I<0x> prefix is
+allowed to specify hex addresses).
+
+Word size (I<-W>) sets the word size, 32 or 64 bits.
+
+=item B<-A auto|i386|x86-64|...>
+
+This option sets the architecture to one of a collection of known
+architectures.  It is equivalent to setting endianness and wordsize in
+one go, but not text address.
+
 =back
 
 =back
 
-=head1 EXAMPLE
+=head1 EXAMPLES
+
+ # virt-uname
+ f9x32kvm: Linux localhost.localdomain 2.6.24-0.155.rc7.git6.fc9 #1
+ SMP Tue Jan 15 17:52:31 EST 2008 i686 (none)
 
 
- # virt-df 
- Filesystem                1K-blocks    Used Available Type
- f9x32kvm:hda1                190740   24817    165923 Linux ext2/3
- f9x32kvm:VolGroup/LogVol00  6568348 3401656   3166692 Linux ext2/3
- f9x32kvm:VolGroup/LogVol01  1015808                   Linux swap
+ # virt-dmesg f9x32kvm | tail
+ <6>Bluetooth: Core ver 2.11
+ <6>NET: Registered protocol family 31
+ <6>Bluetooth: HCI device and connection manager initialized
+ <6>Bluetooth: HCI socket layer initialized
+ <6>Bluetooth: L2CAP ver 2.9
+ <6>Bluetooth: L2CAP socket layer initialized
+ <6>Bluetooth: RFCOMM socket layer initialized
+ <6>Bluetooth: RFCOMM TTY layer initialized
+ <6>Bluetooth: RFCOMM ver 1.8
+ <7>eth0: no IPv6 routers present
 
 =head1 SHORTCOMINGS
 
 
 =head1 SHORTCOMINGS
 
-virt-df spies on the guest's disk image to try to work out how much
-disk space it is actually using.  There are some shortcomings to this,
-described here.
-
-(1) It only understands a limited set of partition types.  Assuming
-that the files and partitions that we get back from libvirt / Xen
-correspond to block devices in the guests, we can go some way towards
-manually parsing those partitions to find out what they contain.  We
-can read the MBR, LVM, superblocks and so on.  However that's a lot of
-parsing work, and currently there is no library which understands a
-wide range of partition schemes and filesystem types (not even
-libparted which doesn't support LVM yet).  The Linux kernel does
-support that, but there's not really any good way to access that work.
-
-The current implementation uses a hand-coded parser which understands
-some formats (MBR, LVM2, ext2/3, DOS FAT, Windows NTFS, Linux swap and
-Linux suspend partitions).
-
-(2) The statistics you get are delayed.  The real state of, for
-example, an ext2 filesystem is only stored in the memory of the
-guest's kernel.  The ext2 superblock contains some meta-information
-about blocks used and free, but this superblock is not up to date.  In
-fact the guest kernel may not update it even on a 'sync', not until
-the filesystem is unmounted.  Some operations do appear to write the
-superblock, for example L<fsync(2)> [that is my reading of the ext2/3
-source code at least].
+The virt-mem tools spy on the guest's memory image.  There are some
+shortcomings to this, described here.
+
+(1) Only works on specific, tested releases of Linux kernels.  Support
+for arbitrary Linux kernel versions may be patchy because of changes
+in the internal structures used.  Support for non-Linux kernels is
+currently non-existent, and probably impossible for Windows because of
+lack of an acceptable source license.
+
+(2) Heuristics are used which may mean in the worst case that the
+output is wrong.
+
+(3) Structures which are frequently modified may cause errors.  This
+could be a problem if, for example, the process table in the guest is
+being rapidly updated.
+
+(4) We have to scan memory to find kernel symbols, etc., which can be
+quite slow.  Optimizing the memory scanner would help, and caching the
+base address of the symbol table(s) would make it dramatically faster.
 
 =head1 SECURITY
 
 The current code tries hard to be secure against malicious guests, for
 
 =head1 SECURITY
 
 The current code tries hard to be secure against malicious guests, for
-example guests which set up malicious disk partitions.
+example guests which set up malicious kernel memory.
 
 =head1 SEE ALSO
 
 
 =head1 SEE ALSO
 
-L<df(1)>,
+L<uname(1)>,L<dmesg(1)>,
 L<virsh(1)>,
 L<xm(1)>,
 L<http://www.libvirt.org/ocaml/>,
 L<virsh(1)>,
 L<xm(1)>,
 L<http://www.libvirt.org/ocaml/>,
@@ -124,7 +148,7 @@ Richard W.M. Jones <rjones @ redhat . com>
 
 =head1 COPYRIGHT
 
 
 =head1 COPYRIGHT
 
-(C) Copyright 2007-2008 Red Hat Inc., Richard W.M. Jones
+(C) Copyright 2008 Red Hat Inc., Richard W.M. Jones
 http://libvirt.org/
 
 This program is free software; you can redistribute it and/or modify
 http://libvirt.org/
 
 This program is free software; you can redistribute it and/or modify
@@ -146,7 +170,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 Bugs can be viewed on the Red Hat Bugzilla page:
 L<https://bugzilla.redhat.com/>.
 
 Bugs can be viewed on the Red Hat Bugzilla page:
 L<https://bugzilla.redhat.com/>.
 
-If you find a bug in virt-df, please follow these steps to report it:
+If you find a bug in virt-mem, please follow these steps to report it:
 
 =over 4
 
 
 =over 4
 
@@ -160,16 +184,16 @@ have fixed it.
 
 Run
 
 
 Run
 
- virt-df --debug > virt-df.log 2>&1
+ virt-[program] --debug > virt-mem.log 2>&1
 
 
-and keep I<virt-df.log>.  It contains error messages which you should
+and keep I<virt-mem.log>.  It contains error messages which you should
 submit with your bug report.
 
 submit with your bug report.
 
-=item 3. Get version of virt-df and version of libvirt.
+=item 3. Get version of virt-mem and version of libvirt.
 
 Run
 
 
 Run
 
- virt-df --version
+ virt-[program] --version
 
 =item 4. Submit a bug report.
 
 
 =item 4. Submit a bug report.
 
index a8ab3dc..119ede4 100644 (file)
@@ -1,20 +1,21 @@
 NAME
 NAME
-    virt-df - 'df'-like utility for virtualization stats
+    virt-uname - system information for virtual machines
+
+    virt-dmesg - print kernel messages for virtual machines
 
 SUMMARY
 
 SUMMARY
-    virt-df [-options]
+    virt-uname [-options] [domains...]
 
 
-DESCRIPTION
-    virt-df is a df(1)-like utility for showing the actual disk usage of
-    guests. Many command line options are the same as for ordinary *df*.
+    virt-dmesg [-options] [domains...]
 
 
-    It uses libvirt so it is capable of showing stats across a variety of
-    different virtualization systems.
+DESCRIPTION
+    These virtualization tools allow you to inspect the status of virtual
+    machines running Linux.
 
 
-OPTIONS
-    -a, --all
-        Show all domains. The default is show only running (active) domains.
+    The tools all use libvirt so are capable of showing stats across a
+    variety of different virtualization systems.
 
 
+COMMON OPTIONS
     -c uri, --connect uri
         Connect to libvirt URI. The default is to connect to the default
         libvirt URI, normally Xen.
     -c uri, --connect uri
         Connect to libvirt URI. The default is to connect to the default
         libvirt URI, normally Xen.
@@ -23,72 +24,96 @@ OPTIONS
         Print the results in CSV format, suitable for importing into a
         spreadsheet or database.
 
         Print the results in CSV format, suitable for importing into a
         spreadsheet or database.
 
-        This option is only supported if virt-df was built with CSV support.
+        This option is only supported if virt-mem was built with CSV
+        support.
 
     --debug
         Emit debugging information on stderr. Please supply this if you
         report a bug.
 
 
     --debug
         Emit debugging information on stderr. Please supply this if you
         report a bug.
 
-    -h, --human-readable
-        Display human-readable sizes (eg. "10GiB" instead of large numbers).
-
-    -i, --inodes
-        Display inode information.
-
-        This option only works for Unix-like filesystems.
-
     --help
         Display usage summary.
 
     --help
         Display usage summary.
 
-    -t diskimage
+    -t memoryimage
         Test mode. Instead of checking libvirt for domain information, this
         Test mode. Instead of checking libvirt for domain information, this
-        runs virt-df directly on the disk image (or device) supplied. You
+        runs the virt-mem tool directly on the memory image supplied. You
         may specify the -t option multiple times.
 
     --version
         Display version and exit.
 
         may specify the -t option multiple times.
 
     --version
         Display version and exit.
 
-EXAMPLE
-     # virt-df 
-     Filesystem                1K-blocks    Used Available Type
-     f9x32kvm:hda1                190740   24817    165923 Linux ext2/3
-     f9x32kvm:VolGroup/LogVol00  6568348 3401656   3166692 Linux ext2/3
-     f9x32kvm:VolGroup/LogVol01  1015808                   Linux swap
+    -E auto|littleendian|bigendian
+    -T auto|i386|x86-64|*address*
+    -W auto|32|64
+        These options force the endianness, text address, and word size for
+        the subsequent domains listed on the command line (or if no domains
+        are listed, then for all domains).
+
+        These default to *auto* which tries to do automatic detection (using
+        libvirt, or details from the memory images themselves). You only
+        need to use these options if virt-mem tools get the automatic
+        detection wrong.
+
+        Endianness (*-E*) sets the memory endianness, for data, pointers and
+        so on.
+
+        Text address (*-T*) sets the base address of the kernel image. *-T
+        i386* means to try some common addresses for i386-based kernels. *-T
+        x86-64* means to try some common addresses for x86-64-based kernels.
+        *-T *address** sets the address specifically (*0x* prefix is allowed
+        to specify hex addresses).
+
+        Word size (*-W*) sets the word size, 32 or 64 bits.
+
+    -A auto|i386|x86-64|...
+        This option sets the architecture to one of a collection of known
+        architectures. It is equivalent to setting endianness and wordsize
+        in one go, but not text address.
+
+EXAMPLES
+     # virt-uname
+     f9x32kvm: Linux localhost.localdomain 2.6.24-0.155.rc7.git6.fc9 #1
+     SMP Tue Jan 15 17:52:31 EST 2008 i686 (none)
+
+     # virt-dmesg f9x32kvm | tail
+     <6>Bluetooth: Core ver 2.11
+     <6>NET: Registered protocol family 31
+     <6>Bluetooth: HCI device and connection manager initialized
+     <6>Bluetooth: HCI socket layer initialized
+     <6>Bluetooth: L2CAP ver 2.9
+     <6>Bluetooth: L2CAP socket layer initialized
+     <6>Bluetooth: RFCOMM socket layer initialized
+     <6>Bluetooth: RFCOMM TTY layer initialized
+     <6>Bluetooth: RFCOMM ver 1.8
+     <7>eth0: no IPv6 routers present
 
 SHORTCOMINGS
 
 SHORTCOMINGS
-    virt-df spies on the guest's disk image to try to work out how much disk
-    space it is actually using. There are some shortcomings to this,
-    described here.
-
-    (1) It only understands a limited set of partition types. Assuming that
-    the files and partitions that we get back from libvirt / Xen correspond
-    to block devices in the guests, we can go some way towards manually
-    parsing those partitions to find out what they contain. We can read the
-    MBR, LVM, superblocks and so on. However that's a lot of parsing work,
-    and currently there is no library which understands a wide range of
-    partition schemes and filesystem types (not even libparted which doesn't
-    support LVM yet). The Linux kernel does support that, but there's not
-    really any good way to access that work.
-
-    The current implementation uses a hand-coded parser which understands
-    some formats (MBR, LVM2, ext2/3, DOS FAT, Windows NTFS, Linux swap and
-    Linux suspend partitions).
-
-    (2) The statistics you get are delayed. The real state of, for example,
-    an ext2 filesystem is only stored in the memory of the guest's kernel.
-    The ext2 superblock contains some meta-information about blocks used and
-    free, but this superblock is not up to date. In fact the guest kernel
-    may not update it even on a 'sync', not until the filesystem is
-    unmounted. Some operations do appear to write the superblock, for
-    example fsync(2) [that is my reading of the ext2/3 source code at
-    least].
+    The virt-mem tools spy on the guest's memory image. There are some
+    shortcomings to this, described here.
+
+    (1) Only works on specific, tested releases of Linux kernels. Support
+    for arbitrary Linux kernel versions may be patchy because of changes in
+    the internal structures used. Support for non-Linux kernels is currently
+    non-existent, and probably impossible for Windows because of lack of an
+    acceptable source license.
+
+    (2) Heuristics are used which may mean in the worst case that the output
+    is wrong.
+
+    (3) Structures which are frequently modified may cause errors. This
+    could be a problem if, for example, the process table in the guest is
+    being rapidly updated.
+
+    (4) We have to scan memory to find kernel symbols, etc., which can be
+    quite slow. Optimizing the memory scanner would help, and caching the
+    base address of the symbol table(s) would make it dramatically faster.
 
 SECURITY
     The current code tries hard to be secure against malicious guests, for
 
 SECURITY
     The current code tries hard to be secure against malicious guests, for
-    example guests which set up malicious disk partitions.
+    example guests which set up malicious kernel memory.
 
 SEE ALSO
 
 SEE ALSO
-    df(1), virsh(1), xm(1), <http://www.libvirt.org/ocaml/>,
+    uname(1),dmesg(1), virsh(1), xm(1), <http://www.libvirt.org/ocaml/>,
     <http://www.libvirt.org/>, <http://et.redhat.com/~rjones/>,
     <http://caml.inria.fr/>
 
     <http://www.libvirt.org/>, <http://et.redhat.com/~rjones/>,
     <http://caml.inria.fr/>
 
@@ -96,8 +121,7 @@ AUTHORS
     Richard W.M. Jones <rjones @ redhat . com>
 
 COPYRIGHT
     Richard W.M. Jones <rjones @ redhat . com>
 
 COPYRIGHT
-    (C) Copyright 2007-2008 Red Hat Inc., Richard W.M. Jones
-    http://libvirt.org/
+    (C) Copyright 2008 Red Hat Inc., Richard W.M. Jones http://libvirt.org/
 
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
 
     This program is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
@@ -117,7 +141,7 @@ REPORTING BUGS
     Bugs can be viewed on the Red Hat Bugzilla page:
     <https://bugzilla.redhat.com/>.
 
     Bugs can be viewed on the Red Hat Bugzilla page:
     <https://bugzilla.redhat.com/>.
 
-    If you find a bug in virt-df, please follow these steps to report it:
+    If you find a bug in virt-mem, please follow these steps to report it:
 
     1. Check for existing bug reports
         Go to <https://bugzilla.redhat.com/> and search for similar bugs.
 
     1. Check for existing bug reports
         Go to <https://bugzilla.redhat.com/> and search for similar bugs.
@@ -127,15 +151,15 @@ REPORTING BUGS
     2. Capture debug and error messages
         Run
 
     2. Capture debug and error messages
         Run
 
-         virt-df --debug > virt-df.log 2>&1
+         virt-[program] --debug > virt-mem.log 2>&1
 
 
-        and keep *virt-df.log*. It contains error messages which you should
+        and keep *virt-mem.log*. It contains error messages which you should
         submit with your bug report.
 
         submit with your bug report.
 
-    3. Get version of virt-df and version of libvirt.
+    3. Get version of virt-mem and version of libvirt.
         Run
 
         Run
 
-         virt-df --version
+         virt-[program] --version
 
     4. Submit a bug report.
         Go to <https://bugzilla.redhat.com/> and enter a new bug. Please
 
     4. Submit a bug report.
         Go to <https://bugzilla.redhat.com/> and enter a new bug. Please