X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=fish%2Fguestfish.pod;h=c52b773cfda7a0fc71a2c81443e9fbf799c0a600;hp=fc32d0a93b3b434af4568a0854b332cc95b2f1d6;hb=d29e9a552f5823d1d8cb8d4962cb1301bbf60b0e;hpb=406dbf7565e702588f172a8cc534acacb2fd7bee diff --git a/fish/guestfish.pod b/fish/guestfish.pod index fc32d0a..c52b773 100644 --- a/fish/guestfish.pod +++ b/fish/guestfish.pod @@ -10,13 +10,13 @@ guestfish - the libguestfs Filesystem Interactive SHell guestfish - guestfish -a disk.img + guestfish [--ro|--rw] -a disk.img - guestfish -a disk.img -m dev[:mountpoint] + guestfish [--ro|--rw] -a disk.img -m dev[:mountpoint] guestfish -d libvirt-domain - guestfish -a disk.img -i + guestfish [--ro|--rw] -a disk.img -i guestfish -d libvirt-domain -i @@ -99,7 +99,7 @@ Update C in a guest: Edit C interactively: - guestfish --add disk.img \ + guestfish --rw --add disk.img \ --mount /dev/vg_guest/lv_root \ --mount /dev/sda1:/boot \ edit /boot/grub/grub.conf @@ -115,7 +115,7 @@ disks from a virtual machine: Another way to edit C interactively is: - guestfish -a disk.img -i edit /boot/grub/grub.conf + guestfish --rw -a disk.img -i edit /boot/grub/grub.conf =head2 As a script interpreter @@ -140,7 +140,7 @@ To list what is available do: =head2 Remote control - eval `guestfish --listen` + eval "`guestfish --listen`" guestfish --remote add-ro disk.img guestfish --remote run guestfish --remote lvs @@ -165,12 +165,20 @@ Displays detailed help on a single command C. Add a block device or virtual machine image to the shell. +The format of the disk image is auto-detected. To override this and +force a particular format use the I<--format=..> option. + =item B<-c URI> | B<--connect URI> When used in conjunction with the I<-d> option, this specifies the libvirt URI to use. The default is to use the default libvirt connection. +=item B<--csh> + +If using the I<--listen> option and a csh-like shell, use this option. +See section L below. + =item B<-d libvirt-domain> | B<--domain libvirt-domain> Add disks from the named libvirt domain. If the I<--ro> option is @@ -198,6 +206,29 @@ scripts, use: #!/usr/bin/guestfish -f +=item B<--format=raw|qcow2|..> | B<--format> + +The default for the I<-a> option is to auto-detect the format of the +disk image. Using this forces the disk format for I<-a> options which +follow on the command line. Using I<--format> with no argument +switches back to auto-detection for subsequent I<-a> options. + +For example: + + guestfish --format=raw -a disk.img + +forces raw format (no auto-detection) for C. + + guestfish --format=raw -a disk.img --format -a another.img + +forces raw format (no auto-detection) for C and reverts to +auto-detection for C. + +If you have untrusted raw-format guest disk images, you should use +this option to specify the disk format. This avoids a possible +security problem with malicious guests (CVE-2010-3851). See also +L. + =item B<-i> | B<--inspector> Using L code, inspect the disks looking for @@ -214,7 +245,7 @@ Typical usage is either: (for active domains, readonly), or specify the block device directly: - guestfish -a /dev/Guests/MyGuest -i + guestfish --rw -a /dev/Guests/MyGuest -i Note that the command line syntax changed slightly over older versions of guestfish. You can still use the old syntax: @@ -289,6 +320,8 @@ don't need write access to the disk. Note that prepared disk images created with I<-N> are not affected by the I<--ro> option. +See also L below. + =item B<--selinux> Enable SELinux support for the guest. See L. @@ -302,6 +335,11 @@ a bug. Display the guestfish / libguestfs version number and exit. +=item B<-w> | B<--rw> + +This option does nothing at the moment. +See L below. + =item B<-x> Echo each command before executing it. @@ -361,6 +399,33 @@ I<-N> or I<--new> options were given then C is done automatically, simply because guestfish can't perform the action you asked for without doing this. +=head1 OPENING DISKS FOR READ AND WRITE + +The guestfish (and L) options I<--ro> and I<--rw> +affect whether the other command line options I<-a>, I<-c>, I<-d>, +I<-i> and I<-m> open disk images read-only or for writing. + +In libguestfs E 1.6.2, guestfish and guestmount defaulted to +opening disk images supplied on the command line for write. To open a +disk image read-only you have to do I<-a image --ro>. + +This matters: If you accidentally open a live VM disk image writable +then you will cause irreversible disk corruption. + +By libguestfs 1.8 we intend to change the default the other way. Disk +images will be opened read-only. You will have to either specify +I or change a configuration file in order to get write +access for disk images specified by those other command line options. + +This version of guestfish has a I<--rw> option which does nothing (it +is already the default). However it is highly recommended that you +use this option to indicate that guestfish needs write access, and to +prepare your scripts for the day when this option will be required for +write access. + +B This does I affect commands like L and L, +or any other libguestfs program apart from guestfish and guestmount. + =head1 QUOTING You can quote ordinary parameters using either single or double @@ -381,6 +446,21 @@ must be escaped with a backslash. command "/bin/echo 'foo bar'" command "/bin/echo \'foo\'" +=head1 OPTIONAL ARGUMENTS + +Some commands take optional arguments. These arguments appear in this +documentation as C<[argname:..]>. You can use them as in these +examples: + + add-drive-opts filename + + add-drive-opts filename readonly:true + + add-drive-opts filename format:qcow2 readonly:false + +Each optional argument can appear at most once. All optional +arguments must appear after the required ones. + =head1 NUMBERS This section applies to all commands which can take integers @@ -689,7 +769,7 @@ up a guestfish process each time. Start a guestfish server process using: - eval `guestfish --listen` + eval "`guestfish --listen`" and then send it commands by doing: @@ -709,14 +789,21 @@ The C statement sets the environment variable C<$GUESTFISH_PID>, which is how the I<--remote> option knows where to send the commands. You can have several guestfish listener processes running using: - eval `guestfish --listen` + eval "`guestfish --listen`" pid1=$GUESTFISH_PID - eval `guestfish --listen` + eval "`guestfish --listen`" pid2=$GUESTFISH_PID ... guestfish --remote=$pid1 cmd guestfish --remote=$pid2 cmd +=head2 REMOTE CONTROL AND CSH + +When using csh-like shells (csh, tcsh etc) you have to add the +I<--csh> option: + + eval "`guestfish --listen --csh`" + =head2 REMOTE CONTROL DETAILS Remote control happens over a Unix domain socket called @@ -805,8 +892,9 @@ other words, they are not part of the L API. help help cmd -Without any parameter, this lists all commands. With a C -parameter, this displays detailed help for a command. +Without any parameter, this provides general help. + +With a C parameter, this displays detailed help for that command. =head2 quit | exit