You are not logged in.
I would like to provision a QEMU/KVM virtual machine with two raw partitions from my arch linux host's nvme disk. If it matters to the answer, one of the partitions is the actual EFI system partition of the host, and the other is an NTFS data partition containing a Win 10 install. I don't particularly care if the guest sees these two partitions as belonging to a single virtual disk, or if the guest sees two disks.
After much trying and searching, i have only succeeded to EITHER 1. attach only the EFI partition to the VM (as a sata disk), but not the NTFS partition; or 2. attach the ENTIRE nvme disk to the VM (in which case i can indeed boot into the Win 10 on that ntfs partition, but then i am open to doing really stupid things (such as booting the host in the guest).
What I can't figure out is if/how I can make the two nvme partitions available to the guest, either as partitions or as disks.
The virsh xml for the two partitions is:
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/nvme0n1p1'/>
<target dev='sda' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/nvme0n1p3'/>
<target dev='sdb' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
but when I boot the machine, it sees the EFI partition just fine, gives me the Dell efi-stub bootloader. But it doesn't see the second ntfs partition. So when I choose to boot the MS Bootloader, I get a "No Mapping" error and get dropped into the EFI shell. FS0: is there, and I can access all files on the vfat EFI disk, but there is no FS1: or any other access to that NTFS disk. The error I get is
Failed to execute the Windows Boot Manger (bootmgrfw.efi): No Mappiong
UEFI Interactive Shell v2.2
EDK II
UEFI v.2.70 (EDK II, 0x000100000)
Mapping Table
FS0: Alias(s):F0a655535a::BLK0:
PciRoot(0x0)/Pci(0x1F,0x2)/Sata(0x0,0xFFFF,0x0)
Press ESC in 2 seconds to skep startup.nsh or any other key to continue
Shell>
I append the full xml below. Any help on how to get BOTH partitions to be recognized is appreciated. Do I somehow need to add ntfs support to the VM efistub? Thank you
<domain type='kvm'>
<name>win10</name>
<uuid>514a78b0-387b-4169-abb8-172258075eeb</uuid>
<title>w10-1</title>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://microsoft.com/win/10"/>
</libosinfo:libosinfo>
</metadata>
<memory unit='KiB'>16777216</memory>
<currentMemory unit='KiB'>16777216</currentMemory>
<vcpu placement='static'>8</vcpu>
<os firmware='efi'>
<type arch='x86_64' machine='pc-q35-5.2'>hvm</type>
<loader/>
<nvram>/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<hyperv>
<relaxed state='on'/>
<vapic state='on'/>
<spinlocks state='on' retries='8191'/>
</hyperv>
<vmport state='off'/>
</features>
<cpu mode='host-passthrough' check='none' migratable='on'>
<topology sockets='1' dies='1' cores='4' threads='2'/>
</cpu>
<clock offset='localtime'>
<timer name='rtc' tickpolicy='catchup'/>
<timer name='pit' tickpolicy='delay'/>
<timer name='hpet' present='no'/>
<timer name='hypervclock' present='yes'/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled='no'/>
<suspend-to-disk enabled='no'/>
</pm>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type='block' device='disk'>
<driver name='qemu' type='raw'/>
<source dev='/dev/nvme0n1p1'/>
<target dev='sda' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' dev <driver name='qemu' type='raw'/>
<source dev='/dev/nvme0n1p3'/>
<target dev='sdb' bus='sata'/>
<address type='drive' controller='0' bus='0' target='0' unit='1'/>
</disk>
<controller type='usb' index='0' model='qemu-xhci' ports='15'>
<address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
</controller>
<controller type='sata' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pcie-root'/>
<controller type='pci' index='1' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='1' port='0x10'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
</controller>
<controller type='pci' index='2' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='2' port='0x11'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
</controller>
<controller type='pci' index='3' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='3' port='0x12'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
</controller>
<controller type='pci' index='4' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='4' port='0x13'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
</controller>
<controller type='pci' index='5' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='5' port='0x14'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
</controller>
<controller type='pci' index='6' model='pcie-root-port'>
<model name='pcie-root-port'/>
<target chassis='6' port='0x15'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
</controller>
<controller type='pci' index='7' model='pcie-to-pci-bridge'>
<model name='pcie-pci-bridge'/>
<address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
</controller>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
</controller>
<controller type='scsi' index='0' model='lsilogic'>
<address type='pci' domain='0x0000' bus='0x07' slot='0x01' function='0x0'/>
</controller>
<interface type='network'>
<mac address='52:54:00:68:ba:b6'/>
<source network='default'/>
<model type='e1000e'/>
<address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
</interface>
<serial type='pty'>
<target type='isa-serial' port='0'>
<model name='isa-serial'/>
</target>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<channel type='spicevmc'>
<target type='virtio' name='com.redhat.spice.0'/>
<address type='virtio-serial' controller='0' bus='0' port='1'/>
</channel>
<input type='tablet' bus='usb'>
<address type='usb' bus='0' port='1'/>
</input>
<input type='mouse' bus='ps2'/>
<input type='keyboard' bus='ps2'/>
<graphics type='spice' autoport='yes'>
<listen type='address'/>
<image compression='off'/>
</graphics>
<sound model='ich9'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
</sound>
<video>
<model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
</video>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='2'/>
</redirdev>
<redirdev bus='usb' type='spicevmc'>
<address type='usb' bus='0' port='3'/>
</redirdev>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</memballoon>
</devices>
</domain>
Offline
I don't particularly care if the guest sees these two partitions as belonging to a single virtual disk, or if the guest sees two disks.
I believe you should.
I assume the EFI partition is configured to boot Windows from bare-metal (and thus, from a partition on the full disk) only. This partition it cannot find in your setup.
Do you really need the host's EFI partition?
Anyways, I doubt Windows can (easily) be booted from an unpartitioned disk, so I'd suggest one of the options laid out in the Wiki [0] to combine partitions into virtual disks. If using the host's EFI partition, the setup should probably best look identical; that is, the ntfs partition should reside at the same (virtual) location. The depicted device-mapper approach achieves exactly this.
[0] https://wiki.archlinux.org/index.php/QE … disk_image
Last edited by respiranto (2021-02-13 18:31:07)
Offline