88f095f0c96a5c3736c0747efdc4217515ab7448
[libguestfs.git] / fish / guestfish.pod
1 =encoding utf8
2
3 =head1 NAME
4
5 guestfish - the libguestfs Filesystem Interactive SHell
6
7 =head1 SYNOPSIS
8
9  guestfish [--options] [commands]
10
11  guestfish
12
13  guestfish [--ro|--rw] -a disk.img
14
15  guestfish [--ro|--rw] -a disk.img -m dev[:mountpoint]
16
17  guestfish -d libvirt-domain
18
19  guestfish [--ro|--rw] -a disk.img -i
20
21  guestfish -d libvirt-domain -i
22
23 =head1 WARNING
24
25 Using guestfish in read/write mode on live virtual machines can be
26 dangerous, potentially causing disk corruption.  Use the I<--ro>
27 (read-only) option to use guestfish safely if the disk image or
28 virtual machine might be live.
29
30 =head1 DESCRIPTION
31
32 Guestfish is a shell and command-line tool for examining and modifying
33 virtual machine filesystems.  It uses libguestfs and exposes all of
34 the functionality of the guestfs API, see L<guestfs(3)>.
35
36 Guestfish gives you structured access to the libguestfs API, from
37 shell scripts or the command line or interactively.  If you want to
38 rescue a broken virtual machine image, you should look at the
39 L<virt-rescue(1)> command.
40
41 =head1 EXAMPLES
42
43 =head2 As an interactive shell
44
45  $ guestfish
46  
47  Welcome to guestfish, the libguestfs filesystem interactive shell for
48  editing virtual machine filesystems.
49  
50  Type: 'help' for a list of commands
51        'man' to read the manual
52        'quit' to quit the shell
53  
54  ><fs> add-ro disk.img
55  ><fs> run
56  ><fs> list-filesystems
57  /dev/sda1: ext4
58  /dev/vg_guest/lv_root: ext4
59  /dev/vg_guest/lv_swap: swap
60  ><fs> mount /dev/vg_guest/lv_root /
61  ><fs> cat /etc/fstab
62  # /etc/fstab
63  # Created by anaconda
64  [...]
65  ><fs> exit
66
67 =head2 From shell scripts
68
69 Create a new C</etc/motd> file in a guest or disk image:
70
71  guestfish <<_EOF_
72  add disk.img
73  run
74  mount /dev/vg_guest/lv_root /
75  write /etc/motd "Welcome, new users"
76  _EOF_
77
78 List the LVM logical volumes in a disk image:
79
80  guestfish -a disk.img --ro <<_EOF_
81  run
82  lvs
83  _EOF_
84
85 List all the filesystems in a disk image:
86
87  guestfish -a disk.img --ro <<_EOF_
88  run
89  list-filesystems
90  _EOF_
91
92 =head2 On one command line
93
94 Update C</etc/resolv.conf> in a guest:
95
96  guestfish \
97    add disk.img : run : mount /dev/vg_guest/lv_root / : \
98    write /etc/resolv.conf "nameserver 1.2.3.4"
99
100 Edit C</boot/grub/grub.conf> interactively:
101
102  guestfish --rw --add disk.img \
103    --mount /dev/vg_guest/lv_root \
104    --mount /dev/sda1:/boot \
105    edit /boot/grub/grub.conf
106
107 =head2 Mount disks automatically
108
109 Use the I<-i> option to automatically mount the
110 disks from a virtual machine:
111
112  guestfish --ro -a disk.img -i cat /etc/group
113
114  guestfish --ro -d libvirt-domain -i cat /etc/group
115
116 Another way to edit C</boot/grub/grub.conf> interactively is:
117
118  guestfish --rw -a disk.img -i edit /boot/grub/grub.conf
119
120 =head2 As a script interpreter
121
122 Create a 100MB disk containing an ext2-formatted partition:
123
124  #!/usr/bin/guestfish -f
125  sparse test1.img 100M
126  run
127  part-disk /dev/sda mbr
128  mkfs ext2 /dev/sda1
129
130 =head2 Start with a prepared disk
131
132 An alternate way to create a 100MB disk called C<test1.img> containing
133 a single ext2-formatted partition:
134
135  guestfish -N fs
136
137 To list what is available do:
138
139  guestfish -N help | less
140
141 =head2 Remote control
142
143  eval "`guestfish --listen`"
144  guestfish --remote add-ro disk.img
145  guestfish --remote run
146  guestfish --remote lvs
147
148 =head1 OPTIONS
149
150 =over 4
151
152 =item B<--help>
153
154 Displays general help on options.
155
156 =item B<-h> | B<--cmd-help>
157
158 Lists all available guestfish commands.
159
160 =item B<-h cmd> | B<--cmd-help cmd>
161
162 Displays detailed help on a single command C<cmd>.
163
164 =item B<-a image> | B<--add image>
165
166 Add a block device or virtual machine image to the shell.
167
168 The format of the disk image is auto-detected.  To override this and
169 force a particular format use the I<--format=..> option.
170
171 =item B<-c URI> | B<--connect URI>
172
173 When used in conjunction with the I<-d> option, this specifies
174 the libvirt URI to use.  The default is to use the default libvirt
175 connection.
176
177 =item B<--csh>
178
179 If using the I<--listen> option and a csh-like shell, use this option.
180 See section L</REMOTE CONTROL AND CSH> below.
181
182 =item B<-d libvirt-domain> | B<--domain libvirt-domain>
183
184 Add disks from the named libvirt domain.  If the I<--ro> option is
185 also used, then any libvirt domain can be used.  However in write
186 mode, only libvirt domains which are shut down can be named here.
187
188 =item B<-D> | B<--no-dest-paths>
189
190 Don't tab-complete paths on the guest filesystem.  It is useful to be
191 able to hit the tab key to complete paths on the guest filesystem, but
192 this causes extra "hidden" guestfs calls to be made, so this option is
193 here to allow this feature to be disabled.
194
195 =item B<--echo-keys>
196
197 When prompting for keys and passphrases, guestfish normally turns
198 echoing off so you cannot see what you are typing.  If you are not
199 worried about Tempest attacks and there is no one else in the room
200 you can specify this flag to see what you are typing.
201
202 =item B<-f file> | B<--file file>
203
204 Read commands from C<file>.  To write pure guestfish
205 scripts, use:
206
207  #!/usr/bin/guestfish -f
208
209 =item B<--format=raw|qcow2|..> | B<--format>
210
211 The default for the I<-a> option is to auto-detect the format of the
212 disk image.  Using this forces the disk format for I<-a> options which
213 follow on the command line.  Using I<--format> with no argument
214 switches back to auto-detection for subsequent I<-a> options.
215
216 For example:
217
218  guestfish --format=raw -a disk.img
219
220 forces raw format (no auto-detection) for C<disk.img>.
221
222  guestfish --format=raw -a disk.img --format -a another.img
223
224 forces raw format (no auto-detection) for C<disk.img> and reverts to
225 auto-detection for C<another.img>.
226
227 If you have untrusted raw-format guest disk images, you should use
228 this option to specify the disk format.  This avoids a possible
229 security problem with malicious guests (CVE-2010-3851).  See also
230 L</add-drive-opts>.
231
232 =item B<-i> | B<--inspector>
233
234 Using L<virt-inspector(1)> code, inspect the disks looking for
235 an operating system and mount filesystems as they would be
236 mounted on the real virtual machine.
237
238 Typical usage is either:
239
240  guestfish -d myguest -i
241
242 (for an inactive libvirt domain called I<myguest>), or:
243
244  guestfish --ro -d myguest -i
245
246 (for active domains, readonly), or specify the block device directly:
247
248  guestfish --rw -a /dev/Guests/MyGuest -i
249
250 Note that the command line syntax changed slightly over older
251 versions of guestfish.  You can still use the old syntax:
252
253  guestfish [--ro] -i disk.img
254
255  guestfish [--ro] -i libvirt-domain
256
257 =item B<--keys-from-stdin>
258
259 Read key or passphrase parameters from stdin.  The default is
260 to try to read passphrases from the user by opening C</dev/tty>.
261
262 =item B<--listen>
263
264 Fork into the background and listen for remote commands.  See section
265 L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
266
267 =item B<-m dev[:mountpoint]> | B<--mount dev[:mountpoint]>
268
269 Mount the named partition or logical volume on the given mountpoint.
270
271 If the mountpoint is omitted, it defaults to C</>.
272
273 You have to mount something on C</> before most commands will work.
274
275 If any I<-m> or I<--mount> options are given, the guest is
276 automatically launched.
277
278 If you don't know what filesystems a disk image contains, you can
279 either run guestfish without this option, then list the partitions,
280 filesystems and LVs available (see L</list-partitions>,
281 L</list-filesystems> and L</lvs> commands), or you can use the
282 L<virt-filesystems(1)> program.
283
284 =item B<-n> | B<--no-sync>
285
286 Disable autosync.  This is enabled by default.  See the discussion
287 of autosync in the L<guestfs(3)> manpage.
288
289 =item B<-N type> | B<--new type> | B<-N help>
290
291 Prepare a fresh disk image formatted as "type".  This is an
292 alternative to the I<-a> option: whereas I<-a> adds an existing disk,
293 I<-N> creates a preformatted disk with a filesystem and adds it.
294 See L</PREPARED DISK IMAGES> below.
295
296 =item B<--progress-bars>
297
298 Enable progress bars, even when guestfish is used non-interactively.
299
300 Progress bars are enabled by default when guestfish is used as an
301 interactive shell.
302
303 =item B<--no-progress-bars>
304
305 Disable progress bars.
306
307 =item B<--remote[=pid]>
308
309 Send remote commands to C<$GUESTFISH_PID> or C<pid>.  See section
310 L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
311
312 =item B<-r> | B<--ro>
313
314 This changes the I<-a> and I<-m> options so that disks are added and
315 mounts are done read-only (see L<guestfs(3)/guestfs_mount_ro>).
316
317 The option must always be used if the disk image or virtual machine
318 might be running, and is generally recommended in cases where you
319 don't need write access to the disk.
320
321 Note that prepared disk images created with I<-N> are not affected by
322 the I<--ro> option.
323
324 See also L</OPENING DISKS FOR READ AND WRITE> below.
325
326 =item B<--selinux>
327
328 Enable SELinux support for the guest.  See L<guestfs(3)/SELINUX>.
329
330 =item B<-v> | B<--verbose>
331
332 Enable very verbose messages.  This is particularly useful if you find
333 a bug.
334
335 =item B<-V> | B<--version>
336
337 Display the guestfish / libguestfs version number and exit.
338
339 =item B<-w> | B<--rw>
340
341 This option does nothing at the moment.
342 See L</OPENING DISKS FOR READ AND WRITE> below.
343
344 =item B<-x>
345
346 Echo each command before executing it.
347
348 =back
349
350 =head1 COMMANDS ON COMMAND LINE
351
352 Any additional (non-option) arguments are treated as commands to
353 execute.
354
355 Commands to execute should be separated by a colon (C<:>), where the
356 colon is a separate parameter.  Thus:
357
358  guestfish cmd [args...] : cmd [args...] : cmd [args...] ...
359
360 If there are no additional arguments, then we enter a shell, either an
361 interactive shell with a prompt (if the input is a terminal) or a
362 non-interactive shell.
363
364 In either command line mode or non-interactive shell, the first
365 command that gives an error causes the whole shell to exit.  In
366 interactive mode (with a prompt) if a command fails, you can continue
367 to enter commands.
368
369 =head1 USING launch (OR run)
370
371 As with L<guestfs(3)>, you must first configure your guest by adding
372 disks, then launch it, then mount any disks you need, and finally
373 issue actions/commands.  So the general order of the day is:
374
375 =over 4
376
377 =item *
378
379 add or -a/--add
380
381 =item *
382
383 launch (aka run)
384
385 =item *
386
387 mount or -m/--mount
388
389 =item *
390
391 any other commands
392
393 =back
394
395 C<run> is a synonym for C<launch>.  You must C<launch> (or C<run>)
396 your guest before mounting or performing any other commands.
397
398 The only exception is that if any of the I<-i>, I<-m>, I<--mount>,
399 I<-N> or I<--new> options were given then C<run> is done
400 automatically, simply because guestfish can't perform the action you
401 asked for without doing this.
402
403 =head1 OPENING DISKS FOR READ AND WRITE
404
405 The guestfish (and L<guestmount(1)>) options I<--ro> and I<--rw>
406 affect whether the other command line options I<-a>, I<-c>, I<-d>,
407 I<-i> and I<-m> open disk images read-only or for writing.
408
409 In libguestfs E<lt> 1.6.2, guestfish and guestmount defaulted to
410 opening disk images supplied on the command line for write.  To open a
411 disk image read-only you have to do I<-a image --ro>.
412
413 This matters: If you accidentally open a live VM disk image writable
414 then you will cause irreversible disk corruption.
415
416 By libguestfs 1.8 we intend to change the default the other way.  Disk
417 images will be opened read-only.  You will have to either specify
418 I<guestfish --rw> or change a configuration file in order to get write
419 access for disk images specified by those other command line options.
420
421 This version of guestfish has a I<--rw> option which does nothing (it
422 is already the default).  However it is highly recommended that you
423 use this option to indicate that guestfish needs write access, and to
424 prepare your scripts for the day when this option will be required for
425 write access.
426
427 B<Note:> This does I<not> affect commands like L</add> and L</mount>,
428 or any other libguestfs program apart from guestfish and guestmount.
429
430 =head1 QUOTING
431
432 You can quote ordinary parameters using either single or double
433 quotes.  For example:
434
435  add "file with a space.img"
436
437  rm '/file name'
438
439  rm '/"'
440
441 A few commands require a list of strings to be passed.  For these, use
442 a whitespace-separated list, enclosed in quotes.  Strings containing whitespace
443 to be passed through must be enclosed in single quotes.  A literal single quote
444 must be escaped with a backslash.
445
446  vgcreate VG "/dev/sda1 /dev/sdb1"
447  command "/bin/echo 'foo      bar'"
448  command "/bin/echo \'foo\'"
449
450 =head1 OPTIONAL ARGUMENTS
451
452 Some commands take optional arguments.  These arguments appear in this
453 documentation as C<[argname:..]>.  You can use them as in these
454 examples:
455
456  add-drive-opts filename
457
458  add-drive-opts filename readonly:true
459
460  add-drive-opts filename format:qcow2 readonly:false
461
462 Each optional argument can appear at most once.  All optional
463 arguments must appear after the required ones.
464
465 =head1 NUMBERS
466
467 This section applies to all commands which can take integers
468 as parameters.
469
470 =head2 SIZE SUFFIX
471
472 When the command takes a parameter measured in bytes, you can use one
473 of the following suffixes to specify kilobytes, megabytes and larger
474 sizes:
475
476 =over 4
477
478 =item B<k> or B<K> or B<KiB>
479
480 The size in kilobytes (multiplied by 1024).
481
482 =item B<KB>
483
484 The size in SI 1000 byte units.
485
486 =item B<M> or B<MiB>
487
488 The size in megabytes (multiplied by 1048576).
489
490 =item B<MB>
491
492 The size in SI 1000000 byte units.
493
494 =item B<G> or B<GiB>
495
496 The size in gigabytes (multiplied by 2**30).
497
498 =item B<GB>
499
500 The size in SI 10**9 byte units.
501
502 =item B<T> or B<TiB>
503
504 The size in terabytes (multiplied by 2**40).
505
506 =item B<TB>
507
508 The size in SI 10**12 byte units.
509
510 =item B<P> or B<PiB>
511
512 The size in petabytes (multiplied by 2**50).
513
514 =item B<PB>
515
516 The size in SI 10**15 byte units.
517
518 =item B<E> or B<EiB>
519
520 The size in exabytes (multiplied by 2**60).
521
522 =item B<EB>
523
524 The size in SI 10**18 byte units.
525
526 =item B<Z> or B<ZiB>
527
528 The size in zettabytes (multiplied by 2**70).
529
530 =item B<ZB>
531
532 The size in SI 10**21 byte units.
533
534 =item B<Y> or B<YiB>
535
536 The size in yottabytes (multiplied by 2**80).
537
538 =item B<YB>
539
540 The size in SI 10**24 byte units.
541
542 =back
543
544 For example:
545
546  truncate-size /file 1G
547
548 would truncate the file to 1 gigabyte.
549
550 Be careful because a few commands take sizes in kilobytes or megabytes
551 (eg. the parameter to L</memsize> is specified in megabytes already).
552 Adding a suffix will probably not do what you expect.
553
554 =head2 OCTAL AND HEXADECIMAL NUMBERS
555
556 For specifying the radix (base) use the C convention: C<0> to prefix
557 an octal number or C<0x> to prefix a hexadecimal number.  For example:
558
559  1234      decimal number 1234
560  02322     octal number, equivalent to decimal 1234
561  0x4d2     hexadecimal number, equivalent to decimal 1234
562
563 When using the C<chmod> command, you almost always want to specify an
564 octal number for the mode, and you must prefix it with C<0> (unlike
565 the Unix L<chmod(1)> program):
566
567  chmod 0777 /public  # OK
568  chmod 777 /public   # WRONG! This is mode 777 decimal = 01411 octal.
569
570 Commands that return numbers usually print them in decimal, but
571 some commands print numbers in other radices (eg. C<umask> prints
572 the mode in octal, preceeded by C<0>).
573
574 =head1 WILDCARDS AND GLOBBING
575
576 Neither guestfish nor the underlying guestfs API performs
577 wildcard expansion (globbing) by default.  So for example the
578 following will not do what you expect:
579
580  rm-rf /home/*
581
582 Assuming you don't have a directory called literally C</home/*>
583 then the above command will return an error.
584
585 To perform wildcard expansion, use the C<glob> command.
586
587  glob rm-rf /home/*
588
589 runs C<rm-rf> on each path that matches (ie. potentially running
590 the command many times), equivalent to:
591
592  rm-rf /home/jim
593  rm-rf /home/joe
594  rm-rf /home/mary
595
596 C<glob> only works on simple guest paths and not on device names.
597
598 If you have several parameters, each containing a wildcard, then glob
599 will perform a Cartesian product.
600
601 =head1 COMMENTS
602
603 Any line which starts with a I<#> character is treated as a comment
604 and ignored.  The I<#> can optionally be preceeded by whitespace,
605 but B<not> by a command.  For example:
606
607  # this is a comment
608          # this is a comment
609  foo # NOT a comment
610
611 Blank lines are also ignored.
612
613 =head1 RUNNING COMMANDS LOCALLY
614
615 Any line which starts with a I<!> character is treated as a command
616 sent to the local shell (C</bin/sh> or whatever L<system(3)> uses).
617 For example:
618
619  !mkdir local
620  tgz-out /remote local/remote-data.tar.gz
621
622 will create a directory C<local> on the host, and then export
623 the contents of C</remote> on the mounted filesystem to
624 C<local/remote-data.tar.gz>.  (See C<tgz-out>).
625
626 To change the local directory, use the C<lcd> command.  C<!cd> will
627 have no effect, due to the way that subprocesses work in Unix.
628
629 =head1 PIPES
630
631 Use C<command E<lt>spaceE<gt> | command> to pipe the output of the
632 first command (a guestfish command) to the second command (any host
633 command).  For example:
634
635  cat /etc/passwd | awk -F: '$3 == 0 { print }'
636
637 (where C<cat> is the guestfish cat command, but C<awk> is the host awk
638 program).  The above command would list all accounts in the guest
639 filesystem which have UID 0, ie. root accounts including backdoors.
640 Other examples:
641
642  hexdump /bin/ls | head
643  list-devices | tail -1
644  tgz-out / - | tar ztf -
645
646 The space before the pipe symbol is required, any space after the pipe
647 symbol is optional.  Everything after the pipe symbol is just passed
648 straight to the host shell, so it can contain redirections, globs and
649 anything else that makes sense on the host side.
650
651 To use a literal argument which begins with a pipe symbol, you have
652 to quote it, eg:
653
654  echo "|"
655
656 =head1 HOME DIRECTORIES
657
658 If a parameter starts with the character C<~> then the tilde may be
659 expanded as a home directory path (either C<~> for the current user's
660 home directory, or C<~user> for another user).
661
662 Note that home directory expansion happens for users known I<on the
663 host>, not in the guest filesystem.
664
665 To use a literal argument which begins with a tilde, you have to quote
666 it, eg:
667
668  echo "~"
669
670 =head1 ENCRYPTED DISKS
671
672 Libguestfs has some support for Linux guests encrypted according to
673 the Linux Unified Key Setup (LUKS) standard, which includes nearly all
674 whole disk encryption systems used by modern Linux guests.  Currently
675 only LVM-on-LUKS is supported.
676
677 Identify encrypted block devices and partitions using L</vfs-type>:
678
679  ><fs> vfs-type /dev/sda2
680  crypto_LUKS
681
682 Then open those devices using L</luks-open>.  This creates a
683 device-mapper device called C</dev/mapper/luksdev>.
684
685  ><fs> luks-open /dev/sda2 luksdev
686  Enter key or passphrase ("key"): <enter the passphrase>
687
688 Finally you have to tell LVM to scan for volume groups on
689 the newly created mapper device:
690
691  vgscan
692  vg-activate-all true
693
694 The logical volume(s) can now be mounted in the usual way.
695
696 Before closing a LUKS device you must unmount any logical volumes on
697 it and deactivate the volume groups by calling C<vg-activate false VG>
698 on each one.  Then you can close the mapper device:
699
700  vg-activate false /dev/VG
701  luks-close /dev/mapper/luksdev
702
703 =head1 WINDOWS PATHS
704
705 If a path is prefixed with C<win:> then you can use Windows-style
706 paths (with some limitations).  The following commands are equivalent:
707
708  file /WINDOWS/system32/config/system.LOG
709
710  file win:/windows/system32/config/system.log
711
712  file win:\windows\system32\config\system.log
713
714  file WIN:C:\Windows\SYSTEM32\conFIG\SYSTEM.LOG
715
716 This syntax implicitly calls C<case-sensitive-path> (q.v.) so it also
717 handles case insensitivity like Windows would.  This only works in
718 argument positions that expect a path.
719
720 =head1 UPLOADING AND DOWNLOADING FILES
721
722 For commands such as C<upload>, C<download>, C<tar-in>, C<tar-out> and
723 others which upload from or download to a local file, you can use the
724 special filename C<-> to mean "from stdin" or "to stdout".  For example:
725
726  upload - /foo
727
728 reads stdin and creates from that a file C</foo> in the disk image,
729 and:
730
731  tar-out /etc - | tar tf -
732
733 writes the tarball to stdout and then pipes that into the external
734 "tar" command (see L</PIPES>).
735
736 When using C<-> to read from stdin, the input is read up to the end of
737 stdin.  You can also use a special "heredoc"-like syntax to read up to
738 some arbitrary end marker:
739
740  upload -<<END /foo
741  input line 1
742  input line 2
743  input line 3
744  END
745
746 Any string of characters can be used instead of C<END>.  The end
747 marker must appear on a line of its own, without any preceeding or
748 following characters (not even spaces).
749
750 Note that the C<-E<lt>E<lt>> syntax only applies to parameters used to
751 upload local files (so-called "FileIn" parameters in the generator).
752
753 =head1 EXIT ON ERROR BEHAVIOUR
754
755 By default, guestfish will ignore any errors when in interactive mode
756 (ie. taking commands from a human over a tty), and will exit on the
757 first error in non-interactive mode (scripts, commands given on the
758 command line).
759
760 If you prefix a command with a I<-> character, then that command will
761 not cause guestfish to exit, even if that (one) command returns an
762 error.
763
764 =head1 REMOTE CONTROL GUESTFISH OVER A SOCKET
765
766 Guestfish can be remote-controlled over a socket.  This is useful
767 particularly in shell scripts where you want to make several different
768 changes to a filesystem, but you don't want the overhead of starting
769 up a guestfish process each time.
770
771 Start a guestfish server process using:
772
773  eval "`guestfish --listen`"
774
775 and then send it commands by doing:
776
777  guestfish --remote cmd [...]
778
779 To cause the server to exit, send it the exit command:
780
781  guestfish --remote exit
782
783 Note that the server will normally exit if there is an error in a
784 command.  You can change this in the usual way.  See section
785 L</EXIT ON ERROR BEHAVIOUR>.
786
787 =head2 CONTROLLING MULTIPLE GUESTFISH PROCESSES
788
789 The C<eval> statement sets the environment variable C<$GUESTFISH_PID>,
790 which is how the I<--remote> option knows where to send the commands.
791 You can have several guestfish listener processes running using:
792
793  eval "`guestfish --listen`"
794  pid1=$GUESTFISH_PID
795  eval "`guestfish --listen`"
796  pid2=$GUESTFISH_PID
797  ...
798  guestfish --remote=$pid1 cmd
799  guestfish --remote=$pid2 cmd
800
801 =head2 REMOTE CONTROL AND CSH
802
803 When using csh-like shells (csh, tcsh etc) you have to add the
804 I<--csh> option:
805
806  eval "`guestfish --listen --csh`"
807
808 =head2 REMOTE CONTROL DETAILS
809
810 Remote control happens over a Unix domain socket called
811 C</tmp/.guestfish-$UID/socket-$PID>, where C<$UID> is the effective
812 user ID of the process, and C<$PID> is the process ID of the server.
813
814 Guestfish client and server versions must match exactly.
815
816 =head1 PREPARED DISK IMAGES
817
818 Use the I<-N type> or I<--new type> parameter to select one of a set
819 of preformatted disk images that guestfish can make for you to save
820 typing.  This is particularly useful for testing purposes.  This
821 option is used instead of the I<-a> option, and like I<-a> can appear
822 multiple times (and can be mixed with I<-a>).
823
824 The new disk is called C<test1.img> for the first I<-N>, C<test2.img>
825 for the second and so on.  Existing files in the current directory are
826 I<overwritten>.
827
828 The type briefly describes how the disk should be sized, partitioned,
829 how filesystem(s) should be created, and how content should be added.
830 Optionally the type can be followed by extra parameters, separated by
831 C<:> (colon) characters.  For example, I<-N fs> creates a default
832 100MB, sparsely-allocated disk, containing a single partition, with
833 the partition formatted as ext2.  I<-N fs:ext4:1G> is the same, but
834 for an ext4 filesystem on a 1GB disk instead.
835
836 To list the available types and any extra parameters they take, run:
837
838  guestfish -N help | less
839
840 Note that the prepared filesystem is not mounted.  You would usually
841 have to use the C<mount /dev/sda1 /> command or add the
842 I<-m /dev/sda1> option.
843
844 If any I<-N> or I<--new> options are given, the guest is automatically
845 launched.
846
847 =head2 EXAMPLES
848
849 Create a 100MB disk with an ext4-formatted partition:
850
851  guestfish -N fs:ext4
852
853 Create a 32MB disk with a VFAT-formatted partition, and mount it:
854
855  guestfish -N fs:vfat:32M -m /dev/sda1
856
857 Create a blank 200MB disk:
858
859  guestfish -N disk:200M
860
861 =head1 PROGRESS BARS
862
863 Some (not all) long-running commands send progress notification
864 messages as they are running.  Guestfish turns these messages into
865 progress bars.
866
867 When a command that supports progress bars takes longer than two
868 seconds to run, and if progress bars are enabled, then you will see
869 one appearing below the command:
870
871  ><fs> copy-size /large-file /another-file 2048M
872  / 10% [#####-----------------------------------------] 00:30
873
874 The spinner on the left hand side moves round once for every progress
875 notification received from the backend.  This is a (reasonably) golden
876 assurance that the command is "doing something" even if the progress
877 bar is not moving, because the command is able to send the progress
878 notifications.  When the bar reaches 100% and the command finishes,
879 the spinner disappears.
880
881 Progress bars are enabled by default when guestfish is used
882 interactively.  You can enable them even for non-interactive modes
883 using I<--progress-bars>, and you can disable them completely using
884 I<--no-progress-bars>.
885
886 =head1 GUESTFISH COMMANDS
887
888 The commands in this section are guestfish convenience commands, in
889 other words, they are not part of the L<guestfs(3)> API.
890
891 =head2 help
892
893  help
894  help cmd
895
896 Without any parameter, this provides general help.
897
898 With a C<cmd> parameter, this displays detailed help for that command.
899
900 =head2 quit | exit
901
902 This exits guestfish.  You can also use C<^D> key.
903
904 @FISH_COMMANDS@
905
906 =head1 COMMANDS
907
908 @ACTIONS@
909
910 =head1 EXIT CODE
911
912 guestfish returns 0 if the commands completed without error, or
913 1 if there was an error.
914
915 =head1 ENVIRONMENT VARIABLES
916
917 =over 4
918
919 =item EDITOR
920
921 The C<edit> command uses C<$EDITOR> as the editor.  If not
922 set, it uses C<vi>.
923
924 =item GUESTFISH_PID
925
926 Used with the I<--remote> option to specify the remote guestfish
927 process to control.  See section
928 L</REMOTE CONTROL GUESTFISH OVER A SOCKET>.
929
930 =item HEXEDITOR
931
932 The L</hexedit> command uses C<$HEXEDITOR> as the external hex
933 editor.  If not specified, the external L<hexedit(1)> program
934 is used.
935
936 =item HOME
937
938 If compiled with GNU readline support, various files in the
939 home directory can be used.  See L</FILES>.
940
941 =item LIBGUESTFS_APPEND
942
943 Pass additional options to the guest kernel.
944
945 =item LIBGUESTFS_DEBUG
946
947 Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages.  This has the
948 same effect as using the B<-v> option.
949
950 =item LIBGUESTFS_MEMSIZE
951
952 Set the memory allocated to the qemu process, in megabytes.  For
953 example:
954
955  LIBGUESTFS_MEMSIZE=700
956
957 =item LIBGUESTFS_PATH
958
959 Set the path that guestfish uses to search for kernel and initrd.img.
960 See the discussion of paths in L<guestfs(3)>.
961
962 =item LIBGUESTFS_QEMU
963
964 Set the default qemu binary that libguestfs uses.  If not set, then
965 the qemu which was found at compile time by the configure script is
966 used.
967
968 =item LIBGUESTFS_TRACE
969
970 Set C<LIBGUESTFS_TRACE=1> to enable command traces.
971
972 =item PAGER
973
974 The C<more> command uses C<$PAGER> as the pager.  If not
975 set, it uses C<more>.
976
977 =item TMPDIR
978
979 Location of temporary directory, defaults to C</tmp>.
980
981 If libguestfs was compiled to use the supermin appliance then the
982 real appliance is cached in this directory, shared between all
983 handles belonging to the same EUID.  You can use C<$TMPDIR> to
984 configure another directory to use in case C</tmp> is not large
985 enough.
986
987 =back
988
989 =head1 FILES
990
991 =over 4
992
993 =item $HOME/.guestfish
994
995 If compiled with GNU readline support, then the command history
996 is saved in this file.
997
998 =item $HOME/.inputrc
999
1000 =item /etc/inputrc
1001
1002 If compiled with GNU readline support, then these files can be used to
1003 configure readline.  For further information, please see
1004 L<readline(3)/INITIALIZATION FILE>.
1005
1006 To write rules which only apply to guestfish, use:
1007
1008  $if guestfish
1009  ...
1010  $endif
1011
1012 Variables that you can set in inputrc that change the behaviour
1013 of guestfish in useful ways include:
1014
1015 =over 4
1016
1017 =item completion-ignore-case (default: on)
1018
1019 By default, guestfish will ignore case when tab-completing
1020 paths on the disk.  Use:
1021
1022  set completion-ignore-case off
1023
1024 to make guestfish case sensitive.
1025
1026 =back
1027
1028 =item test1.img
1029
1030 =item test2.img (etc)
1031
1032 When using the C<-N> or C<--new> option, the prepared disk or
1033 filesystem will be created in the file C<test1.img> in the current
1034 directory.  The second use of C<-N> will use C<test2.img> and so on.
1035 Any existing file with the same name will be overwritten.
1036
1037 =back
1038
1039 =head1 SEE ALSO
1040
1041 L<guestfs(3)>,
1042 L<http://libguestfs.org/>,
1043 L<virt-cat(1)>,
1044 L<virt-df(1)>,
1045 L<virt-edit(1)>,
1046 L<virt-filesystems(1)>,
1047 L<virt-inspector(1)>,
1048 L<virt-list-filesystems(1)>,
1049 L<virt-list-partitions(1)>,
1050 L<virt-ls(1)>,
1051 L<virt-make-fs(1)>,
1052 L<virt-rescue(1)>,
1053 L<virt-resize(1)>,
1054 L<virt-tar(1)>,
1055 L<virt-win-reg(1)>,
1056 L<hexedit(1)>.
1057
1058 =head1 AUTHORS
1059
1060 Richard W.M. Jones (C<rjones at redhat dot com>)
1061
1062 =head1 COPYRIGHT
1063
1064 Copyright (C) 2009-2010 Red Hat Inc.
1065 L<http://libguestfs.org/>
1066
1067 This program is free software; you can redistribute it and/or modify
1068 it under the terms of the GNU General Public License as published by
1069 the Free Software Foundation; either version 2 of the License, or
1070 (at your option) any later version.
1071
1072 This program is distributed in the hope that it will be useful,
1073 but WITHOUT ANY WARRANTY; without even the implied warranty of
1074 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
1075 GNU General Public License for more details.
1076
1077 You should have received a copy of the GNU General Public License
1078 along with this program; if not, write to the Free Software
1079 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.