Documentation : Windows-10 installation on Qubes R4.0

For someone looking tutorial document for Windows-10 installation on Qubes R4.0
Change <*> part to your current circumstance.

Notice
0. This installation process is based on Qubes R4.0 and QWT 4.0.1-3.

  1. I recommend you to use Windows-10 as AppVM based on TemplateVM. If you don’t, there will be several restriction such as lowering possiblity of BSOD, working QWT correctly, and decreasing your effort for software update.

  2. Please backup Windows VM in each process (I mean cloning). If you fail to start VM after OS installation or QWT several times, I recommend you to delete VM and restore(clone) again. This will significantly reduce your time.

  3. After successful installation to QWT, you could do these things below…
    3-1. Copy/Paste clipboard between fedora/debian linux VMs.
    3-2. Copying files between fedora/debian linux VMs.
    3-3. Attaching USB storage to Windows VM.

  4. Though successful installation to QWT, you couldn’t do these things below…
    4-1. Sound support.
    4-2. Copy/Paste clipboard between Windows VMs.
    4-3. Copying files between Windows VMs.
    4-4. Attaching USB device. (except storage/ meaning USB passthrough not working)
    4-5. Seamless mode. (Only Windows 7 support)
    4-6. GPU accerlation.
    4-7. Above 2560x1600 screen size
    4-8. Support some keyboard layout (some special key for changing your language could not work)

  5. Some of issues remain after successful QWT installation…
    5-1. Sometimes, QWT not working correctly after second reboot from QWT installation or Windows updates. (This could be temporary solved via Windows-10 recovery mode setting on Windows TemplateVM. Just hit ‘continue’ button on Template-VM. This will tempoary enable successful QWT start on first boot)
    5-2. Rarely, Windows could be crashed on shutdown not even qvm-kill working afterall, requiring entire system(Qubes OS) reboot.

Windows 10 Installation process

1. dom0 : qvm-create -C TemplateVM -l <color> -property virt_mode=hvm <windows-template>

2. dom0 : qvm-prefs <windows-template> vcpus <number/ you want to assign cpu cores>

3. dom0 : qvm-prefs <windows-template> memory <dram capacity/ must at least 4096 > && qvm-prefs <windows-template> maxmem <dram capacity/ same memory size should be assigned as prior command>

4. dom0 : qvm-volume extend <windows-template>:root 50G

5. dom0 : qvm-volume extend <windows-template>:private 40G

6. dom0 : qvm-prefs <windows-template> netvm  <netvm name>

7. dom0 : qvm-prefs  <windows-template> kernel ''

8. qvm-start <windows-template> --cdrom=<windowsiso-vault>:/path/to/windows-10-iso <windows-template>

# several restart after the first part of the windows installation process ends

9. dom0 : qvm-prefs <windows-template> qrexec_timeout 10000

10. dom0 : qvm-start <windows-template>

Installing Qubes Windows Tools

11. dom0 : sudo qubes-dom0-update enablerepo=qubes-dom0-current-testing qubes-windows-tools (if you didn't download QWT yet)

12. <windows-template>-administrative priviledge : netplwiz / uncheck 'Users must enter a user name and password…'. And shutdown

#starting from Windows-10 2004, you would need to change registry settings to make checkbox for autologin#

13. dom0 : qvm-start <windows-template>

14. <windows-template> : You need to find Xen Windows Driver 9.0.0 (or above) version and download *xenvbd* and *xenbus* on system drive (:C)

15. <windows-template> : Install *xenvbd* and *xenbus* driver. And shutdown.

16. dom0 : qvm-start <windows-template> --install-windows-tools

17. <windows-template>-administrative priviledge : Check CD-ROM. Uncheck *Xen storage driver* and *Move of user data to Drive D* install QWT in it.
#Please don't push 'reboot' button until entire installation process ends#

18. qvm-features <windows-template> gui 1

19. qvm-start <windows-template>

Reference

  1. Github : Qubes Windows Tools (QWT) on R4 #3585
    https://github.com/QubesOS/qubes-issues/issues/3585
  2. Qrexec Agent Starts Incorrectly and too Early on Windows 10 HVM #5462
    https://github.com/QubesOS/qubes-issues/issues/5462https://github.com/QubesOS/qubes-issues/issues/5802
1 Like

Hi @Subots! Thanks for taking the time. This exact issue is being addressed in a contribution to the qubes-doc here

But it’s about to to merged onto the documentation. Maybe you can still go there and propose changes.

Installation

step 1 should be “–property” (two hyphens)

step 9, you have twice, should only be after --cdrom=xxxxx

The current documentation for this is living on the community documentation:

Feel free to address your feedback there as that should be the most up-to-date resource on the matter. Perhaps by opening up a github pull request to suggest improvements.

This doesn’t exist on my system:

/sys/firmware/acpi/tables/MSDM

@deeplow: Thanks for those updated links. I followed the instructions, which worked up until steps 8-10 in Installing Qubes guest tools in Windows 10

After installing the tools, shutting down, and running:

dom0] qvm-features windows gui 1

