This chapter explains how to build a QNX Hypervisor system, using the hypervisor host BSP (HHBSP) framework, or independently of the HHBSP.
To build a hypervisor system, you need to configure and build both the hypervisor host and its guests. These instructions assume that you know:
The instructions in this chapter describe three ways to build a QNX Hypervisor system:
QNX provides reference images for a number of supported hardware platforms. We recommend that you start with one of these reference images and become familiar with the QNX Hypervisor before you attempt to build your own system (see the Getting Started chapter).
The reference images include components (e.g., some of the vdevs) that you may not need in your finished system, as well as processes, network interfaces, etc. to support the guests and demonstrate key hypervisor system capabilities. When you are getting to know the hypervisor, you may decide to remove some or all of these. For example, you could build a minimalist system that would include only the hypervisor host with a one VM, one guest to run in the VM, and a few vdevs to allow you to do something in the guest, then use this system as a starting point for developing a more complex system.
You can copy the IFSs for the host and for the guests to the target separately, or you can build the entire system and copy a single image with the host and its guests (see Creating and transferring a hypervisor disk image in this chapter).
The instructions in this chapter assume that you have QNX SDP 7.0 or QNX OS for Safety 2.0 (QOS 2.0) installed on your development host.
If you use QNX SDP 7.0, you must use the standard variant of the virualization module (libmod-qvm.a).
If you use QOS 2.0, you must use the libmod_qvm-qos_capable.a variant of the virtualization module. You can download this module as a separate package from the QNX Software Center. It is made available as convenience to allow you to develop a safety-related hypervisor system, but adding it to a QOS 2.0 build compromises the QOS 2.0 safety certification.
QNX Hypervisor 2.0 is not a safety-certified product. It must not be used in a safety-related production system.
If you want to run the hypervisor in a safety-related system, you must obtain the appropriate QNX Hypervisor variant when it becomes available.
Your QNX Hypervisor package installation will update your QNX SDP 7.0 and the QNX Neutrino OS 7.0 components you'll use to build the hypervisor host, as well as add the hypervisor and other required modules, but you still need to start with QNX SDP 7.0 or QOS 2.0 installed on your development host.
If you are using QOS 2.0, when you read SDP 7.0 in the instructions, you can substitute QOS2.0, unless the instructions explicitly state otherwise.
This method for building a hypervisor uses:
The diagram below illustrates these first two methods, and how they use different BSPs: the board-agnostic HHBSP with a board-specific BSP to create an IFS for the hypervisor host, a QNX guest BSP to create an IFS for a QNX guest, and a Linux package to create an image for a Linux guest.
This method allows you to quickly modify and rebuild your QNX Hypervisor 2.0 reference images. It is probably the best method to use the first time you build a QNX Hypervisor system. It will build a system you can use to get familiar with the hypervisor and its capabilities.
For instructions on how to use this method to build a hypervisor, see The HHBSP and Building in the HHBSP.
This method for building a hypervisor also uses the HHBSP framework, but doesn't require you to place all the components (board-specific BSPs, guest BSPs) in their default locations. You modify the the configuration file (configure.mk) or use the command line to set environment variables so you can leave BSPs outside the HHBSP framework and simply point to them.
This is probably the best method to use for prototyping when you start developing a QNX Hypervisor project. You can have different BSPs in convenient locations, change them, and simply change environment variables to point to them when you want to try different configurations and components.
For instructions on how to use this method to build a hypervisor, see The HHBSP and Building in the HHBSP.
This method doesn't use the HHBSP framework. With this method, you start with the BSP for a board that meets the hardware requirements to support the QNX Hypervisor, edit the buildfile to include the hypervisor module, vdevs, and other components, and otherwise configure your build, then build the host in whatever location is convenient. You can then assemble the host and its guest into an image and transfer it to your target.
This is a good method to use when you are preparing a production system, as it gives you full control of the contents and configuration of your finished system. Of course, you can always refer to the HHBSP framework for guidance.
For instructions on how to use this method to build a hypervisor, see Using your own board-specific BSP for the host.