[Libguestfs] virt-v2v - Window firstboot service questions

Sam Eiderman sameid at google.com
Sun Jul 26 06:02:15 UTC 2020


On Fri, Jul 24, 2020 at 12:49 AM Richard W.M. Jones <rjones at redhat.com> wrote:
>
> On Thu, Jul 23, 2020 at 12:28:17PM +0300, Sam Eiderman wrote:
> > Hi,
> >
> > It seems that on Windows we create the following dir:
> >
> > /Program Files/Guestfs/Firstboot/
> >
> > Where '/' is the os volume (where /Windows reside)
> >
> > Is it possible that Program Files is not actually located on the os volume?
> > (i.e. C:\Windows, D:\Program Files on original vm)
>
> I'm not sure - is this possible?

Yes, it's located in the registry:

Windows\CurrentVersion: ProgramFilesPath: "%ProgramFiles%" (REG_EXPAND_SZ)
Windows\CurrentVersion: ProgramW6432Dir: "C:\Program Files" (REG_SZ)

>
> > Does virt-v2v or even libguestfs's inspect_os() even support that?
>
> AFAIK we always put it on the "system" partition, which will be the
> one where we found /Windows.  And that ought to work even if the
> system isn't on C: although I suppose it's unlikely anyone has tested
> that.

If E:\ is the system partition (and Program Files is located there),
notice that the following line:

loop "" "C:" ["Program Files"; "Guestfs"; "Firstboot"]

Will write "C:" explicitly in the registry, probably using
%SystemDrive% instead (and REG_EXPAND_SZ) would solve it.

>
> > (Looking around in the code tells me that if the Windows vm has
> > multiple volumes, or even if the os drive letter is not 'C:', virt-v2v
> > will not work correctly)
> >
> > Wouldn't it be safer to create the Guestfs dir directly on root, and
> > not use the Program Files if it might be on a different volume?
>
> While putting it in "/Program Files" is probably wrong, there are a
> couple of other considerations: We ought not to pollute C:\ with a new
> directory and there are no obvious other places (C:\Temp maybe?).  But
> more importantly there's a lot of downstream documentation covering
> this log file, and so moving it is going to cause trouble collecting
> logs from (Red Hat's) customers.

I understand, as I'm creating a fork of this behavior and I don't need
to take existing customers into account, I think I'll go with "C:\"
directly as I do not think we should consider not polluting the
customer's "C:\" drive.

>
> Rich.
>
> --
> Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
> Read my programming and virtualization blog: http://rwmj.wordpress.com
> libguestfs lets you edit virtual machines.  Supports shell scripting,
> bindings from many languages.  http://libguestfs.org
>

Thanks!




More information about the Libguestfs mailing list