[Libguestfs] [PATCH 2/2] v2v: linux: try to trick vmware-uninstall-tools.pl
Richard W.M. Jones
rjones at redhat.com
Thu Oct 4 11:19:55 UTC 2018
On Thu, Oct 04, 2018 at 12:11:12PM +0200, Pino Toscano wrote:
> When installing the VMware tools from tarball, the installation script
> rebuilds the initramdisk of all the available kernels to inject the
> missing kernel drivers; in the end, the information on which kernels
> were changed is recorded in the internal "database" of the installation
> answers. When uninstalling the VMware tools, the uninstallation script
> reads the saved answers, and in the case of ramdisks will do the reverse
> job done during the installation (which is done again when new kernels
> are installed).
>
> OTOH, virt-v2v already rebuilds the initramdisk of the default kernel,
> not touching the other available kernels (no matter whether they have
> the right modules or not). Hence, trick the answers "database" of the
> VMware tools to discard all the information about ramdisks to restore on
> uninstallation: this way they are not rebuilt, and the whole
> uninstallation time will be reasonable enough (a couple of minutes or
> so).
> ---
> v2v/convert_linux.ml | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/v2v/convert_linux.ml b/v2v/convert_linux.ml
> index c401b7f74..e8c64ac1b 100644
> --- a/v2v/convert_linux.ml
> +++ b/v2v/convert_linux.ml
> @@ -370,6 +370,21 @@ let convert (g : G.guestfs) inspect source output rcaps =
> let uninstaller = "/usr/bin/vmware-uninstall-tools.pl" in
> if g#is_file ~followsymlinks:true uninstaller then (
> try
> + (* The VMware tools uninstaller will rebuild the ramdisk for
> + * the kernels present either at installation time, or at
> + * later time (when the tools are applied to newly
> + * installed kernels). Since we do not want to potentially
> + * rebuilt all the available kernels, trick the "database"
> + * of the VMware tools installation to not do any ramdisk
> + * restore. In any case, we will rebuilt the ramdisk of the
> + * default kernel already.
> + *)
> + let locations = "/etc/vmware-tools/locations" in
> + if g#is_file ~followsymlinks:true locations then (
> + g#write_append locations "remove_answer RESTORE_RAMDISK_CMD\n";
> + g#write_append locations "remove_answer RESTORE_RAMDISK_KERNELS\n";
> + g#write_append locations "remove_answer RESTORE_RAMDISK_ONECALL\n";
> + );
> if family = `SUSE_family then
> ignore (g#command [| "/usr/bin/env";
> "rootdev=" ^ inspect.i_root;
> --
> 2.17.1
Looks sensible based on the discussions we had on IRC, so
ACK series.
Thanks,
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-p2v converts physical machines to virtual machines. Boot with a
live CD or over the network (PXE) and turn machines into KVM guests.
http://libguestfs.org/virt-v2v
More information about the Libguestfs
mailing list