• 正文
  • 相关推荐
申请入驻 产业图谱

什么是QNX系统,如何在VirtualBox中安装QNX系统

09/14 08:18
301
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

1 QNX是什么

1.1 QNX简介

QNX(发音 /ˈkjuːnɪks/)是BlackBerry 黑莓旗下硬实时微内核操作系统(RTOS,Real-Time Operating System)

该系统最初由Gordon Bell和Dan Dodge在1980年成立的Quantum Software Systems公司开发,原名QUNIX(Quick UNIX),后更名为QNX,主打高可靠、确定性实时、安全隔离

QNX 内核本身体积很小,仅几十 KB,只保留 4 项最基础能力:

    线程调度(抢占式硬实时调度)进程间消息通信 IPC中断处理基础内存管理

文件系统、网卡驱动、显卡驱动、TCP/IP 协议栈全部运行在【用户态独立进程】,不是内核模块,互相内存隔离。

    • 优势:

某一个驱动 / 服务崩溃,仅仅杀死自己,不会导致整个系统宕机,可自动重启该组件

    Linux 宏内核:驱动、网络栈全部跑在内核空间,任何驱动异常大概率直接系统 panic、整机重启

主要应用领域

1.2 QNX与Linux的差异

项目 QNX Neutrino Linux
内核类型 微内核 宏内核
实时性 硬实时,确定低抖动 PREEMPT_RT 补丁实现软实时,抖动更大
故障隔离 驱动独立进程,单组件崩溃不宕机 驱动在内核,驱动崩溃容易整机 panic
功能安全 原生支持 ASIL-D 认证 认证成本极高
授权 商业收费,需要 license 开源免费 GPL
生态 商业、安全工具链完善,开源库少 海量开源软件、AI 框架丰富

2 QNX SDP安装

官网 https://qnx.software/en  点击 GET QNX图标,进入如下界面

https://qnx.software/en/developers/get-started/qnx-everywhere/licensing ,有两种选项

    非商用许可:无限使用商业许可:试用30天

2.1 获取QNX许可

我们点左边非商用的最下面的Get QNX Everywhere,进入如下界面:https://www.qnx.com/products/everywhere/

    如果有QNX账号,直接登录如果没有账号,先注册QNX账号

先注册账号,用邮箱注册,填写信息后,注册很快。

然后回到刚才的界面,进行登录,登录后,会有如下界面:

    先点Step 1的申请许可,30分钟内邮箱回收到邮件收到邮件后,点Step 2的链接,可以看到有许可信息

然后点Accept License,输入邮箱,确认

然后再点Deploy

最终效果如下:

2.2 下载QNX Software Center

QNX Software Center是一个QNX相关软件包的安装管理软件,我们需要QNX系统镜像,需要先安装QNX Software Center

回到之前的Step 3的界面,点击Step 3中的链接,进入如下界面,然后点击最下面的Windows Hosts

点进去后,点击Download Now进行下载

下载得到的qnx-setup-2.0.4-202501021438-win.exe,大小98M,下载需要一段时间

2.3 安装QNX Software Center

双击安装后,输入刚才注册账号用的邮箱

2.4 安装QNX SDP

我们需要的QNX系统镜像,需要先安装QNX SDP(Software Development Platform),是主机开发套件(Windows/Linux 上安装 Momentics IDE、mkqnximage 工具,用来构建 QNX 镜像)

QNX8 主要更新:

全新一代微内核,多核扩展性大幅提升,支持 2~64 核 SoC支持 x86_64、ARMv8/ARMv9GCC12 工具链,支持 C++17/C++20图形组件:Screen(QNX 原生 GUI 框架,仅 VMware 虚拟机支持图形,VirtualBox 下无显卡驱动,只能命令行)高性能网络栈,优化 PCIe、虚拟化能力

在QNX Software Center中安装需要使用的QNX SDP,点开要用的QNX SDP 8.0

然后按照提示,Next安装,可以选择安装位置

安装完成之后,对应的安装目录是如下效果:

3 VirtualBox中安装QNX系统

3.1 配置VirtualBox的全局NAT网络

打开 VirtualBox 管理器 → 菜单【管理】→【工具】→【网络】,或者直接点左侧的【网络】

如果找不到【网络】,需要先安装VirtualBox的扩展包,然后在VirtualBox的首选项中切换到“专家级”

NAT的默认配置如下,基本不需要改,确保

名称:NatNetwork

IPv4 网段:10.0.2.0/24

3.2 命令行 mkqnximage构建QNX系统镜像

Windows命令行进入刚才的QNX SDP的安装目录,先执行qnxsdp-env.bat

C:UsersAdministrator>d:

D:>cd D:Tools4qnxqnx800

D:Tools4qnxqnx800>
D:Tools4qnxqnx800>qnxsdp-env.bat

然后准备构建QNX系统镜像,可以先在指定位置创建目录,然后切换到对应目录后,使用mkqnximage构建镜像

mkdir G:qnx8-vbox

G:>cd qnx8-vbox

mkqnximage --type=vbox --arch=x86_64 --graphics=yes --hostname=qnx8 --build

--type=vbox:目标平台 VirtualBox

--arch=x86_64:x86_64 架构

--graphics=yes:启动图形桌面,不加则只有控制台

--build:构建镜像

构建完成之后,mkqnximage 会自动在 VirtualBox 里注册虚拟机,打开 VirtualBox 管理器就能看到 QNX8 虚拟机条目

也可以在命令行中启动虚拟机

mkqnximage --run

查看 QNX 虚拟机 IP

