Skip to content

Concept: Publish own XCP ng PV Drivers to Window Update

Alexander Schulz edited this page Oct 18, 2018 · 11 revisions

Goal

  • Publish own XCP-ng PV Drivers to Window Update
    • Important: make sure other languages than english can get these drivers from WU
  • Support also Citrix XenServer PV-Tools (maybe as "legacy mode"?)

Progress

https://github.com/xcp-ng/win-pv-drivers/milestone/1

How

  1. Get an EV-Certificate ✔️
  2. Sign our own Drivers ✔️
  3. Use another PCI-Device number than Citrix
    • register a PCI-Device number ✔️
    • pass this PCI-Device to Windows VMs
  4. Upload our PV-Driver to MS

Knowledge/Ideas

Start a VM in various "modes" to support different PV-Tools

  • plain PV-Tools from Xen-Project
    • PCI-Device 0x0001 or
    • PCI-Device 0x0002
  • classic XenServer-PV-Tools
    • PCI-Device 0x0002
    • PCI-Device 0xc000 for Windows Update recognition
  • XCP-ng PV-Tools
    • PCI-Device 0x0002
    • PCI-Device 0xc200 for Windows Update recognition

Special PCI-devices are passed to every VM.

Example: Windows 10 64Bit (XCP-ng 7.5)

qemu-dm-1
 -machine pc-0.10,accel=xen,max-ram-below-4g=4026531840,allow-unassigned=true,trad_compat=true
 -vnc unix:/var/run/xen/vnc-1,lock-key-sync=off
 -monitor null
 -xen-domid 1
 -m size=4096
 -boot order=dc
 -usb
 -device usb-tablet,port=2
 -smp 2,maxcpus=2
 -serial pty
 -display none
 -nodefaults
 -trace enable=xen_platform_log
 -sandbox on,obsolete=deny,elevateprivileges=allow,spawn=deny,resourcecontrol=deny
 -S
 -global PIIX4_PM.revision_id=0x1
 -global ide-hd.ver=0.10.2
 -global piix3-ide-xen.subvendor_id=0x5853
 -global piix3-ide-xen.subsystem_id=0x0001
 -global piix3-usb-uhci.subvendor_id=0x5853
 -global piix3-usb-uhci.subsystem_id=0x0001
 -global rtl8139.subvendor_id=0x5853
 -global rtl8139.subsystem_id=0x0001
 -parallel null
 -qmp unix:/var/run/xen/qmp-libxl-1,server,nowait
 -qmp unix:/var/run/xen/qmp-event-1,server,nowait
 -device xen-platform,addr=3,device-id=0x0002,revision=0x2,class-id=0x0100,subvendor_id=0x5853,subsystem_id=0x0002
 -device xen-pvdevice,device-id=0xc000,addr=5
 -device rtl8139,netdev=tapnet0,mac=96:4d:4c:a9:7c:c9,addr=4
 -netdev tap,id=tapnet0,fd=7
 -drive file=/dev/sm/backend/da031bd5-7fdd-4738-2841-d10b0e61c571/197bec73-8ddb-4134-b54b-8230f0dc40a9,if=ide,index=0,media=disk,format=raw,force-lba=on
 -drive file=,if=ide,index=3,media=cdrom,force-lba=off
 -device VGA,vgamem_mb=8,rombar=1,romfile=,subvendor_id=0x5853,subsystem_id=0x0001,addr=2,qemu-extended-regs=false
 -vnc-clipboard-socket-fd 4
 -xen-domid-restrict
 -chroot /var/xen/qemu/root-1
 -runas 65536.994

Standard XEN device (to tell the OS that there is a XEN Hypervisor) - should not be changed

 -device xen-platform,addr=3,device-id=0x0002,revision=0x2,class-id=0x0100,subvendor_id=0x5853,subsystem_id=0x0002

Special Vendor Device - should be adjustable per VM

 -device xen-pvdevice,device-id=0xc000,addr=5