当前位置: 首页 > news >正文

搭建QNX Software Center的Docker环境

背景

本人使用 Ubuntu Server 22.04 服务器,所以没有图形界面,而 QNX Software Center 需要图形界面。为了保证服务器环境的整理,计划使用Docker部署QNX Software Center 一瓶安装图形界面。本方既是实现方案的记录。

资源

  • Dockerfile,Docker 创建脚本;
  • start-vnc.sh,VNC 启动脚本;
  • qnx-setup-2.0.4-202501021438-linux.run, qnx 安装包(官网下载 [链接])

方案

处理一、跳过qnx安装时提示

qnx安装时,大致有三个询问的交互接口:

  1. [press q to scroll to the bottom of this agreement],输入q并回车,跳至用户协议底部;
  2. Please type y to accept, n otherwise:,输入y并回车,同意用户协议;
  3. Specify installation path (default: /home/gaoyang3513/qnx):,输入 /opt/qnx,安装至 /opt/qnx 目录下;

参考 qnx 安装的help信息,跳过交互并修改安装目录为/opt/qnx的命令如下:

qnx-setup-2.0.4-202501021438-linux.run --quiet --noexec --nox11 --target /opt/qnx

处理二、支持图形显示与交互

当前 Ubuntu Server 宿主机无图形界面,参考AI工具给到的建议:选用 Xvfb 虚拟显示 + VNC 客户端 的方式支持用户连接并操作。其中 Xvfb(X Virtual Framebuffer) 是一个在内存中运行的虚拟 X11 服务器,它本身不提供可视化的图形界面,但可以运行需要图形环境的应用程序。将 Xvfb 的虚拟显示内容通过 VNC 暴露给用户。

  1. 安装 Xvfb 和 VNC 服务器

    sudo apt-get install xvfb x11vnc
    
  2. 启动 Xvfb 并绑定 VNC 服务

    # 启动 Xvfb(显示号 99)
    Xvfb :99 -screen 0 1280x1024x24 &
    
    # 启动 VNC 服务器,绑定到 Xvfb 的显示号
    x11vnc -display :99 -forever -shared -nopw &
    
  3. 通过 VNC 客户端连接

    • 使用 VNC 客户端(如 TigerVNC、RealVNC)连接到服务器的 5900 端口。
    • 此时可以看到 Xvfb 的虚拟显示界面,并操作其中的应用程序。

构建&运行

命令如下:

# 构建Docker
docker build -t qnx-vnc .

# 运行
docker run -it -p 5901:5901 --name qnx-vnc-container qnx-vnc

展示

在这里插入图片描述

附件

  • Dockerfile

    # 基于 Ubuntu 22.04
    FROM ubuntu:22.04
    
    # 安装基础工具和依赖
    RUN apt-get update && apt-get install -y \
        wget \
        xvfb \
        fluxbox \
        x11vnc \
        xterm \
        libgtk-3-0 \
        libnss3 \
        libx11-xcb1 \
        libxtst6 \
        libasound2 \
        expect \
        dbus-x11 \
        gnome-session-bin \
        libswt-gtk-4-jni \
        sudo             
    
    # 复制安装包和脚本
    COPY qnx-setup-2.0.4-202501021438-linux.run /tmp/
    COPY install_qnx.exp /tmp/
    
    # 运行自动化安装
    RUN chmod +x /tmp/qnx-setup-2.0.4-202501021438-linux.run && \
        /tmp/qnx-setup-2.0.4-202501021438-linux.run --quiet --noexec --nox11 --target /opt/qnx
    
    # 创建非 root 用户(避免权限问题)
    RUN useradd -m -s /bin/bash qnxuser && \
        echo "qnxuser ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
    
    # 配置启动脚本
    COPY start-vnc.sh /start-vnc.sh
    RUN chmod +x /start-vnc.sh
    
    # 设置 VNC 端口和显示变量
    ENV DISPLAY=:1 \
        VNC_PORT=5901 \
        RESOLUTION=1280x1024x24
    
    # 切换到非 root 用户
    USER qnxuser
    WORKDIR /home/qnxuser
    
    # 启动 VNC 服务和 QNX Software Center
    CMD ["/start-vnc.sh"]
    
    
    
  • start-vnc.sh

    #!/bin/bash
    
    # 启动 Xvfb 虚拟显示
    Xvfb $DISPLAY -screen 0 $RESOLUTION &
    
    # 启动 Fluxbox 窗口管理器
    fluxbox &
    
    # 启动 x11vnc 服务器(监听 VNC 端口)
    x11vnc -display $DISPLAY -forever -shared -rfbport $VNC_PORT -bg -nopw &
    
    # 启动 QNX Software Center
    /opt/qnx/qnxsoftwarecenter/qnxsoftwarecenter
    

相关文章:

  • AIGC(生成式AI)试用 28 -- 跟着清华教程学习 - AIGC发展研究 3.0
  • 整合分块请求大模型返回的测试用例及小工具显示bug修复
  • 新手小白如何使用docsify本地搭建一个文档网站并一键发布公网
  • Vue 项目安装依赖报错:errno -4048
  • 线性表入门
  • 【蓝桥杯14天冲刺课题单】Day3
  • Day 09
  • Qwt入门
  • STC89C52单片机学习——第38节: [17-2] 红外遥控红外遥控电机
  • LangChain4j 入门(二)
  • 分治-归并系列一>数组中的逆序对
  • Linux的异常修复机制__ex_table主要作用
  • 全球地理数据库 GeoNames
  • Android Framework 层 Hook 技术详解
  • 内网渗透(DMZ--->DC)
  • 监控易一体化运维:资产管理,企业资产的智能管家
  • 项目日志是否应该启用文件压缩?
  • Keil调试(RTT Debug 断点)
  • 查看iphone手机的使用记录-克魔实战
  • OpenCv(二)——边界填充、阈值处理