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.4+ or QOS 2.1 work environment (sourced qnxsdp-env.sh).
To configure a build for a hypervisor host, you must:
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:
The variables specified in the configure.mk are used only when you run make for your build.
Therefore, if you use environment variables in any instructions (e.g., -d $BOARD_SPECIFIC_BSP_LOCATION), you must specify these environment variables in the command line, even if you will use the default values specifed in the configure.mk file.
Remember:
If you are working in the HHBSP framework, the only variable (other than those you set when you set your QNX SDP 7.0.4+ 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 | Notes |
---|---|---|
Intel Gordon Ridge MRB | 0 | QNX Hypervisor 2.0 only (deprecated) |
Renesas R-Car H3 | 1 | |
Intel Broadwell NUC 5i5 | 2 | QNX Hypervisor 2.0 only (deprecated) |
Any other compatible x86 board | 3 | |
Any other compatible ARM board | 4 | |
For future use | 5 | |
For future use | 6 | |
Intel Supermicro Denverton x86 | 7 |
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
Since you are not likely to change boards very often, it may be convenient to set this variable in the configure.mk configuration file.
You must specify the BSP type; there is no default value, either in the command line or the configuration file.
If you are using default locations in the HHBSP, you don't need to set any other variables.
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:
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 ~/qnx704/bsp/mybsp/, point to that location:
# export BOARD_SPECIFIC_BSP_LOCATION=~/qnx704/bsp/mybsp
Set to the relative or absolute path to the location of the hypervisor guest BSP for a QNX Neutrino OS 7.0.4+ guest. For example, if you have put the guest BSP into ~/qnx704/bsp/qnx7guestbsp/, point to that location:
# export QNX7_GUEST_BSP_LOCATION=~/qnx704/bsp/qnx7guestbsp
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.1 and aren't using the HHBSP:
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 with the hypervisor, you will need to make this change, and other changes to bring in other components needed by your hypervisor system (e.g., vdevs, smmuman).