要配置guest运行的 VM,您可以使用 qvm 配置文件来配置创建 VM 的 qvm 进程。
请记住,hypervisor 主机配置优先于 VM 配置。 如果 VM 配置尝试将分配给主机的资源分配给 VM,则组装 VM 的 qvm 进程将退出并出现错误(请参阅“Monitoring and Troubleshooting”一章中的“qvm 退出代码”)。
有关各个 VM 组件的描述和配置说明,请参阅VM Configuration Reference一章。 vdev 参考Virtual Device Reference。
About configuring VMs
虚拟化系统中的每个guest都需要一个可以运行的虚拟机 (VM)。 每个 VM 都是由 qvm 进程的实例创建的,qvm 进程是hypervisor 主机域进程。 要配置 VM,您需要配置创建它的 qvm 进程。 每个 qvm 流程实例都应该有自己的配置输入。此输入可以通过命令行或通过命令行输入和文件的组合呈现在一个或多个配置文件中(参考Starting VMs)。
guest运行的虚拟机必须与来guest相匹配:架构、主板特定信息、内存、CPU、设备等。 您可以将虚拟机配置视为构建或组装硬件平台。 不同之处在于,您无需组装物理内存卡、CPU 等,而是指定机器的虚拟组件,qvm 进程将根据您的规格创建和配置这些虚拟组件。 事物出现的规则与真实板子的情况相同。
- 不要安装两个尝试响应同一物理地址的东西。
- 您的虚拟机配置组装的环境必须是您将运行的软件(guest操作系统)准备处理的环境。
简而言之,将guest软件所需的所有内容放入虚拟机配置中,并将其放置在guest希望找到它的位置。
在 ARM 平台上,您有更多的灵活性,因为您的guest可以查询扁平化设备树 (FDT) 以获取 vGIC 寄存器位置等信息。
配置虚拟机时,请始终考虑:
- 您正在创建的虚拟机以及guest将如何在其中运行
- guest可能并不总是做正确的事
考虑不周的配置,尤其是 vCPU 配置,可能会产生严重的不良后果。 例如,如果您将虚拟机中的两个 vCPU 配置为共享同一物理 CPU(两个 vCPU 固定到同一核心),您的guest可能会看到意外行为:超时、延迟、自旋循环永不返回等。如果 两个vCPU具有不同的优先级; 优先级较低的 vCPU 可能永远没有机会运行。
qvm 进程如何读取其配置
当启动时,qvm 进程读取其配置输入并使用此文件中的信息来定义它为 VM 创建的虚拟硬件。
因此,当您在配置文件中添加、删除或编辑条目时,您就是在 VM 中添加、删除或编辑虚拟硬件。
您所做的相当于将存储卡或串行设备等插入物理板。
qvm 流程实例从头到尾一次性读取其配置输入。 如果多次定义一个组件,VM 将使用同一组件的多个实例(如果允许多个实例)或为组件读取的最后一个配置信息进行配置。
配置文件
由于 VM 配置很复杂,因此建议使用配置文件。
QNX hypervisors 提供的虚拟机配置文件的名称使用以下命名法:guest.qvmconf
,其中 guest 是将在该文件配置的虚拟机中运行的guest操作系统(例如 qnx71、linux44)。
参考“Understanding QNX Virtual Environments”章节的Filenames。
参考以下具体操作:
- 定义特定的虚拟机组件:VM Configuration Reference
- 配置特定的vdev:Virtual Device Reference
- 使用配置文件启动 QVM 流程实例(或不使用):参考Booting and Shutting Down章节的Starting VMs
有关 VM 配置文件的示例,请参阅本章中的VM configuration file example; 有关启动guest的详细信息,请参阅Booting and Shutting Down一章中的Starting a guest。
配置文件的位置
通常,我们将虚拟机 (qvm) 配置文件放在 /guest/guestos/
中,guestos
标识来宾操作系统(例如,/guest/qnx71/qnx71-guest.qvmconf
)。
此位置是任意的。您可以将 qvm 配置文件放在目标上所需的任何位置,并在开发和调整系统时为不同的配置维护多个副本。只需确保将每个 qvm 流程实例指向要用于每个guest的配置文件即可。