Configuring the hypervisor build

Before you can build your hypervisor system, you must specify your target board and the locations of your host and guest BSPs.

The instructions below are for setting variables needed specifically for building a hypervisor host. They assume that you have already sourced the environment variables for your QNX SDP 7.0 work environment (sourced qnxsdp-env.sh).

To configure a build for a hypervisor host, you must:

Setting the BOARD_* build variables

In its images/ directory, the HHBSP includes the configure.mk configuration file. You can use this file to specify values for the make variables used by your build. If you use the QNX Momentics IDE, you can open this file and modify it. You can also use the command line to set the variables.

If you are are using the command line, you can set environment variables with the same names as the variables in configure.mk. If you set an environment variable, its value persists and overrides the value for the corresponding make variable specified in configure.mk.

Note the following about using the BOARD_* variables:

Note:

Remember:

  • The values specified for the variables in the configure.mk configuration file are used only by the make process when it builds. They don't persist in your environment.
  • The values you specify for environment variables persist in your environment, and override the values specified in the configure.mk configuration file.

Specify the board

If you are working in the HHBSP framework, the only variable (other than those you set when you set your QNX SDP 7.0 work environment) is BOARD_SPECIFIC_BSP_TYPE. You can set this variable as a make variable in configure.mk, or as an environment variable via the command line. Set it to one of the following values:

Board BSP type
Intel Gordon Ridge MRB 0
Renesas R-Car H3 1
Intel Broadwell NUC 5i5 2
any other compatible x86 board 3
any other compatible ARM board 4

For example, if you are working with Renesas R-Car H3 board, you can edit the configuration file, or use the command line to set the BOARD_SPECIFIC_BSP_TYPE variable before you build, as follows:

# export BOARD_SPECIFIC_BSP_TYPE=1

The first three values are for the boards for the reference images. The default is 0 (zero), for the Intel Gordon Ridge MRB.

Since you are not likely to change boards very often, it may be convenient to set this variable in the configure.mk configuration file.

If you are using default locations in the HHBSP, you don't need to set any other variables.

Specify the component locations

If you aren't using the default locations in the HHBSP framework, you must set the following variables to point to the BSPs you need for your build:

BOARD_SPECIFIC_BSP_LOCATION

Set to the relative or absolute path to the location of your board-specific BSP. For example, if you have put your board-specific BSP into ~/qnx700/bsp/mybsp/, point to that location:

# export BOARD_SPECIFIC_BSP_LOCATION=~/qnx700/bsp/mybsp
The default location is ./images/host_bsp/.
QNX7_GUEST_BSP_LOCATION

Set to the relative or absolute path to the location of the hypervisor guest BSP for a QNX Neutrino OS 7.0 guest. For example, if you have put the guest BSP into ~/qnx700/bsp/qnx7guestbsp/, point to that location:

# export QNX7_GUEST_BSP_LOCATION=~/qnx700/bsp/qnx7guestbsp
The default location is ./guest_bsps/qnx700/.
QNX660_GUEST_BSP_LOCATION
Like QNX7_GUEST_BSP_LOCATION, but for a guest BSP for a QNX Neutrino OS 6.6.0 guest. The default is ./guest_bsps/qnx660/.
Note:
  • The relative paths in the examples above assume that you are in the directory with the configure.mk file.
  • The examples are for Linux or macOS development hosts. If you are working on a Windows development host, substitute an appropriate Windows path.

Include the appropriate virtualization module

If you are working in the HHBSP framework, the hypervisor build scripts will modify the buildfiles to include the virtualization module.

If you need to do this manually, because, for example, you are using QOS 2.0 and aren't using the HHBSP:

  1. Open the buildfile in the board-specific BSP's images/ directory (e.g., rcar_h3.build).
  2. Modify the file to include the libmod_qvm.a kernel module, by adding a [module=qvm] prefix to the buildfile line that includes procnto*. For example, change:

    LD_LIBRARY_PATH=/usr/lib:/lib:/lib/dll procnto-smp-instr

    to:

    [module=qvm] LD_LIBRARY_PATH=/usr/lib:/lib:/lib/dll procnto-smp-instr

If you aren't working in the HHBSP framework with BSPs provided for hypervisor reference images, you will need to make this change, and other changes to bring in other components needed by your hypervisor system (e.g., vdevs, smmuman).

The QOS 2.0-compatible libmod_qvm.a variant

If you are using QOS 2.0, you must include the libmod_qvm-qos_capable.a variant by adding [module=qvm-qos_capable] instead of [module=qvm].

DANGER

QNX Hypervisor 2.0 is not a safety-certified product. Adding libmod_qvm-qos_capable.a to a QOS 2.0 build compromises the QOS 2.0 safety certification.