mirror of
https://github.com/QubesOS/qubes-doc.git
synced 2025-01-06 21:18:04 -05:00
778 lines
28 KiB
ReStructuredText
778 lines
28 KiB
ReStructuredText
|
=========================================
|
|||
|
Qubes Windows Tools (QWT) in Qubes OS 4.0
|
|||
|
=========================================
|
|||
|
|
|||
|
|
|||
|
**Warning:** *The content below describes Qubes Windows Tools installation in Qubes R4.0. The text has been updated to reflect the newer R4.1 release and QWT recent development. Please see* :doc:`this updated document </user/templates/windows/qubes-windows-tools-4-1>` *for instructions for Qubes R4.1 and the updated version of Qubes Windows Tools.*
|
|||
|
|
|||
|
Qubes Windows Tools are a set of programs and drivers that provide
|
|||
|
integration of Windows AppVMs with the rest of the Qubes system.
|
|||
|
Currently the following features are available for Windows VMs after
|
|||
|
installation of those tools:
|
|||
|
|
|||
|
- **Qubes Video Driver** - provides for the Seamless GUI mode that
|
|||
|
integrates apps windows onto the common Qubes trusted desktop
|
|||
|
|
|||
|
- **File sender/receiver** - Support for :doc:`secure clipboard copy/paste </user/how-to-guides/how-to-copy-and-paste-text>` between the Windows VM and other
|
|||
|
AppVMs
|
|||
|
|
|||
|
- **File sender/receiver** - Support for :doc:`secure file exchange </user/how-to-guides/how-to-copy-and-move-files>` between the Windows VM and other
|
|||
|
AppVMs
|
|||
|
|
|||
|
- **Copy/Edit in Disposable VM** - Support for editing files in
|
|||
|
DisposableVMs as well as for qvm-run and generic qrexec for the
|
|||
|
Windows VM (e.g. ability to run custom service within/from the
|
|||
|
Windows VM)
|
|||
|
|
|||
|
- **Xen PV drivers** for Windows that increase performance compared to
|
|||
|
qemu emulated devices
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Below is a breakdown of the feature availability depending on the
|
|||
|
windows version:
|
|||
|
|
|||
|
.. list-table::
|
|||
|
:widths: 39 39 39
|
|||
|
:align: center
|
|||
|
:header-rows: 1
|
|||
|
|
|||
|
* - Feature
|
|||
|
- Windows 7 x64
|
|||
|
- Windows 10 x64
|
|||
|
* - Qubes Video Driver
|
|||
|
-
|
|||
|
-
|
|||
|
* - Qubes Network Setup
|
|||
|
-
|
|||
|
-
|
|||
|
* - Private Volume Setup (move profiles)
|
|||
|
-
|
|||
|
-
|
|||
|
* - File sender/receiver
|
|||
|
-
|
|||
|
-
|
|||
|
* - Clipboard Copy/Paste
|
|||
|
-
|
|||
|
-
|
|||
|
* - Application shortcuts
|
|||
|
-
|
|||
|
-
|
|||
|
* - Copy/Edit in Disposable VM
|
|||
|
-
|
|||
|
-
|
|||
|
* - Block device
|
|||
|
-
|
|||
|
-
|
|||
|
* - USB device
|
|||
|
-
|
|||
|
-
|
|||
|
* - Audio
|
|||
|
-
|
|||
|
-
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Qubes Windows Tools are open source and are distributed under a GPL
|
|||
|
license.
|
|||
|
|
|||
|
**Notes:**
|
|||
|
|
|||
|
- Qubes Windows Tools are currently unmaintained
|
|||
|
|
|||
|
- Currently only 64-bit versions of Windows 7 and Windows 10 are
|
|||
|
supported by Qubes Windows Tools. Only emulated SVGA GPU is supported
|
|||
|
(although `there has been reports <https://groups.google.com/forum/#!topic/qubes-users/cmPRMOkxkdA>`__
|
|||
|
on working GPU passthrough).
|
|||
|
|
|||
|
- **This page documents the process of installing Qubes Windows Tools on versions up to R3.2.**. Installation on Qubes R4.0 is possible but
|
|||
|
is a work in progress and there are limitations/bugs (see `issue #3585 <https://github.com/QubesOS/qubes-issues/issues/3585>`__).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Installing Windows OS in a Qubes VM
|
|||
|
-----------------------------------
|
|||
|
|
|||
|
|
|||
|
Please refer to :doc:`this page </user/templates/windows/windows-qubes-4-0>` for
|
|||
|
instructions on how to install Windows in a Qubes VM.
|
|||
|
|
|||
|
**Note:** It is strongly suggested to enable autologon for any Windows
|
|||
|
HVMs that will have Qubes Tools installed. To do so, run ``netplwiz``
|
|||
|
command from the ``Win+R``/Start menu and uncheck the *Users must enter a user name and password to use this computer* option.
|
|||
|
|
|||
|
Installing Qubes guest tools in Windows 10 VMs
|
|||
|
----------------------------------------------
|
|||
|
|
|||
|
|
|||
|
This will allow you to install the Qubes Windows Tools on Windows 10
|
|||
|
both as a StandaloneVM as well as a Template VM and a corresponding
|
|||
|
AppVM. But some features are not available:
|
|||
|
|
|||
|
**Note:** seamless mode is currently not available for windows. Please
|
|||
|
check the top of this document for the full feature availability
|
|||
|
breakdown.
|
|||
|
|
|||
|
1. In the Windows 10 VM, download from the `XEN website <https://xenproject.org/downloads/windows-pv-drivers/windows-pv-drivers-9-series/windows-pv-drivers-9-0-0/>`__
|
|||
|
the installation kits for Xen bus (``xenbus``) and storage drivers
|
|||
|
(``xenvbd``) Version 9.0.0 (two files ``xenvbd.tar``and
|
|||
|
``xenbus.tar``).
|
|||
|
|
|||
|
2. Use an archive extractor like `7-zip <https://www.7-zip.org/>`__ to
|
|||
|
extract the contents of the ``.tar`` files.
|
|||
|
|
|||
|
3. Install ``xenvbd`` and ``xenbus`` by starting the file
|
|||
|
``dpinst.exe`` from the ``x64`` directories of the extracted
|
|||
|
tar-files. If during installation, the Xen driver requests a reboot,
|
|||
|
select “No” and let the installation continue.
|
|||
|
|
|||
|
4. After installation, reboot.
|
|||
|
|
|||
|
5. Download the Qubes Windows Tools (``qubes-tools-4.0.1.3.exe``) from
|
|||
|
`the qubes FTP server <https://ftp.qubes-os.org/qubes-windows-tools/>`__ and move
|
|||
|
it to ``C:\``.
|
|||
|
|
|||
|
6. Check the integrity of the file ``qubes-tools-4.0.1.3.exe``by
|
|||
|
comparing its hash checksum. This can be done using the Windows
|
|||
|
command ``certutil`` on the windows command prompt (``cmd.exe``) and
|
|||
|
specifying an appropriate hash algorithm like:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
certutil -hashfile C:\qubes-tools-4.0.1.3.exe SHA256
|
|||
|
|
|||
|
|
|||
|
And compare it the value to
|
|||
|
``148A2A993F0C746B48FA6C5C9A5D1B504E09A7CFBA3FB931A4DCF86FDA4EC9B1``
|
|||
|
(**it has to exactly match for security reasons**). If it matches,
|
|||
|
feel free to continue the installation. If not, repeat the download
|
|||
|
to make sure it was not corrupted due to a network problem. If keeps
|
|||
|
on not matching it might be an attacker attempting to do something
|
|||
|
nasty to your system – Ask for support.
|
|||
|
**Note**: This is a workaround for installing the qubes windows
|
|||
|
tools on windows 10 since the standard way is broken.
|
|||
|
|
|||
|
7. Install Qubes Windows Tools 4.0.1.3 by starting
|
|||
|
``qubes-tools-4.0.1.3.exe``, not selecting the
|
|||
|
``Xen PV disk drivers`` and the ``Move user profiles`` (which would
|
|||
|
probably lead to problems in Windows, anyhow). If during
|
|||
|
installation, the Xen driver requests a reboot, select “No” and let
|
|||
|
the installation continue - the system will be rebooted later.
|
|||
|
|
|||
|
8. Shut down Windows and wait until the VM is really stopped,
|
|||
|
i.e. Qubes shows no more activity.
|
|||
|
|
|||
|
9. On a ``dom0`` terminal write: *(where ``<VMname>`` is the name of your Windows 10 VM)*
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-features <VMname> gui 1
|
|||
|
qvm-prefs <VMname> qrexec_timeout 300
|
|||
|
|
|||
|
|
|||
|
|
|||
|
10. Reboot Windows. If the VM starts, but does not show any window then
|
|||
|
shutdown Windows from the Qube manager, wait until it has really
|
|||
|
stopped, and reboot Windows once more.
|
|||
|
|
|||
|
11. Now the system should be up, with QWT running correctly.
|
|||
|
|
|||
|
12. Lastly to enable file copy operations to a Windows 10 VM the
|
|||
|
``default_user`` property should be set the ``<username>`` that you
|
|||
|
use to login to the Windows VM. This can be done via the following
|
|||
|
command on a ``dom0`` terminal: *(where ``<VMname>`` is the name of your Windows 10 VM)*
|
|||
|
``qvm-prefs <VMname> default_user <username>``
|
|||
|
|
|||
|
|
|||
|
|
|||
|
**Note:** If this property is not set or set to a wrong value, files
|
|||
|
copied to this VM are stored in the folder
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
C:\Windows\System32\config\systemprofile\Documents\QubesIncoming\<source_VM>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
If the target VM is an AppVM, this has the consequence that the files
|
|||
|
are stored in the corresponding TemplateVM and so are lost on AppVM
|
|||
|
shutdown.
|
|||
|
|
|||
|
Installing Qubes guest tools in Windows 7 VMs
|
|||
|
---------------------------------------------
|
|||
|
|
|||
|
|
|||
|
First, make sure that ``qubes-windows-tools`` is installed in your
|
|||
|
system:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
sudo qubes-dom0-update qubes-windows-tools
|
|||
|
|
|||
|
|
|||
|
|
|||
|
(If the above command does not work, it could be that the Qubes Tools
|
|||
|
are not in the stable repo yet. Try installing from the testing repo
|
|||
|
instead.)
|
|||
|
|
|||
|
You can also install the package from testing repositories, where we
|
|||
|
usually publish new versions first:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
sudo qubes-dom0-update --enablerepo=qubes-dom0-current-testing qubes-windows-tools
|
|||
|
|
|||
|
|
|||
|
|
|||
|
This package brings the ISO with Qubes Windows Tools that is passed to
|
|||
|
the VM when ``--install-windows-tools`` is specified for the
|
|||
|
``qvm-start`` command. Please note that none of this software ever runs
|
|||
|
in Dom0 or any other part of the system except for the Windows AppVM in
|
|||
|
which it is to be installed.
|
|||
|
|
|||
|
Before proceeding with the installation we need to disable Windows
|
|||
|
mechanism that allows only signed drivers to be installed, because
|
|||
|
currently (beta releases) the drivers we provide as part of the Windows
|
|||
|
Tools are not digitally signed with a publicly recognizable certificate.
|
|||
|
To do that:
|
|||
|
|
|||
|
- Start command prompt as Administrator, i.e. right click on the
|
|||
|
Command Prompt icon (All Programs -> Accessories) and choose “Run as
|
|||
|
administrator”
|
|||
|
|
|||
|
- In the command prompt type ``bcdedit /set testsigning on``
|
|||
|
|
|||
|
- Reboot your Windows VM
|
|||
|
|
|||
|
|
|||
|
|
|||
|
In the future this step will not be necessary anymore, because we will
|
|||
|
sign our drivers with a publicly verifiable certificate. However, it
|
|||
|
should be noted that even now, the fact that those drivers are not
|
|||
|
digitally signed, this doesn’t affect security of the Windows VM in
|
|||
|
‘any’ way. This is because the actual installation ISO (the
|
|||
|
``qubes-windows-tools-*.iso`` file) is distributed as a signed RPM
|
|||
|
package and its signature is verified by the ``qubes-dom0-update``
|
|||
|
utility once it’s being installed in Dom0. The only downside of those
|
|||
|
drivers not being signed is the inconvenience to the user that he or she
|
|||
|
must disable the signature enforcement policy before installing the
|
|||
|
tools.
|
|||
|
|
|||
|
To install the Qubes Windows Tools in a Windows VM one should start the
|
|||
|
VM passing the additional option ``--install-windows-tools``:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-start lab-win7 --install-windows-tools
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Once the Windows VM boots, a CDROM should appear in the ‘My Computer’
|
|||
|
menu (typically as ``D:``) with a setup program in its main directory.
|
|||
|
|
|||
|
After successful installation, the Windows VM must be shut down and
|
|||
|
started again, possibly a couple of times.
|
|||
|
|
|||
|
Qubes will automatically detect the tools has been installed in the VM
|
|||
|
and will set appropriate properties for the VM, such as
|
|||
|
``qrexec_installed``, ``guiagent_installed``, and ``default_user``. This
|
|||
|
can be verified (but is not required) using qvm-prefs command:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-prefs <your-appvm-name>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
**Note:** it is recommended to increase the default value of Windows
|
|||
|
VM’s ``qrexec_timeout`` property from 60 (seconds) to, for example, 300.
|
|||
|
During one of the first reboots after Windows Tools installation Windows
|
|||
|
user profiles are moved onto the private VM’s virtual disk (private.img)
|
|||
|
and this operation can take some time. Moving profiles is performed in
|
|||
|
an early boot phase when qrexec is not yet running, so timeout may occur
|
|||
|
with the default value. To change the property use this command in dom0:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-prefs <vm-name> qrexec_timeout 300
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Xen PV drivers and Qubes Windows Tools
|
|||
|
--------------------------------------
|
|||
|
|
|||
|
|
|||
|
Installing Xen’s PV drivers in the VM will lower its resources usage
|
|||
|
when using network and/or I/O intensive applications, but *may* come at
|
|||
|
the price of system stability (although Xen’s PV drivers on a Win7 VM
|
|||
|
are usually very stable). There are two ways of installing the drivers:
|
|||
|
|
|||
|
1. installing the drivers independently, from Xen’s `official site <https://www.xenproject.org/developers/teams/windows-pv-drivers.html>`__
|
|||
|
|
|||
|
2. installing Qubes Windows Tools (QWT), which bundles Xen’s PV drivers.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Notes about using Xen’s VBD (storage) PV driver: - **Windows 7:**
|
|||
|
installing the driver requires a fully updated VM or else you’ll likely
|
|||
|
get a BSOD and a VM in a difficult to fix state. Updating Windows takes
|
|||
|
*hours* and for casual usage there isn’t much of a performance between
|
|||
|
the disk PV driver and the default one; so there is likely no need to go
|
|||
|
through the lengthy Windows Update process if your VM doesn’t have
|
|||
|
access to untrusted networks and if you don’t use I/O intensive apps. If
|
|||
|
you plan to update your newly installed Windows VM it is recommended
|
|||
|
that you do so *before* installing Qubes Windows Tools (QWT). If QWT are
|
|||
|
installed, you should temporarily re-enable the standard VGA adapter in
|
|||
|
Windows and disable Qubes’ (see the section above). - the option to
|
|||
|
install the storage PV driver is disabled by default in Qubes Windows
|
|||
|
Tools - in case you already had QWT installed without the storage PV
|
|||
|
driver and you then updated the VM, you may then install the driver from
|
|||
|
Xen’s site (xenvbd.tar).
|
|||
|
|
|||
|
**Caution:** Installing the version 9.0.0 Xen drivers on Windows 7 (a
|
|||
|
system without QWT - QWT uninstalled) leads to an unbootable system. The
|
|||
|
drivers install without error, but after reboot, the system aborts the
|
|||
|
reboot saying ``Missing driver xenbus.sys``.
|
|||
|
|
|||
|
- **Windows 10:** The version 9.0.0 Xen drivers have to be installed
|
|||
|
before installing Qubes Windows Tools. Installing them on a system
|
|||
|
with QWT installed is likely to produce a system which crashes or has
|
|||
|
the tools in a non-functional state. Even if the tools were installed
|
|||
|
and then removed before installing the Xen drivers, they probably
|
|||
|
will not work as expected.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
With Qubes Windows Tools installed the early graphical console provided
|
|||
|
in debugging mode isn’t needed anymore since Qubes’ display driver will
|
|||
|
be used instead of the default VGA driver:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-prefs -s win7new debug false
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Using Windows AppVMs in seamless mode
|
|||
|
-------------------------------------
|
|||
|
|
|||
|
|
|||
|
**Note:** This feature is only available for Windows 7
|
|||
|
|
|||
|
Once you start a Windows-based AppVM with Qubes Tools installed, you can
|
|||
|
easily start individual applications from the VM (note the ``-a`` switch
|
|||
|
used here, which will auto-start the VM if it is not running):
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-run -a my-win7-appvm explorer.exe
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|windows-seamless-4.png| |windows-seamless-1.png|
|
|||
|
|
|||
|
Also, the inter-VM services work as usual – e.g. to request opening a
|
|||
|
document or URL in the Windows AppVM from another VM:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
[user@work ~]$ qvm-open-in-vm work-win7 roadmap.pptx
|
|||
|
|
|||
|
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
[user@work ~]$ qvm-open-in-vm work-win7 https://invisiblethingslab.com
|
|||
|
|
|||
|
|
|||
|
|
|||
|
… just like in the case of Linux AppVMs. Of course all those operations
|
|||
|
are governed by central policy engine running in Dom0 – if the policy
|
|||
|
doesn’t contain explicit rules for the source and/or target AppVM, the
|
|||
|
user will be asked whether to allow or deny the operation.
|
|||
|
|
|||
|
Inter-VM file copy and clipboard works for Windows AppVMs the same way
|
|||
|
as for Linux AppVM (except that we don’t provide a command line wrapper,
|
|||
|
``qvm-copy-to-vm`` in Windows VMs) – to copy files from Windows AppVMs
|
|||
|
just right-click on the file in Explorer, and choose: Send To-> Other
|
|||
|
AppVM.
|
|||
|
|
|||
|
To simulate CTRL-ALT-DELETE in the HVM (SAS, Secure Attention Sequence),
|
|||
|
press Ctrl-Alt-Home while having any window of this VM in the
|
|||
|
foreground.
|
|||
|
|
|||
|
|windows-seamless-7.png|
|
|||
|
|
|||
|
Changing between seamless and full desktop mode
|
|||
|
-----------------------------------------------
|
|||
|
|
|||
|
|
|||
|
You can switch between seamless and “full desktop” mode for Windows HVMs
|
|||
|
in their settings in Qubes Manager. The latter is the default.
|
|||
|
|
|||
|
Using template-based Windows AppVMs
|
|||
|
-----------------------------------
|
|||
|
|
|||
|
|
|||
|
Qubes allows HVM VMs to share a common root filesystem from a select
|
|||
|
Template VM, just as for Linux AppVMs. This mode is not limited to
|
|||
|
Windows AppVMs, and can be used for any HVM (e.g. FreeBSD running in a
|
|||
|
HVM).
|
|||
|
|
|||
|
In order to create a HVM TemplateVM one can use the following command,
|
|||
|
suitably adapted:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-create --class TemplateVM win-template --property virt_mode=HVM --property kernel='' -l green
|
|||
|
|
|||
|
|
|||
|
|
|||
|
… , set memory as appropriate, and install Windows OS (or other OS) into
|
|||
|
this template the same way as you would install it into a normal HVM –
|
|||
|
please see instructions on :doc:`this page </user/advanced-topics/standalones-and-hvms>`.
|
|||
|
|
|||
|
If you use this Template as it is, then any HVMs that use it will
|
|||
|
effectively be DisposableVMs - the User directory will be wiped when the
|
|||
|
HVN is closed down.
|
|||
|
|
|||
|
If you want to retain the User directory between reboots, then it would
|
|||
|
make sense to store the ``C:\Users`` directory on the 2nd disk which is
|
|||
|
automatically exposed by Qubes to all HVMs. This 2nd disk is backed by
|
|||
|
the ``private.img`` file in the AppVMs’ and is not reset upon AppVMs
|
|||
|
reboot, so the user’s directories and profiles would survive the AppVMs
|
|||
|
reboot, unlike the “root” filesystem which will be reverted to the
|
|||
|
“golden image” from the Template VM automatically. To facilitate such
|
|||
|
separation of user profiles, Qubes Windows Tools provide an option to
|
|||
|
automatically move ``C:\Users`` directory to the 2nd disk backed by
|
|||
|
``private.img``. It’s a selectable feature of the installer, enabled by
|
|||
|
default, but working only for Windows 7. If that feature is selected
|
|||
|
during installation, completion of the process requires two reboots:
|
|||
|
|
|||
|
- The private disk is initialized and formatted on the first reboot
|
|||
|
after tools installation. It can’t be done **during** the
|
|||
|
installation because Xen mass storage drivers are not yet active.
|
|||
|
|
|||
|
- User profiles are moved to the private disk on the next reboot after
|
|||
|
the private disk is initialized. Reboot is required because the
|
|||
|
“mover utility” runs very early in the boot process so OS can’t yet
|
|||
|
lock any files in there. This can take some time depending on the
|
|||
|
profiles’ size and because the GUI agent is not yet active dom0/Qubes
|
|||
|
Manager may complain that the AppVM failed to boot. That’s a false
|
|||
|
alarm (you can increase AppVM’s default boot timeout using
|
|||
|
``qvm-prefs``), the VM should appear “green” in Qubes Manager shortly
|
|||
|
after.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
For Windows 10, the user directories have to be moved manually, because
|
|||
|
the automatic transfer during QWT installation is bound to crash due to
|
|||
|
undocumented new features of NTFS, and a system having the directory
|
|||
|
``users``on another disk than ``C:`` will break on Windows update. So
|
|||
|
the following steps should be taken:
|
|||
|
|
|||
|
- The Windows disk manager may be used to add the private volume as
|
|||
|
disk ``D:``, and you may, using the documented Windows operations,
|
|||
|
move the user directories ``C:\users\<username>\Documents`` to this
|
|||
|
new disk, allowing depending AppVMs to have their own private
|
|||
|
volumes. Moving the hidden application directories ``AppData``,
|
|||
|
however, is likely to invite trouble - the same trouble that occurs
|
|||
|
if, during QWT installation, the option ``Move user profiles`` is
|
|||
|
selected.
|
|||
|
|
|||
|
- Configuration data like those stored in directories like ``AppData``
|
|||
|
still remain in the TemplateVM, such that their changes are lost each
|
|||
|
time the AppVM shuts down. In order to make permanent changes to
|
|||
|
these configuration data, they have to be changed in the TemplateVM,
|
|||
|
meaning that applications have to be started there, which violates
|
|||
|
and perhaps even endangers the security of the TemplateVM. Such
|
|||
|
changes should be done only if absolutely necessary and with great
|
|||
|
care. It is a good idea to test them first in a cloned TemplateVM
|
|||
|
before applying them in the production VM.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
It also makes sense to disable Automatic Updates for all the
|
|||
|
template-based AppVMs – of course this should be done in the Template
|
|||
|
VM, not in individual AppVMs, because the system-wide settings are
|
|||
|
stored in the root filesystem (which holds the system-wide registry
|
|||
|
hives). Then, periodically check for updates in the Template VM and the
|
|||
|
changes will be carried over to any child AppVMs.
|
|||
|
|
|||
|
Once the template has been created and installed it is easy to create
|
|||
|
AppVMs based on it:
|
|||
|
|
|||
|
.. code:: bash
|
|||
|
|
|||
|
qvm-create --property virt_mode=hvm <new windows appvm name> --template <name of template vm> --label <label color>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Components
|
|||
|
----------
|
|||
|
|
|||
|
|
|||
|
Qubes Windows Tools (QWT for short) contain several components than can
|
|||
|
be enabled or disabled during installation:
|
|||
|
|
|||
|
- Shared components (required): common libraries used by QWT
|
|||
|
components.
|
|||
|
|
|||
|
- Xen PV drivers: drivers for the virtual hardware exposed by Xen.
|
|||
|
|
|||
|
- Base Xen PV Drivers (required): paravirtual bus and interface
|
|||
|
drivers.
|
|||
|
|
|||
|
- Xen PV Disk Drivers: paravirtual storage drivers.
|
|||
|
|
|||
|
- Xen PV Network Drivers: paravirtual network drivers.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- Qubes Core Agent: qrexec agent and services. Needed for proper
|
|||
|
integration with Qubes.
|
|||
|
|
|||
|
- Move user profiles: user profile directory (``c:\users``) is moved
|
|||
|
to VM’s private disk backed by private.img file in dom0 (useful
|
|||
|
mainly for HVM templates).
|
|||
|
|
|||
|
|
|||
|
|
|||
|
- Qubes GUI Agent: video driver and gui agent that enable seamless
|
|||
|
showing of Windows applications on the secure Qubes desktop.
|
|||
|
|
|||
|
- Disable UAC: User Account Control may interfere with QWT and doesn’t
|
|||
|
really provide any additional benefits in Qubes environment.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
**In testing VMs only** it’s probably a good idea to install a VNC
|
|||
|
server before installing QWT. If something goes very wrong with the
|
|||
|
Qubes gui agent, a VNC server should still allow access to the OS.
|
|||
|
|
|||
|
**NOTE**: Xen PV disk drivers are not installed by default. This is
|
|||
|
because they seem to cause problems (BSOD = Blue Screen Of Death). We’re
|
|||
|
working with upstream devs to fix this. *However*, the BSOD seems to
|
|||
|
only occur after the first boot and everything works fine after that.
|
|||
|
**Enable the drivers at your own risk** of course, but we welcome
|
|||
|
reports of success/failure in any case (backup your VM first!). With
|
|||
|
disk PV drivers absent ``qvm-block`` will not work for the VM, but you
|
|||
|
can still use standard Qubes inter-VM file copying mechanisms.
|
|||
|
|
|||
|
Xen PV driver components may display a message box asking for reboot
|
|||
|
during installation – it’s safe to ignore them and defer the reboot.
|
|||
|
|
|||
|
Installation logs
|
|||
|
-----------------
|
|||
|
|
|||
|
|
|||
|
If the install process fails or something goes wrong during it, include
|
|||
|
the installation logs in your bug report. They are created in the
|
|||
|
``%TEMP%`` directory, by default ``<user profile>\AppData\Local\Temp``.
|
|||
|
There are two text files, one small and one big, with names starting
|
|||
|
with ``Qubes_Windows_Tools``.
|
|||
|
|
|||
|
Uninstalling QWT is supported from version 3.2.1. Uninstalling previous
|
|||
|
versions is **not recommended**. After uninstalling you need to manually
|
|||
|
enable the DHCP Client Windows service, or set IP settings yourself to
|
|||
|
restore network access.
|
|||
|
|
|||
|
Configuration
|
|||
|
-------------
|
|||
|
|
|||
|
|
|||
|
Starting from version 2.2.* various aspects of Qubes Windows Tools can
|
|||
|
be configured through registry. Main configuration key is located in
|
|||
|
``HKEY_LOCAL_MACHINE\SOFTWARE\Invisible Things Lab\Qubes Tools``.
|
|||
|
Configuration values set on this level are global to all QWT components.
|
|||
|
It’s possible to override global values with component-specific keys,
|
|||
|
this is useful mainly for setting log verbosity for troubleshooting.
|
|||
|
Possible configuration values are:
|
|||
|
|
|||
|
.. list-table::
|
|||
|
:widths: 11 11 11 11
|
|||
|
:align: center
|
|||
|
:header-rows: 1
|
|||
|
|
|||
|
* - Name
|
|||
|
- Type
|
|||
|
- Description
|
|||
|
- Default value
|
|||
|
* - LogDir
|
|||
|
- String
|
|||
|
- Directory where logs are created
|
|||
|
- c:\Program Files\Invisible Things Lab\Qubes Tools\log
|
|||
|
* - LogLevel
|
|||
|
- DWORD
|
|||
|
- Log verbosity (see below)
|
|||
|
- 2 (INFO)
|
|||
|
* - Log Retention
|
|||
|
- DWORD
|
|||
|
- Maximum age of log files (in seconds), older logs are automatically deleted
|
|||
|
- 604800 (7 days)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Possible log levels:
|
|||
|
|
|||
|
.. list-table::
|
|||
|
:widths: 7 7 7
|
|||
|
:align: center
|
|||
|
:header-rows: 1
|
|||
|
|
|||
|
* - Le vel
|
|||
|
- Type
|
|||
|
- Description
|
|||
|
* - 1
|
|||
|
- Error
|
|||
|
- Serious errors that most likely cause irrecoverable failures
|
|||
|
* - 2
|
|||
|
- Warning
|
|||
|
- Unexpected but non-fatal events
|
|||
|
* - 3
|
|||
|
- Info
|
|||
|
- Useful information (default)
|
|||
|
* - 4
|
|||
|
- Debug
|
|||
|
- Internal state dumps for troubleshooting
|
|||
|
* - 5
|
|||
|
- Verbose
|
|||
|
- Trace most function calls
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Debug and Verbose levels can generate large volume of logs and are
|
|||
|
intended for development/troubleshooting only.
|
|||
|
|
|||
|
To override global settings for a specific component, create a new key
|
|||
|
under the root key mentioned above and name it as the executable name,
|
|||
|
without ``.exe`` extension. For example, to change qrexec-agent’s log
|
|||
|
level to Debug, set it like this:
|
|||
|
|
|||
|
|qtw-log-level.png|
|
|||
|
|
|||
|
Component-specific settings currently available:
|
|||
|
|
|||
|
.. list-table::
|
|||
|
:widths: 13 13 13 13 13
|
|||
|
:align: center
|
|||
|
:header-rows: 1
|
|||
|
|
|||
|
* - /home/user/qubes-doc-rst2/user/templates/windows/qubes-windows-tools-4-0.rst:569: (INFO/1) Unexpected possible title overline or transition. Treating it as ordinary text because it's so short. ** Component**
|
|||
|
- /home/user/qubes-doc-rst2/user/templates/windows/qubes-windows-tools-4-0.rst:569: (INFO/1) Unexpected possible title overline or transition. Treating it as ordinary text because it's so short. ** Setting**
|
|||
|
- /home/user/qubes-doc-rst2/user/templates/windows/qubes-windows-tools-4-0.rst:569: (INFO/1) Unexpected possible title overline or transition. Treating it as ordinary text because it's so short. ** Type**
|
|||
|
- /home/user/qubes-doc-rst2/user/templates/windows/qubes-windows-tools-4-0.rst:569: (INFO/1) Unexpected possible title overline or transition. Treating it as ordinary text because it's so short. ** Description**
|
|||
|
- Default value
|
|||
|
* - qga
|
|||
|
- Disa bleCursor
|
|||
|
- DWORD
|
|||
|
- Disable cursor in the VM. Useful for integration with Qubes desktop so you don’t see two cursors. Can be disabled if you plan to use the VM through a remote desktop connection of some sort. Needs gui agent restart to apply change (locking OS/logoff should be enough since qga is restarted on desktop change).
|
|||
|
- 1
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Troubleshooting
|
|||
|
---------------
|
|||
|
|
|||
|
|
|||
|
If the VM is inaccessible (doesn’t respond to qrexec commands, gui is
|
|||
|
not functioning), try to boot it in safe mode:
|
|||
|
|
|||
|
- ``qvm-start --debug vmname``
|
|||
|
|
|||
|
- mash F8 on the boot screen to enable boot options and select Safe
|
|||
|
Mode (optionally with networking)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Safe Mode should at least give you access to logs (see above).
|
|||
|
|
|||
|
**Please include appropriate logs when reporting bugs/problems.**
|
|||
|
Starting from version 2.4.2 logs contain QWT version, but if you’re
|
|||
|
using an earlier version be sure to mention which one. If the OS crashes
|
|||
|
(BSOD) please include the BSOD code and parameters in your bug report.
|
|||
|
The BSOD screen should be visible if you run the VM in debug mode
|
|||
|
(``qvm-start --debug vmname``). If it’s not visible or the VM reboots
|
|||
|
automatically, try to start Windows in safe mode (see above) and 1)
|
|||
|
disable automatic restart on BSOD (Control Panel - System - Advanced
|
|||
|
system settings - Advanced - Startup and recovery), 2) check the system
|
|||
|
event log for BSOD events. If you can, send the ``memory.dmp`` dump file
|
|||
|
from ``c:\Windows``. Xen logs (/var/log/xen/console/guest-*) are also
|
|||
|
useful as they contain pvdrivers diagnostic output.
|
|||
|
|
|||
|
If a specific component is malfunctioning, you can increase its log
|
|||
|
verbosity as explained above to get more troubleshooting information.
|
|||
|
Below is a list of components:
|
|||
|
|
|||
|
.. list-table::
|
|||
|
:widths: 40 40
|
|||
|
:align: center
|
|||
|
:header-rows: 1
|
|||
|
|
|||
|
* - qrexec-agent
|
|||
|
- Responsible for most communication with Qubes (dom0
|
|||
|
* - and other domains), secure clipboard, file copying, qrexec services.
|
|||
|
* - qrexec-wrapper
|
|||
|
- Helper executable that’s responsible for launching
|
|||
|
* - qrexec services, handling their I/O and vchan communication.
|
|||
|
* - qrexec-client-vm
|
|||
|
- Used for communications by the qrexec protocol.
|
|||
|
* - qga
|
|||
|
- Gui agent.
|
|||
|
-
|
|||
|
- QgaWatchdog
|
|||
|
- Service that monitors session/desktop
|
|||
|
* - changes (logon/logoff/locking/UAC…) and simulates SAS sequence
|
|||
|
* - (ctrl-alt-del).
|
|||
|
-
|
|||
|
- qubesdb-daemon
|
|||
|
- Service for accessing Qubes
|
|||
|
* - configuration database.
|
|||
|
-
|
|||
|
- network-setup
|
|||
|
- Service that sets up network
|
|||
|
* - parameters according to VM’s configuration.
|
|||
|
-
|
|||
|
- prepare-volume
|
|||
|
- Utility
|
|||
|
* - that initializes and formats the disk backed by private.img file.
|
|||
|
* - It’s registered to run on next system boot during QWT setup, if that
|
|||
|
* - feature is selected (it can’t run during the setup because Xen block
|
|||
|
* - device drivers are not yet active). It in turn registers move-profiles
|
|||
|
* - (see below) to run at early boot.
|
|||
|
-
|
|||
|
- relocate-dir
|
|||
|
- Utility that moves
|
|||
|
* - user profiles directory to the private disk. It’s registered as an early
|
|||
|
* - boot native executable (similar to chkdsk) so it can run before any
|
|||
|
* - profile files are opened by some other process. Its log is in a fixed
|
|||
|
* - location: c:\move-profiles.log (it can’t use our common logger
|
|||
|
* - library so none of the log settings apply).
|
|||
|
|
|||
|
|
|||
|
Updates
|
|||
|
-------
|
|||
|
|
|||
|
|
|||
|
When we publish new QWT version, it’s usually pushed to the
|
|||
|
``current-testing`` or ``unstable`` repository first. To use versions
|
|||
|
from current-testing, run this in dom0:
|
|||
|
|
|||
|
``qubes-dom0-update --enablerepo=qubes-dom0-current-testing qubes-windows-tools``
|
|||
|
|
|||
|
That command will download a new QWT .iso from the testing repository.
|
|||
|
It goes without saying that you should **backup your VMs** before
|
|||
|
installing anything from testing repos.
|
|||
|
|
|||
|
.. |windows-seamless-4.png| image:: /attachment/doc/windows-seamless-4.png
|
|||
|
|
|||
|
|
|||
|
.. |windows-seamless-1.png| image:: /attachment/doc/windows-seamless-1.png
|
|||
|
|
|||
|
|
|||
|
.. |windows-seamless-7.png| image:: /attachment/doc/windows-seamless-7.png
|
|||
|
|
|||
|
|
|||
|
.. |qtw-log-level.png| image:: /attachment/doc/qtw-log-level.png
|
|||
|
|