msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: libguestfs@redhat.com\n"
-"POT-Creation-Date: 2010-11-17 20:52+0000\n"
+"POT-Creation-Date: 2010-11-26 17:27+0000\n"
"PO-Revision-Date: 2010-09-02 14:46+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
# type: =encoding
#: ../src/guestfs.pod:1 ../fish/guestfish.pod:1
#: ../test-tool/libguestfs-test-tool.pod:1 ../fuse/guestmount.pod:1
-#: ../inspector/virt-inspector.pl:31 ../tools/virt-edit.pl:30
-#: ../tools/virt-win-reg.pl:33 ../tools/virt-df.pl:32 ../tools/virt-ls.pl:30
+#: ../tools/virt-edit.pl:30 ../tools/virt-win-reg.pl:33
#: ../tools/virt-resize.pl:38 ../tools/virt-list-filesystems.pl:28
-#: ../tools/virt-tar.pl:29 ../tools/virt-rescue.pl:29
-#: ../tools/virt-make-fs.pl:33 ../tools/virt-list-partitions.pl:28
+#: ../tools/virt-tar.pl:29 ../tools/virt-make-fs.pl:33
+#: ../tools/virt-list-partitions.pl:28
msgid "utf8"
msgstr ""
# type: =head1
#: ../src/guestfs.pod:3 ../fish/guestfish.pod:3
#: ../test-tool/libguestfs-test-tool.pod:3 ../fuse/guestmount.pod:3
-#: ../inspector/virt-inspector.pl:33 ../tools/virt-edit.pl:32
-#: ../tools/virt-win-reg.pl:35 ../tools/virt-df.pl:34 ../tools/virt-ls.pl:32
+#: ../tools/virt-edit.pl:32 ../tools/virt-win-reg.pl:35
#: ../tools/virt-resize.pl:40 ../tools/virt-list-filesystems.pl:30
-#: ../tools/virt-tar.pl:31 ../tools/virt-rescue.pl:31
-#: ../tools/virt-make-fs.pl:35 ../tools/virt-list-partitions.pl:30
+#: ../tools/virt-tar.pl:31 ../tools/virt-make-fs.pl:35
+#: ../tools/virt-list-partitions.pl:30
msgid "NAME"
msgstr "名前"
# type: =head1
#: ../src/guestfs.pod:7 ../fish/guestfish.pod:7
#: ../test-tool/libguestfs-test-tool.pod:7 ../fuse/guestmount.pod:7
-#: ../inspector/virt-inspector.pl:37 ../tools/virt-edit.pl:36
-#: ../tools/virt-win-reg.pl:39 ../tools/virt-df.pl:38 ../tools/virt-ls.pl:36
+#: ../tools/virt-edit.pl:36 ../tools/virt-win-reg.pl:39
#: ../tools/virt-resize.pl:44 ../tools/virt-list-filesystems.pl:34
-#: ../tools/virt-tar.pl:35 ../tools/virt-rescue.pl:35
-#: ../tools/virt-make-fs.pl:39 ../tools/virt-list-partitions.pl:34
+#: ../tools/virt-tar.pl:35 ../tools/virt-make-fs.pl:39
+#: ../tools/virt-list-partitions.pl:34
msgid "SYNOPSIS"
msgstr ""
# type: =head1
#: ../src/guestfs.pod:24 ../fish/guestfish.pod:30
#: ../test-tool/libguestfs-test-tool.pod:11 ../fuse/guestmount.pod:20
-#: ../inspector/virt-inspector.pl:43 ../tools/virt-edit.pl:50
-#: ../tools/virt-win-reg.pl:63 ../tools/virt-df.pl:46 ../tools/virt-ls.pl:42
+#: ../tools/virt-edit.pl:50 ../tools/virt-win-reg.pl:63
#: ../tools/virt-resize.pl:50 ../tools/virt-list-filesystems.pl:40
-#: ../tools/virt-tar.pl:72 ../tools/virt-rescue.pl:51
-#: ../tools/virt-make-fs.pl:47 ../tools/virt-list-partitions.pl:40
+#: ../tools/virt-tar.pl:72 ../tools/virt-make-fs.pl:47
+#: ../tools/virt-list-partitions.pl:40
msgid "DESCRIPTION"
msgstr ""
"introduction, please read the L</API OVERVIEW> section next."
msgstr ""
-# type: =head1
+# type: textblock
#: ../src/guestfs.pod:55
+msgid ""
+"There are also some example programs in the L<guestfs-examples(3)> manual "
+"page."
+msgstr ""
+
+# type: =head1
+#: ../src/guestfs.pod:58
msgid "API OVERVIEW"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:57
+#: ../src/guestfs.pod:60
msgid ""
"This section provides a gentler overview of the libguestfs API. We also try "
"to group API calls together, where that may not be obvious from reading "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:62
+#: ../src/guestfs.pod:65
msgid "HANDLES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:64
+#: ../src/guestfs.pod:67
msgid ""
"Before you can use libguestfs calls, you have to create a handle. Then you "
"must add at least one disk image to the handle, followed by launching the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:71
+#: ../src/guestfs.pod:74
msgid "The general structure of all libguestfs-using programs looks like this:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:74
+#: ../src/guestfs.pod:77
#, no-wrap
msgid ""
" guestfs_h *g = guestfs_create ();\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:76
+#: ../src/guestfs.pod:79
#, no-wrap
msgid ""
" /* Call guestfs_add_drive additional times if there are\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:81
+#: ../src/guestfs.pod:84
#, no-wrap
msgid ""
" /* Most manipulation calls won't work until you've launched\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:87
+#: ../src/guestfs.pod:90
#, no-wrap
msgid ""
" /* Now you can examine what partitions, LVs etc are available.\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:92
+#: ../src/guestfs.pod:95
#, no-wrap
msgid ""
" /* To access a filesystem in the image, you must mount it.\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:96
+#: ../src/guestfs.pod:99
#, no-wrap
msgid ""
" /* Now you can perform filesystem actions on the guest\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:101
+#: ../src/guestfs.pod:104
#, no-wrap
msgid ""
" /* You only need to call guestfs_sync if you have made\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:108
+#: ../src/guestfs.pod:111
#, no-wrap
msgid ""
" /* Close the handle 'g'. */\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:111
+#: ../src/guestfs.pod:114
msgid ""
"The code above doesn't include any error checking. In real code you should "
"check return values carefully for errors. In general all functions that "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:119
+#: ../src/guestfs.pod:122
msgid "DISK IMAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:121
+#: ../src/guestfs.pod:124
msgid ""
"The image filename (C<\"guest.img\"> in the example above) could be a disk "
"image from a virtual machine, a L<dd(1)> copy of a physical hard disk, an "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:127
+#: ../src/guestfs.pod:130
msgid ""
"The call you should use in modern code for adding drives is L</"
"guestfs_add_drive_opts>. To add a disk image, allowing writes, and "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:131
+#: ../src/guestfs.pod:134
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:135
+#: ../src/guestfs.pod:138
msgid "You can add a disk read-only using:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:137
+#: ../src/guestfs.pod:140
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:142
+#: ../src/guestfs.pod:145
msgid ""
"or by calling the older function L</guestfs_add_drive_ro>. In either case "
"libguestfs won't modify the file."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:145
+#: ../src/guestfs.pod:148
msgid ""
"Be extremely cautious if the disk image is in use, eg. if it is being used "
"by a virtual machine. Adding it read-write will almost certainly cause disk "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:149
+#: ../src/guestfs.pod:152
msgid ""
"You must add at least one disk image, and you may add multiple disk images. "
"In the API, the disk images are usually referred to as C</dev/sda> (for the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:154
+#: ../src/guestfs.pod:157
msgid ""
"Once L</guestfs_launch> has been called you cannot add any more images. You "
"can call L</guestfs_list_devices> to get a list of the device names, in the "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:159
+#: ../src/guestfs.pod:162
msgid "MOUNTING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:161
+#: ../src/guestfs.pod:164
msgid ""
"Before you can read or write files, create directories and so on in a disk "
"image that contains filesystems, you have to mount those filesystems using "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:167
+#: ../src/guestfs.pod:170
#, no-wrap
msgid ""
" guestfs_mount (g, \"/dev/sda1\", \"/\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:169
+#: ../src/guestfs.pod:172
msgid ""
"where C</dev/sda1> means literally the first partition (C<1>) of the first "
"disk image that we added (C</dev/sda>). If the disk contains Linux LVM2 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:173
+#: ../src/guestfs.pod:176
msgid ""
"If you are given a disk image and you don't know what it contains then you "
"have to find out. Libguestfs can do that too: use L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:183
+#: ../src/guestfs.pod:186
msgid ""
"To mount a disk image read-only, use L</guestfs_mount_ro>. There are "
"several other variations of the C<guestfs_mount_*> call."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:186
+#: ../src/guestfs.pod:189
msgid "FILESYSTEM ACCESS AND MODIFICATION"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:188
+#: ../src/guestfs.pod:191
msgid ""
"The majority of the libguestfs API consists of fairly low-level calls for "
"accessing and modifying the files, directories, symlinks etc on mounted "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:194
+#: ../src/guestfs.pod:197
msgid ""
"Specify filenames as full paths, starting with C<\"/\"> and including the "
"mount point."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:197
+#: ../src/guestfs.pod:200
msgid ""
"For example, if you mounted a filesystem at C<\"/\"> and you want to read "
"the file called C<\"etc/passwd\"> then you could do:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:200
+#: ../src/guestfs.pod:203
#, no-wrap
msgid ""
" char *data = guestfs_cat (g, \"/etc/passwd\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:202
+#: ../src/guestfs.pod:205
msgid ""
"This would return C<data> as a newly allocated buffer containing the full "
"content of that file (with some conditions: see also L</DOWNLOADING> below), "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:206
+#: ../src/guestfs.pod:209
msgid ""
"As another example, to create a top-level directory on that filesystem "
"called C<\"var\"> you would do:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:209
+#: ../src/guestfs.pod:212
#, no-wrap
msgid ""
" guestfs_mkdir (g, \"/var\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:211
+#: ../src/guestfs.pod:214
msgid "To create a symlink you could do:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:213
+#: ../src/guestfs.pod:216
#, no-wrap
msgid ""
" guestfs_ln_s (g, \"/etc/init.d/portmap\",\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:216
+#: ../src/guestfs.pod:219
msgid ""
"Libguestfs will reject attempts to use relative paths and there is no "
"concept of a current working directory."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:219
+#: ../src/guestfs.pod:222
msgid ""
"Libguestfs can return errors in many situations: for example if the "
"filesystem isn't writable, or if a file or directory that you requested "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:225
+#: ../src/guestfs.pod:228
msgid ""
"File writes are affected by the per-handle umask, set by calling L</"
"guestfs_umask> and defaulting to 022. See L</UMASK>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:228
+#: ../src/guestfs.pod:231
msgid "PARTITIONING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:230
+#: ../src/guestfs.pod:233
msgid ""
"Libguestfs contains API calls to read, create and modify partition tables on "
"disk images."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:233
+#: ../src/guestfs.pod:236
msgid ""
"In the common case where you want to create a single partition covering the "
"whole disk, you should use the L</guestfs_part_disk> call:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:237
+#: ../src/guestfs.pod:240
#, no-wrap
msgid ""
" const char *parttype = \"mbr\";\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:242
+#: ../src/guestfs.pod:245
msgid ""
"Obviously this effectively wipes anything that was on that disk image before."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:245
+#: ../src/guestfs.pod:248
msgid "LVM2"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:247
+#: ../src/guestfs.pod:250
msgid ""
"Libguestfs provides access to a large part of the LVM2 API, such as L</"
"guestfs_lvcreate> and L</guestfs_vgremove>. It won't make much sense unless "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:252
+#: ../src/guestfs.pod:255
msgid ""
"This author strongly recommends reading the LVM HOWTO, online at L<http://"
"tldp.org/HOWTO/LVM-HOWTO/>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:255
+#: ../src/guestfs.pod:258
msgid "DOWNLOADING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:257
+#: ../src/guestfs.pod:260
msgid ""
"Use L</guestfs_cat> to download small, text only files. This call is "
"limited to files which are less than 2 MB and which cannot contain any ASCII "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:262
+#: ../src/guestfs.pod:265
msgid ""
"L</guestfs_read_file> can be used to read files which contain arbitrary 8 "
"bit data, since it returns a (pointer, size) pair. However it is still "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:266
+#: ../src/guestfs.pod:269
msgid ""
"L</guestfs_download> can be used to download any file, with no limits on "
"content or size (even files larger than 4 GB)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:269
+#: ../src/guestfs.pod:272
msgid ""
"To download multiple files, see L</guestfs_tar_out> and L</guestfs_tgz_out>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:272
+#: ../src/guestfs.pod:275
msgid "UPLOADING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:274
+#: ../src/guestfs.pod:277
msgid ""
"It's often the case that you want to write a file or files to the disk image."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:277
+#: ../src/guestfs.pod:280
msgid ""
"To write a small file with fixed content, use L</guestfs_write>. To create "
"a file of all zeroes, use L</guestfs_truncate_size> (sparse) or L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:283
+#: ../src/guestfs.pod:286
msgid ""
"To upload a single file, use L</guestfs_upload>. This call has no limits on "
"file content or size (even files larger than 4 GB)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:286
+#: ../src/guestfs.pod:289
msgid ""
"To upload multiple files, see L</guestfs_tar_in> and L</guestfs_tgz_in>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:288
+#: ../src/guestfs.pod:291
msgid ""
"However the fastest way to upload I<large numbers of arbitrary files> is to "
"turn them into a squashfs or CD ISO (see L<mksquashfs(8)> and L<mkisofs(8)"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:299
+#: ../src/guestfs.pod:302
msgid "COPYING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:301
+#: ../src/guestfs.pod:304
msgid ""
"There are various different commands for copying between files and devices "
"and in and out of the guest filesystem. These are summarised in the table "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:307
+#: ../src/guestfs.pod:310
msgid "B<file> to B<file>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:309
+#: ../src/guestfs.pod:312
msgid ""
"Use L</guestfs_cp> to copy a single file, or L</guestfs_cp_a> to copy "
"directories recursively."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:312
+#: ../src/guestfs.pod:315
msgid "B<file or device> to B<file or device>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:314
+#: ../src/guestfs.pod:317
msgid ""
"Use L</guestfs_dd> which efficiently uses L<dd(1)> to copy between files and "
"devices in the guest."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:317
+#: ../src/guestfs.pod:320
msgid "Example: duplicate the contents of an LV:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:319
+#: ../src/guestfs.pod:322
#, no-wrap
msgid ""
" guestfs_dd (g, \"/dev/VG/Original\", \"/dev/VG/Copy\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:321
+#: ../src/guestfs.pod:324
msgid ""
"The destination (C</dev/VG/Copy>) must be at least as large as the source "
"(C</dev/VG/Original>). To copy less than the whole source device, use L</"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:325
+#: ../src/guestfs.pod:328
msgid "B<file on the host> to B<file or device>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:327
+#: ../src/guestfs.pod:330
msgid "Use L</guestfs_upload>. See L</UPLOADING> above."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:329
+#: ../src/guestfs.pod:332
msgid "B<file or device> to B<file on the host>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:331
+#: ../src/guestfs.pod:334
msgid "Use L</guestfs_download>. See L</DOWNLOADING> above."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:335
+#: ../src/guestfs.pod:338
msgid "LISTING FILES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:337
+#: ../src/guestfs.pod:340
msgid ""
"L</guestfs_ll> is just designed for humans to read (mainly when using the "
"L<guestfish(1)>-equivalent command C<ll>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:340
+#: ../src/guestfs.pod:343
msgid ""
"L</guestfs_ls> is a quick way to get a list of files in a directory from "
"programs, as a flat list of strings."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:343
+#: ../src/guestfs.pod:346
msgid ""
"L</guestfs_readdir> is a programmatic way to get a list of files in a "
"directory, plus additional information about each one. It is more "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:347
+#: ../src/guestfs.pod:350
msgid ""
"L</guestfs_find> and L</guestfs_find0> can be used to recursively list files."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:350
+#: ../src/guestfs.pod:353
msgid "RUNNING COMMANDS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:352
+#: ../src/guestfs.pod:355
msgid ""
"Although libguestfs is primarily an API for manipulating files inside guest "
"images, we also provide some limited facilities for running commands inside "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:356
+#: ../src/guestfs.pod:359
msgid "There are many limitations to this:"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:360 ../src/guestfs.pod:365 ../src/guestfs.pod:370
-#: ../src/guestfs.pod:374 ../src/guestfs.pod:379 ../src/guestfs.pod:383
-#: ../src/guestfs.pod:388 ../src/guestfs.pod:393 ../src/guestfs.pod:957
-#: ../src/guestfs.pod:961 ../src/guestfs.pod:965 ../src/guestfs.pod:970
-#: ../src/guestfs.pod:978 ../src/guestfs.pod:997 ../src/guestfs.pod:1005
-#: ../src/guestfs.pod:1027 ../src/guestfs.pod:1031 ../src/guestfs.pod:1035
-#: ../src/guestfs.pod:1039 ../src/guestfs.pod:1043 ../src/guestfs.pod:1047
-#: ../src/guestfs.pod:1529 ../src/guestfs.pod:1534 ../src/guestfs.pod:1538
-#: ../src/guestfs.pod:1648 ../src/guestfs.pod:1653 ../src/guestfs.pod:1657
-#: ../src/guestfs.pod:2001 ../src/guestfs.pod:2007 ../src/guestfs.pod:2012
-#: ../src/guestfs.pod:2018 ../src/guestfs.pod:2125 ../src/guestfs.pod:2129
-#: ../src/guestfs.pod:2133 ../src/guestfs.pod:2137
+#: ../src/guestfs.pod:363 ../src/guestfs.pod:368 ../src/guestfs.pod:373
+#: ../src/guestfs.pod:377 ../src/guestfs.pod:382 ../src/guestfs.pod:386
+#: ../src/guestfs.pod:391 ../src/guestfs.pod:396 ../src/guestfs.pod:955
+#: ../src/guestfs.pod:959 ../src/guestfs.pod:963 ../src/guestfs.pod:968
+#: ../src/guestfs.pod:976 ../src/guestfs.pod:995 ../src/guestfs.pod:1003
+#: ../src/guestfs.pod:1025 ../src/guestfs.pod:1029 ../src/guestfs.pod:1033
+#: ../src/guestfs.pod:1037 ../src/guestfs.pod:1041 ../src/guestfs.pod:1045
+#: ../src/guestfs.pod:1527 ../src/guestfs.pod:1532 ../src/guestfs.pod:1536
+#: ../src/guestfs.pod:1646 ../src/guestfs.pod:1651 ../src/guestfs.pod:1655
+#: ../src/guestfs.pod:1999 ../src/guestfs.pod:2005 ../src/guestfs.pod:2010
+#: ../src/guestfs.pod:2016 ../src/guestfs.pod:2128 ../src/guestfs.pod:2132
+#: ../src/guestfs.pod:2136 ../src/guestfs.pod:2140
#: ../src/guestfs-actions.pod:15 ../src/guestfs-actions.pod:22
#: ../src/guestfs-actions.pod:569 ../src/guestfs-actions.pod:577
#: ../src/guestfs-actions.pod:584 ../src/guestfs-actions.pod:591
#: ../src/guestfs-actions.pod:1771 ../src/guestfs-actions.pod:1775
#: ../src/guestfs-actions.pod:1780 ../src/guestfs-actions.pod:1785
#: ../src/guestfs-actions.pod:1846 ../src/guestfs-actions.pod:1850
-#: ../src/guestfs-actions.pod:1855 ../fish/guestfish.pod:376
-#: ../fish/guestfish.pod:380 ../fish/guestfish.pod:384
-#: ../fish/guestfish.pod:388 ../fish/guestfish-actions.pod:13
+#: ../src/guestfs-actions.pod:1855 ../fish/guestfish.pod:377
+#: ../fish/guestfish.pod:381 ../fish/guestfish.pod:385
+#: ../fish/guestfish.pod:389 ../fish/guestfish-actions.pod:13
#: ../fish/guestfish-actions.pod:20 ../fish/guestfish-actions.pod:375
#: ../fish/guestfish-actions.pod:383 ../fish/guestfish-actions.pod:390
#: ../fish/guestfish-actions.pod:397 ../fish/guestfish-actions.pod:1067
#: ../fish/guestfish-actions.pod:1207 ../fish/guestfish-actions.pod:1212
#: ../fish/guestfish-actions.pod:1217 ../fish/guestfish-actions.pod:1259
#: ../fish/guestfish-actions.pod:1263 ../fish/guestfish-actions.pod:1268
-#: ../inspector/virt-inspector.pl:466 ../inspector/virt-inspector.pl:470
-#: ../tools/virt-df.pl:161 ../tools/virt-df.pl:167 ../tools/virt-resize.pl:348
-#: ../tools/virt-resize.pl:353 ../tools/virt-resize.pl:363
+#: ../tools/virt-resize.pl:347 ../tools/virt-resize.pl:352
+#: ../tools/virt-resize.pl:362
msgid "*"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:362
+#: ../src/guestfs.pod:365
msgid ""
"The kernel version that the command runs under will be different from what "
"it expects."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:367
+#: ../src/guestfs.pod:370
msgid ""
"If the command needs to communicate with daemons, then most likely they "
"won't be running."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:372
+#: ../src/guestfs.pod:375
msgid "The command will be running in limited memory."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:376
+#: ../src/guestfs.pod:379
msgid ""
"The network may not be available unless you enable it (see L</"
"guestfs_set_network>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:381
+#: ../src/guestfs.pod:384
msgid "Only supports Linux guests (not Windows, BSD, etc)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:385
+#: ../src/guestfs.pod:388
msgid ""
"Architecture limitations (eg. won't work for a PPC guest on an X86 host)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:390
+#: ../src/guestfs.pod:393
msgid ""
"For SELinux guests, you may need to enable SELinux and load policy first. "
"See L</SELINUX> in this manpage."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:395
+#: ../src/guestfs.pod:398
msgid ""
"I<Security:> It is not safe to run commands from untrusted, possibly "
"malicious guests. These commands may attempt to exploit your program by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:404
+#: ../src/guestfs.pod:407
msgid ""
"A secure alternative is to use libguestfs to install a \"firstboot\" script "
"(a script which runs when the guest next boots normally), and to have this "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:412
+#: ../src/guestfs.pod:415
msgid ""
"The two main API calls to run commands are L</guestfs_command> and L</"
"guestfs_sh> (there are also variations)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:415
+#: ../src/guestfs.pod:418
msgid ""
"The difference is that L</guestfs_sh> runs commands using the shell, so any "
"shell globs, redirections, etc will work."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:418
+#: ../src/guestfs.pod:421
msgid "CONFIGURATION FILES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:420
+#: ../src/guestfs.pod:423
msgid ""
"To read and write configuration files in Linux guest filesystems, we "
"strongly recommend using Augeas. For example, Augeas understands how to "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:425
+#: ../src/guestfs.pod:428
msgid ""
"The main Augeas calls are bound through the C<guestfs_aug_*> APIs. We don't "
"document Augeas itself here because there is excellent documentation on the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:429
+#: ../src/guestfs.pod:432
msgid ""
"If you don't want to use Augeas (you fool!) then try calling L</"
"guestfs_read_lines> to get the file as a list of lines which you can iterate "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:433
+#: ../src/guestfs.pod:436
msgid "SELINUX"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:435
+#: ../src/guestfs.pod:438
msgid ""
"We support SELinux guests. To ensure that labeling happens correctly in "
"SELinux guests, you need to enable SELinux and load the guest's policy:"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:441 ../src/guestfs.pod:1150 ../src/guestfs.pod:1281
+#: ../src/guestfs.pod:444 ../src/guestfs.pod:1148 ../src/guestfs.pod:1279
msgid "1."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:443
+#: ../src/guestfs.pod:446
msgid "Before launching, do:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:445
+#: ../src/guestfs.pod:448
#, no-wrap
msgid ""
" guestfs_set_selinux (g, 1);\n"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:447 ../src/guestfs.pod:1154 ../src/guestfs.pod:1285
+#: ../src/guestfs.pod:450 ../src/guestfs.pod:1152 ../src/guestfs.pod:1283
msgid "2."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:449
+#: ../src/guestfs.pod:452
msgid ""
"After mounting the guest's filesystem(s), load the policy. This is best "
"done by running the L<load_policy(8)> command in the guest itself:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:453
+#: ../src/guestfs.pod:456
#, no-wrap
msgid ""
" guestfs_sh (g, \"/usr/sbin/load_policy\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:455
+#: ../src/guestfs.pod:458
msgid ""
"(Older versions of C<load_policy> require you to specify the name of the "
"policy file)."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:458 ../src/guestfs.pod:1291
+#: ../src/guestfs.pod:461 ../src/guestfs.pod:1289
msgid "3."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:460
+#: ../src/guestfs.pod:463
msgid ""
"Optionally, set the security context for the API. The correct security "
"context to use can only be known by inspecting the guest. As an example:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:464
+#: ../src/guestfs.pod:467
#, no-wrap
msgid ""
" guestfs_setcon (g, \"unconfined_u:unconfined_r:unconfined_t:s0\");\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:468
+#: ../src/guestfs.pod:471
msgid "This will work for running commands and editing existing files."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:470
+#: ../src/guestfs.pod:473
msgid ""
"When new files are created, you may need to label them explicitly, for "
"example by running the external command C<restorecon pathname>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:474
+#: ../src/guestfs.pod:477
msgid "UMASK"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:476
+#: ../src/guestfs.pod:479
msgid ""
"Certain calls are affected by the current file mode creation mask (the "
"\"umask\"). In particular ones which create files or directories, such as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:482
+#: ../src/guestfs.pod:485
msgid ""
"The default umask is C<022>, so files are created with modes such as C<0644> "
"and directories with C<0755>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:485
+#: ../src/guestfs.pod:488
msgid ""
"There are two ways to avoid being affected by umask. Either set umask to 0 "
"(call C<guestfs_umask (g, 0)> early after launching). Or call L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:489
+#: ../src/guestfs.pod:492
msgid "For more information about umask, see L<umask(2)>."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:491 ../fish/guestfish.pod:669
+#: ../src/guestfs.pod:494 ../fish/guestfish.pod:670
msgid "ENCRYPTED DISKS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:493
+#: ../src/guestfs.pod:496
msgid ""
"Libguestfs allows you to access Linux guests which have been encrypted using "
"whole disk encryption that conforms to the Linux Unified Key Setup (LUKS) "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:499
+#: ../src/guestfs.pod:502
msgid ""
"Use L</guestfs_vfs_type> to identify LUKS-encrypted block devices (it "
"returns the string C<crypto_LUKS>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:502
+#: ../src/guestfs.pod:505
msgid ""
"Then open these devices by calling L</guestfs_luks_open>. Obviously you "
"will require the passphrase!"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:505
+#: ../src/guestfs.pod:508
msgid ""
"Opening a LUKS device creates a new device mapper device called C</dev/"
"mapper/mapname> (where C<mapname> is the string you supply to L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:511
+#: ../src/guestfs.pod:514
msgid ""
"LVM volume groups on the device can be made visible by calling L</"
"guestfs_vgscan> followed by L</guestfs_vg_activate_all>. The logical volume"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:515
+#: ../src/guestfs.pod:518
msgid ""
"Use the reverse process to close a LUKS device. Unmount any logical volumes "
"on it, deactivate the volume groups by caling C<guestfs_vg_activate (g, 0, "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:522
+#: ../src/guestfs.pod:525
msgid "INSPECTION"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:524
+#: ../src/guestfs.pod:527
msgid ""
"Libguestfs has APIs for inspecting an unknown disk image to find out if it "
"contains operating systems. (These APIs used to be in a separate Perl-only "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:530
+#: ../src/guestfs.pod:533
msgid ""
"Add all disks belonging to the unknown virtual machine and call L</"
"guestfs_launch> in the usual way."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:533
+#: ../src/guestfs.pod:536
msgid ""
"Then call L</guestfs_inspect_os>. This function uses other libguestfs calls "
"and certain heuristics, and returns a list of operating systems that were "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:542
+#: ../src/guestfs.pod:545
msgid ""
"For each root, you can then call various C<guestfs_inspect_get_*> functions "
"to get additional details about that operating system. For example, call L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:548
+#: ../src/guestfs.pod:551
msgid ""
"Un*x-like and Linux-based operating systems usually consist of several "
"filesystems which are mounted at boot time (for example, a separate boot "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:555
+#: ../src/guestfs.pod:558
#, no-wrap
msgid ""
" /boot => /dev/sda1\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:559
+#: ../src/guestfs.pod:562
msgid ""
"The caller can then make calls to L</guestfs_mount_options> to mount the "
"filesystems as suggested."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:562
+#: ../src/guestfs.pod:565
msgid ""
"Be careful to mount filesystems in the right order (eg. C</> before C</"
"usr>). Sorting the keys of the hash by length, shortest first, should work."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:566
+#: ../src/guestfs.pod:569
msgid ""
"Inspection currently only works for some common operating systems. "
"Contributors are welcome to send patches for other operating systems that we "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:570
+#: ../src/guestfs.pod:573
msgid ""
"Encrypted disks must be opened before inspection. See L</ENCRYPTED DISKS> "
"for more details. The L</guestfs_inspect_os> function just ignores any "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:574
+#: ../src/guestfs.pod:577
msgid ""
"A note on the implementation: The call L</guestfs_inspect_os> performs "
"inspection and caches the results in the guest handle. Subsequent calls to "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:583
+#: ../src/guestfs.pod:586
msgid "SPECIAL CONSIDERATIONS FOR WINDOWS GUESTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:585
+#: ../src/guestfs.pod:588
msgid ""
"Libguestfs can mount NTFS partitions. It does this using the L<http://www."
"ntfs-3g.org/> driver."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:588
+#: ../src/guestfs.pod:591
msgid ""
"DOS and Windows still use drive letters, and the filesystems are always "
"treated as case insensitive by Windows itself, and therefore you might find "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:594
+#: ../src/guestfs.pod:597
msgid ""
"Drive letter mappings are outside the scope of libguestfs. You have to use "
"libguestfs to read the appropriate Windows Registry and configuration files, "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:599
+#: ../src/guestfs.pod:602
msgid ""
"Replacing backslash characters with forward slash characters is also outside "
"the scope of libguestfs, but something that you can easily do."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:602
+#: ../src/guestfs.pod:605
msgid ""
"Where we can help is in resolving the case insensitivity of paths. For "
"this, call L</guestfs_case_sensitive_path>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:605
+#: ../src/guestfs.pod:608
msgid ""
"Libguestfs also provides some help for decoding Windows Registry \"hive\" "
"files, through the library C<hivex> which is part of the libguestfs project "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:613
+#: ../src/guestfs.pod:616
msgid "USING LIBGUESTFS WITH OTHER PROGRAMMING LANGUAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:615
+#: ../src/guestfs.pod:618
msgid ""
"Although we don't want to discourage you from using the C API, we will "
"mention here that the same API is also available in other languages."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:618
+#: ../src/guestfs.pod:621
msgid ""
"The API is broadly identical in all supported languages. This means that "
"the C call C<guestfs_mount(g,path)> is C<$g-E<gt>mount($path)> in Perl, C<g."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:624
+#: ../src/guestfs.pod:627
msgid ""
"Error messages are automatically transformed into exceptions if the language "
"supports it."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:627
+#: ../src/guestfs.pod:630
msgid ""
"We don't try to \"object orientify\" parts of the API in OO languages, "
"although contributors are welcome to write higher level APIs above what we "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:633
+#: ../src/guestfs.pod:636
msgid "B<C++>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:635
+#: ../src/guestfs.pod:638
msgid ""
"You can use the I<guestfs.h> header file from C++ programs. The C++ API is "
"identical to the C API. C++ classes and exceptions are not used."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:639
+#: ../src/guestfs.pod:642
msgid "B<C#>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:641
+#: ../src/guestfs.pod:644
msgid ""
"The C# bindings are highly experimental. Please read the warnings at the "
"top of C<csharp/Libguestfs.cs>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:644
+#: ../src/guestfs.pod:647
msgid "B<Haskell>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:646
+#: ../src/guestfs.pod:649
msgid ""
"This is the only language binding that is working but incomplete. Only "
"calls which return simple integers have been bound in Haskell, and we are "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:650
+#: ../src/guestfs.pod:653
msgid "B<Java>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:652
+#: ../src/guestfs.pod:655
msgid ""
"Full documentation is contained in the Javadoc which is distributed with "
"libguestfs."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:655
+#: ../src/guestfs.pod:658
msgid "B<OCaml>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:657
-msgid "For documentation see the file C<guestfs.mli>."
+#: ../src/guestfs.pod:660
+msgid "For documentation see L<guestfs-ocaml(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:659
+#: ../src/guestfs.pod:662
msgid "B<Perl>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:661
+#: ../src/guestfs.pod:664
msgid "For documentation see L<Sys::Guestfs(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:663
+#: ../src/guestfs.pod:666
msgid "B<PHP>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:665
+#: ../src/guestfs.pod:668
msgid ""
"For documentation see C<README-PHP> supplied with libguestfs sources or in "
"the php-libguestfs package for your distribution."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:668
+#: ../src/guestfs.pod:671
msgid "The PHP binding only works correctly on 64 bit machines."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:670
+#: ../src/guestfs.pod:673
msgid "B<Python>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:672
-msgid "For documentation do:"
-msgstr ""
-
-# type: verbatim
-#: ../src/guestfs.pod:674
-#, no-wrap
-msgid ""
-" $ python\n"
-" >>> import guestfs\n"
-" >>> help (guestfs)\n"
-"\n"
+#: ../src/guestfs.pod:675
+msgid "For documentation see L<guestfs-python(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:678
+#: ../src/guestfs.pod:677
msgid "B<Ruby>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:680
-msgid ""
-"Use the Guestfs module. There is no Ruby-specific documentation, but you "
-"can find examples written in Ruby in the libguestfs source."
+#: ../src/guestfs.pod:679
+msgid "For documentation see L<guestfs-ruby(3)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:683
+#: ../src/guestfs.pod:681
msgid "B<shell scripts>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:685
+#: ../src/guestfs.pod:683
msgid "For documentation see L<guestfish(1)>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:689
+#: ../src/guestfs.pod:687
msgid "LIBGUESTFS GOTCHAS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:691
+#: ../src/guestfs.pod:689
msgid ""
"L<http://en.wikipedia.org/wiki/Gotcha_(programming)>: \"A feature of a "
"system [...] that works in the way it is documented but is counterintuitive "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:695
+#: ../src/guestfs.pod:693
msgid ""
"Since we developed libguestfs and the associated tools, there are several "
"things we would have designed differently, but are now stuck with for "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:703
+#: ../src/guestfs.pod:701
msgid "Autosync / forgetting to sync."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:705
+#: ../src/guestfs.pod:703
msgid ""
"When modifying a filesystem from C or another language, you B<must> unmount "
"all filesystems and call L</guestfs_sync> explicitly before you close the "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:709
+#: ../src/guestfs.pod:707
#, no-wrap
msgid ""
" guestfs_set_autosync (g, 1);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:711
+#: ../src/guestfs.pod:709
msgid ""
"to have the unmount/sync done automatically for you when the handle 'g' is "
"closed. (This feature is called \"autosync\", L</guestfs_set_autosync> q.v.)"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:715
+#: ../src/guestfs.pod:713
msgid ""
"If you forget to do this, then it is entirely possible that your changes "
"won't be written out, or will be partially written, or (very rarely) that "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:719
+#: ../src/guestfs.pod:717
msgid ""
"Note that in L<guestfish(3)> autosync is the default. So quick and dirty "
"guestfish scripts that forget to sync will work just fine, which can make "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:723
+#: ../src/guestfs.pod:721
msgid ""
"Update: Autosync is enabled by default for all API users starting from "
"libguestfs 1.5.24."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:726
+#: ../src/guestfs.pod:724
msgid "Mount option C<-o sync> should not be the default."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:728
+#: ../src/guestfs.pod:726
msgid ""
"If you use L</guestfs_mount>, then C<-o sync,noatime> are added implicitly. "
"However C<-o sync> does not add any reliability benefit, but does have a "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:732
+#: ../src/guestfs.pod:730
msgid ""
"The work around is to use L</guestfs_mount_options> and set the mount "
"options that you actually want to use."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:735
+#: ../src/guestfs.pod:733
msgid "Read-only should be the default."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:737
+#: ../src/guestfs.pod:735
msgid ""
"In L<guestfish(3)>, I<--ro> should be the default, and you should have to "
"specify I<--rw> if you want to make changes to the image."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:740
+#: ../src/guestfs.pod:738
msgid "This would reduce the potential to corrupt live VM images."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:742
+#: ../src/guestfs.pod:740
msgid ""
"Note that many filesystems change the disk when you just mount and unmount, "
"even if you didn't perform any writes. You need to use L</"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:746
+#: ../src/guestfs.pod:744
msgid "guestfish command line is hard to use."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:748
+#: ../src/guestfs.pod:746
msgid ""
"C<guestfish disk.img> doesn't do what people expect (open C<disk.img> for "
"examination). It tries to run a guestfish command C<disk.img> which doesn't "
msgstr ""
# type: =item
-#: ../src/guestfs.pod:755
+#: ../src/guestfs.pod:753
msgid "guestfish megabyte modifiers don't work right on all commands"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:757
+#: ../src/guestfs.pod:755
msgid ""
"In recent guestfish you can use C<1M> to mean 1 megabyte (and similarly for "
"other modifiers). What guestfish actually does is to multiply the number "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:764
+#: ../src/guestfs.pod:762
msgid "The most common is L</guestfs_lvcreate>. The guestfish command:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:766
+#: ../src/guestfs.pod:764
#, no-wrap
msgid ""
" lvcreate LV VG 100M\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:768
+#: ../src/guestfs.pod:766
msgid ""
"does not do what you might expect. Instead because L</guestfs_lvcreate> is "
"already expecting megabytes, this tries to create a 100 I<terabyte> (100 "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:773
+#: ../src/guestfs.pod:771
msgid ""
"This could be fixed in the generator by specially marking parameters and "
"return values which take bytes or other units."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:776
+#: ../src/guestfs.pod:774
msgid "Ambiguity between devices and paths"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:778
+#: ../src/guestfs.pod:776
msgid ""
"There is a subtle ambiguity in the API between a device name (eg. C</dev/"
"sdb2>) and a similar pathname. A file might just happen to be called "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:783
+#: ../src/guestfs.pod:781
msgid ""
"In the current API we usually resolve this ambiguity by having two separate "
"calls, for example L</guestfs_checksum> and L</guestfs_checksum_device>. "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:789
+#: ../src/guestfs.pod:787
msgid ""
"To avoid both the ambiguity and the need to duplicate some calls, we could "
"make paths/devices into structured names. One way to do this would be to "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:795
+#: ../src/guestfs.pod:793
#, no-wrap
msgid ""
" type path = Path of string | Device of int | Partition of int * int\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:797
+#: ../src/guestfs.pod:795
msgid "which would allow you to pass arguments like:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:799
+#: ../src/guestfs.pod:797
#, no-wrap
msgid ""
" Path \"/foo/bar\"\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:804
+#: ../src/guestfs.pod:802
msgid ""
"As you can see there are still problems to resolve even with this "
"representation. Also consider how it might work in guestfish."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:809
+#: ../src/guestfs.pod:807
msgid "PROTOCOL LIMITS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:811
+#: ../src/guestfs.pod:809
msgid ""
"Internally libguestfs uses a message-based protocol to pass API calls and "
"their responses to and from a small \"appliance\" (see L</INTERNALS> for "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:819
+#: ../src/guestfs.pod:817
msgid ""
"A simple call such as L</guestfs_cat> returns its result (the file data) in "
"a simple string. Because this string is at some point internally encoded as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:825
+#: ../src/guestfs.pod:823
msgid ""
"In order to transfer large files into and out of the guest filesystem, you "
"need to use particular calls that support this. The sections L</UPLOADING> "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:829
+#: ../src/guestfs.pod:827
msgid ""
"You might also consider mounting the disk image using our FUSE filesystem "
"support (L<guestmount(1)>)."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:832
+#: ../src/guestfs.pod:830
msgid "KEYS AND PASSPHRASES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:834
+#: ../src/guestfs.pod:832
msgid ""
"Certain libguestfs calls take a parameter that contains sensitive key "
"material, passed in as a C string."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:837
+#: ../src/guestfs.pod:835
msgid ""
"In the future we would hope to change the libguestfs implementation so that "
"keys are L<mlock(2)>-ed into physical RAM, and thus can never end up in "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:842
+#: ../src/guestfs.pod:840
msgid ""
"Therefore you should be aware that any key parameter you pass to libguestfs "
"might end up being written out to the swap partition. If this is a concern, "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:847
+#: ../src/guestfs.pod:845
msgid "MULTIPLE HANDLES AND MULTIPLE THREADS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:849
+#: ../src/guestfs.pod:847
msgid ""
"All high-level libguestfs actions are synchronous. If you want to use "
"libguestfs asynchronously then you must create a thread."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:852
+#: ../src/guestfs.pod:850
msgid ""
"Only use the handle from a single thread. Either use the handle exclusively "
"from one thread, or provide your own mutex so that two threads cannot issue "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:856
+#: ../src/guestfs.pod:854
msgid ""
"See the graphical program guestfs-browser for one possible architecture for "
"multithreaded programs using libvirt and libguestfs."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:859
+#: ../src/guestfs.pod:857
msgid "PATH"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:861
+#: ../src/guestfs.pod:859
msgid ""
"Libguestfs needs a kernel and initrd.img, which it finds by looking along an "
"internal path."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:864
+#: ../src/guestfs.pod:862
msgid ""
"By default it looks for these in the directory C<$libdir/guestfs> (eg. C</"
"usr/local/lib/guestfs> or C</usr/lib64/guestfs>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:867
+#: ../src/guestfs.pod:865
msgid ""
"Use L</guestfs_set_path> or set the environment variable L</LIBGUESTFS_PATH> "
"to change the directories that libguestfs will search in. The value is a "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:874
+#: ../src/guestfs.pod:872
msgid "QEMU WRAPPERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:876
+#: ../src/guestfs.pod:874
msgid ""
"If you want to compile your own qemu, run qemu from a non-standard location, "
"or pass extra arguments to qemu, then you can write a shell-script wrapper "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:880
+#: ../src/guestfs.pod:878
msgid ""
"There is one important rule to remember: you I<must C<exec qemu>> as the "
"last command in the shell script (so that qemu replaces the shell and "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:885
+#: ../src/guestfs.pod:883
msgid ""
"Here is an example of a wrapper, where I have built my own copy of qemu from "
"source:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:888
+#: ../src/guestfs.pod:886
#, no-wrap
msgid ""
" #!/bin/sh -\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:892
+#: ../src/guestfs.pod:890
msgid ""
"Save this script as C</tmp/qemu.wrapper> (or wherever), C<chmod +x>, and "
"then use it by setting the LIBGUESTFS_QEMU environment variable. For "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:896
+#: ../src/guestfs.pod:894
#, no-wrap
msgid ""
" LIBGUESTFS_QEMU=/tmp/qemu.wrapper guestfish\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:898
+#: ../src/guestfs.pod:896
msgid ""
"Note that libguestfs also calls qemu with the -help and -version options in "
"order to determine features."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:901
+#: ../src/guestfs.pod:899
msgid "ABI GUARANTEE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:903
+#: ../src/guestfs.pod:901
msgid ""
"We guarantee the libguestfs ABI (binary interface), for public, high-level "
"actions as outlined in this section. Although we will deprecate some "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:909
+#: ../src/guestfs.pod:907
msgid "BLOCK DEVICE NAMING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:911
+#: ../src/guestfs.pod:909
msgid ""
"In the kernel there is now quite a profusion of schemata for naming block "
"devices (in this context, by I<block device> I mean a physical or virtual "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:923
+#: ../src/guestfs.pod:921
msgid ""
"As discussed above, libguestfs uses a qemu appliance running an embedded "
"Linux kernel to access block devices. We can run a variety of appliances "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:927
+#: ../src/guestfs.pod:925
msgid ""
"This causes a problem for libguestfs because many API calls use device or "
"partition names. Working scripts and the recipe (example) scripts that we "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:932
+#: ../src/guestfs.pod:930
msgid ""
"Therefore libguestfs defines C</dev/sd*> as the I<standard naming scheme>. "
"Internally C</dev/sd*> names are translated, if necessary, to other names as "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:938
+#: ../src/guestfs.pod:936
msgid ""
"Note that this I<only> applies to parameters. The L</guestfs_list_devices>, "
"L</guestfs_list_partitions> and similar calls return the true names of the "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:943
+#: ../src/guestfs.pod:941
msgid "ALGORITHM FOR BLOCK DEVICE NAME TRANSLATION"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:945
+#: ../src/guestfs.pod:943
msgid ""
"Usually this translation is transparent. However in some (very rare) cases "
"you may need to know the exact algorithm. Such cases include where you use "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:951
+#: ../src/guestfs.pod:949
msgid ""
"The algorithm is applied only to I<parameters> which are known to be either "
"device or partition names. Return values from functions such as L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:959
+#: ../src/guestfs.pod:957
msgid "Is the string a parameter which is a device or partition name?"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:963
+#: ../src/guestfs.pod:961
msgid "Does the string begin with C</dev/sd>?"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:967
+#: ../src/guestfs.pod:965
msgid ""
"Does the named device exist? If so, we use that device. However if I<not> "
"then we continue with this algorithm."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:972
+#: ../src/guestfs.pod:970
msgid "Replace initial C</dev/sd> string with C</dev/hd>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:974
+#: ../src/guestfs.pod:972
msgid "For example, change C</dev/sda2> to C</dev/hda2>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:976
+#: ../src/guestfs.pod:974
msgid "If that named device exists, use it. If not, continue."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:980
+#: ../src/guestfs.pod:978
msgid "Replace initial C</dev/sd> string with C</dev/vd>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:982
+#: ../src/guestfs.pod:980
msgid "If that named device exists, use it. If not, return an error."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:986
+#: ../src/guestfs.pod:984
msgid "PORTABILITY CONCERNS WITH BLOCK DEVICE NAMING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:988
+#: ../src/guestfs.pod:986
msgid ""
"Although the standard naming scheme and automatic translation is useful for "
"simple programs and guestfish scripts, for larger programs it is best not to "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:992
+#: ../src/guestfs.pod:990
msgid ""
"Where possible for maximum future portability programs using libguestfs "
"should use these future-proof techniques:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:999
+#: ../src/guestfs.pod:997
msgid ""
"Use L</guestfs_list_devices> or L</guestfs_list_partitions> to list actual "
"device names, and then use those names directly."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1002
+#: ../src/guestfs.pod:1000
msgid ""
"Since those device names exist by definition, they will never be translated."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1007
+#: ../src/guestfs.pod:1005
msgid ""
"Use higher level ways to identify filesystems, such as LVM names, UUIDs and "
"filesystem labels."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1012
+#: ../src/guestfs.pod:1010
msgid "SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1014
+#: ../src/guestfs.pod:1012
msgid ""
"This section discusses security implications of using libguestfs, "
"particularly with untrusted or malicious guests or disk images."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1017
+#: ../src/guestfs.pod:1015
msgid "GENERAL SECURITY CONSIDERATIONS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1019
+#: ../src/guestfs.pod:1017
msgid ""
"Be careful with any files or data that you download from a guest (by "
"\"download\" we mean not just the L</guestfs_download> command but any "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1029
+#: ../src/guestfs.pod:1027
msgid "the data (file etc) not being present"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1033
+#: ../src/guestfs.pod:1031
msgid "being present but empty"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1037
+#: ../src/guestfs.pod:1035
msgid "being much larger than normal"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1041
+#: ../src/guestfs.pod:1039
msgid "containing arbitrary 8 bit data"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1045
+#: ../src/guestfs.pod:1043
msgid "being in an unexpected character encoding"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1049
+#: ../src/guestfs.pod:1047
msgid "containing homoglyphs."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1053
+#: ../src/guestfs.pod:1051
msgid "SECURITY OF MOUNTING FILESYSTEMS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1055
+#: ../src/guestfs.pod:1053
msgid ""
"When you mount a filesystem under Linux, mistakes in the kernel filesystem "
"(VFS) module can sometimes be escalated into exploits by deliberately "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1068
+#: ../src/guestfs.pod:1066
msgid ""
"That explains why you should never mount a filesystem from an untrusted "
"guest on your host kernel. How about libguestfs? We run a Linux kernel "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1079
+#: ../src/guestfs.pod:1077
msgid ""
"In any case callers can reduce the attack surface by forcing the filesystem "
"type when mounting (use L</guestfs_mount_vfs>)."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1082
+#: ../src/guestfs.pod:1080
msgid "PROTOCOL SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1084
+#: ../src/guestfs.pod:1082
msgid ""
"The protocol is designed to be secure, being based on RFC 4506 (XDR) with a "
"defined upper message size. However a program that uses libguestfs must "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1090
+#: ../src/guestfs.pod:1088
msgid "INSPECTION SECURITY"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1092
+#: ../src/guestfs.pod:1090
msgid ""
"Parts of the inspection API (see L</INSPECTION>) return untrusted strings "
"directly from the guest, and these could contain any 8 bit data. Callers "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1098
+#: ../src/guestfs.pod:1096
msgid ""
"Guest configuration may be altered in unusual ways by the administrator of "
"the virtual machine, and may not reflect reality (particularly for untrusted "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1106
+#: ../src/guestfs.pod:1104
msgid ""
"The inspection API parses guest configuration using two external libraries: "
"Augeas (Linux configuration) and hivex (Windows Registry). Both are "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1112
+#: ../src/guestfs.pod:1110
msgid "RUNNING UNTRUSTED GUEST COMMANDS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1114
+#: ../src/guestfs.pod:1112
msgid ""
"Be very cautious about running commands from the guest. By running a "
"command in the guest, you are giving CPU time to a binary that you do not "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1120
+#: ../src/guestfs.pod:1118
msgid "CVE-2010-3851"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1122
+#: ../src/guestfs.pod:1120
msgid "https://bugzilla.redhat.com/642934"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1124
+#: ../src/guestfs.pod:1122
msgid ""
"This security bug concerns the automatic disk format detection that qemu "
"does on disk images."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1127
+#: ../src/guestfs.pod:1125
msgid ""
"A raw disk image is just the raw bytes, there is no header. Other disk "
"images like qcow2 contain a special header. Qemu deals with this by looking "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1132
+#: ../src/guestfs.pod:1130
msgid ""
"This allows a guest which has been given a raw disk image to write some "
"other header. At next boot (or when the disk image is accessed by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1137
+#: ../src/guestfs.pod:1135
msgid ""
"This in itself would not be a problem, but qcow2 offers many features, one "
"of which is to allow a disk image to refer to another image (called the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1145
+#: ../src/guestfs.pod:1143
msgid ""
"In libguestfs this is rather hard to exploit except under two circumstances:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1152
+#: ../src/guestfs.pod:1150
msgid "You have enabled the network or have opened the disk in write mode."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1156
+#: ../src/guestfs.pod:1154
msgid ""
"You are also running untrusted code from the guest (see L</RUNNING "
"COMMANDS>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1161
+#: ../src/guestfs.pod:1159
msgid ""
"The way to avoid this is to specify the expected disk format when adding "
"disks (the optional C<format> option to L</guestfs_add_drive_opts>). You "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1166
+#: ../src/guestfs.pod:1164
msgid ""
"For disks added from libvirt using calls like L</guestfs_add_domain>, the "
"format is fetched from libvirt and passed through."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1169
+#: ../src/guestfs.pod:1167
msgid ""
"For libguestfs tools, use the I<--format> command line parameter as "
"appropriate."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1172
+#: ../src/guestfs.pod:1170
msgid "CONNECTION MANAGEMENT"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1174
+#: ../src/guestfs.pod:1172
msgid "guestfs_h *"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1176
+#: ../src/guestfs.pod:1174
msgid ""
"C<guestfs_h> is the opaque type representing a connection handle. Create a "
"handle by calling L</guestfs_create>. Call L</guestfs_close> to free the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1180
+#: ../src/guestfs.pod:1178
msgid ""
"For information on using multiple handles and threads, see the section L</"
"MULTIPLE HANDLES AND MULTIPLE THREADS> below."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1183
+#: ../src/guestfs.pod:1181
msgid "guestfs_create"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1185
+#: ../src/guestfs.pod:1183
#, no-wrap
msgid ""
" guestfs_h *guestfs_create (void);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1187
+#: ../src/guestfs.pod:1185
msgid "Create a connection handle."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1189
+#: ../src/guestfs.pod:1187
msgid ""
"You have to call L</guestfs_add_drive_opts> (or one of the equivalent calls) "
"on the handle at least once."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1192
+#: ../src/guestfs.pod:1190
msgid ""
"This function returns a non-NULL pointer to a handle on success or NULL on "
"error."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1195
+#: ../src/guestfs.pod:1193
msgid "After configuring the handle, you have to call L</guestfs_launch>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1197
+#: ../src/guestfs.pod:1195
msgid ""
"You may also want to configure error handling for the handle. See L</ERROR "
"HANDLING> section below."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1200
+#: ../src/guestfs.pod:1198
msgid "guestfs_close"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1202
+#: ../src/guestfs.pod:1200
#, no-wrap
msgid ""
" void guestfs_close (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1204
+#: ../src/guestfs.pod:1202
msgid "This closes the connection handle and frees up all resources used."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1206
+#: ../src/guestfs.pod:1204
msgid "ERROR HANDLING"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1208
+#: ../src/guestfs.pod:1206
msgid ""
"API functions can return errors. For example, almost all functions that "
"return C<int> will return C<-1> to indicate an error."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1211
+#: ../src/guestfs.pod:1209
msgid ""
"Additional information is available for errors: an error message string and "
"optionally an error number (errno) if the thing that failed was a system "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1215
+#: ../src/guestfs.pod:1213
msgid ""
"You can get at the additional information about the last error on the handle "
"by calling L</guestfs_last_error>, L</guestfs_last_errno>, and/or by setting "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1220
+#: ../src/guestfs.pod:1218
msgid ""
"When the handle is created, a default error handler is installed which "
"prints the error message string to C<stderr>. For small short-running "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1224
+#: ../src/guestfs.pod:1222
#, no-wrap
msgid ""
" if (guestfs_launch (g) == -1)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1227
+#: ../src/guestfs.pod:1225
msgid ""
"since the default error handler will ensure that an error message has been "
"printed to C<stderr> before the program exits."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1230
+#: ../src/guestfs.pod:1228
msgid ""
"For other programs the caller will almost certainly want to install an "
"alternate error handler or do error handling in-line like this:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1233
+#: ../src/guestfs.pod:1231
#, no-wrap
msgid ""
" g = guestfs_create ();\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1235
+#: ../src/guestfs.pod:1233
#, no-wrap
msgid ""
" /* This disables the default behaviour of printing errors\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1239
+#: ../src/guestfs.pod:1237
#, no-wrap
msgid ""
" if (guestfs_launch (g) == -1) {\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1247
+#: ../src/guestfs.pod:1245
msgid ""
"Out of memory errors are handled differently. The default action is to call "
"L<abort(3)>. If this is undesirable, then you can set a handler using L</"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1251
+#: ../src/guestfs.pod:1249
msgid ""
"L</guestfs_create> returns C<NULL> if the handle cannot be created, and "
"because there is no handle if this happens there is no way to get additional "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1257
+#: ../src/guestfs.pod:1255
msgid "guestfs_last_error"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1259
+#: ../src/guestfs.pod:1257
#, no-wrap
msgid ""
" const char *guestfs_last_error (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1261
+#: ../src/guestfs.pod:1259
msgid ""
"This returns the last error message that happened on C<g>. If there has not "
"been an error since the handle was created, then this returns C<NULL>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1265
+#: ../src/guestfs.pod:1263
msgid ""
"The lifetime of the returned string is until the next error occurs, or L</"
"guestfs_close> is called."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1268
+#: ../src/guestfs.pod:1266
msgid "guestfs_last_errno"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1270
+#: ../src/guestfs.pod:1268
#, no-wrap
msgid ""
" int guestfs_last_errno (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1272
+#: ../src/guestfs.pod:1270
msgid "This returns the last error number (errno) that happened on C<g>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1274
+#: ../src/guestfs.pod:1272
msgid "If successful, an errno integer not equal to zero is returned."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1276
+#: ../src/guestfs.pod:1274
msgid ""
"If no error, this returns 0. This call can return 0 in three situations:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1283
+#: ../src/guestfs.pod:1281
msgid "There has not been any error on the handle."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1287
+#: ../src/guestfs.pod:1285
msgid ""
"There has been an error but the errno was meaningless. This corresponds to "
"the case where the error did not come from a failed system call, but for "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1293
+#: ../src/guestfs.pod:1291
msgid ""
"There was an error from a failed system call, but for some reason the errno "
"was not captured and returned. This usually indicates a bug in libguestfs."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1299
+#: ../src/guestfs.pod:1297
msgid ""
"Libguestfs tries to convert the errno from inside the applicance into a "
"corresponding errno for the caller (not entirely trivial: the appliance "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1307
+#: ../src/guestfs.pod:1305
msgid "guestfs_set_error_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1309
+#: ../src/guestfs.pod:1307
#, no-wrap
msgid ""
" typedef void (*guestfs_error_handler_cb) (guestfs_h *g,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1316
+#: ../src/guestfs.pod:1314
msgid ""
"The callback C<cb> will be called if there is an error. The parameters "
"passed to the callback are an opaque data pointer and the error message "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1320
+#: ../src/guestfs.pod:1318
msgid ""
"C<errno> is not passed to the callback. To get that the callback must call "
"L</guestfs_last_errno>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1323
+#: ../src/guestfs.pod:1321
msgid ""
"Note that the message string C<msg> is freed as soon as the callback "
"function returns, so if you want to stash it somewhere you must make your "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1327
+#: ../src/guestfs.pod:1325
msgid "The default handler prints messages on C<stderr>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1329
+#: ../src/guestfs.pod:1327
msgid "If you set C<cb> to C<NULL> then I<no> handler is called."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1331
+#: ../src/guestfs.pod:1329
msgid "guestfs_get_error_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1333
+#: ../src/guestfs.pod:1331
#, no-wrap
msgid ""
" guestfs_error_handler_cb guestfs_get_error_handler (guestfs_h *g,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1336
+#: ../src/guestfs.pod:1334
msgid "Returns the current error handler callback."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1338
+#: ../src/guestfs.pod:1336
msgid "guestfs_set_out_of_memory_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1340
+#: ../src/guestfs.pod:1338
#, no-wrap
msgid ""
" typedef void (*guestfs_abort_cb) (void);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1344
+#: ../src/guestfs.pod:1342
msgid ""
"The callback C<cb> will be called if there is an out of memory situation. "
"I<Note this callback must not return>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1347
+#: ../src/guestfs.pod:1345
msgid "The default is to call L<abort(3)>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1349
+#: ../src/guestfs.pod:1347
msgid ""
"You cannot set C<cb> to C<NULL>. You can't ignore out of memory situations."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1352
+#: ../src/guestfs.pod:1350
msgid "guestfs_get_out_of_memory_handler"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1354
+#: ../src/guestfs.pod:1352
#, no-wrap
msgid ""
" guestfs_abort_fn guestfs_get_out_of_memory_handler (guestfs_h *g);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1356
+#: ../src/guestfs.pod:1354
msgid "This returns the current out of memory handler."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1358
+#: ../src/guestfs.pod:1356
msgid "API CALLS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1360 ../fish/guestfish.pod:907
+#: ../src/guestfs.pod:1358 ../fish/guestfish.pod:908
msgid "@ACTIONS@"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1362
+#: ../src/guestfs.pod:1360
msgid "STRUCTURES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1364
+#: ../src/guestfs.pod:1362
msgid "@STRUCTS@"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1366
+#: ../src/guestfs.pod:1364
msgid "AVAILABILITY"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1368
+#: ../src/guestfs.pod:1366
msgid "GROUPS OF FUNCTIONALITY IN THE APPLIANCE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1370
+#: ../src/guestfs.pod:1368
msgid ""
"Using L</guestfs_available> you can test availability of the following "
"groups of functions. This test queries the appliance to see if the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1375
+#: ../src/guestfs.pod:1373
msgid "@AVAILABILITY@"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1377
+#: ../src/guestfs.pod:1375
msgid "GUESTFISH supported COMMAND"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1379
+#: ../src/guestfs.pod:1377
msgid ""
"In L<guestfish(3)> there is a handy interactive command C<supported> which "
"prints out the available groups and whether they are supported by this build "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1384
+#: ../src/guestfs.pod:1382
msgid "SINGLE CALLS AT COMPILE TIME"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1386
+#: ../src/guestfs.pod:1384
msgid ""
"Since version 1.5.8, C<E<lt>guestfs.hE<gt>> defines symbols for each C API "
"function, such as:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1389
+#: ../src/guestfs.pod:1387
#, no-wrap
msgid ""
" #define LIBGUESTFS_HAVE_DD 1\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1391
+#: ../src/guestfs.pod:1389
msgid "if L</guestfs_dd> is available."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1393
+#: ../src/guestfs.pod:1391
msgid ""
"Before version 1.5.8, if you needed to test whether a single libguestfs "
"function is available at compile time, we recommended using build tools such "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1398
+#: ../src/guestfs.pod:1396
#, no-wrap
msgid ""
" AC_CHECK_LIB([guestfs],[guestfs_create])\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1401
+#: ../src/guestfs.pod:1399
msgid ""
"which would result in C<HAVE_GUESTFS_DD> being either defined or not defined "
"in your program."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1404
+#: ../src/guestfs.pod:1402
msgid "SINGLE CALLS AT RUN TIME"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1406
+#: ../src/guestfs.pod:1404
msgid ""
"Testing at compile time doesn't guarantee that a function really exists in "
"the library. The reason is that you might be dynamically linked against a "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1413
+#: ../src/guestfs.pod:1411
msgid ""
"You can use L<dlopen(3)> to test if a function is available at run time, as "
"in this example program (note that you still need the compile time check as "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1417
+#: ../src/guestfs.pod:1415
#, no-wrap
msgid ""
" #include <stdio.h>\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1423
+#: ../src/guestfs.pod:1421
#, no-wrap
msgid ""
" main ()\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1429
+#: ../src/guestfs.pod:1427
#, no-wrap
msgid ""
" /* Test if the function guestfs_dd is really available. */\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1438
+#: ../src/guestfs.pod:1436
#, no-wrap
msgid ""
" if (!has_function)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1451
+#: ../src/guestfs.pod:1449
msgid ""
"You may think the above is an awful lot of hassle, and it is. There are "
"other ways outside of the C linking system to ensure that this kind of "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1456
+#: ../src/guestfs.pod:1454
#, no-wrap
msgid ""
" Requires: libguestfs >= 1.0.80\n"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1458
+#: ../src/guestfs.pod:1456
msgid "CALLS WITH OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1460
+#: ../src/guestfs.pod:1458
msgid ""
"A recent feature of the API is the introduction of calls which take optional "
"arguments. In C these are declared 3 ways. The main way is as a call which "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1465
+#: ../src/guestfs.pod:1463
#, no-wrap
msgid ""
" int guestfs_add_drive_opts (guestfs_h *g, const char *filename, ...);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1467
+#: ../src/guestfs.pod:1465
msgid ""
"Call this with a list of optional arguments, terminated by C<-1>. So to "
"call with no optional arguments specified:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1470
+#: ../src/guestfs.pod:1468
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename, -1);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1472
+#: ../src/guestfs.pod:1470
msgid "With a single optional argument:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1474
+#: ../src/guestfs.pod:1472
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1478
+#: ../src/guestfs.pod:1476
msgid "With two:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1480
+#: ../src/guestfs.pod:1478
#, no-wrap
msgid ""
" guestfs_add_drive_opts (g, filename,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1485
+#: ../src/guestfs.pod:1483
msgid ""
"and so forth. Don't forget the terminating C<-1> otherwise Bad Things will "
"happen!"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1488
+#: ../src/guestfs.pod:1486
msgid "USING va_list FOR OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1490
+#: ../src/guestfs.pod:1488
msgid ""
"The second variant has the same name with the suffix C<_va>, which works the "
"same way but takes a C<va_list>. See the C manual for details. For the "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1494
+#: ../src/guestfs.pod:1492
#, no-wrap
msgid ""
" int guestfs_add_drive_opts_va (guestfs_h *g, const char *filename,\n"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1497
+#: ../src/guestfs.pod:1495
msgid "CONSTRUCTING OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1499
+#: ../src/guestfs.pod:1497
msgid ""
"The third variant is useful where you need to construct these calls. You "
"pass in a structure where you fill in the optional fields. The structure "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1505
+#: ../src/guestfs.pod:1503
#, no-wrap
msgid ""
" struct guestfs_add_drive_opts_argv {\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1514
+#: ../src/guestfs.pod:1512
msgid "You could call it like this:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1516
+#: ../src/guestfs.pod:1514
#, no-wrap
msgid ""
" struct guestfs_add_drive_opts_argv optargs = {\n"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1523
+#: ../src/guestfs.pod:1521
#, no-wrap
msgid ""
" guestfs_add_drive_opts_argv (g, filename, &optargs);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1525 ../src/guestfs-actions.pod:11
+#: ../src/guestfs.pod:1523 ../src/guestfs-actions.pod:11
#: ../src/guestfs-actions.pod:1842 ../fish/guestfish-actions.pod:9
#: ../fish/guestfish-actions.pod:1255
msgid "Notes:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1531
+#: ../src/guestfs.pod:1529
msgid "The C<_BITMASK> suffix on each option name when specifying the bitmask."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1536
+#: ../src/guestfs.pod:1534
msgid "You do not need to fill in all fields of the structure."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1540
+#: ../src/guestfs.pod:1538
msgid ""
"There must be a one-to-one correspondence between fields of the structure "
"that are filled in, and bits set in the bitmask."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1545
+#: ../src/guestfs.pod:1543
msgid "OPTIONAL ARGUMENTS IN OTHER LANGUAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1547
+#: ../src/guestfs.pod:1545
msgid ""
"In other languages, optional arguments are expressed in the way that is "
"natural for that language. We refer you to the language-specific "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1551
+#: ../src/guestfs.pod:1549
msgid "For guestfish, see L<guestfish(1)/OPTIONAL ARGUMENTS>."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1553
+#: ../src/guestfs.pod:1551
msgid "SETTING CALLBACKS TO HANDLE EVENTS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1555
+#: ../src/guestfs.pod:1553
msgid ""
"The child process generates events in some situations. Current events "
"include: receiving a log message, the child process exits."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1558
+#: ../src/guestfs.pod:1556
msgid ""
"Use the C<guestfs_set_*_callback> functions to set a callback for different "
"types of events."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1561
+#: ../src/guestfs.pod:1559
msgid ""
"Only I<one callback of each type> can be registered for each handle. "
"Calling C<guestfs_set_*_callback> again overwrites the previous callback of "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1566
+#: ../src/guestfs.pod:1564
msgid "guestfs_set_log_message_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1568
+#: ../src/guestfs.pod:1566
#, no-wrap
msgid ""
" typedef void (*guestfs_log_message_cb) (guestfs_h *g, void *opaque,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1574
+#: ../src/guestfs.pod:1572
msgid ""
"The callback function C<cb> will be called whenever qemu or the guest writes "
"anything to the console."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1577
+#: ../src/guestfs.pod:1575
msgid "Use this function to capture kernel messages and similar."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1579
+#: ../src/guestfs.pod:1577
msgid ""
"Normally there is no log message handler, and log messages are just "
"discarded."
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1582
+#: ../src/guestfs.pod:1580
msgid "guestfs_set_subprocess_quit_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1584
+#: ../src/guestfs.pod:1582
#, no-wrap
msgid ""
" typedef void (*guestfs_subprocess_quit_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1589
+#: ../src/guestfs.pod:1587
msgid ""
"The callback function C<cb> will be called when the child process quits, "
"either asynchronously or if killed by L</guestfs_kill_subprocess>. (This "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1594
+#: ../src/guestfs.pod:1592
msgid "guestfs_set_launch_done_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1596
+#: ../src/guestfs.pod:1594
#, no-wrap
msgid ""
" typedef void (*guestfs_launch_done_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1601
+#: ../src/guestfs.pod:1599
msgid ""
"The callback function C<cb> will be called when the child process becomes "
"ready first time after it has been launched. (This corresponds to a "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1605
+#: ../src/guestfs.pod:1603
msgid "guestfs_set_close_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1607
+#: ../src/guestfs.pod:1605
#, no-wrap
msgid ""
" typedef void (*guestfs_close_cb) (guestfs_h *g, void *opaque);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1612
+#: ../src/guestfs.pod:1610
msgid ""
"The callback function C<cb> will be called while the handle is being closed "
"(synchronously from L</guestfs_close>)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1615
+#: ../src/guestfs.pod:1613
msgid ""
"Note that libguestfs installs an L<atexit(3)> handler to try to clean up "
"handles that are open when the program exits. This means that this callback "
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1623
+#: ../src/guestfs.pod:1621
msgid "guestfs_set_progress_callback"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1625
+#: ../src/guestfs.pod:1623
#, no-wrap
msgid ""
" typedef void (*guestfs_progress_cb) (guestfs_h *g, void *opaque,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1632
+#: ../src/guestfs.pod:1630
msgid ""
"Some long-running operations can generate progress messages. If this "
"callback is registered, then it will be called each time a progress message "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1638
+#: ../src/guestfs.pod:1636
msgid ""
"The callback receives two numbers: C<position> and C<total>. The units of "
"C<total> are not defined, although for some operations C<total> may relate "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1644
+#: ../src/guestfs.pod:1642
msgid "The only defined and stable parts of the API are:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1650
+#: ../src/guestfs.pod:1648
msgid ""
"The callback can display to the user some type of progress bar or indicator "
"which shows the ratio of C<position>:C<total>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1655
+#: ../src/guestfs.pod:1653
msgid "0 E<lt>= C<position> E<lt>= C<total>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1659
+#: ../src/guestfs.pod:1657
msgid ""
"If any progress notification is sent during a call, then a final progress "
"notification is always sent when C<position> = C<total>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1662
+#: ../src/guestfs.pod:1660
msgid ""
"This is to simplify caller code, so callers can easily set the progress "
"indicator to \"100%\" at the end of the operation, without requiring special "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1668
+#: ../src/guestfs.pod:1666
msgid ""
"The callback also receives the procedure number and serial number of the "
"call. These are only useful for debugging protocol issues, and the callback "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1673
+#: ../src/guestfs.pod:1671
msgid "PRIVATE DATA AREA"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1675
+#: ../src/guestfs.pod:1673
msgid ""
"You can attach named pieces of private data to the libguestfs handle, and "
"fetch them by name for the lifetime of the handle. This is called the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1679
+#: ../src/guestfs.pod:1677
msgid "To attach a named piece of data, use the following call:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1681
+#: ../src/guestfs.pod:1679
#, no-wrap
msgid ""
" void guestfs_set_private (guestfs_h *g, const char *key, void *data);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1683
+#: ../src/guestfs.pod:1681
msgid ""
"C<key> is the name to associate with this data, and C<data> is an arbitrary "
"pointer (which can be C<NULL>). Any previous item with the same name is "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1687
+#: ../src/guestfs.pod:1685
msgid ""
"You can use any C<key> you want, but names beginning with an underscore "
"character are reserved for internal libguestfs purposes (for implementing "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1692
+#: ../src/guestfs.pod:1690
msgid "To retrieve the pointer, use:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1694
+#: ../src/guestfs.pod:1692
#, no-wrap
msgid ""
" void *guestfs_get_private (guestfs_h *g, const char *key);\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1696
+#: ../src/guestfs.pod:1694
msgid ""
"This function returns C<NULL> if either no data is found associated with "
"C<key>, or if the user previously set the C<key>'s C<data> pointer to "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1700
+#: ../src/guestfs.pod:1698
msgid ""
"Libguestfs does not try to look at or interpret the C<data> pointer in any "
"way. As far as libguestfs is concerned, it need not be a valid pointer at "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1708
+#: ../src/guestfs.pod:1706
msgid ""
"The private data area is implemented using a hash table, and should be "
"reasonably efficient for moderate numbers of keys."
msgstr ""
# type: =end
-#: ../src/guestfs.pod:1711 ../src/guestfs.pod:1716
+#: ../src/guestfs.pod:1709 ../src/guestfs.pod:1714
msgid "html"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1713
+#: ../src/guestfs.pod:1711
msgid ""
"<!-- old anchor for the next section --> <a name="
"\"state_machine_and_low_level_event_api\"/>"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1718
+#: ../src/guestfs.pod:1716
msgid "ARCHITECTURE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1720
+#: ../src/guestfs.pod:1718
msgid ""
"Internally, libguestfs is implemented by running an appliance (a special "
"type of small virtual machine) using L<qemu(1)>. Qemu runs as a child "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1724
+#: ../src/guestfs.pod:1722
#, no-wrap
msgid ""
" ___________________\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1744
+#: ../src/guestfs.pod:1742
msgid ""
"The library, linked to the main program, creates the child process and hence "
"the appliance in the L</guestfs_launch> function."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1747
+#: ../src/guestfs.pod:1745
msgid ""
"Inside the appliance is a Linux kernel and a complete stack of userspace "
"tools (such as LVM and ext2 programs) and a small controlling daemon called "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1756
+#: ../src/guestfs.pod:1754
msgid ""
"A common misunderstanding is that the appliance \"is\" the virtual machine. "
"Although the disk image you are attached to might also be used by some "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1763
+#: ../src/guestfs.pod:1761
msgid "STATE MACHINE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1765
+#: ../src/guestfs.pod:1763
msgid "libguestfs uses a state machine to model the child process:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1767
+#: ../src/guestfs.pod:1765
#, no-wrap
msgid ""
" |\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1789
+#: ../src/guestfs.pod:1787
msgid ""
"The normal transitions are (1) CONFIG (when the handle is created, but there "
"is no child process), (2) LAUNCHING (when the child process is booting up), "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1794
+#: ../src/guestfs.pod:1792
msgid ""
"The guest may be killed by L</guestfs_kill_subprocess>, or may die "
"asynchronously at any time (eg. due to some internal error), and that causes "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1798
+#: ../src/guestfs.pod:1796
msgid ""
"Configuration commands for qemu such as L</guestfs_add_drive> can only be "
"issued when in the CONFIG state."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1801
+#: ../src/guestfs.pod:1799
msgid ""
"The API offers one call that goes from CONFIG through LAUNCHING to READY. "
"L</guestfs_launch> blocks until the child process is READY to accept "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1807
+#: ../src/guestfs.pod:1805
msgid ""
"API actions such as L</guestfs_mount> can only be issued when in the READY "
"state. These API calls block waiting for the command to be carried out (ie. "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1813
+#: ../src/guestfs.pod:1811
msgid ""
"Finally, the child process sends asynchronous messages back to the main "
"program, such as kernel log messages. You can register a callback to "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1817
+#: ../src/guestfs.pod:1815
msgid "INTERNALS"
msgstr ""
# type: =head2
-#: ../src/guestfs.pod:1819
+#: ../src/guestfs.pod:1817
msgid "COMMUNICATION PROTOCOL"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1821
+#: ../src/guestfs.pod:1819
msgid ""
"Don't rely on using this protocol directly. This section documents how it "
"currently works, but it may change at any time."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1824
+#: ../src/guestfs.pod:1822
msgid ""
"The protocol used to talk between the library and the daemon running inside "
"the qemu virtual machine is a simple RPC mechanism built on top of XDR (RFC "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1828
+#: ../src/guestfs.pod:1826
msgid ""
"The detailed format of structures is in C<src/guestfs_protocol.x> (note: "
"this file is automatically generated)."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1831
+#: ../src/guestfs.pod:1829
msgid ""
"There are two broad cases, ordinary functions that don't have any C<FileIn> "
"and C<FileOut> parameters, which are handled with very simple request/reply "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1838
+#: ../src/guestfs.pod:1836
msgid "ORDINARY FUNCTIONS (NO FILEIN/FILEOUT PARAMS)"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1840
+#: ../src/guestfs.pod:1838
msgid "For ordinary functions, the request message is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1842
+#: ../src/guestfs.pod:1840
#, no-wrap
msgid ""
" total length (header + arguments,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1847
+#: ../src/guestfs.pod:1845
msgid ""
"The total length field allows the daemon to allocate a fixed size buffer "
"into which it slurps the rest of the message. As a result, the total length "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1853
+#: ../src/guestfs.pod:1851
msgid ""
"Note also that many functions don't take any arguments, in which case the "
"C<guestfs_I<foo>_args> is completely omitted."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1856
+#: ../src/guestfs.pod:1854
msgid ""
"The header contains the procedure number (C<guestfs_proc>) which is how the "
"receiver knows what type of args structure to expect, or none at all."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1860
+#: ../src/guestfs.pod:1858
msgid "The reply message for ordinary functions is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1862
+#: ../src/guestfs.pod:1860
#, no-wrap
msgid ""
" total length (header + ret,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1867
+#: ../src/guestfs.pod:1865
msgid ""
"As above the C<guestfs_I<foo>_ret> structure may be completely omitted for "
"functions that return no formal return values."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1870
+#: ../src/guestfs.pod:1868
msgid ""
"As above the total length of the reply is limited to C<GUESTFS_MESSAGE_MAX>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1873
+#: ../src/guestfs.pod:1871
msgid ""
"In the case of an error, a flag is set in the header, and the reply message "
"is slightly changed:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1876
+#: ../src/guestfs.pod:1874
#, no-wrap
msgid ""
" total length (header + error,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1881
+#: ../src/guestfs.pod:1879
msgid ""
"The C<guestfs_message_error> structure contains the error message as a "
"string."
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1884
+#: ../src/guestfs.pod:1882
msgid "FUNCTIONS THAT HAVE FILEIN PARAMETERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1886
+#: ../src/guestfs.pod:1884
msgid ""
"A C<FileIn> parameter indicates that we transfer a file I<into> the guest. "
"The normal request message is sent (see above). However this is followed by "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1890
+#: ../src/guestfs.pod:1888
#, no-wrap
msgid ""
" total length (header + arguments,\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1898
+#: ../src/guestfs.pod:1896
msgid "The \"sequence of chunks\" is:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1900
+#: ../src/guestfs.pod:1898
#, no-wrap
msgid ""
" length of chunk (not including length word itself)\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1908
+#: ../src/guestfs.pod:1906
msgid ""
"The final chunk has the C<data_len> field set to zero. Additionally a flag "
"is set in the final chunk to indicate either successful completion or early "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1912
+#: ../src/guestfs.pod:1910
msgid ""
"At time of writing there are no functions that have more than one FileIn "
"parameter. However this is (theoretically) supported, by sending the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1917
+#: ../src/guestfs.pod:1915
msgid ""
"Both the library (sender) I<and> the daemon (receiver) may cancel the "
"transfer. The library does this by sending a chunk with a special flag set "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1923
+#: ../src/guestfs.pod:1921
msgid ""
"The daemon may also cancel. It does this by writing a special word "
"C<GUESTFS_CANCEL_FLAG> to the socket. The library listens for this during "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1932
+#: ../src/guestfs.pod:1930
msgid ""
"This protocol allows the transfer of arbitrary sized files (no 32 bit "
"limit), and also files where the size is not known in advance (eg. from "
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1938
+#: ../src/guestfs.pod:1936
msgid "FUNCTIONS THAT HAVE FILEOUT PARAMETERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1940
+#: ../src/guestfs.pod:1938
msgid ""
"The protocol for FileOut parameters is exactly the same as for FileIn "
"parameters, but with the roles of daemon and library reversed."
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1943
+#: ../src/guestfs.pod:1941
#, no-wrap
msgid ""
" total length (header + ret,\n"
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1951
+#: ../src/guestfs.pod:1949
msgid "INITIAL MESSAGE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1953
+#: ../src/guestfs.pod:1951
msgid ""
"When the daemon launches it sends an initial word (C<GUESTFS_LAUNCH_FLAG>) "
"which indicates that the guest and daemon is alive. This is what L</"
msgstr ""
# type: =head3
-#: ../src/guestfs.pod:1957
+#: ../src/guestfs.pod:1955
msgid "PROGRESS NOTIFICATION MESSAGES"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1959
+#: ../src/guestfs.pod:1957
msgid ""
"The daemon may send progress notification messages at any time. These are "
"distinguished by the normal length word being replaced by "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1963
+#: ../src/guestfs.pod:1961
msgid ""
"The library turns them into progress callbacks (see "
"C<guestfs_set_progress_callback>) if there is a callback registered, or "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1967
+#: ../src/guestfs.pod:1965
msgid ""
"The daemon self-limits the frequency of progress messages it sends (see "
"C<daemon/proto.c:notify_progress>). Not all calls generate progress "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:1971
+#: ../src/guestfs.pod:1969
msgid "LIBGUESTFS VERSION NUMBERS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1973
+#: ../src/guestfs.pod:1971
msgid ""
"Since April 2010, libguestfs has started to make separate development and "
"stable releases, along with corresponding branches in our git repository. "
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:1978
+#: ../src/guestfs.pod:1976
#, no-wrap
msgid ""
" even numbers for stable: 1.2.x, 1.4.x, ...\n"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1989
+#: ../src/guestfs.pod:1987
msgid "Thus \"1.3.5\" is the 5th update to the development branch \"1.3\"."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1991
+#: ../src/guestfs.pod:1989
msgid ""
"As time passes we cherry pick fixes from the development branch and backport "
"those into the stable branch, the effect being that the stable branch should "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:1997
+#: ../src/guestfs.pod:1995
msgid "Our criteria for backporting changes are:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2003
+#: ../src/guestfs.pod:2001
msgid ""
"Documentation changes which don't affect any code are backported unless the "
"documentation refers to a future feature which is not in stable."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2009
+#: ../src/guestfs.pod:2007
msgid ""
"Bug fixes which are not controversial, fix obvious problems, and have been "
"well tested are backported."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2014
+#: ../src/guestfs.pod:2012
msgid ""
"Simple rearrangements of code which shouldn't affect how it works get "
"backported. This is so that the code in the two branches doesn't get too "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2020
+#: ../src/guestfs.pod:2018
msgid ""
"We I<don't> backport new features, new APIs, new tools etc, except in one "
"exceptional case: the new feature is required in order to implement an "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2026
+#: ../src/guestfs.pod:2024
msgid ""
"A new stable branch starts when we think the new features in development are "
"substantial and compelling enough over the current stable branch to warrant "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2034 ../fish/guestfish.pod:914
+#: ../src/guestfs.pod:2032 ../fish/guestfish.pod:915
#: ../test-tool/libguestfs-test-tool.pod:104 ../tools/virt-edit.pl:330
-#: ../tools/virt-rescue.pl:255
msgid "ENVIRONMENT VARIABLES"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2038 ../fish/guestfish.pod:940
+#: ../src/guestfs.pod:2036 ../fish/guestfish.pod:941
msgid "LIBGUESTFS_APPEND"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2040 ../fish/guestfish.pod:942
+#: ../src/guestfs.pod:2038 ../fish/guestfish.pod:943
msgid "Pass additional options to the guest kernel."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2042 ../fish/guestfish.pod:944
+#: ../src/guestfs.pod:2040 ../fish/guestfish.pod:945
msgid "LIBGUESTFS_DEBUG"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2044
+#: ../src/guestfs.pod:2042
msgid ""
"Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages. This has the same "
"effect as calling C<guestfs_set_verbose (g, 1)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2047 ../fish/guestfish.pod:949
+#: ../src/guestfs.pod:2045 ../fish/guestfish.pod:950
msgid "LIBGUESTFS_MEMSIZE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2049 ../fish/guestfish.pod:951
+#: ../src/guestfs.pod:2047 ../fish/guestfish.pod:952
msgid ""
"Set the memory allocated to the qemu process, in megabytes. For example:"
msgstr ""
# type: verbatim
-#: ../src/guestfs.pod:2052 ../fish/guestfish.pod:954
+#: ../src/guestfs.pod:2050 ../fish/guestfish.pod:955
#, no-wrap
msgid ""
" LIBGUESTFS_MEMSIZE=700\n"
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2054 ../fish/guestfish.pod:956
+#: ../src/guestfs.pod:2052 ../fish/guestfish.pod:957
msgid "LIBGUESTFS_PATH"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2056
+#: ../src/guestfs.pod:2054
msgid ""
"Set the path that libguestfs uses to search for kernel and initrd.img. See "
"the discussion of paths in section PATH above."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2059 ../fish/guestfish.pod:961
+#: ../src/guestfs.pod:2057 ../fish/guestfish.pod:962
msgid "LIBGUESTFS_QEMU"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2061 ../fish/guestfish.pod:963
+#: ../src/guestfs.pod:2059 ../fish/guestfish.pod:964
msgid ""
"Set the default qemu binary that libguestfs uses. If not set, then the qemu "
"which was found at compile time by the configure script is used."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2065
+#: ../src/guestfs.pod:2063
msgid "See also L</QEMU WRAPPERS> above."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2067 ../fish/guestfish.pod:967
+#: ../src/guestfs.pod:2065 ../fish/guestfish.pod:968
msgid "LIBGUESTFS_TRACE"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2069
+#: ../src/guestfs.pod:2067
msgid ""
"Set C<LIBGUESTFS_TRACE=1> to enable command traces. This has the same "
"effect as calling C<guestfs_set_trace (g, 1)>."
msgstr ""
# type: =item
-#: ../src/guestfs.pod:2072 ../fish/guestfish.pod:976
+#: ../src/guestfs.pod:2070 ../fish/guestfish.pod:977
msgid "TMPDIR"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2074 ../fish/guestfish.pod:978
+#: ../src/guestfs.pod:2072 ../fish/guestfish.pod:979
msgid "Location of temporary directory, defaults to C</tmp>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2076 ../fish/guestfish.pod:980
+#: ../src/guestfs.pod:2074 ../fish/guestfish.pod:981
msgid ""
"If libguestfs was compiled to use the supermin appliance then the real "
"appliance is cached in this directory, shared between all handles belonging "
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2084 ../fish/guestfish.pod:1038
+#: ../src/guestfs.pod:2082 ../fish/guestfish.pod:1039
#: ../test-tool/libguestfs-test-tool.pod:109 ../fuse/guestmount.pod:233
-#: ../inspector/virt-inspector.pl:452 ../tools/virt-edit.pl:350
-#: ../tools/virt-win-reg.pl:484 ../tools/virt-df.pl:640
-#: ../tools/virt-ls.pl:232 ../tools/virt-resize.pl:1486
-#: ../tools/virt-list-filesystems.pl:186 ../tools/virt-tar.pl:281
-#: ../tools/virt-rescue.pl:267 ../tools/virt-make-fs.pl:534
-#: ../tools/virt-list-partitions.pl:254
+#: ../tools/virt-edit.pl:350 ../tools/virt-win-reg.pl:484
+#: ../tools/virt-resize.pl:1485 ../tools/virt-list-filesystems.pl:189
+#: ../tools/virt-tar.pl:281 ../tools/virt-make-fs.pl:534
+#: ../tools/virt-list-partitions.pl:257
msgid "SEE ALSO"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2086
+#: ../src/guestfs.pod:2084
msgid ""
-"L<guestfish(1)>, L<guestmount(1)>, L<virt-cat(1)>, L<virt-df(1)>, L<virt-edit"
-"(1)>, L<virt-inspector(1)>, L<virt-list-filesystems(1)>, L<virt-list-"
-"partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)>, L<virt-rescue(1)>, L<virt-"
-"tar(1)>, L<virt-win-reg(1)>, L<qemu(1)>, L<febootstrap(1)>, L<hivex(3)>, "
-"L<http://libguestfs.org/>."
+"L<guestfs-examples(3)>, L<guestfs-ocaml(3)>, L<guestfs-python(3)>, L<guestfs-"
+"ruby(3)>, L<guestfish(1)>, L<guestmount(1)>, L<virt-cat(1)>, L<virt-df(1)>, "
+"L<virt-edit(1)>, L<virt-filesystems(1)>, L<virt-inspector(1)>, L<virt-list-"
+"filesystems(1)>, L<virt-list-partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)"
+">, L<virt-rescue(1)>, L<virt-tar(1)>, L<virt-win-reg(1)>, L<qemu(1)>, "
+"L<febootstrap(1)>, L<hivex(3)>, L<http://libguestfs.org/>."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2104
+#: ../src/guestfs.pod:2107
msgid ""
"Tools with a similar purpose: L<fdisk(8)>, L<parted(8)>, L<kpartx(8)>, L<lvm"
"(8)>, L<disktype(1)>."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2111 ../tools/virt-win-reg.pl:499
+#: ../src/guestfs.pod:2114 ../tools/virt-win-reg.pl:499
#: ../tools/virt-make-fs.pl:548
msgid "BUGS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2113
+#: ../src/guestfs.pod:2116
msgid "To get a list of bugs against libguestfs use this link:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2115
+#: ../src/guestfs.pod:2118
msgid ""
"L<https://bugzilla.redhat.com/buglist.cgi?"
"component=libguestfs&product=Virtualization+Tools>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2117
+#: ../src/guestfs.pod:2120
msgid "To report a new bug against libguestfs use this link:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2119
+#: ../src/guestfs.pod:2122
msgid ""
"L<https://bugzilla.redhat.com/enter_bug.cgi?"
"component=libguestfs&product=Virtualization+Tools>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2121
+#: ../src/guestfs.pod:2124
msgid "When reporting a bug, please check:"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2127
+#: ../src/guestfs.pod:2130
msgid "That the bug hasn't been reported already."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2131
+#: ../src/guestfs.pod:2134
msgid "That you are testing a recent version."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2135
+#: ../src/guestfs.pod:2138
msgid "Describe the bug accurately, and give a way to reproduce it."
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2139
+#: ../src/guestfs.pod:2142
msgid ""
"Run libguestfs-test-tool and paste the B<complete, unedited> output into the "
"bug report."
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2144 ../fish/guestfish.pod:1055
+#: ../src/guestfs.pod:2147 ../fish/guestfish.pod:1058
#: ../test-tool/libguestfs-test-tool.pod:115 ../fuse/guestmount.pod:244
-#: ../inspector/virt-inspector.pl:462
msgid "AUTHORS"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2146 ../fish/guestfish.pod:1057
+#: ../src/guestfs.pod:2149 ../fish/guestfish.pod:1060
#: ../test-tool/libguestfs-test-tool.pod:117 ../fuse/guestmount.pod:246
msgid "Richard W.M. Jones (C<rjones at redhat dot com>)"
msgstr ""
# type: =head1
-#: ../src/guestfs.pod:2148 ../fish/guestfish.pod:1059
+#: ../src/guestfs.pod:2151 ../fish/guestfish.pod:1062
#: ../test-tool/libguestfs-test-tool.pod:119 ../fuse/guestmount.pod:248
-#: ../inspector/virt-inspector.pl:476 ../tools/virt-edit.pl:366
-#: ../tools/virt-win-reg.pl:514 ../tools/virt-df.pl:653
-#: ../tools/virt-ls.pl:247 ../tools/virt-resize.pl:1512
-#: ../tools/virt-list-filesystems.pl:202 ../tools/virt-tar.pl:296
-#: ../tools/virt-rescue.pl:281 ../tools/virt-make-fs.pl:563
-#: ../tools/virt-list-partitions.pl:269
+#: ../tools/virt-edit.pl:366 ../tools/virt-win-reg.pl:514
+#: ../tools/virt-resize.pl:1510 ../tools/virt-list-filesystems.pl:206
+#: ../tools/virt-tar.pl:296 ../tools/virt-make-fs.pl:563
+#: ../tools/virt-list-partitions.pl:273
msgid "COPYRIGHT"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2150 ../fish/guestfish.pod:1061
+#: ../src/guestfs.pod:2153 ../fish/guestfish.pod:1064
#: ../fuse/guestmount.pod:250
msgid "Copyright (C) 2009-2010 Red Hat Inc. L<http://libguestfs.org/>"
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2153
+#: ../src/guestfs.pod:2156
msgid ""
"This library is free software; you can redistribute it and/or modify it "
"under the terms of the GNU Lesser General Public License as published by the "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2158
+#: ../src/guestfs.pod:2161
msgid ""
"This library is distributed in the hope that it will be useful, but WITHOUT "
"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
msgstr ""
# type: textblock
-#: ../src/guestfs.pod:2163
+#: ../src/guestfs.pod:2166
msgid ""
"You should have received a copy of the GNU Lesser General Public License "
"along with this library; if not, write to the Free Software Foundation, "
# type: =head1
#: ../fish/guestfish.pod:23 ../fuse/guestmount.pod:15 ../tools/virt-edit.pl:44
#: ../tools/virt-win-reg.pl:51 ../tools/virt-tar.pl:59
-#: ../tools/virt-rescue.pl:41
msgid "WARNING"
msgstr ""
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:41 ../fish/guestfish.pod:846
+#: ../fish/guestfish.pod:41 ../fish/guestfish.pod:847
#: ../fuse/guestmount.pod:39 ../tools/virt-edit.pl:58
-#: ../tools/virt-resize.pl:66 ../tools/virt-tar.pl:45
+#: ../tools/virt-resize.pl:64 ../tools/virt-tar.pl:45
msgid "EXAMPLES"
msgstr ""
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:139 ../fish/guestfish.pod:837
+#: ../fish/guestfish.pod:139 ../fish/guestfish.pod:838
#, no-wrap
msgid ""
" guestfish -N help | less\n"
# type: =head1
#: ../fish/guestfish.pod:148 ../test-tool/libguestfs-test-tool.pod:37
-#: ../fuse/guestmount.pod:73 ../inspector/virt-inspector.pl:68
-#: ../tools/virt-edit.pl:72 ../tools/virt-win-reg.pl:171
-#: ../tools/virt-df.pl:71 ../tools/virt-ls.pl:78 ../tools/virt-resize.pl:257
-#: ../tools/virt-list-filesystems.pl:50 ../tools/virt-tar.pl:98
-#: ../tools/virt-rescue.pl:103 ../tools/virt-make-fs.pl:153
-#: ../tools/virt-list-partitions.pl:51
+#: ../fuse/guestmount.pod:73 ../tools/virt-edit.pl:72
+#: ../tools/virt-win-reg.pl:171 ../tools/virt-resize.pl:256
+#: ../tools/virt-list-filesystems.pl:53 ../tools/virt-tar.pl:98
+#: ../tools/virt-make-fs.pl:153 ../tools/virt-list-partitions.pl:54
msgid "OPTIONS"
msgstr ""
# type: =item
#: ../fish/guestfish.pod:152 ../fuse/guestmount.pod:131
-#: ../inspector/virt-inspector.pl:76 ../tools/virt-edit.pl:80
-#: ../tools/virt-win-reg.pl:179 ../tools/virt-df.pl:79 ../tools/virt-ls.pl:86
-#: ../tools/virt-resize.pl:265 ../tools/virt-list-filesystems.pl:58
-#: ../tools/virt-tar.pl:106 ../tools/virt-rescue.pl:111
-#: ../tools/virt-make-fs.pl:161 ../tools/virt-list-partitions.pl:59
+#: ../tools/virt-edit.pl:80 ../tools/virt-win-reg.pl:179
+#: ../tools/virt-resize.pl:264 ../tools/virt-list-filesystems.pl:61
+#: ../tools/virt-tar.pl:106 ../tools/virt-make-fs.pl:161
+#: ../tools/virt-list-partitions.pl:62
msgid "B<--help>"
msgstr ""
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:216 ../fish/guestfish.pod:543
-#: ../inspector/virt-inspector.pl:431
+#: ../fish/guestfish.pod:216 ../fish/guestfish.pod:544
msgid "For example:"
msgstr ""
#: ../fish/guestfish.pod:278
msgid ""
"If you don't know what filesystems a disk image contains, you can either run "
-"guestfish without this option, then list the partitions and LVs available "
-"(see L</list-partitions> and L</lvs> commands), or you can use the L<virt-"
-"list-filesystems(1)> program."
+"guestfish without this option, then list the partitions, filesystems and LVs "
+"available (see L</list-partitions>, L</list-filesystems> and L</lvs> "
+"commands), or you can use the L<virt-filesystems(1)> program."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:283 ../fuse/guestmount.pod:154
+#: ../fish/guestfish.pod:284 ../fuse/guestmount.pod:154
msgid "B<-n> | B<--no-sync>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:285
+#: ../fish/guestfish.pod:286
msgid ""
"Disable autosync. This is enabled by default. See the discussion of "
"autosync in the L<guestfs(3)> manpage."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:288
+#: ../fish/guestfish.pod:289
msgid "B<-N type> | B<--new type> | B<-N help>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:290
+#: ../fish/guestfish.pod:291
msgid ""
"Prepare a fresh disk image formatted as \"type\". This is an alternative to "
"the I<-a> option: whereas I<-a> adds an existing disk, I<-N> creates a "
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:295
+#: ../fish/guestfish.pod:296
msgid "B<--progress-bars>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:297
+#: ../fish/guestfish.pod:298
msgid "Enable progress bars, even when guestfish is used non-interactively."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:299
+#: ../fish/guestfish.pod:300
msgid ""
"Progress bars are enabled by default when guestfish is used as an "
"interactive shell."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:302
+#: ../fish/guestfish.pod:303
msgid "B<--no-progress-bars>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:304
+#: ../fish/guestfish.pod:305
msgid "Disable progress bars."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:306
+#: ../fish/guestfish.pod:307
msgid "B<--remote[=pid]>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:308
+#: ../fish/guestfish.pod:309
msgid ""
"Send remote commands to C<$GUESTFISH_PID> or C<pid>. See section L</REMOTE "
"CONTROL GUESTFISH OVER A SOCKET> below."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:311 ../fuse/guestmount.pod:196
+#: ../fish/guestfish.pod:312 ../fuse/guestmount.pod:196
msgid "B<-r> | B<--ro>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:313
+#: ../fish/guestfish.pod:314
msgid ""
"This changes the I<-a> and I<-m> options so that disks are added and mounts "
"are done read-only (see L<guestfs(3)/guestfs_mount_ro>)."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:316 ../tools/virt-rescue.pl:187
+#: ../fish/guestfish.pod:317
msgid ""
"The option must always be used if the disk image or virtual machine might be "
"running, and is generally recommended in cases where you don't need write "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:320
+#: ../fish/guestfish.pod:321
msgid ""
"Note that prepared disk images created with I<-N> are not affected by the "
"I<--ro> option."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:323
+#: ../fish/guestfish.pod:324
msgid "See also L</OPENING DISKS FOR READ AND WRITE> below."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:325 ../fuse/guestmount.pod:208
-#: ../tools/virt-rescue.pl:195
+#: ../fish/guestfish.pod:326 ../fuse/guestmount.pod:208
msgid "B<--selinux>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:327
+#: ../fish/guestfish.pod:328
msgid "Enable SELinux support for the guest. See L<guestfs(3)/SELINUX>."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:329 ../fuse/guestmount.pod:212
+#: ../fish/guestfish.pod:330 ../fuse/guestmount.pod:212
msgid "B<-v> | B<--verbose>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:331
+#: ../fish/guestfish.pod:332
msgid ""
"Enable very verbose messages. This is particularly useful if you find a bug."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:334 ../fuse/guestmount.pod:216
+#: ../fish/guestfish.pod:335 ../fuse/guestmount.pod:216
msgid "B<-V> | B<--version>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:336
+#: ../fish/guestfish.pod:337
msgid "Display the guestfish / libguestfs version number and exit."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:338 ../fuse/guestmount.pod:220
+#: ../fish/guestfish.pod:339 ../fuse/guestmount.pod:220
msgid "B<-w> | B<--rw>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:340
+#: ../fish/guestfish.pod:341
msgid ""
"This option does nothing at the moment. See L</OPENING DISKS FOR READ AND "
"WRITE> below."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:343
+#: ../fish/guestfish.pod:344
msgid "B<-x>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:345
+#: ../fish/guestfish.pod:346
msgid "Echo each command before executing it."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:349
+#: ../fish/guestfish.pod:350
msgid "COMMANDS ON COMMAND LINE"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:351
+#: ../fish/guestfish.pod:352
msgid ""
"Any additional (non-option) arguments are treated as commands to execute."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:354
+#: ../fish/guestfish.pod:355
msgid ""
"Commands to execute should be separated by a colon (C<:>), where the colon "
"is a separate parameter. Thus:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:357
+#: ../fish/guestfish.pod:358
#, no-wrap
msgid ""
" guestfish cmd [args...] : cmd [args...] : cmd [args...] ...\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:359
+#: ../fish/guestfish.pod:360
msgid ""
"If there are no additional arguments, then we enter a shell, either an "
"interactive shell with a prompt (if the input is a terminal) or a non-"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:363
+#: ../fish/guestfish.pod:364
msgid ""
"In either command line mode or non-interactive shell, the first command that "
"gives an error causes the whole shell to exit. In interactive mode (with a "
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:368
+#: ../fish/guestfish.pod:369
msgid "USING launch (OR run)"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:370
+#: ../fish/guestfish.pod:371
msgid ""
"As with L<guestfs(3)>, you must first configure your guest by adding disks, "
"then launch it, then mount any disks you need, and finally issue actions/"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:378
+#: ../fish/guestfish.pod:379
msgid "add or -a/--add"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:382
+#: ../fish/guestfish.pod:383
msgid "launch (aka run)"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:386
+#: ../fish/guestfish.pod:387
msgid "mount or -m/--mount"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:390
+#: ../fish/guestfish.pod:391
msgid "any other commands"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:394
+#: ../fish/guestfish.pod:395
msgid ""
"C<run> is a synonym for C<launch>. You must C<launch> (or C<run>) your "
"guest before mounting or performing any other commands."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:397
+#: ../fish/guestfish.pod:398
msgid ""
"The only exception is that if any of the I<-i>, I<-m>, I<--mount>, I<-N> or "
"I<--new> options were given then C<run> is done automatically, simply "
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:402
+#: ../fish/guestfish.pod:403
msgid "OPENING DISKS FOR READ AND WRITE"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:404
+#: ../fish/guestfish.pod:405
msgid ""
"The guestfish (and L<guestmount(1)>) options I<--ro> and I<--rw> affect "
"whether the other command line options I<-a>, I<-c>, I<-d>, I<-i> and I<-m> "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:408
+#: ../fish/guestfish.pod:409
msgid ""
"In libguestfs E<lt> 1.6.2, guestfish and guestmount defaulted to opening "
"disk images supplied on the command line for write. To open a disk image "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:412
+#: ../fish/guestfish.pod:413
msgid ""
"This matters: If you accidentally open a live VM disk image writable then "
"you will cause irreversible disk corruption."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:415
+#: ../fish/guestfish.pod:416
msgid ""
"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 "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:420
+#: ../fish/guestfish.pod:421
msgid ""
"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 "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:426
+#: ../fish/guestfish.pod:427
msgid ""
"B<Note:> This does I<not> affect commands like L</add> and L</mount>, or any "
"other libguestfs program apart from guestfish and guestmount."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:429
+#: ../fish/guestfish.pod:430
msgid "QUOTING"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:431
+#: ../fish/guestfish.pod:432
msgid ""
"You can quote ordinary parameters using either single or double quotes. For "
"example:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:434
+#: ../fish/guestfish.pod:435
#, no-wrap
msgid ""
" add \"file with a space.img\"\n"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:436
+#: ../fish/guestfish.pod:437
#, no-wrap
msgid ""
" rm '/file name'\n"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:438
+#: ../fish/guestfish.pod:439
#, no-wrap
msgid ""
" rm '/\"'\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:440
+#: ../fish/guestfish.pod:441
msgid ""
"A few commands require a list of strings to be passed. For these, use a "
"whitespace-separated list, enclosed in quotes. Strings containing "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:445
+#: ../fish/guestfish.pod:446
#, no-wrap
msgid ""
" vgcreate VG \"/dev/sda1 /dev/sdb1\"\n"
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:449
+#: ../fish/guestfish.pod:450
msgid "OPTIONAL ARGUMENTS"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:451
+#: ../fish/guestfish.pod:452
msgid ""
"Some commands take optional arguments. These arguments appear in this "
"documentation as C<[argname:..]>. You can use them as in these examples:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:455
+#: ../fish/guestfish.pod:456
#, no-wrap
msgid ""
" add-drive-opts filename\n"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:457
+#: ../fish/guestfish.pod:458
#, no-wrap
msgid ""
" add-drive-opts filename readonly:true\n"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:459
+#: ../fish/guestfish.pod:460
#, no-wrap
msgid ""
" add-drive-opts filename format:qcow2 readonly:false\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:461
+#: ../fish/guestfish.pod:462
msgid ""
"Each optional argument can appear at most once. All optional arguments must "
"appear after the required ones."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:464
+#: ../fish/guestfish.pod:465
msgid "NUMBERS"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:466
+#: ../fish/guestfish.pod:467
msgid ""
"This section applies to all commands which can take integers as parameters."
msgstr ""
# type: =head2
-#: ../fish/guestfish.pod:469
+#: ../fish/guestfish.pod:470
msgid "SIZE SUFFIX"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:471
+#: ../fish/guestfish.pod:472
msgid ""
"When the command takes a parameter measured in bytes, you can use one of the "
"following suffixes to specify kilobytes, megabytes and larger sizes:"
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:477
+#: ../fish/guestfish.pod:478
msgid "B<k> or B<K> or B<KiB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:479
+#: ../fish/guestfish.pod:480
msgid "The size in kilobytes (multiplied by 1024)."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:481
+#: ../fish/guestfish.pod:482
msgid "B<KB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:483
+#: ../fish/guestfish.pod:484
msgid "The size in SI 1000 byte units."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:485
+#: ../fish/guestfish.pod:486
msgid "B<M> or B<MiB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:487
+#: ../fish/guestfish.pod:488
msgid "The size in megabytes (multiplied by 1048576)."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:489
+#: ../fish/guestfish.pod:490
msgid "B<MB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:491
+#: ../fish/guestfish.pod:492
msgid "The size in SI 1000000 byte units."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:493
+#: ../fish/guestfish.pod:494
msgid "B<G> or B<GiB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:495
+#: ../fish/guestfish.pod:496
msgid "The size in gigabytes (multiplied by 2**30)."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:497
+#: ../fish/guestfish.pod:498
msgid "B<GB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:499
+#: ../fish/guestfish.pod:500
msgid "The size in SI 10**9 byte units."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:501
+#: ../fish/guestfish.pod:502
msgid "B<T> or B<TiB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:503
+#: ../fish/guestfish.pod:504
msgid "The size in terabytes (multiplied by 2**40)."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:505
+#: ../fish/guestfish.pod:506
msgid "B<TB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:507
+#: ../fish/guestfish.pod:508
msgid "The size in SI 10**12 byte units."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:509
+#: ../fish/guestfish.pod:510
msgid "B<P> or B<PiB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:511
+#: ../fish/guestfish.pod:512
msgid "The size in petabytes (multiplied by 2**50)."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:513
+#: ../fish/guestfish.pod:514
msgid "B<PB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:515
+#: ../fish/guestfish.pod:516
msgid "The size in SI 10**15 byte units."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:517
+#: ../fish/guestfish.pod:518
msgid "B<E> or B<EiB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:519
+#: ../fish/guestfish.pod:520
msgid "The size in exabytes (multiplied by 2**60)."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:521
+#: ../fish/guestfish.pod:522
msgid "B<EB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:523
+#: ../fish/guestfish.pod:524
msgid "The size in SI 10**18 byte units."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:525
+#: ../fish/guestfish.pod:526
msgid "B<Z> or B<ZiB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:527
+#: ../fish/guestfish.pod:528
msgid "The size in zettabytes (multiplied by 2**70)."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:529
+#: ../fish/guestfish.pod:530
msgid "B<ZB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:531
+#: ../fish/guestfish.pod:532
msgid "The size in SI 10**21 byte units."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:533
+#: ../fish/guestfish.pod:534
msgid "B<Y> or B<YiB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:535
+#: ../fish/guestfish.pod:536
msgid "The size in yottabytes (multiplied by 2**80)."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:537
+#: ../fish/guestfish.pod:538
msgid "B<YB>"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:539
+#: ../fish/guestfish.pod:540
msgid "The size in SI 10**24 byte units."
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:545
+#: ../fish/guestfish.pod:546
#, no-wrap
msgid ""
" truncate-size /file 1G\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:547
+#: ../fish/guestfish.pod:548
msgid "would truncate the file to 1 gigabyte."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:549
+#: ../fish/guestfish.pod:550
msgid ""
"Be careful because a few commands take sizes in kilobytes or megabytes (eg. "
"the parameter to L</memsize> is specified in megabytes already). Adding a "
msgstr ""
# type: =head2
-#: ../fish/guestfish.pod:553
+#: ../fish/guestfish.pod:554
msgid "OCTAL AND HEXADECIMAL NUMBERS"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:555
+#: ../fish/guestfish.pod:556
msgid ""
"For specifying the radix (base) use the C convention: C<0> to prefix an "
"octal number or C<0x> to prefix a hexadecimal number. For example:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:558
+#: ../fish/guestfish.pod:559
#, no-wrap
msgid ""
" 1234 decimal number 1234\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:562
+#: ../fish/guestfish.pod:563
msgid ""
"When using the C<chmod> command, you almost always want to specify an octal "
"number for the mode, and you must prefix it with C<0> (unlike the Unix "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:566
+#: ../fish/guestfish.pod:567
#, no-wrap
msgid ""
" chmod 0777 /public # OK\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:569
+#: ../fish/guestfish.pod:570
msgid ""
"Commands that return numbers usually print them in decimal, but some "
"commands print numbers in other radices (eg. C<umask> prints the mode in "
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:573
+#: ../fish/guestfish.pod:574
msgid "WILDCARDS AND GLOBBING"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:575
+#: ../fish/guestfish.pod:576
msgid ""
"Neither guestfish nor the underlying guestfs API performs wildcard expansion "
"(globbing) by default. So for example the following will not do what you "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:579
+#: ../fish/guestfish.pod:580
#, no-wrap
msgid ""
" rm-rf /home/*\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:581
+#: ../fish/guestfish.pod:582
msgid ""
"Assuming you don't have a directory called literally C</home/*> then the "
"above command will return an error."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:584
+#: ../fish/guestfish.pod:585
msgid "To perform wildcard expansion, use the C<glob> command."
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:586
+#: ../fish/guestfish.pod:587
#, no-wrap
msgid ""
" glob rm-rf /home/*\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:588
+#: ../fish/guestfish.pod:589
msgid ""
"runs C<rm-rf> on each path that matches (ie. potentially running the command "
"many times), equivalent to:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:591
+#: ../fish/guestfish.pod:592
#, no-wrap
msgid ""
" rm-rf /home/jim\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:595
+#: ../fish/guestfish.pod:596
msgid "C<glob> only works on simple guest paths and not on device names."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:597
+#: ../fish/guestfish.pod:598
msgid ""
"If you have several parameters, each containing a wildcard, then glob will "
"perform a Cartesian product."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:600
+#: ../fish/guestfish.pod:601
msgid "COMMENTS"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:602
+#: ../fish/guestfish.pod:603
msgid ""
"Any line which starts with a I<#> character is treated as a comment and "
"ignored. The I<#> can optionally be preceeded by whitespace, but B<not> by "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:606
+#: ../fish/guestfish.pod:607
#, no-wrap
msgid ""
" # this is a comment\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:610
+#: ../fish/guestfish.pod:611
msgid "Blank lines are also ignored."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:612
+#: ../fish/guestfish.pod:613
msgid "RUNNING COMMANDS LOCALLY"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:614
+#: ../fish/guestfish.pod:615
msgid ""
"Any line which starts with a I<!> character is treated as a command sent to "
"the local shell (C</bin/sh> or whatever L<system(3)> uses). For example:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:618
+#: ../fish/guestfish.pod:619
#, no-wrap
msgid ""
" !mkdir local\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:621
+#: ../fish/guestfish.pod:622
msgid ""
"will create a directory C<local> on the host, and then export the contents "
"of C</remote> on the mounted filesystem to C<local/remote-data.tar.gz>. "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:625
+#: ../fish/guestfish.pod:626
msgid ""
"To change the local directory, use the C<lcd> command. C<!cd> will have no "
"effect, due to the way that subprocesses work in Unix."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:628
+#: ../fish/guestfish.pod:629
msgid "PIPES"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:630
+#: ../fish/guestfish.pod:631
msgid ""
"Use C<command E<lt>spaceE<gt> | command> to pipe the output of the first "
"command (a guestfish command) to the second command (any host command). For "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:634
+#: ../fish/guestfish.pod:635
#, no-wrap
msgid ""
" cat /etc/passwd | awk -F: '$3 == 0 { print }'\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:636
+#: ../fish/guestfish.pod:637
msgid ""
"(where C<cat> is the guestfish cat command, but C<awk> is the host awk "
"program). The above command would list all accounts in the guest filesystem "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:641
+#: ../fish/guestfish.pod:642
#, no-wrap
msgid ""
" hexdump /bin/ls | head\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:645
+#: ../fish/guestfish.pod:646
msgid ""
"The space before the pipe symbol is required, any space after the pipe "
"symbol is optional. Everything after the pipe symbol is just passed "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:650
+#: ../fish/guestfish.pod:651
msgid ""
"To use a literal argument which begins with a pipe symbol, you have to quote "
"it, eg:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:653
+#: ../fish/guestfish.pod:654
#, no-wrap
msgid ""
" echo \"|\"\n"
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:655
+#: ../fish/guestfish.pod:656
msgid "HOME DIRECTORIES"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:657
+#: ../fish/guestfish.pod:658
msgid ""
"If a parameter starts with the character C<~> then the tilde may be expanded "
"as a home directory path (either C<~> for the current user's home directory, "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:661
+#: ../fish/guestfish.pod:662
msgid ""
"Note that home directory expansion happens for users known I<on the host>, "
"not in the guest filesystem."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:664
+#: ../fish/guestfish.pod:665
msgid ""
"To use a literal argument which begins with a tilde, you have to quote it, "
"eg:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:667
+#: ../fish/guestfish.pod:668
#, no-wrap
msgid ""
" echo \"~\"\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:671
+#: ../fish/guestfish.pod:672
msgid ""
"Libguestfs has some support for Linux guests encrypted according to the "
"Linux Unified Key Setup (LUKS) standard, which includes nearly all whole "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:676
+#: ../fish/guestfish.pod:677
msgid "Identify encrypted block devices and partitions using L</vfs-type>:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:678
+#: ../fish/guestfish.pod:679
#, no-wrap
msgid ""
" ><fs> vfs-type /dev/sda2\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:681
+#: ../fish/guestfish.pod:682
msgid ""
"Then open those devices using L</luks-open>. This creates a device-mapper "
"device called C</dev/mapper/luksdev>."
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:684
+#: ../fish/guestfish.pod:685
#, no-wrap
msgid ""
" ><fs> luks-open /dev/sda2 luksdev\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:687
+#: ../fish/guestfish.pod:688
msgid ""
"Finally you have to tell LVM to scan for volume groups on the newly created "
"mapper device:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:690
+#: ../fish/guestfish.pod:691
#, no-wrap
msgid ""
" vgscan\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:693
+#: ../fish/guestfish.pod:694
msgid "The logical volume(s) can now be mounted in the usual way."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:695
+#: ../fish/guestfish.pod:696
msgid ""
"Before closing a LUKS device you must unmount any logical volumes on it and "
"deactivate the volume groups by calling C<vg-activate false VG> on each "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:699
+#: ../fish/guestfish.pod:700
#, no-wrap
msgid ""
" vg-activate false /dev/VG\n"
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:702
+#: ../fish/guestfish.pod:703
msgid "WINDOWS PATHS"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:704
+#: ../fish/guestfish.pod:705
msgid ""
"If a path is prefixed with C<win:> then you can use Windows-style paths "
"(with some limitations). The following commands are equivalent:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:707
+#: ../fish/guestfish.pod:708
#, no-wrap
msgid ""
" file /WINDOWS/system32/config/system.LOG\n"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:709
+#: ../fish/guestfish.pod:710
#, no-wrap
msgid ""
" file win:/windows/system32/config/system.log\n"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:711
+#: ../fish/guestfish.pod:712
#, no-wrap
msgid ""
" file win:\\windows\\system32\\config\\system.log\n"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:713
+#: ../fish/guestfish.pod:714
#, no-wrap
msgid ""
" file WIN:C:\\Windows\\SYSTEM32\\conFIG\\SYSTEM.LOG\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:715
+#: ../fish/guestfish.pod:716
msgid ""
"This syntax implicitly calls C<case-sensitive-path> (q.v.) so it also "
"handles case insensitivity like Windows would. This only works in argument "
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:719
+#: ../fish/guestfish.pod:720
msgid "UPLOADING AND DOWNLOADING FILES"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:721
+#: ../fish/guestfish.pod:722
msgid ""
"For commands such as C<upload>, C<download>, C<tar-in>, C<tar-out> and "
"others which upload from or download to a local file, you can use the "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:725
+#: ../fish/guestfish.pod:726
#, no-wrap
msgid ""
" upload - /foo\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:727
+#: ../fish/guestfish.pod:728
msgid ""
"reads stdin and creates from that a file C</foo> in the disk image, and:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:730
+#: ../fish/guestfish.pod:731
#, no-wrap
msgid ""
" tar-out /etc - | tar tf -\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:732
+#: ../fish/guestfish.pod:733
msgid ""
"writes the tarball to stdout and then pipes that into the external \"tar\" "
"command (see L</PIPES>)."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:735
+#: ../fish/guestfish.pod:736
msgid ""
"When using C<-> to read from stdin, the input is read up to the end of "
"stdin. You can also use a special \"heredoc\"-like syntax to read up to "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:739
+#: ../fish/guestfish.pod:740
#, no-wrap
msgid ""
" upload -<<END /foo\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:745
+#: ../fish/guestfish.pod:746
msgid ""
"Any string of characters can be used instead of C<END>. The end marker must "
"appear on a line of its own, without any preceeding or following characters "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:749
+#: ../fish/guestfish.pod:750
msgid ""
"Note that the C<-E<lt>E<lt>> syntax only applies to parameters used to "
"upload local files (so-called \"FileIn\" parameters in the generator)."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:752
+#: ../fish/guestfish.pod:753
msgid "EXIT ON ERROR BEHAVIOUR"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:754
+#: ../fish/guestfish.pod:755
msgid ""
"By default, guestfish will ignore any errors when in interactive mode (ie. "
"taking commands from a human over a tty), and will exit on the first error "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:759
+#: ../fish/guestfish.pod:760
msgid ""
"If you prefix a command with a I<-> character, then that command will not "
"cause guestfish to exit, even if that (one) command returns an error."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:763
+#: ../fish/guestfish.pod:764
msgid "REMOTE CONTROL GUESTFISH OVER A SOCKET"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:765
+#: ../fish/guestfish.pod:766
msgid ""
"Guestfish can be remote-controlled over a socket. This is useful "
"particularly in shell scripts where you want to make several different "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:770
+#: ../fish/guestfish.pod:771
msgid "Start a guestfish server process using:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:772
+#: ../fish/guestfish.pod:773
#, no-wrap
msgid ""
" eval \"`guestfish --listen`\"\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:774
+#: ../fish/guestfish.pod:775
msgid "and then send it commands by doing:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:776
+#: ../fish/guestfish.pod:777
#, no-wrap
msgid ""
" guestfish --remote cmd [...]\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:778
+#: ../fish/guestfish.pod:779
msgid "To cause the server to exit, send it the exit command:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:780
+#: ../fish/guestfish.pod:781
#, no-wrap
msgid ""
" guestfish --remote exit\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:782
+#: ../fish/guestfish.pod:783
msgid ""
"Note that the server will normally exit if there is an error in a command. "
"You can change this in the usual way. See section L</EXIT ON ERROR "
msgstr ""
# type: =head2
-#: ../fish/guestfish.pod:786
+#: ../fish/guestfish.pod:787
msgid "CONTROLLING MULTIPLE GUESTFISH PROCESSES"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:788
+#: ../fish/guestfish.pod:789
msgid ""
"The C<eval> statement sets the environment variable C<$GUESTFISH_PID>, which "
"is how the I<--remote> option knows where to send the commands. You can "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:792
+#: ../fish/guestfish.pod:793
#, no-wrap
msgid ""
" eval \"`guestfish --listen`\"\n"
msgstr ""
# type: =head2
-#: ../fish/guestfish.pod:800
+#: ../fish/guestfish.pod:801
msgid "REMOTE CONTROL AND CSH"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:802
+#: ../fish/guestfish.pod:803
msgid ""
"When using csh-like shells (csh, tcsh etc) you have to add the I<--csh> "
"option:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:805
+#: ../fish/guestfish.pod:806
#, no-wrap
msgid ""
" eval \"`guestfish --listen --csh`\"\n"
msgstr ""
# type: =head2
-#: ../fish/guestfish.pod:807
+#: ../fish/guestfish.pod:808
msgid "REMOTE CONTROL DETAILS"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:809
+#: ../fish/guestfish.pod:810
msgid ""
"Remote control happens over a Unix domain socket called C</tmp/.guestfish-"
"$UID/socket-$PID>, where C<$UID> is the effective user ID of the process, "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:813
+#: ../fish/guestfish.pod:814
msgid "Guestfish client and server versions must match exactly."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:815
+#: ../fish/guestfish.pod:816
msgid "PREPARED DISK IMAGES"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:817
+#: ../fish/guestfish.pod:818
msgid ""
"Use the I<-N type> or I<--new type> parameter to select one of a set of "
"preformatted disk images that guestfish can make for you to save typing. "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:823
+#: ../fish/guestfish.pod:824
msgid ""
"The new disk is called C<test1.img> for the first I<-N>, C<test2.img> for "
"the second and so on. Existing files in the current directory are "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:827
+#: ../fish/guestfish.pod:828
msgid ""
"The type briefly describes how the disk should be sized, partitioned, how "
"filesystem(s) should be created, and how content should be added. "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:835
+#: ../fish/guestfish.pod:836
msgid "To list the available types and any extra parameters they take, run:"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:839
+#: ../fish/guestfish.pod:840
msgid ""
"Note that the prepared filesystem is not mounted. You would usually have to "
"use the C<mount /dev/sda1 /> command or add the I<-m /dev/sda1> option."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:843
+#: ../fish/guestfish.pod:844
msgid ""
"If any I<-N> or I<--new> options are given, the guest is automatically "
"launched."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:848
+#: ../fish/guestfish.pod:849
msgid "Create a 100MB disk with an ext4-formatted partition:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:850
+#: ../fish/guestfish.pod:851
#, no-wrap
msgid ""
" guestfish -N fs:ext4\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:852
+#: ../fish/guestfish.pod:853
msgid "Create a 32MB disk with a VFAT-formatted partition, and mount it:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:854
+#: ../fish/guestfish.pod:855
#, no-wrap
msgid ""
" guestfish -N fs:vfat:32M -m /dev/sda1\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:856
+#: ../fish/guestfish.pod:857
msgid "Create a blank 200MB disk:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:858
+#: ../fish/guestfish.pod:859
#, no-wrap
msgid ""
" guestfish -N disk:200M\n"
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:860
+#: ../fish/guestfish.pod:861
msgid "PROGRESS BARS"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:862
+#: ../fish/guestfish.pod:863
msgid ""
"Some (not all) long-running commands send progress notification messages as "
"they are running. Guestfish turns these messages into progress bars."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:866
+#: ../fish/guestfish.pod:867
msgid ""
"When a command that supports progress bars takes longer than two seconds to "
"run, and if progress bars are enabled, then you will see one appearing below "
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:870
+#: ../fish/guestfish.pod:871
#, no-wrap
msgid ""
" ><fs> copy-size /large-file /another-file 2048M\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:873
+#: ../fish/guestfish.pod:874
msgid ""
"The spinner on the left hand side moves round once for every progress "
"notification received from the backend. This is a (reasonably) golden "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:880
+#: ../fish/guestfish.pod:881
msgid ""
"Progress bars are enabled by default when guestfish is used interactively. "
"You can enable them even for non-interactive modes using I<--progress-bars>, "
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:885
+#: ../fish/guestfish.pod:886
msgid "GUESTFISH COMMANDS"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:887
+#: ../fish/guestfish.pod:888
msgid ""
"The commands in this section are guestfish convenience commands, in other "
"words, they are not part of the L<guestfs(3)> API."
msgstr ""
# type: =head2
-#: ../fish/guestfish.pod:890
+#: ../fish/guestfish.pod:891
msgid "help"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:892
+#: ../fish/guestfish.pod:893
#, no-wrap
msgid ""
" help\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:895
+#: ../fish/guestfish.pod:896
msgid "Without any parameter, this provides general help."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:897
+#: ../fish/guestfish.pod:898
msgid "With a C<cmd> parameter, this displays detailed help for that command."
msgstr ""
# type: =head2
-#: ../fish/guestfish.pod:899
+#: ../fish/guestfish.pod:900
msgid "quit | exit"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:901
+#: ../fish/guestfish.pod:902
msgid "This exits guestfish. You can also use C<^D> key."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:903
+#: ../fish/guestfish.pod:904
msgid "@FISH_COMMANDS@"
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:905
+#: ../fish/guestfish.pod:906
msgid "COMMANDS"
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:909 ../test-tool/libguestfs-test-tool.pod:83
+#: ../fish/guestfish.pod:910 ../test-tool/libguestfs-test-tool.pod:83
msgid "EXIT CODE"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:911
+#: ../fish/guestfish.pod:912
msgid ""
"guestfish returns 0 if the commands completed without error, or 1 if there "
"was an error."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:918
+#: ../fish/guestfish.pod:919
msgid "EDITOR"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:920
+#: ../fish/guestfish.pod:921
msgid ""
"The C<edit> command uses C<$EDITOR> as the editor. If not set, it uses "
"C<vi>."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:923
+#: ../fish/guestfish.pod:924
msgid "GUESTFISH_PID"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:925
+#: ../fish/guestfish.pod:926
msgid ""
"Used with the I<--remote> option to specify the remote guestfish process to "
"control. See section L</REMOTE CONTROL GUESTFISH OVER A SOCKET>."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:929
+#: ../fish/guestfish.pod:930
msgid "HEXEDITOR"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:931
+#: ../fish/guestfish.pod:932
msgid ""
"The L</hexedit> command uses C<$HEXEDITOR> as the external hex editor. If "
"not specified, the external L<hexedit(1)> program is used."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:935
+#: ../fish/guestfish.pod:936
msgid "HOME"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:937
+#: ../fish/guestfish.pod:938
msgid ""
"If compiled with GNU readline support, various files in the home directory "
"can be used. See L</FILES>."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:946
+#: ../fish/guestfish.pod:947
msgid ""
"Set C<LIBGUESTFS_DEBUG=1> to enable verbose messages. This has the same "
"effect as using the B<-v> option."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:958
+#: ../fish/guestfish.pod:959
msgid ""
"Set the path that guestfish uses to search for kernel and initrd.img. See "
"the discussion of paths in L<guestfs(3)>."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:969
+#: ../fish/guestfish.pod:970
msgid "Set C<LIBGUESTFS_TRACE=1> to enable command traces."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:971
+#: ../fish/guestfish.pod:972
msgid "PAGER"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:973
+#: ../fish/guestfish.pod:974
msgid ""
"The C<more> command uses C<$PAGER> as the pager. If not set, it uses "
"C<more>."
msgstr ""
# type: =head1
-#: ../fish/guestfish.pod:988 ../test-tool/libguestfs-test-tool.pod:88
+#: ../fish/guestfish.pod:989 ../test-tool/libguestfs-test-tool.pod:88
msgid "FILES"
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:992
+#: ../fish/guestfish.pod:993
msgid "$HOME/.guestfish"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:994
+#: ../fish/guestfish.pod:995
msgid ""
"If compiled with GNU readline support, then the command history is saved in "
"this file."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:997
+#: ../fish/guestfish.pod:998
msgid "$HOME/.inputrc"
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:999
+#: ../fish/guestfish.pod:1000
msgid "/etc/inputrc"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1001
+#: ../fish/guestfish.pod:1002
msgid ""
"If compiled with GNU readline support, then these files can be used to "
"configure readline. For further information, please see L<readline(3)/"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1005
+#: ../fish/guestfish.pod:1006
msgid "To write rules which only apply to guestfish, use:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:1007
+#: ../fish/guestfish.pod:1008
#, no-wrap
msgid ""
" $if guestfish\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1011
+#: ../fish/guestfish.pod:1012
msgid ""
"Variables that you can set in inputrc that change the behaviour of guestfish "
"in useful ways include:"
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:1016
+#: ../fish/guestfish.pod:1017
msgid "completion-ignore-case (default: on)"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1018
+#: ../fish/guestfish.pod:1019
msgid ""
"By default, guestfish will ignore case when tab-completing paths on the "
"disk. Use:"
msgstr ""
# type: verbatim
-#: ../fish/guestfish.pod:1021
+#: ../fish/guestfish.pod:1022
#, no-wrap
msgid ""
" set completion-ignore-case off\n"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1023
+#: ../fish/guestfish.pod:1024
msgid "to make guestfish case sensitive."
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:1027
+#: ../fish/guestfish.pod:1028
msgid "test1.img"
msgstr ""
# type: =item
-#: ../fish/guestfish.pod:1029
+#: ../fish/guestfish.pod:1030
msgid "test2.img (etc)"
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1031
+#: ../fish/guestfish.pod:1032
msgid ""
"When using the C<-N> or C<--new> option, the prepared disk or filesystem "
"will be created in the file C<test1.img> in the current directory. The "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1040
+#: ../fish/guestfish.pod:1041
msgid ""
"L<guestfs(3)>, L<http://libguestfs.org/>, L<virt-cat(1)>, L<virt-df(1)>, "
-"L<virt-edit(1)>, L<virt-list-filesystems(1)>, L<virt-list-partitions(1)>, "
-"L<virt-ls(1)>, L<virt-make-fs(1)>, L<virt-rescue(1)>, L<virt-resize(1)>, "
-"L<virt-tar(1)>, L<virt-win-reg(1)>, L<hexedit(1)>."
+"L<virt-edit(1)>, L<virt-filesystems(1)>, L<virt-inspector(1)>, L<virt-list-"
+"filesystems(1)>, L<virt-list-partitions(1)>, L<virt-ls(1)>, L<virt-make-fs(1)"
+">, L<virt-rescue(1)>, L<virt-resize(1)>, L<virt-tar(1)>, L<virt-win-reg(1)>, "
+"L<hexedit(1)>."
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1064 ../test-tool/libguestfs-test-tool.pod:124
-#: ../fuse/guestmount.pod:253 ../inspector/virt-inspector.pl:480
-#: ../tools/virt-edit.pl:370 ../tools/virt-win-reg.pl:518
-#: ../tools/virt-df.pl:657 ../tools/virt-ls.pl:251
-#: ../tools/virt-resize.pl:1516 ../tools/virt-list-filesystems.pl:206
-#: ../tools/virt-tar.pl:300 ../tools/virt-rescue.pl:285
-#: ../tools/virt-make-fs.pl:567 ../tools/virt-list-partitions.pl:273
+#: ../fish/guestfish.pod:1067 ../test-tool/libguestfs-test-tool.pod:124
+#: ../fuse/guestmount.pod:253 ../tools/virt-edit.pl:370
+#: ../tools/virt-win-reg.pl:518 ../tools/virt-resize.pl:1514
+#: ../tools/virt-list-filesystems.pl:210 ../tools/virt-tar.pl:300
+#: ../tools/virt-make-fs.pl:567 ../tools/virt-list-partitions.pl:277
msgid ""
"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 Free "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1069 ../test-tool/libguestfs-test-tool.pod:129
-#: ../fuse/guestmount.pod:258 ../inspector/virt-inspector.pl:485
-#: ../tools/virt-edit.pl:375 ../tools/virt-win-reg.pl:523
-#: ../tools/virt-df.pl:662 ../tools/virt-ls.pl:256
-#: ../tools/virt-resize.pl:1521 ../tools/virt-list-filesystems.pl:211
-#: ../tools/virt-tar.pl:305 ../tools/virt-rescue.pl:290
-#: ../tools/virt-make-fs.pl:572 ../tools/virt-list-partitions.pl:278
+#: ../fish/guestfish.pod:1072 ../test-tool/libguestfs-test-tool.pod:129
+#: ../fuse/guestmount.pod:258 ../tools/virt-edit.pl:375
+#: ../tools/virt-win-reg.pl:523 ../tools/virt-resize.pl:1519
+#: ../tools/virt-list-filesystems.pl:215 ../tools/virt-tar.pl:305
+#: ../tools/virt-make-fs.pl:572 ../tools/virt-list-partitions.pl:282
msgid ""
"This program is distributed in the hope that it will be useful, but WITHOUT "
"ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or "
msgstr ""
# type: textblock
-#: ../fish/guestfish.pod:1074 ../test-tool/libguestfs-test-tool.pod:134
-#: ../fuse/guestmount.pod:263 ../inspector/virt-inspector.pl:490
-#: ../tools/virt-edit.pl:380 ../tools/virt-win-reg.pl:528
-#: ../tools/virt-df.pl:667 ../tools/virt-ls.pl:261
-#: ../tools/virt-resize.pl:1526 ../tools/virt-list-filesystems.pl:216
-#: ../tools/virt-tar.pl:310 ../tools/virt-rescue.pl:295
-#: ../tools/virt-make-fs.pl:577 ../tools/virt-list-partitions.pl:283
+#: ../fish/guestfish.pod:1077 ../test-tool/libguestfs-test-tool.pod:134
+#: ../fuse/guestmount.pod:263 ../tools/virt-edit.pl:380
+#: ../tools/virt-win-reg.pl:528 ../tools/virt-resize.pl:1524
+#: ../tools/virt-list-filesystems.pl:220 ../tools/virt-tar.pl:310
+#: ../tools/virt-make-fs.pl:577 ../tools/virt-list-partitions.pl:287
msgid ""
"You should have received a copy of the GNU General Public License along with "
"this program; if not, write to the Free Software Foundation, Inc., 675 Mass "
#: ../fuse/guestmount.pod:59
msgid ""
"If you don't know what filesystems are contained in a guest or disk image, "
-"use L<virt-list-filesystems(1)> first:"
+"use L<virt-filesystems(1)> first:"
msgstr ""
# type: verbatim
#: ../fuse/guestmount.pod:62
#, no-wrap
msgid ""
-" virt-list-filesystems MyGuest\n"
+" virt-filesystems MyGuest\n"
"\n"
msgstr ""
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:35
+#: ../tools/virt-edit.pl:34
+msgid "virt-edit - Edit a file in a virtual machine"
+msgstr ""
+
+# type: verbatim
+#: ../tools/virt-edit.pl:38
+#, no-wrap
msgid ""
-"virt-inspector - Display operating system version and other information "
-"about a virtual machine"
+" virt-edit [--options] domname file\n"
+"\n"
msgstr ""
# type: verbatim
-#: ../inspector/virt-inspector.pl:39
+#: ../tools/virt-edit.pl:40
#, no-wrap
msgid ""
-" virt-inspector [--connect URI] domname\n"
+" virt-edit [--options] disk.img [disk.img ...] file\n"
"\n"
msgstr ""
# type: verbatim
-#: ../inspector/virt-inspector.pl:41
+#: ../tools/virt-edit.pl:42
#, no-wrap
msgid ""
-" virt-inspector guest.img [guest.img ...]\n"
+" virt-edit [domname|disk.img] file -e 'expr'\n"
"\n"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:45
+#: ../tools/virt-edit.pl:46
msgid ""
-"B<virt-inspector> examines a virtual machine or disk image and tries to "
-"determine the version of the operating system and other information about "
-"the virtual machine."
+"You must I<not> use C<virt-edit> on live virtual machines. If you do this, "
+"you risk disk corruption in the VM. C<virt-edit> tries to stop you from "
+"doing this, but doesn't catch all cases."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:49
-msgid "Virt-inspector produces XML output for feeding into other programs."
+#: ../tools/virt-edit.pl:52
+msgid ""
+"C<virt-edit> is a command line tool to edit C<file> where C<file> exists in "
+"the named virtual machine (or disk image)."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:51
+#: ../tools/virt-edit.pl:55
msgid ""
-"In the normal usage, use C<virt-inspector domname> where C<domname> is the "
-"libvirt domain (see: C<virsh list --all>)."
+"If you want to just view a file, use L<virt-cat(1)>. For more complex cases "
+"you should look at the L<guestfish(1)> tool."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:54
+#: ../tools/virt-edit.pl:60
+msgid "Edit the named files interactively:"
+msgstr ""
+
+# type: verbatim
+#: ../tools/virt-edit.pl:62
+#, no-wrap
msgid ""
-"You can also run virt-inspector directly on disk images from a single "
-"virtual machine. Use C<virt-inspector guest.img>. In rare cases a domain "
-"has several block devices, in which case you should list them one after "
-"another, with the first corresponding to the guest's C</dev/sda>, the second "
-"to the guest's C</dev/sdb> and so on."
+" virt-edit mydomain /boot/grub/grub.conf\n"
+"\n"
msgstr ""
-# type: textblock
-#: ../inspector/virt-inspector.pl:60
+# type: verbatim
+#: ../tools/virt-edit.pl:64
+#, no-wrap
msgid ""
-"Virt-inspector can only inspect and report upon I<one domain at a time>. To "
-"inspect several virtual machines, you have to run virt-inspector several "
-"times (for example, from a shell script for-loop)."
+" virt-edit mydomain /etc/passwd\n"
+"\n"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:65
+#: ../tools/virt-edit.pl:66
+msgid ""
+"You can also edit files non-interactively (see L</NON-INTERACTIVE EDITING> "
+"below). To change the init default level to 5:"
+msgstr ""
+
+# type: verbatim
+#: ../tools/virt-edit.pl:70
+#, no-wrap
msgid ""
-"Because virt-inspector needs direct access to guest images, it won't "
-"normally work over remote libvirt connections."
+" virt-edit mydomain /etc/inittab -e 's/^id:.*/id:5:initdefault:/'\n"
+"\n"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:78 ../tools/virt-edit.pl:82
-#: ../tools/virt-win-reg.pl:181 ../tools/virt-df.pl:81 ../tools/virt-ls.pl:88
-#: ../tools/virt-list-filesystems.pl:60 ../tools/virt-tar.pl:108
-#: ../tools/virt-rescue.pl:113 ../tools/virt-make-fs.pl:163
-#: ../tools/virt-list-partitions.pl:61
+#: ../tools/virt-edit.pl:82 ../tools/virt-win-reg.pl:181
+#: ../tools/virt-list-filesystems.pl:63 ../tools/virt-tar.pl:108
+#: ../tools/virt-make-fs.pl:163 ../tools/virt-list-partitions.pl:64
msgid "Display brief help."
msgstr ""
# type: =item
-#: ../inspector/virt-inspector.pl:84 ../tools/virt-edit.pl:88
-#: ../tools/virt-win-reg.pl:187 ../tools/virt-df.pl:87 ../tools/virt-ls.pl:94
-#: ../tools/virt-resize.pl:273 ../tools/virt-list-filesystems.pl:66
-#: ../tools/virt-tar.pl:114 ../tools/virt-rescue.pl:119
-#: ../tools/virt-make-fs.pl:169 ../tools/virt-list-partitions.pl:67
+#: ../tools/virt-edit.pl:88 ../tools/virt-win-reg.pl:187
+#: ../tools/virt-resize.pl:272 ../tools/virt-list-filesystems.pl:69
+#: ../tools/virt-tar.pl:114 ../tools/virt-make-fs.pl:169
+#: ../tools/virt-list-partitions.pl:70
msgid "B<--version>"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:86 ../tools/virt-edit.pl:90
-#: ../tools/virt-win-reg.pl:189 ../tools/virt-df.pl:89 ../tools/virt-ls.pl:96
-#: ../tools/virt-resize.pl:275 ../tools/virt-list-filesystems.pl:68
-#: ../tools/virt-tar.pl:116 ../tools/virt-rescue.pl:121
-#: ../tools/virt-make-fs.pl:171 ../tools/virt-list-partitions.pl:69
+#: ../tools/virt-edit.pl:90 ../tools/virt-win-reg.pl:189
+#: ../tools/virt-resize.pl:274 ../tools/virt-list-filesystems.pl:71
+#: ../tools/virt-tar.pl:116 ../tools/virt-make-fs.pl:171
+#: ../tools/virt-list-partitions.pl:72
msgid "Display version number and exit."
msgstr ""
# type: =item
-#: ../inspector/virt-inspector.pl:92 ../tools/virt-edit.pl:112
-#: ../tools/virt-win-reg.pl:203 ../tools/virt-df.pl:95 ../tools/virt-ls.pl:102
-#: ../tools/virt-list-filesystems.pl:74 ../tools/virt-tar.pl:122
-#: ../tools/virt-rescue.pl:135 ../tools/virt-list-partitions.pl:75
+#: ../tools/virt-edit.pl:96
+msgid "B<--backup extension> | B<-b extension>"
+msgstr ""
+
+# type: textblock
+#: ../tools/virt-edit.pl:98
+msgid ""
+"Create a backup of the original file I<in the guest disk image>. The backup "
+"has the original filename with C<extension> added."
+msgstr ""
+
+# type: textblock
+#: ../tools/virt-edit.pl:101
+msgid ""
+"Usually the first character of C<extension> would be a dot C<.> so you would "
+"write:"
+msgstr ""
+
+# type: verbatim
+#: ../tools/virt-edit.pl:104
+#, no-wrap
+msgid ""
+" virt-edit -b .orig [etc]\n"
+"\n"
+msgstr ""
+
+# type: textblock
+#: ../tools/virt-edit.pl:106
+msgid "By default, no backup file is made."
+msgstr ""
+
+# type: =item
+#: ../tools/virt-edit.pl:112 ../tools/virt-win-reg.pl:203
+#: ../tools/virt-list-filesystems.pl:77 ../tools/virt-tar.pl:122
+#: ../tools/virt-list-partitions.pl:78
msgid "B<--connect URI> | B<-c URI>"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:94 ../tools/virt-edit.pl:114
-#: ../tools/virt-win-reg.pl:205 ../tools/virt-df.pl:97 ../tools/virt-ls.pl:104
-#: ../tools/virt-list-filesystems.pl:76 ../tools/virt-tar.pl:124
-#: ../tools/virt-rescue.pl:137 ../tools/virt-list-partitions.pl:77
+#: ../tools/virt-edit.pl:114 ../tools/virt-win-reg.pl:205
+#: ../tools/virt-list-filesystems.pl:79 ../tools/virt-tar.pl:124
+#: ../tools/virt-list-partitions.pl:80
msgid ""
"If using libvirt, connect to the given I<URI>. If omitted, then we connect "
"to the default libvirt hypervisor."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:97
+#: ../tools/virt-edit.pl:117 ../tools/virt-win-reg.pl:208
+#: ../tools/virt-list-filesystems.pl:82 ../tools/virt-tar.pl:127
+#: ../tools/virt-list-partitions.pl:83
msgid ""
-"Libvirt is only used if you specify a C<domname> on the command line. If "
-"you specify guest block devices directly, then libvirt is not used at all."
+"If you specify guest block devices directly, then libvirt is not used at all."
msgstr ""
# type: =item
-#: ../inspector/virt-inspector.pl:105 ../tools/virt-edit.pl:124
-#: ../tools/virt-win-reg.pl:215 ../tools/virt-df.pl:117
-#: ../tools/virt-ls.pl:114 ../tools/virt-resize.pl:523
-#: ../tools/virt-list-filesystems.pl:86 ../tools/virt-tar.pl:134
-#: ../tools/virt-rescue.pl:147 ../tools/virt-list-partitions.pl:87
+#: ../tools/virt-edit.pl:124 ../tools/virt-win-reg.pl:215
+#: ../tools/virt-resize.pl:522 ../tools/virt-list-filesystems.pl:89
+#: ../tools/virt-tar.pl:134 ../tools/virt-list-partitions.pl:90
msgid "B<--format> raw"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:107 ../tools/virt-edit.pl:126
-#: ../tools/virt-win-reg.pl:217 ../tools/virt-df.pl:119
-#: ../tools/virt-ls.pl:116 ../tools/virt-list-filesystems.pl:88
-#: ../tools/virt-tar.pl:136 ../tools/virt-rescue.pl:149
-#: ../tools/virt-list-partitions.pl:89
+#: ../tools/virt-edit.pl:126 ../tools/virt-win-reg.pl:217
+#: ../tools/virt-list-filesystems.pl:91 ../tools/virt-tar.pl:136
+#: ../tools/virt-list-partitions.pl:92
msgid ""
"Specify the format of disk images given on the command line. If this is "
"omitted then the format is autodetected from the content of the disk image."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:111 ../tools/virt-edit.pl:130
-#: ../tools/virt-win-reg.pl:221 ../tools/virt-df.pl:123
-#: ../tools/virt-ls.pl:120 ../tools/virt-list-filesystems.pl:92
-#: ../tools/virt-tar.pl:140 ../tools/virt-rescue.pl:153
-#: ../tools/virt-list-partitions.pl:93
+#: ../tools/virt-edit.pl:130 ../tools/virt-win-reg.pl:221
+#: ../tools/virt-list-filesystems.pl:95 ../tools/virt-tar.pl:140
+#: ../tools/virt-list-partitions.pl:96
msgid ""
"If disk images are requested from libvirt, then this program asks libvirt "
"for this information. In this case, the value of the format parameter is "
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:115 ../tools/virt-edit.pl:134
-#: ../tools/virt-win-reg.pl:225 ../tools/virt-df.pl:127
-#: ../tools/virt-ls.pl:124 ../tools/virt-resize.pl:528
-#: ../tools/virt-resize.pl:543 ../tools/virt-list-filesystems.pl:96
-#: ../tools/virt-tar.pl:144 ../tools/virt-rescue.pl:157
-#: ../tools/virt-list-partitions.pl:97
+#: ../tools/virt-edit.pl:134 ../tools/virt-win-reg.pl:225
+#: ../tools/virt-resize.pl:527 ../tools/virt-resize.pl:542
+#: ../tools/virt-list-filesystems.pl:99 ../tools/virt-tar.pl:144
+#: ../tools/virt-list-partitions.pl:100
msgid ""
"If working with untrusted raw-format guest disk images, you should ensure "
"the format is always specified."
msgstr ""
-# type: =head1
-#: ../inspector/virt-inspector.pl:149
-msgid "XML FORMAT"
+# type: =item
+#: ../tools/virt-edit.pl:141
+msgid "B<--expr EXPR> | B<-e EXPR>"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:151
+#: ../tools/virt-edit.pl:143
msgid ""
-"The virt-inspector XML is described precisely in a RELAX NG schema which is "
-"supplied with libguestfs. This section is just an overview."
+"Instead of launching the external editor, non-interactively apply the Perl "
+"expression C<EXPR> to each line in the file. See L</NON-INTERACTIVE "
+"EDITING> below."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:154
+#: ../tools/virt-edit.pl:147
msgid ""
-"The top-level element is E<lt>operatingsystemsE<gt>, and it contains one or "
-"more E<lt>operatingsystemE<gt> elements. You would only see more than one "
-"E<lt>operatingsystemE<gt> element if the virtual machine is multi-boot, "
-"which is vanishingly rare in real world VMs."
+"Be careful to properly quote the expression to prevent it from being altered "
+"by the shell."
msgstr ""
-# type: =head2
-#: ../inspector/virt-inspector.pl:159
-msgid "E<lt>operatingsystemE<gt>"
+# type: =head1
+#: ../tools/virt-edit.pl:268
+msgid "NON-INTERACTIVE EDITING"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:161
-msgid ""
-"In the E<lt>operatingsystemE<gt> tag are various optional fields that "
-"describe the operating system, its architecture, the descriptive \"product "
-"name\" string, the type of OS and so on, as in this example:"
-msgstr ""
-
-# type: verbatim
-#: ../inspector/virt-inspector.pl:165
-#, no-wrap
+#: ../tools/virt-edit.pl:270
msgid ""
-" <operatingsystems>\n"
-" <operatingsystem>\n"
-" <root>/dev/sda2</root>\n"
-" <name>windows</name>\n"
-" <arch>i386</arch>\n"
-" <distro>windows</distro>\n"
-" <product_name>Windows 7 Enterprise</product_name>\n"
-" <major_version>6</major_version>\n"
-" <minor_version>1</minor_version>\n"
-" <windows_systemroot>/Windows</windows_systemroot>\n"
-"\n"
+"C<virt-edit> normally calls out to C<$EDITOR> (or vi) so the system "
+"administrator can interactively edit the file."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:176
+#: ../tools/virt-edit.pl:273
msgid ""
-"These fields are derived from the libguestfs inspection API, and you can "
-"find more details in L<guestfs(3)/INSPECTION>."
+"There are two ways also to use C<virt-edit> from scripts in order to make "
+"automated edits to files. (Note that although you I<can> use C<virt-edit> "
+"like this, it's less error-prone to write scripts directly using the "
+"libguestfs API and Augeas for configuration file editing.)"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:179
+#: ../tools/virt-edit.pl:279
msgid ""
-"The E<lt>rootE<gt> element is the root filesystem device, but from the point "
-"of view of libguestfs (block devices may have completely different names "
-"inside the VM itself)."
-msgstr ""
-
-# type: =head2
-#: ../inspector/virt-inspector.pl:246
-msgid "E<lt>mountpointsE<gt>"
+"The first method is to temporarily set C<$EDITOR> to any script or program "
+"you want to run. The script is invoked as C<$EDITOR tmpfile> and it should "
+"update C<tmpfile> in place however it likes."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:248
+#: ../tools/virt-edit.pl:283
msgid ""
-"Un*x-like guests typically have multiple filesystems which are mounted at "
-"various mountpoints, and these are described in the E<lt>mountpointsE<gt> "
-"element which looks like this:"
+"The second method is to use the C<-e> parameter of C<virt-edit> to run a "
+"short Perl snippet in the style of L<sed(1)>. For example to replace all "
+"instances of C<foo> with C<bar> in a file:"
msgstr ""
# type: verbatim
-#: ../inspector/virt-inspector.pl:252
+#: ../tools/virt-edit.pl:287
#, no-wrap
msgid ""
-" <operatingsystems>\n"
-" <operatingsystem>\n"
-" ...\n"
-" <mountpoints>\n"
-" <mountpoint dev=\"/dev/vg_f13x64/lv_root\">/</mountpoint>\n"
-" <mountpoint dev=\"/dev/sda1\">/boot</mountpoint>\n"
-" </mountpoints>\n"
+" virt-edit domname filename -e 's/foo/bar/'\n"
"\n"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:260
+#: ../tools/virt-edit.pl:289
msgid ""
-"As with E<lt>rootE<gt>, devices are from the point of view of libguestfs, "
-"and may have completely different names inside the guest. Only mountable "
-"filesystems appear in this list, not things like swap devices."
+"The full power of Perl regular expressions can be used (see L<perlre(1)>). "
+"For example to delete root's password you could do:"
msgstr ""
-# type: =head2
-#: ../inspector/virt-inspector.pl:282
-msgid "E<lt>filesystemsE<gt>"
+# type: verbatim
+#: ../tools/virt-edit.pl:292
+#, no-wrap
+msgid ""
+" virt-edit domname /etc/passwd -e 's/^root:.*?:/root::/'\n"
+"\n"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:284
+#: ../tools/virt-edit.pl:294
msgid ""
-"E<lt>filesystemsE<gt> is like E<lt>mountpointsE<gt> but covers I<all> "
-"filesystems belonging to the guest, including swap and empty partitions. "
-"(In the rare case of a multi-boot guest, it covers filesystems belonging to "
-"this OS or shared by this OS and other OSes)."
+"What really happens is that the snippet is evaluated as a Perl expression "
+"for each line of the file. The line, including the final C<\\n>, is passed "
+"in C<$_> and the expression should update C<$_> or leave it unchanged."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:289
-msgid "You might see something like this:"
+#: ../tools/virt-edit.pl:299
+msgid ""
+"To delete a line, set C<$_> to the empty string. For example, to delete the "
+"C<apache> user account from the password file you can do:"
msgstr ""
# type: verbatim
-#: ../inspector/virt-inspector.pl:291
+#: ../tools/virt-edit.pl:302
#, no-wrap
msgid ""
-" <operatingsystems>\n"
-" <operatingsystem>\n"
-" ...\n"
-" <filesystems>\n"
-" <filesystem dev=\"/dev/vg_f13x64/lv_root\">\n"
-" <type>ext4</type>\n"
-" <label>Fedora-13-x86_64</label>\n"
-" <uuid>e6a4db1e-15c2-477b-ac2a-699181c396aa</uuid>\n"
-" </filesystem>\n"
+" virt-edit mydomain /etc/passwd -e '$_ = \"\" if /^apache:/'\n"
"\n"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:301
+#: ../tools/virt-edit.pl:304
msgid ""
-"The optional elements within E<lt>filesystemE<gt> are the filesystem type, "
-"the label, and the UUID."
-msgstr ""
-
-# type: =head2
-#: ../inspector/virt-inspector.pl:343
-msgid "E<lt>applicationsE<gt>"
+"To insert a line, prepend or append it to C<$_>. However appending lines to "
+"the end of the file is rather difficult this way since there is no concept "
+"of \"last line of the file\" - your expression just doesn't get called "
+"again. You might want to use the first method (setting C<$EDITOR>) if you "
+"want to do this."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:345
+#: ../tools/virt-edit.pl:310
msgid ""
-"The related elements E<lt>package_formatE<gt>, E<lt>package_managementE<gt> "
-"and E<lt>applicationsE<gt> describe applications installed in the virtual "
-"machine. At the moment we are only able to list RPMs and Debian packages "
-"installed, but in future we will support other Linux distros and Windows."
+"The variable C<$lineno> contains the current line number. As is "
+"traditional, the first line in the file is number C<1>."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:351
+#: ../tools/virt-edit.pl:313
msgid ""
-"E<lt>package_formatE<gt>, if present, describes the packaging system used. "
-"Typical values would be C<rpm> and C<deb>."
+"The return value from the expression is ignored, but the expression may call "
+"C<die> in order to abort the whole program, leaving the original file "
+"untouched."
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:354
+#: ../tools/virt-edit.pl:317
msgid ""
-"E<lt>package_managementE<gt>, if present, describes the package manager. "
-"Typical values include C<yum>, C<up2date> and C<apt>"
-msgstr ""
-
-# type: textblock
-#: ../inspector/virt-inspector.pl:357
-msgid "E<lt>applicationsE<gt> lists the packages or applications installed."
+"Remember when matching the end of a line that C<$_> may contain the final C<"
+"\\n>, or (for DOS files) C<\\r\\n>, or if the file does not end with a "
+"newline then neither of these. Thus to match or substitute some text at the "
+"end of a line, use this regular expression:"
msgstr ""
# type: verbatim
-#: ../inspector/virt-inspector.pl:360
+#: ../tools/virt-edit.pl:322
#, no-wrap
msgid ""
-" <operatingsystems>\n"
-" <operatingsystem>\n"
-" ...\n"
-" <applications>\n"
-" <application>\n"
-" <name>coreutils</name>\n"
-" <version>8.5</version>\n"
-" <release>1</release>\n"
-" </application>\n"
+" /some text(\\r?\\n)?$/\n"
"\n"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:370
-msgid ""
-"The version and release fields may not be available for some types guests. "
-"Other fields are possible, see L<guestfs(3)/"
-"guestfs_inspect_list_applications>."
-msgstr ""
-
-# type: =head1
-#: ../inspector/virt-inspector.pl:426
-msgid "USING XPATH"
-msgstr ""
-
-# type: textblock
-#: ../inspector/virt-inspector.pl:428
+#: ../tools/virt-edit.pl:324
msgid ""
-"You can use the XPath query language, and/or the xpath tool, in order to "
-"select parts of the XML."
+"Alternately, use the perl C<chomp> function, being careful not to chomp C<"
+"$_> itself (since that would remove all newlines from the file):"
msgstr ""
# type: verbatim
-#: ../inspector/virt-inspector.pl:433
+#: ../tools/virt-edit.pl:328
#, no-wrap
msgid ""
-" $ virt-inspector Guest | xpath //filesystems\n"
-" Found 1 nodes:\n"
-" -- NODE --\n"
-" <filesystems>\n"
-" <filesystem dev=\"/dev/vg_f13x64/lv_root\">\n"
-" <type>ext4</type>\n"
-" [etc]\n"
+" my $m = $_; chomp $m; $m =~ /some text$/\n"
"\n"
msgstr ""
-# type: verbatim
-#: ../inspector/virt-inspector.pl:441
-#, no-wrap
+# type: =item
+#: ../tools/virt-edit.pl:334
+msgid "C<EDITOR>"
+msgstr ""
+
+# type: textblock
+#: ../tools/virt-edit.pl:336
msgid ""
-" $ virt-inspector Guest | \\\n"
-" xpath \"string(//filesystem[@dev='/dev/sda1']/type)\"\n"
-" Query didn't return a nodeset. Value: ext4\n"
-"\n"
+"If set, this string is used as the editor. It may contain arguments, eg. C<"
+"\"emacs -nw\">"
+msgstr ""
+
+# type: textblock
+#: ../tools/virt-edit.pl:339
+msgid "If not set, C<vi> is used."
msgstr ""
# type: =head2
-#: ../inspector/virt-inspector.pl:445 ../tools/virt-edit.pl:343
-#: ../tools/virt-win-reg.pl:141 ../tools/virt-win-reg.pl:477
-#: ../tools/virt-df.pl:633 ../tools/virt-ls.pl:225
-#: ../tools/virt-resize.pl:1479 ../tools/virt-list-filesystems.pl:179
-#: ../tools/virt-tar.pl:274 ../tools/virt-rescue.pl:260
-#: ../tools/virt-make-fs.pl:527 ../tools/virt-list-partitions.pl:247
+#: ../tools/virt-edit.pl:343 ../tools/virt-win-reg.pl:141
+#: ../tools/virt-win-reg.pl:477 ../tools/virt-resize.pl:1478
+#: ../tools/virt-list-filesystems.pl:182 ../tools/virt-tar.pl:274
+#: ../tools/virt-make-fs.pl:527 ../tools/virt-list-partitions.pl:250
msgid "SHELL QUOTING"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:447 ../tools/virt-edit.pl:345
-#: ../tools/virt-win-reg.pl:479 ../tools/virt-df.pl:635
-#: ../tools/virt-ls.pl:227 ../tools/virt-resize.pl:1481
-#: ../tools/virt-list-filesystems.pl:181 ../tools/virt-tar.pl:276
-#: ../tools/virt-rescue.pl:262 ../tools/virt-make-fs.pl:529
-#: ../tools/virt-list-partitions.pl:249
+#: ../tools/virt-edit.pl:345 ../tools/virt-win-reg.pl:479
+#: ../tools/virt-resize.pl:1480 ../tools/virt-list-filesystems.pl:184
+#: ../tools/virt-tar.pl:276 ../tools/virt-make-fs.pl:529
+#: ../tools/virt-list-partitions.pl:252
msgid ""
"Libvirt guest names can contain arbitrary characters, some of which have "
"meaning to the shell such as C<#> and space. You may need to quote or "
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:454
+#: ../tools/virt-edit.pl:352
msgid ""
-"L<guestfs(3)>, L<guestfish(1)>, L<Sys::Guestfs(3)>, L<Sys::Guestfs::Lib(3)>, "
-"L<Sys::Virt(3)>, L<http://www.w3.org/TR/xpath/>, L<http://libguestfs.org/>."
+"L<guestfs(3)>, L<guestfish(1)>, L<virt-cat(1)>, L<Sys::Guestfs(3)>, L<Sys::"
+"Guestfs::Lib(3)>, L<Sys::Virt(3)>, L<http://libguestfs.org/>, L<perl(1)>, "
+"L<perlre(1)>."
msgstr ""
-# type: textblock
-#: ../inspector/virt-inspector.pl:468 ../tools/virt-edit.pl:364
-#: ../tools/virt-win-reg.pl:512 ../tools/virt-df.pl:651
-#: ../tools/virt-ls.pl:245 ../tools/virt-resize.pl:1510
-#: ../tools/virt-list-filesystems.pl:200 ../tools/virt-tar.pl:294
-#: ../tools/virt-rescue.pl:279 ../tools/virt-make-fs.pl:561
-#: ../tools/virt-list-partitions.pl:267
-msgid "Richard W.M. Jones L<http://people.redhat.com/~rjones/>"
+# type: =head1
+#: ../tools/virt-edit.pl:362 ../tools/virt-win-reg.pl:510
+#: ../tools/virt-resize.pl:1506 ../tools/virt-list-filesystems.pl:202
+#: ../tools/virt-tar.pl:292 ../tools/virt-make-fs.pl:559
+#: ../tools/virt-list-partitions.pl:269
+msgid "AUTHOR"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:472
-msgid "Matthew Booth L<mbooth@redhat.com>"
+#: ../tools/virt-edit.pl:364 ../tools/virt-win-reg.pl:512
+#: ../tools/virt-resize.pl:1508 ../tools/virt-list-filesystems.pl:204
+#: ../tools/virt-tar.pl:294 ../tools/virt-make-fs.pl:561
+#: ../tools/virt-list-partitions.pl:271
+msgid "Richard W.M. Jones L<http://people.redhat.com/~rjones/>"
msgstr ""
# type: textblock
-#: ../inspector/virt-inspector.pl:478 ../tools/virt-win-reg.pl:516
-#: ../tools/virt-resize.pl:1514 ../tools/virt-make-fs.pl:565
-msgid "Copyright (C) 2010 Red Hat Inc."
+#: ../tools/virt-edit.pl:368 ../tools/virt-list-partitions.pl:275
+msgid "Copyright (C) 2009-2010 Red Hat Inc."
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:34
-msgid "virt-edit - Edit a file in a virtual machine"
+#: ../tools/virt-win-reg.pl:37
+msgid ""
+"virt-win-reg - Export and merge Windows Registry entries from a Windows guest"
msgstr ""
# type: verbatim
-#: ../tools/virt-edit.pl:38
+#: ../tools/virt-win-reg.pl:41
#, no-wrap
msgid ""
-" virt-edit [--options] domname file\n"
+" virt-win-reg domname 'HKLM\\Path\\To\\Subkey'\n"
"\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-edit.pl:40
+#: ../tools/virt-win-reg.pl:43
#, no-wrap
msgid ""
-" virt-edit [--options] disk.img [disk.img ...] file\n"
+" virt-win-reg domname 'HKLM\\Path\\To\\Subkey' name\n"
"\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-edit.pl:42
+#: ../tools/virt-win-reg.pl:45
#, no-wrap
msgid ""
-" virt-edit [domname|disk.img] file -e 'expr'\n"
+" virt-win-reg domname 'HKLM\\Path\\To\\Subkey' @\n"
"\n"
msgstr ""
-# type: textblock
-#: ../tools/virt-edit.pl:46
-msgid ""
-"You must I<not> use C<virt-edit> on live virtual machines. If you do this, "
-"you risk disk corruption in the VM. C<virt-edit> tries to stop you from "
-"doing this, but doesn't catch all cases."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:52
-msgid ""
-"C<virt-edit> is a command line tool to edit C<file> where C<file> exists in "
-"the named virtual machine (or disk image)."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:55
-msgid ""
-"If you want to just view a file, use L<virt-cat(1)>. For more complex cases "
-"you should look at the L<guestfish(1)> tool."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:60
-msgid "Edit the named files interactively:"
-msgstr ""
-
# type: verbatim
-#: ../tools/virt-edit.pl:62
+#: ../tools/virt-win-reg.pl:47
#, no-wrap
msgid ""
-" virt-edit mydomain /boot/grub/grub.conf\n"
+" virt-win-reg --merge domname [input.reg ...]\n"
"\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-edit.pl:64
+#: ../tools/virt-win-reg.pl:49
#, no-wrap
msgid ""
-" virt-edit mydomain /etc/passwd\n"
+" virt-win-reg [--options] disk.img ... # instead of domname\n"
"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:66
+#: ../tools/virt-win-reg.pl:53
msgid ""
-"You can also edit files non-interactively (see L</NON-INTERACTIVE EDITING> "
-"below). To change the init default level to 5:"
+"You must I<not> use C<virt-win-reg> with the C<--merge> option on live "
+"virtual machines. If you do this, you I<will> get irreversible disk "
+"corruption in the VM. C<virt-win-reg> tries to stop you from doing this, "
+"but doesn't catch all cases."
msgstr ""
-# type: verbatim
-#: ../tools/virt-edit.pl:70
-#, no-wrap
+# type: textblock
+#: ../tools/virt-win-reg.pl:58
msgid ""
-" virt-edit mydomain /etc/inittab -e 's/^id:.*/id:5:initdefault:/'\n"
-"\n"
+"Modifying the Windows Registry is an inherently risky operation. The format "
+"is deliberately obscure and undocumented, and Registry changes can leave the "
+"system unbootable. Therefore when using the C<--merge> option, make sure "
+"you have a reliable backup first."
msgstr ""
-# type: =item
-#: ../tools/virt-edit.pl:96
-msgid "B<--backup extension> | B<-b extension>"
+# type: textblock
+#: ../tools/virt-win-reg.pl:65
+msgid ""
+"This program can export and merge Windows Registry entries from a Windows "
+"guest."
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:98
+#: ../tools/virt-win-reg.pl:68
msgid ""
-"Create a backup of the original file I<in the guest disk image>. The backup "
-"has the original filename with C<extension> added."
+"The first parameter is the libvirt guest name or the raw disk image of a "
+"Windows guest."
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:101
+#: ../tools/virt-win-reg.pl:71
msgid ""
-"Usually the first character of C<extension> would be a dot C<.> so you would "
-"write:"
+"If C<--merge> is I<not> specified, then the chosen registry key is displayed/"
+"exported (recursively). For example:"
msgstr ""
# type: verbatim
-#: ../tools/virt-edit.pl:104
+#: ../tools/virt-win-reg.pl:74
#, no-wrap
msgid ""
-" virt-edit -b .orig [etc]\n"
+" $ virt-win-reg Windows7 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft'\n"
"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:106
-msgid "By default, no backup file is made."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:117 ../tools/virt-win-reg.pl:208
-#: ../tools/virt-df.pl:100 ../tools/virt-ls.pl:107
-#: ../tools/virt-list-filesystems.pl:79 ../tools/virt-tar.pl:127
-#: ../tools/virt-rescue.pl:140 ../tools/virt-list-partitions.pl:80
+#: ../tools/virt-win-reg.pl:76
msgid ""
-"If you specify guest block devices directly, then libvirt is not used at all."
+"You can also display single values from within registry keys, for example:"
msgstr ""
-# type: =item
-#: ../tools/virt-edit.pl:141
-msgid "B<--expr EXPR> | B<-e EXPR>"
+# type: verbatim
+#: ../tools/virt-win-reg.pl:79
+#, no-wrap
+msgid ""
+" $ cvkey='HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'\n"
+" $ virt-win-reg Windows7 $cvkey ProductName\n"
+" Windows 7 Enterprise\n"
+"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:143
+#: ../tools/virt-win-reg.pl:83
msgid ""
-"Instead of launching the external editor, non-interactively apply the Perl "
-"expression C<EXPR> to each line in the file. See L</NON-INTERACTIVE "
-"EDITING> below."
+"With C<--merge>, you can merge a textual regedit file into the Windows "
+"Registry:"
msgstr ""
-# type: textblock
-#: ../tools/virt-edit.pl:147
+# type: verbatim
+#: ../tools/virt-win-reg.pl:86
+#, no-wrap
msgid ""
-"Be careful to properly quote the expression to prevent it from being altered "
-"by the shell."
+" $ virt-win-reg --merge Windows7 changes.reg\n"
+"\n"
msgstr ""
-# type: =head1
-#: ../tools/virt-edit.pl:268
-msgid "NON-INTERACTIVE EDITING"
+# type: =head2
+#: ../tools/virt-win-reg.pl:88
+msgid "SUPPORTED SYSTEMS"
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:270
+#: ../tools/virt-win-reg.pl:90
msgid ""
-"C<virt-edit> normally calls out to C<$EDITOR> (or vi) so the system "
-"administrator can interactively edit the file."
+"The program currently supports Windows NT-derived guests starting with "
+"Windows XP through to at least Windows 7."
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:273
+#: ../tools/virt-win-reg.pl:93
msgid ""
-"There are two ways also to use C<virt-edit> from scripts in order to make "
-"automated edits to files. (Note that although you I<can> use C<virt-edit> "
-"like this, it's less error-prone to write scripts directly using the "
-"libguestfs API and Augeas for configuration file editing.)"
+"Registry support is done for C<HKEY_LOCAL_MACHINE\\SAM>, C<HKEY_LOCAL_MACHINE"
+"\\SECURITY>, C<HKEY_LOCAL_MACHINE\\SOFTWARE>, C<HKEY_LOCAL_MACHINE\\SYSTEM> "
+"and C<HKEY_USERS\\.DEFAULT>."
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:279
+#: ../tools/virt-win-reg.pl:97
msgid ""
-"The first method is to temporarily set C<$EDITOR> to any script or program "
-"you want to run. The script is invoked as C<$EDITOR tmpfile> and it should "
-"update C<tmpfile> in place however it likes."
+"You can use C<HKLM> as a shorthand for C<HKEY_LOCAL_MACHINE>, and C<HKU> for "
+"C<HKEY_USERS>."
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:283
+#: ../tools/virt-win-reg.pl:100
msgid ""
-"The second method is to use the C<-e> parameter of C<virt-edit> to run a "
-"short Perl snippet in the style of L<sed(1)>. For example to replace all "
-"instances of C<foo> with C<bar> in a file:"
+"C<HKEY_USERS\\$SID> and C<HKEY_CURRENT_USER> are B<not> supported at this "
+"time."
msgstr ""
-# type: verbatim
-#: ../tools/virt-edit.pl:287
-#, no-wrap
-msgid ""
-" virt-edit domname filename -e 's/foo/bar/'\n"
-"\n"
+# type: =head2
+#: ../tools/virt-win-reg.pl:103
+msgid "NOTE"
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:289
+#: ../tools/virt-win-reg.pl:105
msgid ""
-"The full power of Perl regular expressions can be used (see L<perlre(1)>). "
-"For example to delete root's password you could do:"
+"This program is only meant for simple access to the registry. If you want "
+"to do complicated things with the registry, we suggest you download the "
+"Registry hive files from the guest using L<libguestfs(3)> or L<guestfish(1)> "
+"and access them locally, eg. using L<hivex(3)>, L<hivexsh(1)> or "
+"L<hivexregedit(1)>."
msgstr ""
-# type: verbatim
-#: ../tools/virt-edit.pl:292
-#, no-wrap
-msgid ""
-" virt-edit domname /etc/passwd -e 's/^root:.*?:/root::/'\n"
-"\n"
+# type: =head2
+#: ../tools/virt-win-reg.pl:111
+msgid "ENCODING"
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:294
+#: ../tools/virt-win-reg.pl:113
msgid ""
-"What really happens is that the snippet is evaluated as a Perl expression "
-"for each line of the file. The line, including the final C<\\n>, is passed "
-"in C<$_> and the expression should update C<$_> or leave it unchanged."
+"C<virt-win-reg> expects that regedit files have already been reencoded in "
+"the local encoding. Usually on Linux hosts, this means UTF-8 with Unix-"
+"style line endings. Since Windows regedit files are often in UTF-16LE with "
+"Windows-style line endings, you may need to reencode the whole file before "
+"or after processing."
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:299
+#: ../tools/virt-win-reg.pl:119
msgid ""
-"To delete a line, set C<$_> to the empty string. For example, to delete the "
-"C<apache> user account from the password file you can do:"
+"To reencode a file from Windows format to Linux (before processing it with "
+"the C<--merge> option), you would do something like this:"
msgstr ""
# type: verbatim
-#: ../tools/virt-edit.pl:302
+#: ../tools/virt-win-reg.pl:122
#, no-wrap
msgid ""
-" virt-edit mydomain /etc/passwd -e '$_ = \"\" if /^apache:/'\n"
+" iconv -f utf-16le -t utf-8 < win.reg | dos2unix > linux.reg\n"
"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:304
+#: ../tools/virt-win-reg.pl:124
msgid ""
-"To insert a line, prepend or append it to C<$_>. However appending lines to "
-"the end of the file is rather difficult this way since there is no concept "
-"of \"last line of the file\" - your expression just doesn't get called "
-"again. You might want to use the first method (setting C<$EDITOR>) if you "
-"want to do this."
+"To go in the opposite direction, after exporting and before sending the file "
+"to a Windows user, do something like this:"
msgstr ""
-# type: textblock
-#: ../tools/virt-edit.pl:310
+# type: verbatim
+#: ../tools/virt-win-reg.pl:127
+#, no-wrap
msgid ""
-"The variable C<$lineno> contains the current line number. As is "
-"traditional, the first line in the file is number C<1>."
+" unix2dos linux.reg | iconv -f utf-8 -t utf-16le > win.reg\n"
+"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:313
-msgid ""
-"The return value from the expression is ignored, but the expression may call "
-"C<die> in order to abort the whole program, leaving the original file "
-"untouched."
+#: ../tools/virt-win-reg.pl:129
+msgid "For more information about encoding, see L<Win::Hivex::Regedit(3)>."
msgstr ""
# type: textblock
-#: ../tools/virt-edit.pl:317
+#: ../tools/virt-win-reg.pl:131
msgid ""
-"Remember when matching the end of a line that C<$_> may contain the final C<"
-"\\n>, or (for DOS files) C<\\r\\n>, or if the file does not end with a "
-"newline then neither of these. Thus to match or substitute some text at the "
-"end of a line, use this regular expression:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-edit.pl:322
-#, no-wrap
-msgid ""
-" /some text(\\r?\\n)?$/\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:324
-msgid ""
-"Alternately, use the perl C<chomp> function, being careful not to chomp C<"
-"$_> itself (since that would remove all newlines from the file):"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-edit.pl:328
-#, no-wrap
-msgid ""
-" my $m = $_; chomp $m; $m =~ /some text$/\n"
-"\n"
-msgstr ""
-
-# type: =item
-#: ../tools/virt-edit.pl:334
-msgid "C<EDITOR>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:336
-msgid ""
-"If set, this string is used as the editor. It may contain arguments, eg. C<"
-"\"emacs -nw\">"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:339
-msgid "If not set, C<vi> is used."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:352
-msgid ""
-"L<guestfs(3)>, L<guestfish(1)>, L<virt-cat(1)>, L<Sys::Guestfs(3)>, L<Sys::"
-"Guestfs::Lib(3)>, L<Sys::Virt(3)>, L<http://libguestfs.org/>, L<perl(1)>, "
-"L<perlre(1)>."
-msgstr ""
-
-# type: =head1
-#: ../tools/virt-edit.pl:362 ../tools/virt-win-reg.pl:510
-#: ../tools/virt-df.pl:649 ../tools/virt-ls.pl:243
-#: ../tools/virt-resize.pl:1508 ../tools/virt-list-filesystems.pl:198
-#: ../tools/virt-tar.pl:292 ../tools/virt-rescue.pl:277
-#: ../tools/virt-make-fs.pl:559 ../tools/virt-list-partitions.pl:265
-msgid "AUTHOR"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-edit.pl:368 ../tools/virt-df.pl:655
-#: ../tools/virt-rescue.pl:283 ../tools/virt-list-partitions.pl:271
-msgid "Copyright (C) 2009-2010 Red Hat Inc."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:37
-msgid ""
-"virt-win-reg - Export and merge Windows Registry entries from a Windows guest"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:41
-#, no-wrap
-msgid ""
-" virt-win-reg domname 'HKLM\\Path\\To\\Subkey'\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:43
-#, no-wrap
-msgid ""
-" virt-win-reg domname 'HKLM\\Path\\To\\Subkey' name\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:45
-#, no-wrap
-msgid ""
-" virt-win-reg domname 'HKLM\\Path\\To\\Subkey' @\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:47
-#, no-wrap
-msgid ""
-" virt-win-reg --merge domname [input.reg ...]\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:49
-#, no-wrap
-msgid ""
-" virt-win-reg [--options] disk.img ... # instead of domname\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:53
-msgid ""
-"You must I<not> use C<virt-win-reg> with the C<--merge> option on live "
-"virtual machines. If you do this, you I<will> get irreversible disk "
-"corruption in the VM. C<virt-win-reg> tries to stop you from doing this, "
-"but doesn't catch all cases."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:58
-msgid ""
-"Modifying the Windows Registry is an inherently risky operation. The format "
-"is deliberately obscure and undocumented, and Registry changes can leave the "
-"system unbootable. Therefore when using the C<--merge> option, make sure "
-"you have a reliable backup first."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:65
-msgid ""
-"This program can export and merge Windows Registry entries from a Windows "
-"guest."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:68
-msgid ""
-"The first parameter is the libvirt guest name or the raw disk image of a "
-"Windows guest."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:71
-msgid ""
-"If C<--merge> is I<not> specified, then the chosen registry key is displayed/"
-"exported (recursively). For example:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:74
-#, no-wrap
-msgid ""
-" $ virt-win-reg Windows7 'HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft'\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:76
-msgid ""
-"You can also display single values from within registry keys, for example:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:79
-#, no-wrap
-msgid ""
-" $ cvkey='HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion'\n"
-" $ virt-win-reg Windows7 $cvkey ProductName\n"
-" Windows 7 Enterprise\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:83
-msgid ""
-"With C<--merge>, you can merge a textual regedit file into the Windows "
-"Registry:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:86
-#, no-wrap
-msgid ""
-" $ virt-win-reg --merge Windows7 changes.reg\n"
-"\n"
-msgstr ""
-
-# type: =head2
-#: ../tools/virt-win-reg.pl:88
-msgid "SUPPORTED SYSTEMS"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:90
-msgid ""
-"The program currently supports Windows NT-derived guests starting with "
-"Windows XP through to at least Windows 7."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:93
-msgid ""
-"Registry support is done for C<HKEY_LOCAL_MACHINE\\SAM>, C<HKEY_LOCAL_MACHINE"
-"\\SECURITY>, C<HKEY_LOCAL_MACHINE\\SOFTWARE>, C<HKEY_LOCAL_MACHINE\\SYSTEM> "
-"and C<HKEY_USERS\\.DEFAULT>."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:97
-msgid ""
-"You can use C<HKLM> as a shorthand for C<HKEY_LOCAL_MACHINE>, and C<HKU> for "
-"C<HKEY_USERS>."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:100
-msgid ""
-"C<HKEY_USERS\\$SID> and C<HKEY_CURRENT_USER> are B<not> supported at this "
-"time."
-msgstr ""
-
-# type: =head2
-#: ../tools/virt-win-reg.pl:103
-msgid "NOTE"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:105
-msgid ""
-"This program is only meant for simple access to the registry. If you want "
-"to do complicated things with the registry, we suggest you download the "
-"Registry hive files from the guest using L<libguestfs(3)> or L<guestfish(1)> "
-"and access them locally, eg. using L<hivex(3)>, L<hivexsh(1)> or "
-"L<hivexregedit(1)>."
-msgstr ""
-
-# type: =head2
-#: ../tools/virt-win-reg.pl:111
-msgid "ENCODING"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:113
-msgid ""
-"C<virt-win-reg> expects that regedit files have already been reencoded in "
-"the local encoding. Usually on Linux hosts, this means UTF-8 with Unix-"
-"style line endings. Since Windows regedit files are often in UTF-16LE with "
-"Windows-style line endings, you may need to reencode the whole file before "
-"or after processing."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:119
-msgid ""
-"To reencode a file from Windows format to Linux (before processing it with "
-"the C<--merge> option), you would do something like this:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:122
-#, no-wrap
-msgid ""
-" iconv -f utf-16le -t utf-8 < win.reg | dos2unix > linux.reg\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:124
-msgid ""
-"To go in the opposite direction, after exporting and before sending the file "
-"to a Windows user, do something like this:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:127
-#, no-wrap
-msgid ""
-" unix2dos linux.reg | iconv -f utf-8 -t utf-16le > win.reg\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:129
-msgid "For more information about encoding, see L<Win::Hivex::Regedit(3)>."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:131
-msgid ""
-"If you are unsure about the current encoding, use the L<file(1)> command. "
-"Recent versions of Windows regedit.exe produce a UTF-16LE file with Windows-"
-"style (CRLF) line endings, like this:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:135
-#, no-wrap
-msgid ""
-" $ file software.reg\n"
-" software.reg: Little-endian UTF-16 Unicode text, with very long lines,\n"
-" with CRLF line terminators\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:139
-msgid "This file would need conversion before you could C<--merge> it."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:143
-msgid ""
-"Be careful when passing parameters containing C<\\> (backslash) in the "
-"shell. Usually you will have to use 'single quotes' or double backslashes "
-"(but not both) to protect them from the shell."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:147
-msgid "Paths and value names are case-insensitive."
-msgstr ""
-
-# type: =head2
-#: ../tools/virt-win-reg.pl:149
-msgid "CurrentControlSet etc."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:151
-msgid ""
-"Registry keys like C<CurrentControlSet> don't really exist in the Windows "
-"Registry at the level of the hive file, and therefore you cannot modify "
-"these."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:155
-msgid ""
-"C<CurrentControlSet> is usually an alias for C<ControlSet001>. In some "
-"circumstances it might refer to another control set. The way to find out is "
-"to look at the C<HKLM\\SYSTEM\\Select> key:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:159
-#, no-wrap
-msgid ""
-" # virt-win-reg WindowsGuest 'HKLM\\SYSTEM\\Select'\n"
-" [HKEY_LOCAL_MACHINE\\SYSTEM\\Select]\n"
-" \"Current\"=dword:00000001\n"
-" \"Default\"=dword:00000001\n"
-" \"Failed\"=dword:00000000\n"
-" \"LastKnownGood\"=dword:00000002\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:166
-msgid "\"Current\" is the one which Windows will choose when it boots."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:168
-msgid ""
-"Similarly, other C<Current...> keys in the path may need to be replaced."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-win-reg.pl:195 ../tools/virt-make-fs.pl:177
-msgid "B<--debug>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:197 ../tools/virt-resize.pl:501
-msgid "Enable debugging messages."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-win-reg.pl:232
-msgid "B<--merge>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:234
-msgid ""
-"In merge mode, this merges a textual regedit file into the Windows Registry "
-"of the virtual machine. If this flag is I<not> given then virt-win-reg "
-"displays or exports Registry entries instead."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:238
-msgid ""
-"Note that C<--merge> is I<unsafe> to use on live virtual machines, and will "
-"result in disk corruption. However exporting (without this flag) is always "
-"safe."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-win-reg.pl:246
-msgid "B<--encoding> UTF-16LE|ASCII"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:248
-msgid ""
-"When merging (only), you may need to specify the encoding for strings to be "
-"used in the hive file. This is explained in detail in L<Win::Hivex::Regedit"
-"(3)/ENCODING STRINGS>."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:252
-msgid ""
-"The default is to use UTF-16LE, which should work with recent versions of "
-"Windows."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:486
-msgid ""
-"L<hivex(3)>, L<hivexsh(1)>, L<hivexregedit(1)>, L<guestfs(3)>, L<guestfish(1)"
-">, L<virt-cat(1)>, L<Sys::Guestfs(3)>, L<Sys::Guestfs::Lib(3)>, L<Win::Hivex"
-"(3)>, L<Win::Hivex::Regedit(3)>, L<Sys::Virt(3)>, L<http://libguestfs.org/>."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:501 ../tools/virt-make-fs.pl:550
-msgid ""
-"When reporting bugs, please enable debugging and capture the I<complete> "
-"output:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-win-reg.pl:504
-#, no-wrap
-msgid ""
-" export LIBGUESTFS_DEBUG=1\n"
-" virt-win-reg --debug [... rest ...] > /tmp/virt-win-reg.log 2>&1\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-win-reg.pl:507
-msgid ""
-"Attach /tmp/virt-win-reg.log to a new bug report at L<https://bugzilla."
-"redhat.com/>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:36
-msgid "virt-df - Display free space on virtual filesystems"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-df.pl:40
-#, no-wrap
-msgid ""
-" virt-df [--options]\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-df.pl:42
-#, no-wrap
-msgid ""
-" virt-df [--options] domname\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-df.pl:44
-#, no-wrap
-msgid ""
-" virt-df [--options] disk.img [disk.img ...]\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:48
-msgid ""
-"C<virt-df> is a command line tool to display free space on virtual machine "
-"filesystems. Unlike other tools, it doesn't just display the amount of "
-"space allocated to a virtual machine, but can look inside the virtual "
-"machine to see how much space is really being used."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:53
-msgid ""
-"It is like the L<df(1)> command, but for virtual machines, except that it "
-"also works for Windows virtual machines."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:56
-msgid ""
-"If used without any arguments, C<virt-df> checks with libvirt to get a list "
-"of all active and inactive guests, and performs a C<df>-type operation on "
-"each one in turn, printing out the results."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:60
-msgid ""
-"If used with any argument(s), C<virt-df> performs a C<df>-type operation on "
-"either the single named libvirt domain, or on the disk image(s) listed on "
-"the command line (which must all belong to a single VM). In this mode (with "
-"arguments), C<virt-df> will I<only work for a single guest>. If you want to "
-"run on multiple guests, then you have to invoke C<virt-df> multiple times."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:67
-msgid ""
-"Use the C<--csv> option to get a format which can be easily parsed by other "
-"programs. Other options are mostly similar to standard C<df> options. See "
-"below for the complete list."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-df.pl:107
-msgid "B<--csv>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:109
-msgid ""
-"Write out the results in CSV format (comma-separated values). This format "
-"can be imported easily into databases and spreadsheets, but read L</NOTE "
-"ABOUT CSV FORMAT> below."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-df.pl:134
-msgid "B<--human-readable> | B<-h>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:136
-msgid "Print sizes in human-readable format."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:138
-msgid "You are not allowed to use I<-h> and I<--csv> at the same time."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-df.pl:144
-msgid "B<--inodes> | B<-i>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:146
-msgid "Print inodes instead of blocks."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-df.pl:152
-msgid "B<--one-per-guest>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:154
-msgid ""
-"Run one libguestfs appliance per guest. Normally C<virt-df> will add the "
-"disks from several guests to a single libguestfs appliance."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:157
-msgid "You might use this option in the following circumstances:"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:163
-msgid ""
-"If you think an untrusted guest might actively try to exploit the libguestfs "
-"appliance kernel, then this prevents one guest from interfering with the "
-"stats printed for another guest."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:169
-msgid ""
-"If the kernel has a bug which stops it from accessing a filesystem in one "
-"guest (see for example RHBZ#635373) then this allows libguestfs to continue "
-"and report stats for further guests."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-df.pl:180
-msgid "B<--uuid>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:182
-msgid ""
-"Print UUIDs instead of names. This is useful for following a guest even "
-"when the guest is migrated or renamed, or when two guests happen to have the "
-"same name."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:186
-msgid ""
-"Note that only domains that we fetch from libvirt come with UUIDs. For disk "
-"images, we still print the disk image name even when this option is "
-"specified."
-msgstr ""
-
-# type: =head1
-#: ../tools/virt-df.pl:609
-msgid "NOTE ABOUT CSV FORMAT"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:611
-msgid ""
-"Comma-separated values (CSV) is a deceptive format. It I<seems> like it "
-"should be easy to parse, but it is definitely not easy to parse."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:614
-msgid ""
-"Myth: Just split fields at commas. Reality: This does I<not> work "
-"reliably. This example has two columns:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-df.pl:617
-#, no-wrap
-msgid ""
-" \"foo,bar\",baz\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-df.pl:619
-msgid ""
-"Myth: Read the file one line at a time. Reality: This does I<not> work "
-"reliably. This example has one row:"
+"If you are unsure about the current encoding, use the L<file(1)> command. "
+"Recent versions of Windows regedit.exe produce a UTF-16LE file with Windows-"
+"style (CRLF) line endings, like this:"
msgstr ""
# type: verbatim
-#: ../tools/virt-df.pl:622
+#: ../tools/virt-win-reg.pl:135
#, no-wrap
msgid ""
-" \"foo\n"
-" bar\",baz\n"
+" $ file software.reg\n"
+" software.reg: Little-endian UTF-16 Unicode text, with very long lines,\n"
+" with CRLF line terminators\n"
"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-df.pl:625
-msgid ""
-"For shell scripts, use C<csvtool> (L<http://merjis.com/developers/csv> also "
-"packaged in major Linux distributions)."
+#: ../tools/virt-win-reg.pl:139
+msgid "This file would need conversion before you could C<--merge> it."
msgstr ""
# type: textblock
-#: ../tools/virt-df.pl:628
+#: ../tools/virt-win-reg.pl:143
msgid ""
-"For other languages, use a CSV processing library (eg. C<Text::CSV> for Perl "
-"or Python's built-in csv library)."
+"Be careful when passing parameters containing C<\\> (backslash) in the "
+"shell. Usually you will have to use 'single quotes' or double backslashes "
+"(but not both) to protect them from the shell."
msgstr ""
# type: textblock
-#: ../tools/virt-df.pl:631
-msgid "Most spreadsheets and databases can import CSV directly."
+#: ../tools/virt-win-reg.pl:147
+msgid "Paths and value names are case-insensitive."
msgstr ""
-# type: textblock
-#: ../tools/virt-df.pl:642
-msgid ""
-"L<guestfs(3)>, L<guestfish(1)>, L<Sys::Guestfs(3)>, L<Sys::Guestfs::Lib(3)>, "
-"L<Sys::Virt(3)>, L<http://libguestfs.org/>."
+# type: =head2
+#: ../tools/virt-win-reg.pl:149
+msgid "CurrentControlSet etc."
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:34
-msgid "virt-ls - List files in a virtual machine"
+#: ../tools/virt-win-reg.pl:151
+msgid ""
+"Registry keys like C<CurrentControlSet> don't really exist in the Windows "
+"Registry at the level of the hive file, and therefore you cannot modify "
+"these."
msgstr ""
-# type: verbatim
-#: ../tools/virt-ls.pl:38
-#, no-wrap
+# type: textblock
+#: ../tools/virt-win-reg.pl:155
msgid ""
-" virt-ls [--options] domname directory\n"
-"\n"
+"C<CurrentControlSet> is usually an alias for C<ControlSet001>. In some "
+"circumstances it might refer to another control set. The way to find out is "
+"to look at the C<HKLM\\SYSTEM\\Select> key:"
msgstr ""
# type: verbatim
-#: ../tools/virt-ls.pl:40
+#: ../tools/virt-win-reg.pl:159
#, no-wrap
msgid ""
-" virt-ls [--options] disk.img [disk.img ...] directory\n"
+" # virt-win-reg WindowsGuest 'HKLM\\SYSTEM\\Select'\n"
+" [HKEY_LOCAL_MACHINE\\SYSTEM\\Select]\n"
+" \"Current\"=dword:00000001\n"
+" \"Default\"=dword:00000001\n"
+" \"Failed\"=dword:00000000\n"
+" \"LastKnownGood\"=dword:00000002\n"
"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:44
-msgid ""
-"C<virt-ls> is a command line tool to list the names of files in a directory "
-"inside a virtual machine or disk image."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-ls.pl:47
-msgid ""
-"C<virt-ls> is just a simple wrapper around L<libguestfs(3)> functionality. "
-"For more complex cases you should look at the L<guestfish(1)> tool."
+#: ../tools/virt-win-reg.pl:166
+msgid "\"Current\" is the one which Windows will choose when it boots."
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:51
+#: ../tools/virt-win-reg.pl:168
msgid ""
-"C<virt-ls> can be used in one of three modes: simple, long and recursive. A "
-"simple listing is like the ordinary L<ls(1)> command:"
+"Similarly, other C<Current...> keys in the path may need to be replaced."
msgstr ""
-# type: verbatim
-#: ../tools/virt-ls.pl:54
-#, no-wrap
-msgid ""
-" $ virt-ls myguest /\n"
-" bin\n"
-" boot\n"
-" [etc.]\n"
-"\n"
+# type: =item
+#: ../tools/virt-win-reg.pl:195 ../tools/virt-make-fs.pl:177
+msgid "B<--debug>"
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:59
-msgid "With the C<-l> (C<--long>) option, C<virt-ls> shows more detail:"
+#: ../tools/virt-win-reg.pl:197 ../tools/virt-resize.pl:500
+msgid "Enable debugging messages."
msgstr ""
-# type: verbatim
-#: ../tools/virt-ls.pl:61
-#, no-wrap
-msgid ""
-" $ virt-ls -l myguest /\n"
-" total 204\n"
-" dr-xr-xr-x. 2 root root 4096 2009-08-25 19:06 bin\n"
-" dr-xr-xr-x. 5 root root 3072 2009-08-25 19:06 boot\n"
-" [etc.]\n"
-"\n"
+# type: =item
+#: ../tools/virt-win-reg.pl:232
+msgid "B<--merge>"
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:67
-msgid ""
-"With the C<-R> (C<--recursive>) option, C<virt-ls> lists the names of files "
-"and directories recursively:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-ls.pl:70
-#, no-wrap
+#: ../tools/virt-win-reg.pl:234
msgid ""
-" $ virt-ls -R myguest /tmp\n"
-" foo\n"
-" foo/bar\n"
-" [etc.]\n"
-"\n"
+"In merge mode, this merges a textual regedit file into the Windows Registry "
+"of the virtual machine. If this flag is I<not> given then virt-win-reg "
+"displays or exports Registry entries instead."
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:75
+#: ../tools/virt-win-reg.pl:238
msgid ""
-"You I<cannot> combine these options. To do more complicated things, use "
-"L<guestfish(1)>."
+"Note that C<--merge> is I<unsafe> to use on live virtual machines, and will "
+"result in disk corruption. However exporting (without this flag) is always "
+"safe."
msgstr ""
# type: =item
-#: ../tools/virt-ls.pl:131 ../tools/virt-list-filesystems.pl:103
-#: ../tools/virt-list-partitions.pl:112
-msgid "B<-l> | B<--long>"
+#: ../tools/virt-win-reg.pl:246
+msgid "B<--encoding> UTF-16LE|ASCII"
msgstr ""
-# type: =item
-#: ../tools/virt-ls.pl:133
-msgid "B<-R> | B<--recursive>"
+# type: textblock
+#: ../tools/virt-win-reg.pl:248
+msgid ""
+"When merging (only), you may need to specify the encoding for strings to be "
+"used in the hive file. This is explained in detail in L<Win::Hivex::Regedit"
+"(3)/ENCODING STRINGS>."
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:135
+#: ../tools/virt-win-reg.pl:252
msgid ""
-"Select the mode. With neither of these options, C<virt-ls> produces a "
-"simple, flat list of the files in the named directory."
+"The default is to use UTF-16LE, which should work with recent versions of "
+"Windows."
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:138
+#: ../tools/virt-win-reg.pl:486
msgid ""
-"C<virt-ls -l> produces a \"long listing\", which shows more detail (just "
-"like the plain C<ls -l> command)."
+"L<hivex(3)>, L<hivexsh(1)>, L<hivexregedit(1)>, L<guestfs(3)>, L<guestfish(1)"
+">, L<virt-cat(1)>, L<Sys::Guestfs(3)>, L<Sys::Guestfs::Lib(3)>, L<Win::Hivex"
+"(3)>, L<Win::Hivex::Regedit(3)>, L<Sys::Virt(3)>, L<http://libguestfs.org/>."
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:141
+#: ../tools/virt-win-reg.pl:501 ../tools/virt-make-fs.pl:550
msgid ""
-"C<virt-ls -R> produces a recursive list of files starting at the named "
-"directory. See the documentation for L<guestfs(3)/guestfs_find> for precise "
-"details."
+"When reporting bugs, please enable debugging and capture the I<complete> "
+"output:"
msgstr ""
-# type: textblock
-#: ../tools/virt-ls.pl:145
-msgid "You cannot combine these options."
+# type: verbatim
+#: ../tools/virt-win-reg.pl:504
+#, no-wrap
+msgid ""
+" export LIBGUESTFS_DEBUG=1\n"
+" virt-win-reg --debug [... rest ...] > /tmp/virt-win-reg.log 2>&1\n"
+"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:234
+#: ../tools/virt-win-reg.pl:507
msgid ""
-"L<guestfs(3)>, L<guestfish(1)>, L<virt-cat(1)>, L<virt-tar(1)>, L<Sys::"
-"Guestfs(3)>, L<Sys::Guestfs::Lib(3)>, L<Sys::Virt(3)>, L<http://libguestfs."
-"org/>."
+"Attach /tmp/virt-win-reg.log to a new bug report at L<https://bugzilla."
+"redhat.com/>"
msgstr ""
# type: textblock
-#: ../tools/virt-ls.pl:249 ../tools/virt-list-filesystems.pl:204
-#: ../tools/virt-tar.pl:298
-msgid "Copyright (C) 2009 Red Hat Inc."
+#: ../tools/virt-win-reg.pl:516 ../tools/virt-resize.pl:1512
+#: ../tools/virt-make-fs.pl:565
+msgid "Copyright (C) 2010 Red Hat Inc."
msgstr ""
# type: textblock
# type: textblock
#: ../tools/virt-resize.pl:60
msgid ""
-"If you are not familiar with the associated tools: L<virt-list-partitions(1)"
-">, L<virt-list-filesystems(1)> and L<virt-df(1)>, we recommend you go and "
-"read those manual pages first."
+"If you are not familiar with the associated tools: L<virt-filesystems(1)> "
+"and L<virt-df(1)>, we recommend you go and read those manual pages first."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:68
+#: ../tools/virt-resize.pl:66
msgid ""
"Copy C<olddisk> to C<newdisk>, extending one of the guest's partitions to "
"fill the extra 5GB of space."
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:71
+#: ../tools/virt-resize.pl:69
#, no-wrap
msgid ""
" truncate -r olddisk newdisk; truncate -s +5G newdisk\n"
-" virt-list-partitions -lht olddisk\n"
+" virt-filesystems --long --h --all -a olddisk\n"
" # Note \"/dev/sda2\" is a partition inside the \"olddisk\" file.\n"
" virt-resize --expand /dev/sda2 olddisk newdisk\n"
"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:76
+#: ../tools/virt-resize.pl:74
msgid ""
"As above, but make the /boot partition 200MB bigger, while giving the "
"remaining space to /dev/sda2:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:79
+#: ../tools/virt-resize.pl:77
#, no-wrap
msgid ""
" virt-resize --resize /dev/sda1=+200M --expand /dev/sda2 olddisk newdisk\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:81
+#: ../tools/virt-resize.pl:79
msgid "As above, but the output format will be uncompressed qcow2:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:83
+#: ../tools/virt-resize.pl:81
#, no-wrap
msgid ""
" qemu-img create -f qcow2 newdisk.qcow2 15G\n"
msgstr ""
# type: =head1
-#: ../tools/virt-resize.pl:86
+#: ../tools/virt-resize.pl:84
msgid "DETAILED USAGE"
msgstr ""
# type: =head2
-#: ../tools/virt-resize.pl:88
+#: ../tools/virt-resize.pl:86
msgid "EXPANDING A VIRTUAL MACHINE DISK"
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:92
+#: ../tools/virt-resize.pl:90
msgid "1. Shut down the virtual machine"
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:94
+#: ../tools/virt-resize.pl:92
msgid "2. Locate input disk image"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:96
+#: ../tools/virt-resize.pl:94
msgid ""
"Locate the input disk image (ie. the file or device on the host containing "
"the guest's disk). If the guest is managed by libvirt, you can use C<virsh "
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:100
+#: ../tools/virt-resize.pl:98
#, no-wrap
msgid ""
" # virsh dumpxml guestname | xpath /domain/devices/disk/source\n"
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:105
+#: ../tools/virt-resize.pl:103
msgid "3. Look at current sizing"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:107
-msgid ""
-"Use L<virt-list-partitions(1)> to display the current partitions and sizes:"
+#: ../tools/virt-resize.pl:105
+msgid "Use L<virt-filesystems(1)> to display the current partitions and sizes:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:110
+#: ../tools/virt-resize.pl:108
#, no-wrap
msgid ""
-" # virt-list-partitions -lht /dev/vg/lv_guest\n"
-" /dev/sda1 ext3 101.9M\n"
-" /dev/sda2 pv 7.9G\n"
-" /dev/sda device 8.0G\n"
+" # virt-filesystems --long --parts --blkdevs -h -a /dev/vg/lv_guest\n"
+" Name Type Size Parent\n"
+" /dev/sda1 partition 101M /dev/sda\n"
+" /dev/sda2 partition 7.9G /dev/sda\n"
+" /dev/sda device 8.0G -\n"
"\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:115
+#: ../tools/virt-resize.pl:114
msgid ""
"(This example is a virtual machine with an 8 GB disk which we would like to "
"expand up to 10 GB)."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:118
+#: ../tools/virt-resize.pl:117
msgid "4. Create output disk"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:120
+#: ../tools/virt-resize.pl:119
msgid ""
"Virt-resize cannot do in-place disk modifications. You have to have space "
"to store the resized output disk."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:123
+#: ../tools/virt-resize.pl:122
msgid ""
"To store the resized disk image in a file, create a file of a suitable size:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:126
+#: ../tools/virt-resize.pl:125
#, no-wrap
msgid ""
" # rm -f outdisk\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:129
+#: ../tools/virt-resize.pl:128
msgid "Or use L<lvcreate(1)> to create a logical volume:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:131
+#: ../tools/virt-resize.pl:130
#, no-wrap
msgid ""
" # lvcreate -L 10G -n lv_name vg_name\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:133
+#: ../tools/virt-resize.pl:132
msgid "Or use L<virsh(1)> vol-create-as to create a libvirt storage volume:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:135
+#: ../tools/virt-resize.pl:134
#, no-wrap
msgid ""
" # virsh pool-list\n"
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:138
+#: ../tools/virt-resize.pl:137
msgid "5. Resize"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:140
+#: ../tools/virt-resize.pl:139
msgid ""
"virt-resize takes two mandatory parameters, the input disk (eg. device or "
"file) and the output disk. The output disk is the one created in the "
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:144
+#: ../tools/virt-resize.pl:143
#, no-wrap
msgid ""
" # virt-resize indisk outdisk\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:146
+#: ../tools/virt-resize.pl:145
msgid ""
"This command just copies disk image C<indisk> to disk image C<outdisk> "
"I<without> resizing or changing any existing partitions. If C<outdisk> is "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:152
+#: ../tools/virt-resize.pl:151
msgid ""
"More realistically you'd want to expand existing partitions in the disk "
"image by passing extra options (for the full list see the L</OPTIONS> "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:156
+#: ../tools/virt-resize.pl:155
msgid ""
"L</--expand> is the most useful option. It expands the named partition "
"within the disk to fill any extra space:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:159
+#: ../tools/virt-resize.pl:158
#, no-wrap
msgid ""
" # virt-resize --expand /dev/sda2 indisk outdisk\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:161
+#: ../tools/virt-resize.pl:160
msgid ""
"(In this case, an extra partition is I<not> created at the end of the disk, "
"because there will be no unused space)."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:164
+#: ../tools/virt-resize.pl:163
msgid ""
"L</--resize> is the other commonly used option. The following would "
"increase the size of /dev/sda1 by 200M, and expand /dev/sda2 to fill the "
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:168
+#: ../tools/virt-resize.pl:167
#, no-wrap
msgid ""
" # virt-resize --resize /dev/sda1=+200M --expand /dev/sda2 \\\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:171
+#: ../tools/virt-resize.pl:170
msgid ""
"If the expanded partition in the image contains a filesystem or LVM PV, then "
"if virt-resize knows how, it will resize the contents, the equivalent of "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:180
+#: ../tools/virt-resize.pl:179
msgid "Other options are covered below."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:182
+#: ../tools/virt-resize.pl:181
msgid "6. Test"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:184
+#: ../tools/virt-resize.pl:183
msgid "Thoroughly test the new disk image I<before> discarding the old one."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:186
+#: ../tools/virt-resize.pl:185
msgid "If you are using libvirt, edit the XML to point at the new disk:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:188
+#: ../tools/virt-resize.pl:187
#, no-wrap
msgid ""
" # virsh edit guestname\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:190
+#: ../tools/virt-resize.pl:189
msgid ""
"Change E<lt>source ...E<gt>, see L<http://libvirt.org/formatdomain."
"html#elementsDisks>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:193
+#: ../tools/virt-resize.pl:192
msgid "Then start up the domain with the new, resized disk:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:195
+#: ../tools/virt-resize.pl:194
#, no-wrap
msgid ""
" # virsh start guestname\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:197
+#: ../tools/virt-resize.pl:196
msgid ""
"and check that it still works. See also the L</NOTES> section below for "
"additional information."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:200
+#: ../tools/virt-resize.pl:199
msgid "7. Resize LVs etc inside the guest"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:202
+#: ../tools/virt-resize.pl:201
msgid "(This can also be done offline using L<guestfish(1)>)"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:204
+#: ../tools/virt-resize.pl:203
msgid ""
"Once the guest has booted you should see the new space available, at least "
"for filesystems that virt-resize knows how to resize, and for PVs. The user "
msgstr ""
# type: =head2
-#: ../tools/virt-resize.pl:211
+#: ../tools/virt-resize.pl:210
msgid "SHRINKING A VIRTUAL MACHINE DISK"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:213
+#: ../tools/virt-resize.pl:212
msgid ""
"Shrinking is somewhat more complex than expanding, and only an overview is "
"given here."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:216
+#: ../tools/virt-resize.pl:215
msgid ""
"Firstly virt-resize will not attempt to shrink any partition content (PVs, "
"filesystems). The user has to shrink content before passing the disk image "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:221
+#: ../tools/virt-resize.pl:220
msgid "(Shrinking can also be done offline using L<guestfish(1)>)"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:223
+#: ../tools/virt-resize.pl:222
msgid ""
"After shrinking PVs and filesystems, shut down the guest, and proceed with "
"steps 3 and 4 above to allocate a new disk image."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:226
+#: ../tools/virt-resize.pl:225
msgid ""
"Then run virt-resize with any of the C<--shrink> and/or C<--resize> options."
msgstr ""
# type: =head2
-#: ../tools/virt-resize.pl:229
+#: ../tools/virt-resize.pl:228
msgid "IGNORING OR DELETING PARTITIONS"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:231
+#: ../tools/virt-resize.pl:230
msgid ""
"virt-resize also gives a convenient way to ignore or delete partitions when "
"copying from the input disk to the output disk. Ignoring a partition speeds "
msgstr ""
# type: =head2
-#: ../tools/virt-resize.pl:238
+#: ../tools/virt-resize.pl:237
msgid "QCOW2 AND NON-SPARSE RAW FORMATS"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:240
+#: ../tools/virt-resize.pl:239
msgid ""
"If the input disk is in qcow2 format, then you may prefer that the output is "
"in qcow2 format as well. Alternately, virt-resize can convert the format on "
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:246
+#: ../tools/virt-resize.pl:245
#, no-wrap
msgid ""
" qemu-img create [-c] -f qcow2 outdisk [size]\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:248
+#: ../tools/virt-resize.pl:247
msgid "instead of the truncate command (use C<-c> for a compressed disk)."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:250
+#: ../tools/virt-resize.pl:249
msgid "Similarly, to get non-sparse raw output use:"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:252
+#: ../tools/virt-resize.pl:251
#, no-wrap
msgid ""
" fallocate -l size outdisk\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:254
+#: ../tools/virt-resize.pl:253
msgid ""
"(on older systems that don't have the L<fallocate(1)> command use C<dd if=/"
"dev/zero of=outdisk bs=1M count=..>)"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:267
+#: ../tools/virt-resize.pl:266
msgid "Display help."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:281
+#: ../tools/virt-resize.pl:280
msgid "B<--resize part=size>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:283
+#: ../tools/virt-resize.pl:282
msgid ""
"Resize the named partition (expanding or shrinking it) so that it has the "
"given size."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:286
+#: ../tools/virt-resize.pl:285
msgid ""
"C<size> can be expressed as an absolute number followed by b/K/M/G/T/P/E to "
"mean bytes, Kilobytes, Megabytes, Gigabytes, Terabytes, Petabytes or "
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:291
+#: ../tools/virt-resize.pl:290
#, no-wrap
msgid ""
" --resize /dev/sda2=10G\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:293
+#: ../tools/virt-resize.pl:292
#, no-wrap
msgid ""
" --resize /dev/sda4=90%\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:295
+#: ../tools/virt-resize.pl:294
#, no-wrap
msgid ""
" --resize /dev/sda2=+1G\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:297
+#: ../tools/virt-resize.pl:296
#, no-wrap
msgid ""
" --resize /dev/sda2=-200M\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:299
+#: ../tools/virt-resize.pl:298
#, no-wrap
msgid ""
" --resize /dev/sda1=+128K\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:301
+#: ../tools/virt-resize.pl:300
#, no-wrap
msgid ""
" --resize /dev/sda1=+10%\n"
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:303
+#: ../tools/virt-resize.pl:302
#, no-wrap
msgid ""
" --resize /dev/sda1=-10%\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:305
+#: ../tools/virt-resize.pl:304
msgid ""
"You can increase the size of any partition. Virt-resize will expand the "
"direct content of the partition if it knows how (see C<--expand> below)."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:309
+#: ../tools/virt-resize.pl:308
msgid ""
"You can only I<decrease> the size of partitions that contain filesystems or "
"PVs which have already been shrunk. Virt-resize will check this has been "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:314 ../tools/virt-resize.pl:406
-#: ../tools/virt-resize.pl:423
+#: ../tools/virt-resize.pl:313 ../tools/virt-resize.pl:405
+#: ../tools/virt-resize.pl:422
msgid "You can give this option multiple times."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:320
+#: ../tools/virt-resize.pl:319
msgid "B<--resize-force part=size>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:322
+#: ../tools/virt-resize.pl:321
msgid ""
"This is the same as C<--resize> except that it will let you decrease the "
"size of any partition. Generally this means you will lose any data which "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:328
+#: ../tools/virt-resize.pl:327
msgid "See also the C<--ignore> option."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:334
+#: ../tools/virt-resize.pl:333
msgid "B<--expand part>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:336
+#: ../tools/virt-resize.pl:335
msgid ""
"Expand the named partition so it uses up all extra space (space left over "
"after any other resize changes that you request have been done)."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:339
+#: ../tools/virt-resize.pl:338
msgid ""
"If virt-resize knows how, it will expand the direct content of the "
"partition. For example, if the partition is an LVM PV, it will expand the "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:344
+#: ../tools/virt-resize.pl:343
msgid "Currently virt-resize can resize:"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:350
+#: ../tools/virt-resize.pl:349
msgid ""
"ext2, ext3 and ext4 filesystems when they are contained directly inside a "
"partition."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:355
+#: ../tools/virt-resize.pl:354
msgid ""
"NTFS filesystems contained directly in a partition, if libguestfs was "
"compiled with support for NTFS."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:358
+#: ../tools/virt-resize.pl:357
msgid ""
"The filesystem must have been shut down consistently last time it was used. "
"Additionally, L<ntfsresize(8)> marks the resized filesystem as requiring a "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:365
+#: ../tools/virt-resize.pl:364
msgid ""
"LVM PVs (physical volumes). However virt-resize does I<not> resize anything "
"inside the PV. The user will have to resize LVs as desired."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:371 ../tools/virt-resize.pl:393
+#: ../tools/virt-resize.pl:370 ../tools/virt-resize.pl:392
msgid "Note that you cannot use C<--expand> and C<--shrink> together."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:377
+#: ../tools/virt-resize.pl:376
msgid "B<--shrink part>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:379
+#: ../tools/virt-resize.pl:378
msgid ""
"Shrink the named partition until the overall disk image fits in the "
"destination. The named partition B<must> contain a filesystem or PV which "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:385
+#: ../tools/virt-resize.pl:384
msgid ""
"The amount by which the overall disk must be shrunk (after carrying out all "
"other operations requested by the user) is called the \"deficit\". For "
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:399
+#: ../tools/virt-resize.pl:398
msgid "B<--ignore part>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:401
+#: ../tools/virt-resize.pl:400
msgid ""
"Ignore the named partition. Effectively this means the partition is "
"allocated on the destination disk, but the content is not copied across from "
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:412
+#: ../tools/virt-resize.pl:411
msgid "B<--delete part>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:414
+#: ../tools/virt-resize.pl:413
msgid ""
"Delete the named partition. It would be more accurate to describe this as "
"\"don't copy it over\", since virt-resize doesn't do in-place changes and "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:418
+#: ../tools/virt-resize.pl:417
msgid ""
"Note that when you delete a partition, then anything contained in the "
"partition is also deleted. Furthermore, this causes any partitions that "
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:429
+#: ../tools/virt-resize.pl:428
msgid "B<--LV-expand logvol>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:431
+#: ../tools/virt-resize.pl:430
msgid ""
"This takes the logical volume and, as a final step, expands it to fill all "
"the space available in its volume group. A typical usage, assuming a Linux "
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:436
+#: ../tools/virt-resize.pl:435
#, no-wrap
msgid ""
" virt-resize indisk outdisk \\\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:439
+#: ../tools/virt-resize.pl:438
msgid ""
"This would first expand the partition (and PV), and then expand the root "
"device to fill the extra space in the PV."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:442
+#: ../tools/virt-resize.pl:441
msgid ""
"The contents of the LV are also resized if virt-resize knows how to do "
"that. You can stop virt-resize from trying to expand the content by using "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:446
-msgid "Use L<virt-list-filesystems(1)> to list the filesystems in the guest."
+#: ../tools/virt-resize.pl:445
+msgid "Use L<virt-filesystems(1)> to list the filesystems in the guest."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:449
+#: ../tools/virt-resize.pl:448
msgid ""
"You can give this option multiple times, I<but> it doesn't make sense to do "
"this unless the logical volumes you specify are all in different volume "
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:457
+#: ../tools/virt-resize.pl:456
msgid "B<--no-copy-boot-loader>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:459
+#: ../tools/virt-resize.pl:458
msgid ""
"By default, virt-resize copies over some sectors at the start of the disk "
"(up to the beginning of the first partition). Commonly these sectors "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:464
+#: ../tools/virt-resize.pl:463
msgid ""
"If you specify this flag, then this initial copy is not done. You may need "
"to reinstall the boot loader in this case."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:472
+#: ../tools/virt-resize.pl:471
msgid "B<--no-extra-partition>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:474
+#: ../tools/virt-resize.pl:473
msgid ""
"By default, virt-resize creates an extra partition if there is any extra, "
"unused space after all resizing has happened. Use this option to prevent "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:480
+#: ../tools/virt-resize.pl:479
msgid ""
"Note that if the surplus space is smaller than 10 MB, no extra partition "
"will be created."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:487
+#: ../tools/virt-resize.pl:486
msgid "B<--no-expand-content>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:489
+#: ../tools/virt-resize.pl:488
msgid ""
"By default, virt-resize will try to expand the direct contents of "
"partitions, if it knows how (see C<--expand> option above)."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:492
+#: ../tools/virt-resize.pl:491
msgid ""
"If you give the C<--no-expand-content> option then virt-resize will not "
"attempt this."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:499
+#: ../tools/virt-resize.pl:498
msgid "B<-d> | B<--debug>"
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:507
+#: ../tools/virt-resize.pl:506
msgid "B<-n> | B<--dryrun>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:509
+#: ../tools/virt-resize.pl:508
msgid "Print a summary of what would be done, but don't do anything."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:515
+#: ../tools/virt-resize.pl:514
msgid "B<-q> | B<--quiet>"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:517
+#: ../tools/virt-resize.pl:516
msgid "Don't print the summary."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:525
+#: ../tools/virt-resize.pl:524
msgid ""
"Specify the format of the input disk image. If this flag is not given then "
"it is auto-detected from the image itself."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:531
+#: ../tools/virt-resize.pl:530
msgid ""
"Note that this option I<does not> affect the output format. See L</QCOW2 "
"AND NON-SPARSE RAW FORMATS>."
msgstr ""
# type: =item
-#: ../tools/virt-resize.pl:538
+#: ../tools/virt-resize.pl:537
msgid "B<--output-format> raw"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:540
+#: ../tools/virt-resize.pl:539
msgid ""
"Specify the format of the output disk image. If this flag is not given then "
"it is auto-detected from the image itself."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:546
+#: ../tools/virt-resize.pl:545
msgid ""
"Note that you still need to create the output disk with the right format. "
"See L</QCOW2 AND NON-SPARSE RAW FORMATS>."
msgstr ""
# type: =head1
-#: ../tools/virt-resize.pl:1422 ../tools/virt-rescue.pl:90
+#: ../tools/virt-resize.pl:1421
msgid "NOTES"
msgstr ""
# type: =head2
-#: ../tools/virt-resize.pl:1424
+#: ../tools/virt-resize.pl:1423
msgid "\"Partition 1 does not end on cylinder boundary.\""
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1426
+#: ../tools/virt-resize.pl:1425
msgid ""
"Virt-resize aligns partitions to multiples of 64 sectors. Usually this "
"means the partitions will not be aligned to the ancient CHS geometry. "
msgstr ""
# type: =head2
-#: ../tools/virt-resize.pl:1433
+#: ../tools/virt-resize.pl:1432
msgid "RESIZING WINDOWS VIRTUAL MACHINES"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1435
+#: ../tools/virt-resize.pl:1434
msgid ""
"In Windows Vista and later versions, Microsoft switched to using a separate "
"boot partition. In these VMs, typically C</dev/sda1> is the boot partition "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1442
+#: ../tools/virt-resize.pl:1441
msgid ""
"Windows may initiate a lengthy \"chkdsk\" on first boot after a resize, if "
"NTFS partitions have been expanded. This is just a safety check and (unless "
msgstr ""
# type: =head2
-#: ../tools/virt-resize.pl:1446
+#: ../tools/virt-resize.pl:1445
msgid "GUEST BOOT STUCK AT \"GRUB\""
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1448
+#: ../tools/virt-resize.pl:1447
msgid ""
"If a Linux guest does not boot after resizing, and the boot is stuck after "
"printing C<GRUB> on the console, try reinstalling grub. This sometimes "
msgstr ""
# type: verbatim
-#: ../tools/virt-resize.pl:1453
+#: ../tools/virt-resize.pl:1452
#, no-wrap
msgid ""
" guestfish -i -a newdisk\n"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1460
+#: ../tools/virt-resize.pl:1459
msgid ""
"For more flexible guest reconfiguration, including if you need to specify "
"other parameters to grub-install, use L<virt-rescue(1)>."
msgstr ""
# type: =head1
-#: ../tools/virt-resize.pl:1463
+#: ../tools/virt-resize.pl:1462
msgid "ALTERNATIVE TOOLS"
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1465
+#: ../tools/virt-resize.pl:1464
msgid ""
"There are several proprietary tools for resizing partitions. We won't "
"mention any here."
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1468
+#: ../tools/virt-resize.pl:1467
msgid ""
"L<parted(8)> and its graphical shell gparted can do some types of resizing "
"operations on disk images. They can resize and move partitions, but I don't "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1473
+#: ../tools/virt-resize.pl:1472
msgid ""
"L<guestfish(1)> can do everything that virt-resize can do and a lot more, "
"but at a much lower level. You will probably end up hand-calculating sector "
msgstr ""
# type: textblock
-#: ../tools/virt-resize.pl:1488
+#: ../tools/virt-resize.pl:1487
msgid ""
-"L<virt-list-partitions(1)>, L<virt-list-filesystems(1)>, L<virt-df(1)>, "
-"L<guestfs(3)>, L<guestfish(1)>, L<lvm(8)>, L<pvresize(8)>, L<lvresize(8)>, "
-"L<resize2fs(8)>, L<ntfsresize(8)>, L<virsh(1)>, L<parted(8)>, L<truncate(1)"
-">, L<fallocate(1)>, L<grub(8)>, L<grub-install(8)>, L<virt-rescue(1)>, "
-"L<Sys::Guestfs(3)>, L<http://libguestfs.org/>."
+"L<virt-filesystems(1)>, L<virt-df(1)>, L<guestfs(3)>, L<guestfish(1)>, L<lvm"
+"(8)>, L<pvresize(8)>, L<lvresize(8)>, L<resize2fs(8)>, L<ntfsresize(8)>, "
+"L<virsh(1)>, L<parted(8)>, L<truncate(1)>, L<fallocate(1)>, L<grub(8)>, "
+"L<grub-install(8)>, L<virt-rescue(1)>, L<Sys::Guestfs(3)>, L<http://"
+"libguestfs.org/>."
msgstr ""
# type: textblock
msgstr ""
# type: textblock
-#: ../tools/virt-list-filesystems.pl:42
+#: ../tools/virt-list-filesystems.pl:42 ../tools/virt-list-partitions.pl:42
+msgid ""
+"This tool is obsolete. Use L<virt-filesystems(1)> as a more flexible "
+"replacement."
+msgstr ""
+
+# type: textblock
+#: ../tools/virt-list-filesystems.pl:45
msgid ""
"C<virt-list-filesystems> is a command line tool to list the filesystems that "
"are contained in a virtual machine or disk image."
msgstr ""
# type: textblock
-#: ../tools/virt-list-filesystems.pl:46
+#: ../tools/virt-list-filesystems.pl:49
msgid ""
"C<virt-list-filesystems> is just a simple wrapper around L<libguestfs(3)> "
"functionality. For more complex cases you should look at the L<guestfish(1)"
"> tool."
msgstr ""
+# type: =item
+#: ../tools/virt-list-filesystems.pl:106 ../tools/virt-list-partitions.pl:115
+msgid "B<-l> | B<--long>"
+msgstr ""
+
# type: textblock
-#: ../tools/virt-list-filesystems.pl:105
+#: ../tools/virt-list-filesystems.pl:108
msgid ""
"With this option, C<virt-list-filesystems> displays the type of each "
"filesystem too (where \"type\" means C<ext3>, C<xfs> etc.)"
msgstr ""
# type: =item
-#: ../tools/virt-list-filesystems.pl:112
+#: ../tools/virt-list-filesystems.pl:115
msgid "B<-a> | B<--all>"
msgstr ""
# type: textblock
-#: ../tools/virt-list-filesystems.pl:114
+#: ../tools/virt-list-filesystems.pl:117
msgid ""
"Normally we only show mountable filesystems. If this option is given then "
"swap devices are shown too."
msgstr ""
# type: textblock
-#: ../tools/virt-list-filesystems.pl:188
+#: ../tools/virt-list-filesystems.pl:191
msgid ""
-"L<guestfs(3)>, L<guestfish(1)>, L<virt-cat(1)>, L<virt-tar(1)>, L<virt-list-"
-"partitions(1)>, L<Sys::Guestfs(3)>, L<Sys::Guestfs::Lib(3)>, L<Sys::Virt(3)"
-">, L<http://libguestfs.org/>."
+"L<guestfs(3)>, L<guestfish(1)>, L<virt-cat(1)>, L<virt-tar(1)>, L<virt-"
+"filesystems(1)>, L<virt-list-partitions(1)>, L<Sys::Guestfs(3)>, L<Sys::"
+"Guestfs::Lib(3)>, L<Sys::Virt(3)>, L<http://libguestfs.org/>."
+msgstr ""
+
+# type: textblock
+#: ../tools/virt-list-filesystems.pl:208 ../tools/virt-tar.pl:298
+msgid "Copyright (C) 2009 Red Hat Inc."
msgstr ""
# type: textblock
msgstr ""
# type: textblock
-#: ../tools/virt-rescue.pl:33
-msgid "virt-rescue - Run a rescue shell on a virtual machine"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-rescue.pl:37
-#, no-wrap
-msgid ""
-" virt-rescue [--options] domname\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-rescue.pl:39
-#, no-wrap
-msgid ""
-" virt-rescue [--options] disk.img [disk.img ...]\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:43
-msgid ""
-"You must I<not> use C<virt-rescue> on live virtual machines. Doing so will "
-"probably result in disk corruption in the VM. C<virt-rescue> tries to stop "
-"you from doing this, but doesn't catch all cases."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:47
-msgid ""
-"However if you use the I<--ro> (read only) option, then you can attach a "
-"shell to a live virtual machine. The results might be strange or "
-"inconsistent at times but you won't get disk corruption."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:53
-msgid ""
-"virt-rescue is like a Rescue CD, but for virtual machines, and without the "
-"need for a CD. virt-rescue gives you a rescue shell and some simple "
-"recovery tools which you can use to examine or rescue a virtual machine or "
-"disk image."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:58
-msgid ""
-"You can run virt-rescue on any virtual machine known to libvirt, or directly "
-"on disk image(s):"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-rescue.pl:61
-#, no-wrap
-msgid ""
-" virt-rescue GuestName\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-rescue.pl:63
-#, no-wrap
-msgid ""
-" virt-rescue --ro /path/to/disk.img\n"
-"\n"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-rescue.pl:65
-#, no-wrap
-msgid ""
-" virt-rescue /dev/sdc\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:67
-msgid "For live VMs you I<must> use the --ro option."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:69
-msgid ""
-"When you run virt-rescue on a virtual machine or disk image, you are placed "
-"in an interactive bash shell where you can use many ordinary Linux "
-"commands. What you see in C</> (C</bin>, C</lib> etc) is the rescue "
-"appliance. You must mount the virtual machine's filesystems by hand. There "
-"is an empty directory called C</sysroot> where you can mount filesystems."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:76
-msgid ""
-"In the example below, we list logical volumes, then choose one to mount "
-"under C</sysroot>:"
-msgstr ""
-
-# type: verbatim
-#: ../tools/virt-rescue.pl:79
-#, no-wrap
-msgid ""
-" ><rescue> lvs\n"
-" LV VG Attr LSize Origin Snap% Move Log Copy% Convert\n"
-" lv_root vg_f11x64 -wi-a- 8.83G\n"
-" lv_swap vg_f11x64 -wi-a- 992.00M\n"
-" ><rescue> mount /dev/vg_f11x64/lv_root /sysroot\n"
-" ><rescue> ls /sysroot\n"
-"\n"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:86
-msgid ""
-"If you don't know what filesystems are available on the virtual machine then "
-"you can use commands such as L<parted(8)> and L<lvs(8)> to find out."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:92
-msgid ""
-"Virt-rescue can be used on I<any> disk image file or device, not just a "
-"virtual machine. For example you can use it on a blank file if you want to "
-"partition that file (although we would recommend using L<guestfish(1)> "
-"instead as it is more suitable for this purpose). You can even use virt-"
-"rescue on things like SD cards."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:98
-msgid ""
-"This tool is just designed for quick interactive hacking on a virtual "
-"machine. For more structured access to a virtual machine disk image, you "
-"should use L<guestfs(3)>. To get a structured shell that you can use to "
-"make scripted changes to guests, use L<guestfish(1)>."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-rescue.pl:127
-msgid "B<--append kernelopts>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:129
-msgid "Pass additional options to the rescue kernel."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-rescue.pl:164
-msgid "B<--memsize MB> | B<-m MB>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:166
-msgid ""
-"Change the amount of memory allocated to the rescue system. The default is "
-"set by libguestfs and is small but adequate for running system tools. The "
-"occasional program might need more memory. The parameter is specified in "
-"megabytes."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-rescue.pl:175
-msgid "B<--network>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:177
-msgid "Enable QEMU user networking in the guest."
-msgstr ""
-
-# type: =item
-#: ../tools/virt-rescue.pl:183
-msgid "B<--ro> | B<-r>"
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:185
-msgid "Open the image read-only."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:197
-msgid ""
-"Enable SELinux in the rescue appliance. You should read L<guestfs(3)/"
-"SELINUX> before using this option."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:257
-msgid ""
-"Several environment variables affect virt-rescue. See L<guestfs(3)/"
-"ENVIRONMENT VARIABLES> for the complete list."
-msgstr ""
-
-# type: textblock
-#: ../tools/virt-rescue.pl:269
-msgid ""
-"L<guestfs(3)>, L<guestfish(1)>, L<virt-cat(1)>, L<Sys::Guestfs(3)>, L<Sys::"
-"Guestfs::Lib(3)>, L<Sys::Virt(3)>, L<http://libguestfs.org/>."
-msgstr ""
-
-# type: textblock
#: ../tools/virt-make-fs.pl:37
msgid "virt-make-fs - Make a filesystem from a tar archive or files"
msgstr ""
msgstr ""
# type: textblock
-#: ../tools/virt-list-partitions.pl:42
+#: ../tools/virt-list-partitions.pl:45
msgid ""
"C<virt-list-partitions> is a command line tool to list the partitions that "
"are contained in a virtual machine or disk image. It is mainly useful as a "
msgstr ""
# type: textblock
-#: ../tools/virt-list-partitions.pl:47
+#: ../tools/virt-list-partitions.pl:50
msgid ""
"C<virt-list-partitions> is just a simple wrapper around L<libguestfs(3)> "
"functionality. For more complex cases you should look at the L<guestfish(1)"
msgstr ""
# type: =item
-#: ../tools/virt-list-partitions.pl:104
+#: ../tools/virt-list-partitions.pl:107
msgid "B<-h> | B<--human-readable>"
msgstr ""
# type: textblock
-#: ../tools/virt-list-partitions.pl:106
+#: ../tools/virt-list-partitions.pl:109
msgid "Show sizes in human-readable form (eg. \"1G\")."
msgstr ""
# type: textblock
-#: ../tools/virt-list-partitions.pl:114
+#: ../tools/virt-list-partitions.pl:117
msgid ""
"With this option, C<virt-list-partitions> displays the type and size of each "
"partition too (where \"type\" means C<ext3>, C<pv> etc.)"
msgstr ""
# type: =item
-#: ../tools/virt-list-partitions.pl:121
+#: ../tools/virt-list-partitions.pl:124
msgid "B<-t> | B<--total>"
msgstr ""
# type: textblock
-#: ../tools/virt-list-partitions.pl:123
+#: ../tools/virt-list-partitions.pl:126
msgid ""
"Display the total size of each block device (as a separate row or rows)."
msgstr ""
# type: textblock
-#: ../tools/virt-list-partitions.pl:256
+#: ../tools/virt-list-partitions.pl:259
msgid ""
-"L<guestfs(3)>, L<guestfish(1)>, L<virt-list-filesystems(1)>, L<virt-resize(1)"
-">, L<Sys::Guestfs(3)>, L<Sys::Guestfs::Lib(3)>, L<Sys::Virt(3)>, L<http://"
-"libguestfs.org/>."
+"L<guestfs(3)>, L<guestfish(1)>, L<virt-filesystems(1)>, L<virt-list-"
+"filesystems(1)>, L<virt-resize(1)>, L<Sys::Guestfs(3)>, L<Sys::Guestfs::Lib"
+"(3)>, L<Sys::Virt(3)>, L<http://libguestfs.org/>."
msgstr ""