Rewrite of main loop impl, start of FileIn/FileOut support.
[libguestfs.git] / guestfish-actions.pod
1 =head2 add-cdrom | cdrom
2
3  add-cdrom filename
4
5 This function adds a virtual CD-ROM disk image to the guest.
6
7 This is equivalent to the qemu parameter C<-cdrom filename>.
8
9 =head2 add-drive | add
10
11  add-drive filename
12
13 This function adds a virtual machine disk image C<filename> to the
14 guest.  The first time you call this function, the disk appears as IDE
15 disk 0 (C</dev/sda>) in the guest, the second time as C</dev/sdb>, and
16 so on.
17
18 You don't necessarily need to be root when using libguestfs.  However
19 you obviously do need sufficient permissions to access the filename
20 for whatever operations you want to perform (ie. read access if you
21 just want to read the image or write access if you want to modify the
22 image).
23
24 This is equivalent to the qemu parameter C<-drive file=filename>.
25
26 =head2 aug-close
27
28  aug-close
29
30 Close the current Augeas handle and free up any resources
31 used by it.  After calling this, you have to call
32 C<aug_init> again before you can use any other
33 Augeas functions.
34
35 =head2 aug-defnode
36
37  aug-defnode name expr val
38
39 Defines a variable C<name> whose value is the result of
40 evaluating C<expr>.
41
42 If C<expr> evaluates to an empty nodeset, a node is created,
43 equivalent to calling C<aug_set> C<expr>, C<value>.
44 C<name> will be the nodeset containing that single node.
45
46 On success this returns a pair containing the
47 number of nodes in the nodeset, and a boolean flag
48 if a node was created.
49
50 =head2 aug-defvar
51
52  aug-defvar name expr
53
54 Defines an Augeas variable C<name> whose value is the result
55 of evaluating C<expr>.  If C<expr> is NULL, then C<name> is
56 undefined.
57
58 On success this returns the number of nodes in C<expr>, or
59 C<0> if C<expr> evaluates to something which is not a nodeset.
60
61 =head2 aug-get
62
63  aug-get path
64
65 Look up the value associated with C<path>.  If C<path>
66 matches exactly one node, the C<value> is returned.
67
68 =head2 aug-init
69
70  aug-init root flags
71
72 Create a new Augeas handle for editing configuration files.
73 If there was any previous Augeas handle associated with this
74 guestfs session, then it is closed.
75
76 You must call this before using any other C<aug_*>
77 commands.
78
79 C<root> is the filesystem root.  C<root> must not be NULL,
80 use C</> instead.
81
82 The flags are the same as the flags defined in
83 E<lt>augeas.hE<gt>, the logical I<or> of the following
84 integers:
85
86 =over 4
87
88 =item C<AUG_SAVE_BACKUP> = 1
89
90 Keep the original file with a C<.augsave> extension.
91
92 =item C<AUG_SAVE_NEWFILE> = 2
93
94 Save changes into a file with extension C<.augnew>, and
95 do not overwrite original.  Overrides C<AUG_SAVE_BACKUP>.
96
97 =item C<AUG_TYPE_CHECK> = 4
98
99 Typecheck lenses (can be expensive).
100
101 =item C<AUG_NO_STDINC> = 8
102
103 Do not use standard load path for modules.
104
105 =item C<AUG_SAVE_NOOP> = 16
106
107 Make save a no-op, just record what would have been changed.
108
109 =item C<AUG_NO_LOAD> = 32
110
111 Do not load the tree in C<aug_init>.
112
113 =back
114
115 To close the handle, you can call C<aug_close>.
116
117 To find out more about Augeas, see L<http://augeas.net/>.
118
119 =head2 aug-insert
120
121  aug-insert path label true|false
122
123 Create a new sibling C<label> for C<path>, inserting it into
124 the tree before or after C<path> (depending on the boolean
125 flag C<before>).
126
127 C<path> must match exactly one existing node in the tree, and
128 C<label> must be a label, ie. not contain C</>, C<*> or end
129 with a bracketed index C<[N]>.
130
131 =head2 aug-load
132
133  aug-load
134
135 Load files into the tree.
136
137 See C<aug_load> in the Augeas documentation for the full gory
138 details.
139
140 =head2 aug-ls
141
142  aug-ls path
143
144 This is just a shortcut for listing C<aug_match>
145 C<path/*> and sorting the resulting nodes into alphabetical order.
146
147 =head2 aug-match
148
149  aug-match path
150
151 Returns a list of paths which match the path expression C<path>.
152 The returned paths are sufficiently qualified so that they match
153 exactly one node in the current tree.
154
155 =head2 aug-mv
156
157  aug-mv src dest
158
159 Move the node C<src> to C<dest>.  C<src> must match exactly
160 one node.  C<dest> is overwritten if it exists.
161
162 =head2 aug-rm
163
164  aug-rm path
165
166 Remove C<path> and all of its children.
167
168 On success this returns the number of entries which were removed.
169
170 =head2 aug-save
171
172  aug-save
173
174 This writes all pending changes to disk.
175
176 The flags which were passed to C<aug_init> affect exactly
177 how files are saved.
178
179 =head2 aug-set
180
181  aug-set path val
182
183 Set the value associated with C<path> to C<value>.
184
185 =head2 blockdev-flushbufs
186
187  blockdev-flushbufs device
188
189 This tells the kernel to flush internal buffers associated
190 with C<device>.
191
192 This uses the L<blockdev(8)> command.
193
194 =head2 blockdev-getbsz
195
196  blockdev-getbsz device
197
198 This returns the block size of a device.
199
200 (Note this is different from both I<size in blocks> and
201 I<filesystem block size>).
202
203 This uses the L<blockdev(8)> command.
204
205 =head2 blockdev-getro
206
207  blockdev-getro device
208
209 Returns a boolean indicating if the block device is read-only
210 (true if read-only, false if not).
211
212 This uses the L<blockdev(8)> command.
213
214 =head2 blockdev-getsize64
215
216  blockdev-getsize64 device
217
218 This returns the size of the device in bytes.
219
220 See also C<blockdev_getsz>.
221
222 This uses the L<blockdev(8)> command.
223
224 =head2 blockdev-getss
225
226  blockdev-getss device
227
228 This returns the size of sectors on a block device.
229 Usually 512, but can be larger for modern devices.
230
231 (Note, this is not the size in sectors, use C<blockdev_getsz>
232 for that).
233
234 This uses the L<blockdev(8)> command.
235
236 =head2 blockdev-getsz
237
238  blockdev-getsz device
239
240 This returns the size of the device in units of 512-byte sectors
241 (even if the sectorsize isn't 512 bytes ... weird).
242
243 See also C<blockdev_getss> for the real sector size of
244 the device, and C<blockdev_getsize64> for the more
245 useful I<size in bytes>.
246
247 This uses the L<blockdev(8)> command.
248
249 =head2 blockdev-rereadpt
250
251  blockdev-rereadpt device
252
253 Reread the partition table on C<device>.
254
255 This uses the L<blockdev(8)> command.
256
257 =head2 blockdev-setbsz
258
259  blockdev-setbsz device blocksize
260
261 This sets the block size of a device.
262
263 (Note this is different from both I<size in blocks> and
264 I<filesystem block size>).
265
266 This uses the L<blockdev(8)> command.
267
268 =head2 blockdev-setro
269
270  blockdev-setro device
271
272 Sets the block device named C<device> to read-only.
273
274 This uses the L<blockdev(8)> command.
275
276 =head2 blockdev-setrw
277
278  blockdev-setrw device
279
280 Sets the block device named C<device> to read-write.
281
282 This uses the L<blockdev(8)> command.
283
284 =head2 cat
285
286  cat path
287
288 Return the contents of the file named C<path>.
289
290 Note that this function cannot correctly handle binary files
291 (specifically, files containing C<\0> character which is treated
292 as end of string).  For those you need to use the C<download>
293 function which has a more complex interface.
294
295 Because of the message protocol, there is a transfer limit 
296 of somewhere between 2MB and 4MB.  To transfer large files you should use
297 FTP.
298
299 =head2 chmod
300
301  chmod mode path
302
303 Change the mode (permissions) of C<path> to C<mode>.  Only
304 numeric modes are supported.
305
306 =head2 chown
307
308  chown owner group path
309
310 Change the file owner to C<owner> and group to C<group>.
311
312 Only numeric uid and gid are supported.  If you want to use
313 names, you will need to locate and parse the password file
314 yourself (Augeas support makes this relatively easy).
315
316 =head2 command
317
318  command arguments,...
319
320 This call runs a command from the guest filesystem.  The
321 filesystem must be mounted, and must contain a compatible
322 operating system (ie. something Linux, with the same
323 or compatible processor architecture).
324
325 The single parameter is an argv-style list of arguments.
326 The first element is the name of the program to run.
327 Subsequent elements are parameters.  The list must be
328 non-empty (ie. must contain a program name).
329
330 The C<$PATH> environment variable will contain at least
331 C</usr/bin> and C</bin>.  If you require a program from
332 another location, you should provide the full path in the
333 first parameter.
334
335 Shared libraries and data files required by the program
336 must be available on filesystems which are mounted in the
337 correct places.  It is the caller's responsibility to ensure
338 all filesystems that are needed are mounted at the right
339 locations.
340
341 =head2 command-lines
342
343  command-lines arguments,...
344
345 This is the same as C<command>, but splits the
346 result into a list of lines.
347
348 =head2 config
349
350  config qemuparam qemuvalue
351
352 This can be used to add arbitrary qemu command line parameters
353 of the form C<-param value>.  Actually it's not quite arbitrary - we
354 prevent you from setting some parameters which would interfere with
355 parameters that we use.
356
357 The first character of C<param> string must be a C<-> (dash).
358
359 C<value> can be NULL.
360
361 =head2 exists
362
363  exists path
364
365 This returns C<true> if and only if there is a file, directory
366 (or anything) with the given C<path> name.
367
368 See also C<is_file>, C<is_dir>, C<stat>.
369
370 =head2 file
371
372  file path
373
374 This call uses the standard L<file(1)> command to determine
375 the type or contents of the file.  This also works on devices,
376 for example to find out whether a partition contains a filesystem.
377
378 The exact command which runs is C<file -bsL path>.  Note in
379 particular that the filename is not prepended to the output
380 (the C<-b> option).
381
382 =head2 get-autosync
383
384  get-autosync
385
386 Get the autosync flag.
387
388 =head2 get-path
389
390  get-path
391
392 Return the current search path.
393
394 This is always non-NULL.  If it wasn't set already, then this will
395 return the default path.
396
397 =head2 get-verbose
398
399  get-verbose
400
401 This returns the verbose messages flag.
402
403 =head2 is-dir
404
405  is-dir path
406
407 This returns C<true> if and only if there is a directory
408 with the given C<path> name.  Note that it returns false for
409 other objects like files.
410
411 See also C<stat>.
412
413 =head2 is-file
414
415  is-file path
416
417 This returns C<true> if and only if there is a file
418 with the given C<path> name.  Note that it returns false for
419 other objects like directories.
420
421 See also C<stat>.
422
423 =head2 kill-subprocess
424
425  kill-subprocess
426
427 This kills the qemu subprocess.  You should never need to call this.
428
429 =head2 launch | run
430
431  launch
432
433 Internally libguestfs is implemented by running a virtual machine
434 using L<qemu(1)>.
435
436 You should call this after configuring the handle
437 (eg. adding drives) but before performing any actions.
438
439 =head2 list-devices
440
441  list-devices
442
443 List all the block devices.
444
445 The full block device names are returned, eg. C</dev/sda>
446
447 =head2 list-partitions
448
449  list-partitions
450
451 List all the partitions detected on all block devices.
452
453 The full partition device names are returned, eg. C</dev/sda1>
454
455 This does not return logical volumes.  For that you will need to
456 call C<lvs>.
457
458 =head2 ll
459
460  ll directory
461
462 List the files in C<directory> (relative to the root directory,
463 there is no cwd) in the format of 'ls -la'.
464
465 This command is mostly useful for interactive sessions.  It
466 is I<not> intended that you try to parse the output string.
467
468 =head2 ls
469
470  ls directory
471
472 List the files in C<directory> (relative to the root directory,
473 there is no cwd).  The '.' and '..' entries are not returned, but
474 hidden files are shown.
475
476 This command is mostly useful for interactive sessions.  Programs
477 should probably use C<readdir> instead.
478
479 =head2 lstat
480
481  lstat path
482
483 Returns file information for the given C<path>.
484
485 This is the same as C<stat> except that if C<path>
486 is a symbolic link, then the link is stat-ed, not the file it
487 refers to.
488
489 This is the same as the C<lstat(2)> system call.
490
491 =head2 lvcreate
492
493  lvcreate logvol volgroup mbytes
494
495 This creates an LVM volume group called C<logvol>
496 on the volume group C<volgroup>, with C<size> megabytes.
497
498 =head2 lvm-remove-all
499
500  lvm-remove-all
501
502 This command removes all LVM logical volumes, volume groups
503 and physical volumes.
504
505 B<This command is dangerous.  Without careful use you
506 can easily destroy all your data>.
507
508 =head2 lvs
509
510  lvs
511
512 List all the logical volumes detected.  This is the equivalent
513 of the L<lvs(8)> command.
514
515 This returns a list of the logical volume device names
516 (eg. C</dev/VolGroup00/LogVol00>).
517
518 See also C<lvs_full>.
519
520 =head2 lvs-full
521
522  lvs-full
523
524 List all the logical volumes detected.  This is the equivalent
525 of the L<lvs(8)> command.  The "full" version includes all fields.
526
527 =head2 mkdir
528
529  mkdir path
530
531 Create a directory named C<path>.
532
533 =head2 mkdir-p
534
535  mkdir-p path
536
537 Create a directory named C<path>, creating any parent directories
538 as necessary.  This is like the C<mkdir -p> shell command.
539
540 =head2 mkfs
541
542  mkfs fstype device
543
544 This creates a filesystem on C<device> (usually a partition
545 of LVM logical volume).  The filesystem type is C<fstype>, for
546 example C<ext3>.
547
548 =head2 mount
549
550  mount device mountpoint
551
552 Mount a guest disk at a position in the filesystem.  Block devices
553 are named C</dev/sda>, C</dev/sdb> and so on, as they were added to
554 the guest.  If those block devices contain partitions, they will have
555 the usual names (eg. C</dev/sda1>).  Also LVM C</dev/VG/LV>-style
556 names can be used.
557
558 The rules are the same as for L<mount(2)>:  A filesystem must
559 first be mounted on C</> before others can be mounted.  Other
560 filesystems can only be mounted on directories which already
561 exist.
562
563 The mounted filesystem is writable, if we have sufficient permissions
564 on the underlying device.
565
566 The filesystem options C<sync> and C<noatime> are set with this
567 call, in order to improve reliability.
568
569 =head2 mounts
570
571  mounts
572
573 This returns the list of currently mounted filesystems.  It returns
574 the list of devices (eg. C</dev/sda1>, C</dev/VG/LV>).
575
576 Some internal mounts are not shown.
577
578 =head2 pvcreate
579
580  pvcreate device
581
582 This creates an LVM physical volume on the named C<device>,
583 where C<device> should usually be a partition name such
584 as C</dev/sda1>.
585
586 =head2 pvs
587
588  pvs
589
590 List all the physical volumes detected.  This is the equivalent
591 of the L<pvs(8)> command.
592
593 This returns a list of just the device names that contain
594 PVs (eg. C</dev/sda2>).
595
596 See also C<pvs_full>.
597
598 =head2 pvs-full
599
600  pvs-full
601
602 List all the physical volumes detected.  This is the equivalent
603 of the L<pvs(8)> command.  The "full" version includes all fields.
604
605 =head2 read-lines
606
607  read-lines path
608
609 Return the contents of the file named C<path>.
610
611 The file contents are returned as a list of lines.  Trailing
612 C<LF> and C<CRLF> character sequences are I<not> returned.
613
614 Note that this function cannot correctly handle binary files
615 (specifically, files containing C<\0> character which is treated
616 as end of line).  For those you need to use the C<read_file>
617 function which has a more complex interface.
618
619 =head2 rm
620
621  rm path
622
623 Remove the single file C<path>.
624
625 =head2 rm-rf
626
627  rm-rf path
628
629 Remove the file or directory C<path>, recursively removing the
630 contents if its a directory.  This is like the C<rm -rf> shell
631 command.
632
633 =head2 rmdir
634
635  rmdir path
636
637 Remove the single directory C<path>.
638
639 =head2 set-autosync | autosync
640
641  set-autosync true|false
642
643 If C<autosync> is true, this enables autosync.  Libguestfs will make a
644 best effort attempt to run C<sync> when the handle is closed
645 (also if the program exits without closing handles).
646
647 =head2 set-path | path
648
649  set-path path
650
651 Set the path that libguestfs searches for kernel and initrd.img.
652
653 The default is C<$libdir/guestfs> unless overridden by setting
654 C<LIBGUESTFS_PATH> environment variable.
655
656 The string C<path> is stashed in the libguestfs handle, so the caller
657 must make sure it remains valid for the lifetime of the handle.
658
659 Setting C<path> to C<NULL> restores the default path.
660
661 =head2 set-verbose | verbose
662
663  set-verbose true|false
664
665 If C<verbose> is true, this turns on verbose messages (to C<stderr>).
666
667 Verbose messages are disabled unless the environment variable
668 C<LIBGUESTFS_DEBUG> is defined and set to C<1>.
669
670 =head2 sfdisk
671
672  sfdisk device cyls heads sectors lines,...
673
674 This is a direct interface to the L<sfdisk(8)> program for creating
675 partitions on block devices.
676
677 C<device> should be a block device, for example C</dev/sda>.
678
679 C<cyls>, C<heads> and C<sectors> are the number of cylinders, heads
680 and sectors on the device, which are passed directly to sfdisk as
681 the I<-C>, I<-H> and I<-S> parameters.  If you pass C<0> for any
682 of these, then the corresponding parameter is omitted.  Usually for
683 'large' disks, you can just pass C<0> for these, but for small
684 (floppy-sized) disks, sfdisk (or rather, the kernel) cannot work
685 out the right geometry and you will need to tell it.
686
687 C<lines> is a list of lines that we feed to C<sfdisk>.  For more
688 information refer to the L<sfdisk(8)> manpage.
689
690 To create a single partition occupying the whole disk, you would
691 pass C<lines> as a single element list, when the single element being
692 the string C<,> (comma).
693
694 B<This command is dangerous.  Without careful use you
695 can easily destroy all your data>.
696
697 =head2 stat
698
699  stat path
700
701 Returns file information for the given C<path>.
702
703 This is the same as the C<stat(2)> system call.
704
705 =head2 statvfs
706
707  statvfs path
708
709 Returns file system statistics for any mounted file system.
710 C<path> should be a file or directory in the mounted file system
711 (typically it is the mount point itself, but it doesn't need to be).
712
713 This is the same as the C<statvfs(2)> system call.
714
715 =head2 sync
716
717  sync
718
719 This syncs the disk, so that any writes are flushed through to the
720 underlying disk image.
721
722 You should always call this if you have modified a disk image, before
723 closing the handle.
724
725 =head2 touch
726
727  touch path
728
729 Touch acts like the L<touch(1)> command.  It can be used to
730 update the timestamps on a file, or, if the file does not exist,
731 to create a new zero-length file.
732
733 =head2 tune2fs-l
734
735  tune2fs-l device
736
737 This returns the contents of the ext2 or ext3 filesystem superblock
738 on C<device>.
739
740 It is the same as running C<tune2fs -l device>.  See L<tune2fs(8)>
741 manpage for more details.  The list of fields returned isn't
742 clearly defined, and depends on both the version of C<tune2fs>
743 that libguestfs was built against, and the filesystem itself.
744
745 =head2 umount | unmount
746
747  umount pathordevice
748
749 This unmounts the given filesystem.  The filesystem may be
750 specified either by its mountpoint (path) or the device which
751 contains the filesystem.
752
753 =head2 umount-all | unmount-all
754
755  umount-all
756
757 This unmounts all mounted filesystems.
758
759 Some internal mounts are not unmounted by this call.
760
761 =head2 vgcreate
762
763  vgcreate volgroup physvols,...
764
765 This creates an LVM volume group called C<volgroup>
766 from the non-empty list of physical volumes C<physvols>.
767
768 =head2 vgs
769
770  vgs
771
772 List all the volumes groups detected.  This is the equivalent
773 of the L<vgs(8)> command.
774
775 This returns a list of just the volume group names that were
776 detected (eg. C<VolGroup00>).
777
778 See also C<vgs_full>.
779
780 =head2 vgs-full
781
782  vgs-full
783
784 List all the volumes groups detected.  This is the equivalent
785 of the L<vgs(8)> command.  The "full" version includes all fields.
786
787 =head2 write-file
788
789  write-file path content size
790
791 This call creates a file called C<path>.  The contents of the
792 file is the string C<content> (which can contain any 8 bit data),
793 with length C<size>.
794
795 As a special case, if C<size> is C<0>
796 then the length is calculated using C<strlen> (so in this case
797 the content cannot contain embedded ASCII NULs).
798
799 Because of the message protocol, there is a transfer limit 
800 of somewhere between 2MB and 4MB.  To transfer large files you should use
801 FTP.
802