mkqnximage --getip

同时在Virtual Box的界面中也可以查看,并且也可以使用ifconfig查看IP地址

停止虚拟机的指令

mkqnximage --stop

上述使用QNX SDP完整的指令记录

C:UsersAdministrator>d:

D:>cd D:Tools4qnxqnx800

D:Tools4qnxqnx800>
D:Tools4qnxqnx800>qnxsdp-env.bat

D:Tools4qnxqnx800>set QNX_BASE=D:/Tools4/qnx/qnx800/

D:Tools4qnxqnx800>if "/" == "/" set QNX_BASE=D:/Tools4/qnx/qnx800

D:Tools4qnxqnx800>set QNX_TARGET=D:/Tools4/qnx/qnx800/target/qnx

D:Tools4qnxqnx800>set QNX_HOST=D:/Tools4/qnx/qnx800/host/win64/x86_64

D:Tools4qnxqnx800>set QNX_CONFIGURATION_EXCLUSIVE=C:UsersAdministrator/.qnx

D:Tools4qnxqnx800>set QNX_CONFIGURATION=C:UsersAdministrator/.qnx

D:Tools4qnxqnx800>set MAKEFLAGS=-ID:/Tools4/qnx/qnx800/target/qnx/usr/include

D:Tools4qnxqnx800>set PATH=D:/Tools4/qnx/qnx800/host/win64/x86_64/usr/bin;D:/Tools4/qnx/qnx800/host/common/bin;C:Program 
##省略...

D:Tools4qnxqnx800>set PYTHONDONTWRITEBYTECODE=1

D:Tools4qnxqnx800>set TMPDIR=C:UsersADMINI~1AppDataLocalTemp

D:Tools4qnxqnx800>if exist D:/Tools4/qnx/qnx800license-env.bat D:/Tools4/qnx/qnx800license-env.bat

D:Tools4qnxqnx800>mkdir G:qnx8-vbox

D:Tools4qnxqnx800>g:

G:>cd qnx8-vbox

G:qnx8-vbox>mkqnximage --type=vbox --arch=x86_64 --graphics=yes --hostname=qnx8 --build
Options changed

To allow root ssh, you need an ssh identity file.  You probably want to use
an option such as:

    --ssh-ident=~/.ssh/id_ed25519.pub

To just avoid future messages use --ssh-ident=none

Run mkqnximage --help=ssh-ident for more information

Generating output/build/mount_fs.sh
Generating output/build/expandfs.sh
Generating output/build/post_startup.sh
Generating output/build/start_net.sh
Generating output/build/startup.sh
Generating output/build/passwd
Generating output/build/group
Generating output/build/shadow
Generating output/build/ifs.build
Generating output/build/system.build
Generating output/build/data.build
Building disk
Generating system partition . . .
Warning: Host file 'etc/system/config/img.conf' missing.
Warning: Host file 'usr/share/fonts' missing.
Warning: Host file 'bin/fc-cache' missing.
Warning: Host file 'usr/bin/gles2-gears' missing.
Warning: Host file 'usr/bin/sw-vsync' missing.
Warning: Host file 'lib/libimg.so.1' missing.
Warning: Host file 'usr/lib/__LIBFREETYPE__' missing.
Warning: Host file 'usr/lib/libfontconfig.so.1' missing.
Warning: Host file 'usr/lib/__LIBPNG16__' missing.
Warning: Host file 'lib/dll/img_codec_bmp.so' missing.
Warning: Host file 'lib/dll/img_codec_gif.so' missing.
Warning: Host file 'lib/dll/img_codec_jpg.so' missing.
Warning: Host file 'lib/dll/img_codec_png.so' missing.
Warning: Host file 'lib/dll/img_codec_sgi.so' missing.
Warning: Host file 'lib/dll/img_codec_tga.so' missing.
Warning: Host file 'lib/dll/img_codec_tif.so' missing.
Generating data partition . . .
Generating ifs . . .
Building boot partition . . .
Building disk . . .
Create
Target type: vbox
Architecture: x86_64
Security: no
Repositories:

    D:/Tools4/qnx/qnx800/target/qnx

Options with non-default values:

--graphics='yes'

For full list of options, run "mkqnximage --options"

G:qnx8-vbox>mkqnximage --run

G:qnx8-vbox>mkqnximage --getip
192.168.56.101

G:qnx8-vbox>mkqnximage --stop

G:qnx8-vbox>

3.3 QNX虚拟机的其它配置

Virtual Box虚拟机中的qnx8的界面不能自动缩放,之前在ubuntu中需要这种情况,是安装增强功能,不过试了下qnx8不支持安装增强功能

默认的内存、显存、CPU如果觉得不合适,可以手动修改

4 QNX系统简单使用

由于Virtual Box虚拟机中的qnx8的界面不能自动缩放,我们可以使用SSH登录来使用它的命令行界面。

IP地址上面介绍过如何获取,SSH登录后,用户名和密码都是root,登录后如下,可以使用uname -a查看QNX的版本

也可以使用top指令查看系统内存和CPU的使用

5 总结

本篇介绍了什么是QNX,以及如何在Windosw系统的VirtualBox虚拟机中安装QNX系统,先简单介绍了什么是QNX,然后介绍如何获取QNX许可,如何安装QNX的软件中心和SDP,如何进行QNX系统镜像构建和配置到VirtualBox虚拟机中,最后演示简单使用QNX系统。

相关推荐

控制科学与工程硕士,日常分享单片机、嵌入式、C/C++、Linux等学习经验干货~