I noticed several folks looking for a way to use Windows 10 on Qubes. Since
there is currently no ETA for Windows 10 support via `qubes-windows-tools`[1],
I thought I'd share an alternative method. I don't have time for a full writeup
at the moment but importantly, nothing in this post is really Qubes-specific,
meaning you can find plenty of relevant resources elsewhere.
Windows 10 / Server 2016 installs and runs without any issues as an HVM on
Qubes 3.2 (4.0 not tested). Inter-VM functionality can be achieved using any
remote desktop protocol, including X11, VNC and RDP. This post is about using
the freeRDP client with Windows' built-in RDP server functionality.
The RDP protocol enables the following major features: seamless windows, shared
clipboard, shared folders, and audio & usb redirection. GPU-accelerated VMs are
possible if they are hosted on a separate Hyper-V machine. Keep in mind that
all of these features are provided by the RDP protocol over standard networking
interfaces. This is in contrast to `qubes-windows-tools` which provides similar
functionality using Qubes' back-end. Determine if that risk is appropriate for
you. QWT also provides access to qrexec and persistent profiles (that enable
immutable root filesystems and simplified offline HVMs).
1. Install Windows 10 as a Standalone HVM or HVM Template (if you have the
appropriate licenses). The template will have limited usage unless you can
offload data you want to persist onto a separate volume (or you can use as a
disposable vm). Also, make sure you setup a password. Enable Remote Desktop in
Settings > System. Leave NLA enabled.
2. InterVM Communication: This will be the hardest step for those of you new to
this. You'll need to allow one of your LinuxVMs (freeRDP client) to communicate
with one of your Windows VMs (RDP server). Create or use a proxyVM to act as a
router.
Example of basic setup:
win10
|
|
sys-net --- sys-firewall
|
|
workVM
Instructions are here:
https://www.qubes-os.org/doc/firewall/#enabling-networking-between-two-qubes
Don't proceed until you succeed with this step.
3. Install `freerdp` in workVM. Fedora-25 has v2.0.0 as does Debian
stretch-backports.
4. Test with `xfreerdp /v::3389`. If server responds and you can log
in, then you can pile on the options.
5. There are MANY options. See `man xfreerdp` and docs[2]. I haven't used a GUI
but some exist, like Remmina. You may want to add the following:
```
/v::3389
/u:[domain\]
/p:
/w:
/h:
/network:lan # network speed
/drive:myShare,/home/user/myShare # share name, location
/rfx # remote-fx works will all vm's; only hyperv for gpu
/rfx-mode: