Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion developer/building/qubes-builder.rst
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ You can also modify sources somehow if you wish. Here are some basic steps:



- You can also set GIT_PREFIX=“marmarek/qubes-” to use marmarek’s repo instead of “mainstream” - it contains newer (but less tested) versions
- You can also set GIT_PREFIX=“marmarek/qubes-” to use marmarek’s repo instead of “mainstream” - it contains newer (but less tested) versions



Expand Down
1 change: 1 addition & 0 deletions developer/code/code-signing.rst
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ If you’re submitting a patch via GitHub (or a similar Git server), please sign


3. (Optional) Create signed tags. Signed commits are totally sufficient to contribute to Qubes OS. However, if you have commits which are not signed and you do not want to change them, you can create a signed tag for the commit and push it before the check.

This is useful for example, if you have a commit back in the git history which you like to sign now without rewriting the history.

.. code:: console
Expand Down
2 changes: 1 addition & 1 deletion developer/code/coding-style.rst
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ General typographic conventions

- **Maintain a decent amount of horizontal spacing**, e.g. add a space after ``if`` or before ``{`` in C, and similar in other languages. Whether and where to also use spaces within expressions, such as (x*2+5) vs. (x * 2 + 5) is left to the developer’s judgment. Do not put spaces immediately after or before the brackets in expressions, so avoid constructs like this: ``if ( condition )`` and use ones like this: ``if (condition)`` instead.

- **Use single new lines** (‘\n’ aka LF) in any non-Windows source code. On Windows, exceptionally, use the CRLF line endings (–). This will allow the source code to be easily viewable in various Windows-based programs.
- **Use single new lines** (‘\\n’ aka LF) in any non-Windows source code. On Windows, exceptionally, use the CRLF line endings (–). This will allow the source code to be easily viewable in various Windows-based programs.

- **Use descriptive names for variables and functions**! Really, at a time when most editors have auto-completion features, there is no excuse for using short variable names.

Expand Down
1 change: 1 addition & 0 deletions developer/code/source-code.rst
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ How to Send Patches
If you want to :ref:`contribute code <introduction/contributing:contributing code>` to the project, there are two ways. Whichever method you choose, you must :doc:`sign your code </developer/code/code-signing>` before it can be accepted.

- **Preferred**: Use GitHub’s `fork & pull requests <https://guides.github.com/activities/forking/>`__.

Opening a pull request on GitHub greatly eases the code review and tracking process. In addition, especially for bigger changes, it’s a good idea to send a message to the :ref:`qubes-devel mailing list <introduction/support:qubes-devel>` in order to notify people who do not receive GitHub notifications.

- Send a patch to the :ref:`qubes-devel mailing list <introduction/support:qubes-devel>` (``git format-patch``).
Expand Down
6 changes: 3 additions & 3 deletions developer/debugging/vm-interface.rst
Original file line number Diff line number Diff line change
Expand Up @@ -199,11 +199,11 @@ Services called by dom0 to provide some VM configuration:



- ``xdgicon:NAME`` - search for NAME in standard icons theme
- ``xdgicon:NAME`` - search for NAME in standard icons theme

- ``-`` - get icon data from stdin (the caller), can be prefixed with format name, for example ``png:-``
- ``-`` - get icon data from stdin (the caller), can be prefixed with format name, for example ``png:-``

- file name
- file name



Expand Down
8 changes: 4 additions & 4 deletions developer/general/usability-ux.rst
Original file line number Diff line number Diff line change
Expand Up @@ -225,13 +225,13 @@ There are many cases where a user wants to perform an action on more than one fi



- Click Folder One
- Click Folder One

- Click Folder Two
- Click Folder Two

- Click Folder Three
- Click Folder Three

- Click Folder Four
- Click Folder Four



Expand Down
1 change: 1 addition & 0 deletions developer/releases/4_0/release-notes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ Security Notes
- PV VMs migrated from 3.2 to 4.0-rc4 or later are automatically set to PVH mode in order to protect against Meltdown (see `QSB #37 <https://github.com/QubesOS/qubes-secpack/blob/master/QSBs/qsb-037-2018.txt>`__). However, PV VMs migrated from any earlier 4.0 release candidate (RC1, RC2, or RC3) are not automatically set to PVH mode. These must be set manually.

- The following steps may need to be applied in dom0 and Fedora 26 TemplateVMs in order to receive updates (see `#3737 <https://github.com/QubesOS/qubes-issues/issues/3737>`__).

Steps for dom0 updates:

1. Open the Qubes Menu by clicking on the “Q” icon in the top-left corner of the screen.
Expand Down
26 changes: 10 additions & 16 deletions developer/services/admin-api.rst
Original file line number Diff line number Diff line change
Expand Up @@ -152,11 +152,11 @@ it easy to set the policy using current mechanism.
- ``dom0``
- `-`
- `-`
- ``<property-name> <full-value-as-in-property.Get>``
- ``<property-name> <full-value-as-in-property.Get>\n``
- Get all the properties in one call. Each property is returned on a separate line and use the same value encoding as property.Get method, with an exception that newlines are encoded as literal ``\n`` and literal ``\`` are encoded as ``\\``.
* - ``admin.property.GetDefault``
- ``dom0``
- propety
- property
- `-`
- ``type={str|int|bool|vm|label|list} <value>``
- Type ``list`` is added in R4.1. Values are of type ``str`` and each entry is suffixed with newline character.
Expand Down Expand Up @@ -321,7 +321,7 @@ it easy to set the policy using current mechanism.
- `-`
- `-`
- ``<rule>\n``
- rules syntax as in :doc:`firewall interface </developer/debugging/vm-interface>` (Firewall Rules in 4x) with addition of ``expire=`` and ``comment=`` options; ``comment=`` (if present) must be the last option
- rules syntax as in :ref:`firewall interface <developer/debugging/vm-interface:firewall rules in 4.x>` with addition of ``expire=`` and ``comment=`` options; ``comment=`` (if present) must be the last option
* - ``admin.vm.firewall.Set``
- vm
- `-`
Expand All @@ -339,13 +339,7 @@ it easy to set the policy using current mechanism.
- device
- assignment-serialization
- `-`
- ``device`` is in form ``<backend-name>+<device-ident>`` optional options given in ``key=value`` format, separated with spaces; options can include ``persistent=True`` to "persistently" attach the device (default is temporary)
* - ``admin.vm.device.<class>.Detach``
- vm
- device
- `-`
- `-`
- ``device`` is in form ``<backend-name>+<device-ident>``
- ``device`` is in form ``<backend-name>+<device-ident>``; optional options given in ``key=value`` format, separated with spaces; options can include ``persistent=True`` to "persistently" attach the device (default is temporary)
* - ``admin.vm.device.<class>.Detach``
- vm
- device
Expand All @@ -355,9 +349,9 @@ it easy to set the policy using current mechanism.
* - ``admin.vm.device.<class>.Assign``
- vm
- device
- assignement-serialization
- assignment-serialization
- `-`
- ``device`` is in form ``<backend-name>+<device-ident>`` ``assignment-serialization`` is specified in the section Device Serialization.
- ``device`` is in form ``<backend-name>+<device-ident>``; ``assignment-serialization`` is specified in the section Device Serialization.
Copy link
Contributor

@maiska maiska Aug 22, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually in the markdown version there is no ';' but a new line. I think we shoud leave it with the markdown version. Would you be so nice to add newlines to such cells where applicable? (I can also do it afterwards.
I think that ';' as a character may be misleading, though not likely. Thank you for the review of this important doc!!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done. You're welcome!

* - ``admin.vm.device.<class>.Unassign``
- vm
- device
Expand All @@ -371,7 +365,7 @@ it easy to set the policy using current mechanism.
- `-`
- ``device`` is in form ``<backend-name>+<device-ident>``
* - ``admin.vm.deviceclass.List``
- `dom0`
- ``dom0``
- `-`
- `-`
- ``<deviceclass>\n``
Expand All @@ -387,7 +381,7 @@ it easy to set the policy using current mechanism.
- device-ident
- `-`
- ``<device-ident> <assignment-serialization>\n``
- optional service argument may be used to get info about a single device, ``assignement-serialization`` is specified in the section Device Serialization.
- optional service argument may be used to get info about a single device, ``assignment-serialization`` is specified in the section Device Serialization.
* - ``admin.vm.device.<class>.Attached``
- vm
- device-ident
Expand All @@ -410,7 +404,7 @@ it easy to set the policy using current mechanism.
- ``dom0``
- pool
- `-`
- ``<property>=<value>``
- ``<property>=<value>\n``
-
* - ``admin.pool.Add``
- ``dom0``
Expand Down Expand Up @@ -566,7 +560,7 @@ it easy to set the policy using current mechanism.
- vm
- `-`
- `-`
- ``<state-property>=<value>``
- ``<state-property>=<value>\n``
- state properties: ``power_state``, ``mem``, ``mem_static_max``, ``cputime``
* - ``admin.vm.Start``
- vm
Expand Down
5 changes: 4 additions & 1 deletion developer/services/qrexec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,10 @@ Answering an RPC call
^^^^^^^^^^^^^^^^^^^^^


In other for a RPC call to be answered in the target VM, a file in either of the following locations must exist, containing the file name of the program that will be invoked, or being that program itself – in which case it must have executable permission set (``chmod +x``): - ``/etc/qubes-rpc/RPC_ACTION_NAME`` when you make it in the template qube; - ``/usr/local/etc/qubes-rpc/RPC_ACTION_NAME`` for making it only in an app qube.
In other for a RPC call to be answered in the target VM, a file in either of the following locations must exist, containing the file name of the program that will be invoked, or being that program itself – in which case it must have executable permission set (``chmod +x``):

- ``/etc/qubes-rpc/RPC_ACTION_NAME`` when you make it in the template qube;
- ``/usr/local/etc/qubes-rpc/RPC_ACTION_NAME`` for making it only in an app qube.

The source VM name can then be accessed in the server process via ``QREXEC_REMOTE_DOMAIN`` environment variable. (Note the source VM has *no* control over the name provided in this variable–the name of the VM is provided by dom0, and so is trusted.)

Expand Down
4 changes: 2 additions & 2 deletions user/hardware/certified-hardware/certified-hardware.rst
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ The current Qubes-certified models are listed below in reverse chronological ord
- :doc:`Certification details </user/hardware/certified-hardware/nitropad-v56/>`
* - `NovaCustom <https://novacustom.com/>`__
- `V56 Series <https://novacustom.com/product/v56-series/>`__
- :doc:`Certification details </user/hardware/certified-hardware/novacustom-v54-series/>`
- :doc:`Certification details </user/hardware/certified-hardware/novacustom-v56-series/>`
* - `Nitrokey <https://www.nitrokey.com/>`__
- `NitroPC Pro 2 <https://shop.nitrokey.com/shop/nitropc-pro-2-523>`__
- :doc:`Certification details </user/hardware/certified-hardware/nitropc-pro-2/>`
Expand All @@ -55,7 +55,7 @@ The current Qubes-certified models are listed below in reverse chronological ord
- `NitroPad T430 <https://shop.nitrokey.com/shop/nitropad-t430-119>`__
- :doc:`Certification details </user/hardware/certified-hardware/nitropad-t430/>`
* - `Nitrokey <https://www.nitrokey.com/>`__
- `NitroPad X230 <https://shop.nitrokey.com/shop/product/nitropad-t430-119>`__
- `NitroPad X230 <https://shop.nitrokey.com/shop/product/nitropad-x230-67>`__
- :doc:`Certification details </user/hardware/certified-hardware/nitropad-x230/>`
* - `Insurgo <https://insurgo.ca/>`__
- `PrivacyBeast X230 <https://insurgo.ca/produit/qubesos-certified-privacybeast_x230-reasonably-secured-laptop/>`__
Expand Down
3 changes: 2 additions & 1 deletion user/templates/templates.rst
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,7 @@ When you install a new template or :ref:`upgrade <user/how-to-guides/how-to-upda
- If your only keyboard and mouse are *not* connected through a :doc:`USB qube </user/advanced-topics/usb-qubes>`, or that USB qube is *not* a disposable, then shut down all disposables. In the App Menu, go to Qubes Tools, then click on Qube Manager. In the Qube Manager, find your disposable template(s). (By default, they end in ``-dvm``.) Right click, hover over Template, then click on the new template. Repeat for each disposable template.

- If your only keyboard or mouse *are* connected through a USB qube, and that USB qube *is* a disposable, then you will have to enter a special command that shuts down all of your qubes, switches the USB qube’s disposable template to the new template, then starts the USB qube again. In order to avoid being locked out of your system, you must be very careful to enter this command without typos and with the correct substitutions.

In the App Menu, click on Terminal Emulator. Type the command below, substituting ``<SYS_USB_DISPOSABLE_TEMPLATE>`` with the name of the disposable template on which ``sys-usb`` is based, ``<NEW_TEMPLATE>`` with the name of the new template, and ``<USB_QUBE>`` with the name of your USB qube. Other than these substitutions, make sure to enter the command exactly as written.

.. code:: console
Expand Down Expand Up @@ -249,7 +250,7 @@ Once an app qube has been created, any changes in its ``/home``, ``/usr/local``,
* - :ref:`template <user/reference/glossary:template>`
- N/A (templates cannot be based on templates)
- everything
* - :ref:`app qubes <user/reference/glossary:app qube>`:superscript:`3`
* - :ref:`app qube <user/reference/glossary:app qube>`:superscript:`3`
- ``/etc/skel`` to ``/home``; ``/usr/local.orig`` to ``/usr/local``
- ``/rw`` (includes ``/home``, ``/usr/local``, and ``bind-dirs``)
* - :ref:`disposable <user/reference/glossary:disposable>`
Expand Down
6 changes: 3 additions & 3 deletions user/templates/windows/qubes-windows-tools-4-0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -507,10 +507,10 @@ If a specific component is malfunctioning, you can increase its log verbosity as
* - 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.
- 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).

- 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
Expand Down
6 changes: 3 additions & 3 deletions user/templates/windows/qubes-windows-tools-4-1.rst
Original file line number Diff line number Diff line change
Expand Up @@ -536,10 +536,10 @@ If a specific component is malfunctioning, you can increase its log verbosity as
* - 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.
- 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).

- 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).


If there are network-related issues, the qube doesn’t resolve DNS and has trouble accessing the Internet, this might be an issue with the PV Network Drivers.
Expand Down
3 changes: 3 additions & 0 deletions user/templates/windows/windows-qubes-4-0.rst
Original file line number Diff line number Diff line change
Expand Up @@ -100,8 +100,11 @@ Installation procedure:
- Install on first disk.

- Windows license may be read from flash via root in dom0:

``strings < /sys/firmware/acpi/tables/MSDM``

Alternatively, you can also try a Windows 7 license key (as of 2018/11 they are still accepted for a free upgrade).

I first installed Windows and all updates, then entered the license key.


Expand Down
38 changes: 36 additions & 2 deletions user/troubleshooting/uefi-troubleshooting.rst
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,24 @@ Or if you have already rebooted after the first stage install and have encounter

2. Press ‘3’ to go to the shell

3. Find and mount the EFI system partition. (replace ``/dev/sda`` with your disk name. If unsure, use the ``lsblk`` command to display a list of disks): ``fdisk -l /dev/sda | grep EFI`` The output should look like this: ``/dev/sda1 2048 1230847 1228800 600M EFI System`` Then mount it: ``mkdir -p /mnt/sysimage/boot/efi mount /dev/sda1 /mnt/sysimage/boot/efi``
3. Find and mount the EFI system partition. (replace ``/dev/sda`` with your disk name. If unsure, use the ``lsblk`` command to display a list of disks):

.. code:: console

fdisk -l /dev/sda | grep EFI

The output should look like this:

.. code:: output

/dev/sda1 2048 1230847 1228800 600M EFI System

Then mount it:

.. code:: console

mkdir -p /mnt/sysimage/boot/efi
mount /dev/sda1 /mnt/sysimage/boot/efi

4. Execute:

Expand All @@ -107,7 +124,24 @@ Some firmware will not recognize the default Qubes EFI configuration. As such, i

2. Press ‘3’ to go to the shell

3. Find and mount the EFI system partition. (replace ``/dev/sda`` with your disk name. If unsure, use the ``lsblk`` command to display a list of disks): ``fdisk -l /dev/sda | grep EFI`` The output should look like this: ``/dev/sda1 2048 1230847 1228800 600M EFI System`` Then mount it: ``mkdir -p /mnt/sysimage/boot/efi mount /dev/sda1 /mnt/sysimage/boot/efi``
3. Find and mount the EFI system partition. (replace ``/dev/sda`` with your disk name. If unsure, use the ``lsblk`` command to display a list of disks):

.. code:: console

fdisk -l /dev/sda | grep EFI

The output should look like this:

.. code:: output

/dev/sda1 2048 1230847 1228800 600M EFI System

Then mount it:

.. code:: console

mkdir -p /mnt/sysimage/boot/efi
mount /dev/sda1 /mnt/sysimage/boot/efi

4. Copy ``grubx64.efi`` to the fallback path:

Expand Down