Add /etc/libguestfs-tools.conf configuration file.
[libguestfs.git] / rescue / virt-rescue.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 virt-rescue - Run a rescue shell on a virtual machine
6
7 =head1 SYNOPSIS
8
9  virt-rescue [--options] -d domname
10
11  virt-rescue [--options] -a disk.img [-a disk.img ...]
12
13 Old style:
14
15  virt-rescue [--options] domname
16
17  virt-rescue [--options] disk.img [disk.img ...]
18
19 =head1 WARNING
20
21 You must I<not> use C<virt-rescue> on live virtual machines.  Doing so
22 will probably result in disk corruption in the VM.  C<virt-rescue>
23 tries to stop you from doing this, but doesn't catch all cases.
24
25 However if you use the I<--ro> (read only) option, then you can attach
26 a shell to a live virtual machine.  The results might be strange or
27 inconsistent at times but you won't get disk corruption.
28
29 =head1 DESCRIPTION
30
31 virt-rescue is like a Rescue CD, but for virtual machines, and without
32 the need for a CD.  virt-rescue gives you a rescue shell and some
33 simple recovery tools which you can use to examine or rescue a virtual
34 machine or disk image.
35
36 You can run virt-rescue on any virtual machine known to libvirt, or
37 directly on disk image(s):
38
39  virt-rescue -d GuestName
40
41  virt-rescue --ro -a /path/to/disk.img
42
43  virt-rescue -a /dev/sdc
44
45 For live VMs you I<must> use the --ro option.
46
47 When you run virt-rescue on a virtual machine or disk image, you are
48 placed in an interactive bash shell where you can use many ordinary
49 Linux commands.  What you see in C</> (C</bin>, C</lib> etc) is the
50 rescue appliance.  You must mount the virtual machine's filesystems by
51 hand.  There is an empty directory called C</sysroot> where you can
52 mount filesystems.
53
54 In the example below, we list logical volumes, then choose one to
55 mount under C</sysroot>:
56
57  ><rescue> lvs
58  LV      VG        Attr   LSize   Origin Snap%  Move Log Copy%  Convert
59  lv_root vg_f11x64 -wi-a-   8.83G
60  lv_swap vg_f11x64 -wi-a- 992.00M
61  ><rescue> mount /dev/vg_f11x64/lv_root /sysroot
62  ><rescue> ls /sysroot
63
64 If you don't know what filesystems are available on the virtual
65 machine then you can use commands such as L<parted(8)> and L<lvs(8)>
66 to find out.
67
68 =head2 NOTES
69
70 Virt-rescue can be used on I<any> disk image file or device, not just
71 a virtual machine.  For example you can use it on a blank file if you
72 want to partition that file (although we would recommend using
73 L<guestfish(1)> instead as it is more suitable for this purpose).  You
74 can even use virt-rescue on things like SD cards.
75
76 Virt-rescue does not require root.  You only need to run it as root if
77 you need root to open the disk image.
78
79 This tool is just designed for quick interactive hacking on a virtual
80 machine.  For more structured access to a virtual machine disk image,
81 you should use L<guestfs(3)>.  To get a structured shell that you can
82 use to make scripted changes to guests, use L<guestfish(1)>.
83
84 =head1 OPTIONS
85
86 =over 4
87
88 =item B<--help>
89
90 Display brief help.
91
92 =item B<-a> file
93
94 =item B<--add> file
95
96 Add I<file> which should be a disk image from a virtual machine.  If
97 the virtual machine has multiple block devices, you must supply all of
98 them with separate I<-a> options.
99
100 The format of the disk image is auto-detected.  To override this and
101 force a particular format use the I<--format=..> option.
102
103 =item B<--append kernelopts>
104
105 Pass additional options to the rescue kernel.
106
107 =item B<-c> URI
108
109 =item B<--connect> URI
110
111 If using libvirt, connect to the given I<URI>.  If omitted, then we
112 connect to the default libvirt hypervisor.
113
114 If you specify guest block devices directly (I<-a>), then libvirt is
115 not used at all.
116
117 =item B<-d> guest
118
119 =item B<--domain> guest
120
121 Add all the disks from the named libvirt guest.
122
123 =item B<--format=raw|qcow2|..>
124
125 =item B<--format>
126
127 The default for the I<-a> option is to auto-detect the format of the
128 disk image.  Using this forces the disk format for I<-a> options which
129 follow on the command line.  Using I<--format> with no argument
130 switches back to auto-detection for subsequent I<-a> options.
131
132 For example:
133
134  virt-rescue --format=raw -a disk.img
135
136 forces raw format (no auto-detection) for C<disk.img>.
137
138  virt-rescue --format=raw -a disk.img --format -a another.img
139
140 forces raw format (no auto-detection) for C<disk.img> and reverts to
141 auto-detection for C<another.img>.
142
143 If you have untrusted raw-format guest disk images, you should use
144 this option to specify the disk format.  This avoids a possible
145 security problem with malicious guests (CVE-2010-3851).
146
147 =item B<-m MB>
148
149 =item B<--memsize MB>
150
151 Change the amount of memory allocated to the rescue system.  The
152 default is set by libguestfs and is small but adequate for running
153 system tools.  The occasional program might need more memory.  The
154 parameter is specified in megabytes.
155
156 =item B<--network>
157
158 Enable QEMU user networking in the guest.  See L</NETWORK>.
159
160 =item B<-r>
161
162 =item B<--ro>
163
164 Open the image read-only.
165
166 The option must always be used if the disk image or virtual machine
167 might be running, and is generally recommended in cases where you
168 don't need write access to the disk.
169
170 See also L<guestfish(1)/OPENING DISKS FOR READ AND WRITE>.
171
172 =item B<--selinux>
173
174 Enable SELinux in the rescue appliance.  You should read
175 L<guestfs(3)/SELINUX> before using this option.
176
177 =item B<-v>
178
179 =item B<--verbose>
180
181 Enable verbose messages for debugging.
182
183 =item B<-V>
184
185 =item B<--version>
186
187 Display version number and exit.
188
189 =item B<-w>
190
191 =item B<--rw>
192
193 This changes the I<-a> and I<-d> options so that disks are
194 added and mounts are done read-write.
195
196 See L<guestfish(1)/OPENING DISKS FOR READ AND WRITE>.
197
198 =item B<-x>
199
200 Enable tracing of libguestfs API calls.
201
202 =back
203
204 =head1 OLD-STYLE COMMAND LINE ARGUMENTS
205
206 Previous versions of virt-rescue allowed you to write either:
207
208  virt-rescue disk.img [disk.img ...]
209
210 or
211
212  virt-rescue guestname
213
214 whereas in this version you should use I<-a> or I<-d> respectively
215 to avoid the confusing case where a disk image might have the same
216 name as a guest.
217
218 For compatibility the old style is still supported.
219
220 =head1 NETWORK
221
222 Adding the I<--network> option enables QEMU user networking
223 in the rescue appliance.  There are some differences between
224 user networking and ordinary networking:
225
226 =over 4
227
228 =item ping does not work
229
230 Because the ICMP ECHO_REQUEST protocol generally requires root in
231 order to send the ping packets, and because virt-rescue must be able
232 to run as non-root, QEMU user networking is not able to emulate the
233 L<ping(8)> command.  The ping command will appear to resolve addresses
234 but will not be able to send or receive any packets.  This does not
235 mean that the network is not working.
236
237 =item cannot receive connections
238
239 QEMU user networking cannot receive incoming connections.
240
241 =item making TCP connections
242
243 The virt-rescue appliance needs to be small and so does not include
244 many network tools.  In particular there is no L<telnet(1)> command.
245 You can make TCP connections from the shell using the magical
246 C</dev/tcp/E<lt>hostnameE<gt>/E<lt>portE<gt>> syntax:
247
248  exec 3<>/dev/tcp/redhat.com/80
249  echo "GET /" >&3
250  cat <&3
251
252 See L<bash(1)> for more details.
253
254 =back
255
256 =head1 ENVIRONMENT VARIABLES
257
258 Several environment variables affect virt-rescue.  See
259 L<guestfs(3)/ENVIRONMENT VARIABLES> for the complete list.
260
261 =head1 SHELL QUOTING
262
263 Libvirt guest names can contain arbitrary characters, some of which
264 have meaning to the shell such as C<#> and space.  You may need to
265 quote or escape these characters on the command line.  See the shell
266 manual page L<sh(1)> for details.
267
268 =head1 FILES
269
270 =over 4
271
272 =item $HOME/.libguestfs-tools.rc
273
274 =item /etc/libguestfs-tools.conf
275
276 This configuration file controls the default read-only or read-write
277 mode (I<--ro> or I<--rw>).
278
279 See L<guestfish(1)/OPENING DISKS FOR READ AND WRITE>.
280
281 =back
282
283 =head1 SEE ALSO
284
285 L<guestfs(3)>,
286 L<guestfish(1)>,
287 L<virt-cat(1)>,
288 L<virt-edit(1)>,
289 L<http://libguestfs.org/>.
290
291 =head1 AUTHOR
292
293 Richard W.M. Jones L<http://people.redhat.com/~rjones/>
294
295 =head1 COPYRIGHT
296
297 Copyright (C) 2009-2011 Red Hat Inc.
298
299 This program is free software; you can redistribute it and/or modify
300 it under the terms of the GNU General Public License as published by
301 the Free Software Foundation; either version 2 of the License, or
302 (at your option) any later version.
303
304 This program is distributed in the hope that it will be useful,
305 but WITHOUT ANY WARRANTY; without even the implied warranty of
306 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
307 GNU General Public License for more details.
308
309 You should have received a copy of the GNU General Public License
310 along with this program; if not, write to the Free Software
311 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.