当前的QNX虚拟镜像是基于QNX SDP 7.0版本, 并且下载的虚拟系统是基于VMware的,需要VMware Workstation Pro/Player 12.0+打开.
另外需要注意的是该虚拟机是最小QNX Neutrino RTOS系统,不带图形化桌面组件.

启动虚拟机

  1. 打开VMware Workstation/Player
  2. 加载QNX虚拟机文件QNX_SDP.vmx
  3. 修改虚拟机Display配置,勾选3D
  4. Power on虚拟机

200703055427_open_vm_file1.png
200703055538_open_vm_file2.png
200703055427_config_vm.png
200703055933_run_vm.png

启动图形界面

虚拟机启动后进入了命令行模式, 运行如下脚本打开screen图形界面.

/etc/graphics-startup.sh

但运行后,会出现黑屏,没有其他显示.

200703062046_graphics-screen.png

这里我们可以查看脚本:

echo Starting graphics!

export LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib:/usr/lib/graphics/vmware
export PATH=/sbin:/bin:/proc/boot:/usr/bin:/usr/sbin
export GRAPHICS_ROOT=/usr/lib/graphics/vmware

echo "Starting screen"
screen

waitfor /dev/screen

可以发现该脚本主要设置了环境变量和运行了screen程序.

其实screen程序启动成功之后,我们需要运行带界面的程序自己渲染界面, 默认的界面就是黑屏.
我们可以先尝试运行系统提供的screen示例程序

运行图形示例程序

gles1-vsync

/usr/bin/gles1-vsync
This application uses software rendering to draw the gears.

可以在QNX SDP安装目录下找到该程序: C:\Users\<username>\qnx700\target\qnx7\x86_64\usr\bin\gles1-vsync.
将其上传到虚拟机/usr/bin或qnxuser home目录下. 不要忘记修改其运行权限
虚拟器登录账号: qnxuser/qnxuser
root账号: root/root

200703051547_gles1-vsync.png

gles2-gears

/usr/bin/gles2-gears
This application shows gears that use OpenGL ES 2.X for the rendering API.

200703051734_gles2-gears.png

vg-tiger

/usr/bin/vg-tiger
This application uses OpenVG for the rendering API.

注意: 该示例在QNX_SDP-x86_64虚拟机上执行失败

要启动如上的示例程序, 我们需要修改下脚本:

// graphics-startup.sh
echo Starting graphics!

export LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib:/usr/lib/graphics/vmware
export PATH=/sbin:/bin:/proc/boot:/usr/bin:/usr/sbin
export GRAPHICS_ROOT=/usr/lib/graphics/vmware

echo "Starting screen"
screen

waitfor /dev/screen
# show screen log
# slog2info -b screen
# sample program
gles2-gears

# /home/qnxuser/gles1-vsync

具体步骤如下:

  1. 启动虚拟机后编辑/etc/graphics-startup.sh脚本如上
  2. 确保运行的示例程序存在虚拟机相应位置,且有执行权限
  3. 在虚拟机命令行下执行脚本/etc/graphics-startup.sh
  4. 查看虚拟机界面有无变化,正常情况下会切到黑屏界面并接作运行示例程序,有界面显示