Qubes OS First Steps
A first few steps on Qubes OS based on my setup. You might find something useful here too.
Please note that I am not an expert user, and the steps listed here may or may not compromise your security. Always consult the reference manual (relevant sections linked below) for further reading.
4k Display Setup
Dom0
Start menu -> System Tools -> Settings Manager Appearance -> Fonts
Set Custom DPI setting
to the desired value. In my case,
192 (twice the original of 96.) Press enter to confirm.
In my case, the resulting desktop looks messy. Log out and back in to address this. Xfce does not seem to handle DPI changes on the fly very well.
DomUs
The following changes are applied directly to template VMs so that they can be inherited by all derived VMs.
VMs without gnome settings daemon
Add/modify the following setting with the appropriate DPI value
(e.g. 192
) in each of the template VM’s Xresource file
(/etc/X11/Xresources
for Fedora,
/etc/X11/Xresources/x11-common
for Debian and Whonix):
Xft.dpi: 192
VMs with gnome settings daemon
Query the default scaling values:
gsettings get org.gnome.desktop.interface scaling-factor
gsettings get org.gnome.desktop.interface text-scaling-factor
Experiment with different values for these settings. On my setup, I
just double both (note that scaling-factor
must be an
integer):
gsettings set org.gnome.desktop.interface scaling-factor 2
gsettings set org.gnome.desktop.interface text-scaling-factor 2.0
To persist these settings, open
/etc/dconf/db/local.d/dpi
:
[org/gnome/desktop/interface]
scaling-factor=uint32 2
text-scaling-factor=2.0
Applying changes
Finally, to apply the changes made to the template VMs so that the
derived VMs can pick them up, I stopped the derived VMs (say,
personal
) as well as the template (fedora-32
),
then restarted the derived VM.
Attaching LUKS-encrypted USB devices
In the usbVM (or dom0 if you don’t have a usbVM, although exposing the dom0 to USB devices is not as secure, decrypt the device:
sudo cryptsetup open /dev/xvdi myusb
The name myusb
is an arbitrary name to map the device
as. This is used in the close
command below.
As soon as the device is decrypted, you should get a notification on
the dom0, and the unencrypted storage device should show up under the
Qubes Devices
widget. Use the widget to attach the storage
device to the desired target VM.
When you are done, detach the storage device from the target VM using
the Qubes Devices
widget. Finally, close the device by
running cryptsetup
again on the usbVM (or dom0):
sudo cryptsetup close myusb
UsbVM vs dom0
Handling USB devices from a usbVM is a better option than exposing the dom0 directly to those devices. A malicious USB device can compromise the dom0 and make it Game Over.
If you had a USB keyboard plugged in during the Qubes OS installation, creation of a USB qube during installation is disabled. If you can’t trust your USB devices, creating one such Qube is recommended (careful not to lock yourself out your keyboard.)
Further reading:
USB Qubes Device Handling Security USB Devices Block Devices
Getting the Librem Key to work
At this point, it doesn’t seem like you can get away without a USB qube. So we need to set that up first.
Create a USB qube
Create a USB qube:
sudo qubesctl state.sls qvm.sys-usb
If you have a USB keyboard, give yourself access to the keyboard during login:
sudo qubesctl state.sls qvm.usb-keyboard
NOTE: Failure to run the above command in a USB keyboard setup will lock you out of the system!
Finally, start the sys-usb
Qube from the
Qube Manager
. This is only required during the session in
which you run the above commands; subsequent boots will start the
sys-usb
Qube automatically.
Note that you will temporarily lose access to USB devices while
sys-usb
is booting.
If you have the Librem Key plugged into the device at this point, you
should see it available under the Qubes Devices
widget.
For more details, see USB Qubes.
Install required software
I will be exposing my Librem Key to my vault
Qube, so we
need to give that access to the device.
The vault
Qube in my installation is based on the
fedora-32
template. Open a terminal on the template and run
(Reference):
sudo dnf install pcsc-tools opensc pcsc-lite
Then shut down the template to apply the changes. Also shut down the
vault
Qube if you had it running at this point. You must
shut down the vault
and the template it is based
on for the changes to take effect.
Try it out
Boot the vault
Qube and open a terminal. Use the
Qubes Devices
widget to attach the Librem Key to the
vault
Qube. On the terminal, run the following command to
confirm the card is detected:
gpg --card-status