Re: [libvirt-users] Libvirt, virtmanager & Windows 7 installation partition

Laine Stump
2013-07-05T05:30:44Z

On 07/04/2013 04:21 PM, Roland Giesler wrote:
> I need to use an existing windows 7 installation in a virtual machine
> form a libvirt host running Ubuntu 12.10.
>
> Windows 7 installs on two partitions.  There a 100MB boot partitiona
> and then the main partition for the installation.
>
> If I boot the laptop (which dual boots), I can select Windows 7 and
> boot it just fine, or alternative Ubuntu.
>
> If I select /dev/sda1 in the virtmanager as the source path I can see
> dis activity, but in the VM window the "booting from hard
disk..."
> text never does away.
>
> If I select /dev/sda2 (where the windows installation resides (and
> which is not marked as bootable), I get a boot failure right away.

While what you're seeing with a failure this early in the boot process
may have something to do with disk geometry or naming, note that booting
an existing Windows installation as a virtual machine is fraught with
peril. This is because Windows tailors what it installs on a particular
machine to the hardware of the machine at the time of the installation.
A virtual machine is *not* the same as the physical machine it is
running on (for example, qemu virtual machines currently all use the
i440FX chipset, which hasn't been manufactured in probably 15 years or
so), so if you try to boot an installation created on real (and
certainly much more modern) hardware in a virtual machine, Windows will
see the difference and could "freak out"; the result could be
something
as innocuous as automatically installing some new drivers for the "new
hardware" it has found, or it could require you to re-activate your copy
of Windows (whatever that entails these days - the newest Windows that
I've run is WinXP :-P), or it could result in a total disaster of a
failure to boot or blue screen.

There is a package called "virt-p2v that can help in converting an
existing Windows installation over so that it will run properly under
qemu (it mounts the image from Linux and injects new/different drivers
and registry changes). However, this is a permanent, one way process -
once you've done this to a Windows installation, you can't go back and
run it directly on hardware. (well, that's actually glossing things over
a bit; I believe the way virt-p2v works is to make a *copy* of the
original machine's disk, then modify that copy so the original is still
there, but then you have two copies, and changes to one will not be
registered in the other... you see the problem).

So if you're willing to permanently use this windows installation only
as a virtual machine, you should look into virt-p2v (at least to see the
kind of stuff it does). If you're not willing to make a permanent
switch, you may want to rethink your goals.


>
> Here is what /var/log/syslog has:
>
> Jul  4 22:11:02 Matt-HP ntfs-3g[8385]: Version 2012.1.15AR.5 external FUSE
29
> Jul  4 22:11:02 Matt-HP ntfs-3g[8385]: Mounted /dev/sda2 (Read-Write,
> label "", NTFS 3.1)
> Jul  4 22:11:02 Matt-HP ntfs-3g[8385]: Cmdline options:
> rw,nosuid,nodev,uhelper=udisks2,uid=1001,gid=1001,dmask=0077,fmask=0177
> Jul  4 22:11:02 Matt-HP ntfs-3g[8385]: Mount options:
>
rw,nosuid,nodev,uhelper=udisks2,allow_other,nonempty,relatime,default_permissions,fsname=/dev/sda2,blkdev,blksize=4096
> Jul  4 22:11:02 Matt-HP ntfs-3g[8385]: Global ownership and
> permissions enforced, configuration type 7
> Jul  4 22:11:02 Matt-HP udisksd[2569]: Mounted /dev/sda2 at
> /media/roland/BE26AE8326AE3C71 on behalf of uid 1001

Wait! This is another problem - you can't mount the device in the host
OS *and* try to use it as a block device for a virtual guest! If you
manage to be successful in booting the guest, you'll then have two
independent entities modifying the same file system at the same time,
which will lead to disaster in the form of a corrupt disk very quickly.

If you're going to use a disk in a guest, don't mount it in the host,
and if you're going to mount it in the host, don't use it in a guest.

> Jul  4 22:12:31 Matt-HP kernel: [15366.356259] audit_printk_skb: 48
> callbacks suppressed
> Jul  4 22:12:31 Matt-HP kernel: [15366.356265] type=1400
> audit(1372968751.291:34): apparmor="STATUS"
operation="profile_load"
> name="libvirt-c6a90ff5-9849-2ec5-fc8e-a331b144ceff" pid=8540
> comm="apparmor_parser"
> Jul  4 22:12:31 Matt-HP kernel: [15366.584252] device vnet0 entered
> promiscuous mode
> Jul  4 22:12:31 Matt-HP kernel: [15366.588663] virbr0: topology change
> detected, propagating
> Jul  4 22:12:31 Matt-HP kernel: [15366.588669] virbr0: port 1(vnet0)
> entered forwarding state
> Jul  4 22:12:31 Matt-HP kernel: [15366.588685] virbr0: port 1(vnet0)
> entered forwarding state
> Jul  4 22:12:31 Matt-HP kernel: [15366.588963] IPv6:
> ADDRCONF(NETDEV_CHANGE): virbr0: link becomes ready
> Jul  4 22:12:31 Matt-HP NetworkManager[986]:    SCPlugin-Ifupdown:
> devices added (path: /sys/devices/virtual/net/vnet0, iface: vnet0)
> Jul  4 22:12:31 Matt-HP NetworkManager[986]:    SCPlugin-Ifupdown:
> device added (path: /sys/devices/virtual/net/vnet0, iface: vnet0): no
> ifupdown configuration found.
> Jul  4 22:12:32 Matt-HP NetworkManager[986]: <warn>
> /sys/devices/virtual/net/vnet0: couldn't determine device driver;
> ignoring...
> Jul  4 22:12:33 Matt-HP avahi-daemon[935]: Joining mDNS multicast
> group on interface vnet0.IPv6 with address fe80::fc54:ff:fe8a:8f93.
> Jul  4 22:12:33 Matt-HP avahi-daemon[935]: New relevant interface
> vnet0.IPv6 for mDNS.
> Jul  4 22:12:33 Matt-HP avahi-daemon[935]: Registering new address
> record for fe80::fc54:ff:fe8a:8f93 on vnet0.*.
>
> Is there anything that I can learn from this log?

Not much (other than that NetworkManager can't seem to keep its mitts of
of libvirt's tap devices :-/, but that's not related to your problem).

You *might* see something useful in
/var/log/libvirt/qemu/$guestname.log, but it's unlikely.


Beyond that, investigating something like this usually requires looking
at the guest's libvirt config ("virsh dumpxml $guestname"),
although in
this case I think you have much bigger problems.


>   What could I do to
> make this work.  Dual booting it not an option in this case.

As mentioned above - if you're willing to give up native Windows boot
forever, then look into virt-p2v or something similar. Otherwise, you'll
have to dual boot, or have two separate Windows images - one for native
boot and one for booting as a guest.

>
> Disclaimer: The sender invokes the rule of "exemptus
responsibilitus"
> pertaining to caffeine soluted inductions and/or decantations thereof
> into tactile communication interfaces and alternative apparatuses with
> respect to personal computation devices or otherwise implementations
> of electronic and/or bionic devices. This impartation is intended for
> the addressed party, unless conditions contrary to the aforementioned
> exist, in which case it is pertinent.  Reduce without further ado to
> nothingness said impartation; alternatively "refrain from traversing
> the point of origination, be not enriched by 200 Randus and proceed
> without delay to enjailment".
>

Brilliant!! :-) This makes at least as much sense as the ones that think
they're serious...