I can no longer get the windows vm to appear. It says it is running, but not gui. So i run:

dom0] qvm-start-gui windows

This returns:

windows: Starting GUI (stubdomain)
Connecting to VM's GUI agent: .connected
windows: Starting GUI
windows: Sending monitor layout
windows: Failed to send monitor layout: b'connect: No such file or directory\n'

and then the windows gui popped up (this took a few tries of qvm-killing the Qube and redoing the above).

So now i’m in windows, but if i try to qvm-copy to it, i get “Request refused” and copy paste from another Qube similarly does not work.

I run the qubes windows tool installer, which confirms it is already installed. So i click “repair” and then reboot. This time the GUI comes up no problem. But still no qubes tools functionality to move data between qubes.

I used to be able to get a fully functional Windows Qube with this defunct tool: GitHub - elliotkillick/qvm-create-windows-qube: Spin up new Windows qubes quickly, effortlessly and securely
Not sure how these instructions differ or what changed.

I don’t know much about particular debugging on this.I simply followed the instructions as well.

But check out this image on the QWT settings I used:

Originally posted here.

Step 7 on the link you posted read " not selecting the Xen PV disk drivers and the Move user profiles (which would probably lead to problems in Windows, anyhow)." So mine looked different - red X’s next to those 2 items.

Maybe I should try again including them?

1 Like

I’ve just successfully setup a Windows 10 VM after having failed previously with similar problems to you. I was followed the instructions on these pages (as mentioned by @deeplow above):

In the last successful attempt I did a few things differently - I don’t know which (if any) made the difference.

  1. After installing Windows 10, I ran:

    qvm-prefs windows-10 qrexec_timeout 300

    This is mentioned in the instructions for installing Windows 7, but not for Windows 10.

  2. When installing Qubes Windows Tools, I waited for the installations of the .Net Framework to finish before clicking on the Install button for the Xen driver.

  3. On the first start of the Windows VM after installing Qubes Windows Tools I waited until the VM CPU dropped to around 0% before shutting it down again (there no GUI at this stage). Hopefully this gave whatever startup processes were running time to do their thing.

After all that the next time I started the VM it all seemed to be working (GUI, file copy, clipboard copy/paste).

1 Like

Interesting. I remember having ran that command as well. But somehow it didn’t make it onto the instructions. @GWeck

I created a pull request, also stating that USB support is working.

1 Like

Two things:

  1. Under R4.0, the 8.2.2 PV disk drivers do work for me if I immediately disable the LSI SAS/SCSI (qemu emulated) devices after installing the PV drivers by executing the following before rebooting:
  pnputil /delete-driver lsi_sas.inf /uninstall
  1. The official QWT ISO move user profile code does not work with Windows 10 under R4.0 or R4.1. The tabit-pro QWT ISO (here: GitHub - tabit-pro/qubes-windows-tools-cross: Qubes Windows Tools build with mingw, wine and qubes-builder ), which you must build in a clean fedora-32 VM, has move user profile code that actually works with Windows 10. Useful if you are creating templates.

Hi,

managed to set up a Win10 TemplateVM and AppVM on Qubes R4 following the guidelines as posted bz deeplow. Copying files from a DispVM to the AppVM worked without any problems.I haven’t tested sound yet.

However, there is on point where I would need some support:
How to set up user directories so they survive reboots? What do I need to do in the TemplateVM and what in the AppVM?

Any support is highly appreciated.

Michael

there to disk in appvm xvda and xvdb
the xvda is the root partition and it not survive reboot
the xvdb is the home partition, it survive reboot but not used by default
it can moved using some qube tool

For Windows 10:

The 4.0.1.3 (4.0.13?) QWT ISO on the qubes site currently cannot move the user profile to the private volume due to new filesystem object types found in Windows 10 installs.

However, the 4.1.65 QWT from the cross-build QWT (here: GitHub - tabit-pro/qubes-windows-tools-cross: Qubes Windows Tools build with mingw, wine and qubes-builder ) can. You’ll need to build it following the instructions.

Notably, the current cross-build installer does not move the profile by default, you will have to manually select it during the install.

Once that happens, you can use the VM as a template and create AppVMs where the Q:\Users directory can differ per VM.

There does seem to be a bug in Qubes R4.1 that Standalone VMs cannot be created from Windows template, only AppVMs can: Special casing of windows template private volume import works for AppVM, but not for StandaloneVM · Issue #7095 · QubesOS/qubes-issues · GitHub . The workaround is to either create a standalone windows VM manually, or manually clone the private volume from the template for the standalone and replace the one created during the qvm-create process.

Mostly this bug exists because VMs created from a Windows template do not have the private volumes automatically populated from a cache on the root volume on first run of the new VM, unlike the Linux-based VMs.