2. 虚拟化与隔离基础
说实话,做嵌入式虚拟化开发,环境搭不好,后面全是坑。我见过太多人卡在第一步——装好了跑不起来,或者跑起来了发现许可证过期。这一章,咱们就把这三件事一次性搞定。
2.1 QNX SDP 7.1 安装:别踩这些坑
QNX Software Development Platform (SDP) 7.1 是咱们整个课程的基础。它包含了编译器、调试器、BSP 以及最重要的——QNX Hypervisor 的运行时库。
系统要求(我建议你至少满足这些):
| 项目 | 最低配置 | 推荐配置 |
|---|---|---|
| 操作系统 | Ubuntu 20.04 LTS / RHEL 8.x | Ubuntu 22.04 LTS |
| CPU | 4 核 x86_64 | 8 核以上(支持虚拟化) |
| 内存 | 8 GB | 16 GB 或更多 |
| 磁盘 | 50 GB 空闲 | 100 GB SSD |
安装步骤其实不复杂,但有几个细节容易翻车。
- 获取安装包: 从 QNX 官网或你的销售代表那里拿到
qnx-sdp-7.1.0-xxx.run文件。注意,这个文件大约 4-5 GB。 - 赋予执行权限:
chmod +x qnx-sdp-7.1.0-xxx.run - 运行安装:
sudo ./qnx-sdp-7.1.0-xxx.run - 选择安装路径: 我个人习惯放在
/opt/qnx710,避免权限问题。
安装完成后,记得设置环境变量。把下面这行加到你的 ~/.bashrc 里:
export QNX_HOST=/opt/qnx710/host/linux/x86_64
export QNX_TARGET=/opt/qnx710/target/qnx7
export PATH=$QNX_HOST/usr/bin:$PATH
export MAKEFLAGS=-j$(nproc)
然后 source ~/.bashrc。验证一下:
qcc --version
如果能看到版本信息,说明安装成功了。
2.2 QNX Hypervisor 许可激活:一次搞定,别折腾
QNX Hypervisor 不是免费的。你需要一个有效的许可证文件。嗯,这里要注意,许可证分两种:评估版和正式版。评估版通常有 30 天或 90 天的限制。
激活流程:
- 获取许可证文件: 从 BlackBerry QNX 的许可门户下载
.lic文件。 - 放置许可证: 将文件复制到
$QNX_TARGET/etc/qnx/license/目录下。 - 验证激活: 使用
qlicense -l命令查看当前许可证状态。
# 查看所有已安装的许可证
qlicense -l
# 输出示例:
# Licensed features:
# qnx_hypervisor_7.1 : permanent
# qnx_sdp_7.1 : permanent
如果激活失败,最常见的原因是环境变量没设对。检查一下 QNX_TARGET 是否指向了正确的路径。
2.3 QEMU 模拟器配置:让虚拟化跑起来
QEMU 是咱们在开发阶段的主力。你不可能每次调试都往真机上烧写,太慢了。QEMU 可以模拟 ARM 和 x86 平台,配合 QNX Hypervisor 做多域隔离验证。
安装 QEMU:
sudo apt-get install qemu-system-arm qemu-system-x86_64
QNX SDP 7.1 自带了针对 QEMU 的 BSP(Board Support Package)。你可以在 $QNX_TARGET/qnx7/qemu/ 下找到预编译的内核和启动脚本。
启动一个 QNX 虚拟机实例:
# 进入 QEMU 相关目录
cd $QNX_TARGET/qnx7/qemu/x86_64
# 启动虚拟机
./qemu-system-x86_64 \
-m 1024 \
-smp 2 \
-kernel bzImage \
-append "root=/dev/ram0 console=ttyS0" \
-initrd initrd.img \
-nographic
你会看到 QNX 内核启动的日志,最后出现 # 提示符。这说明 QEMU 环境已经跑起来了。
sudo apt-get install qemu-system-x86=1:6.2.0+dfsg-1。
2.4 验证 Hypervisor 是否可用
环境搭好了,咱们得确认 Hypervisor 真的能用。QNX 提供了一个简单的测试工具 qvm。
# 查看 qvm 版本
qvm -v
# 输出示例:
# QVM (QNX Virtual Machine) version 7.1.0
# Built on: Jan 15 2023 14:30:00
如果能看到版本号,说明 Hypervisor 的运行时库已经正确安装并激活了。
接下来,咱们可以尝试启动一个最小的虚拟机实例。创建一个 test.xml 配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<hypervisor>
<vcpu_count>1</vcpu_count>
<memory>
<size>128M</size>
</memory>
<os>
<type>qnx</type>
<image>/path/to/ifs-qnx.bin</image>
</os>
</hypervisor>
然后运行:
qvm test.xml
如果一切正常,你会看到第二个 QNX 系统在 Hypervisor 之上启动。这就是多域隔离的雏形。
2.5 本章知识结构总览
下面这张图把咱们刚才做的事情串起来了。你想想看,从宿主机到 QEMU,再到 Hypervisor 和虚拟机,每一层都有它的作用。
说白了,开发环境搭建就是三层结构:宿主机操作系统、QNX SDP 开发套件、以及上层的 QEMU 和 Hypervisor 运行时。每一层都不可或缺。
好,到这里,你的开发环境应该已经就绪了。QNX SDP 7.1 装好了,Hypervisor 许可证激活了,QEMU 也能跑起来了。下一步,咱们就可以开始真正接触 QNX Hypervisor 的架构和配置了。