搭建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
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899563.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899563.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899563.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C#/.NET/.NET Core技術前沿周刊 | 第 31 期(2025年3.17-3.23)

前言 C#/.NET/.NET Core技術前沿周刊,你的每周技術指南針!記錄、追蹤C#/.NET/.NET Core領域、生態的每周最新、最實用、最有價值的技術文章、社區動態、優質項目和學習資源等。讓你時刻站在技術前沿,助力技術成長與視野拓寬。 歡迎投稿、推薦…

粘包問題解決方案

粘包問題詳解:TCP協議中的常見問題及Go語言解決方案 一、什么是粘包問題? 粘包問題是指在TCP通信中,發送方發送的多個獨立消息在接收方被合并成一個消息接收的現象。換句話說,發送方發送的多條消息在接收方被“粘”在一起&#…

vue:突然發現onok無法使用

const that this;this.$confirm({title: "修改商品提示",content: "如果當前商品存在于商品活動庫,則在商品活動庫的狀態會下架",onOk: function () {that.submitForm();}}); 突然發現 this.$confirm無法進入onok 最終發現是主題沖突&#x…

redis hashtable 的sizemask理解

在 Redis 的哈希表實現中,index hash & dict->ht[0].sizemask 是計算鍵值對應存儲位置的核心操作。這個操作看起來簡單,但背后涉及哈希表的內存布局和性能優化策略。我們通過以下步驟逐步解析其原理: 一、哈希表的設計目標 快速定位…

Ruby 命令行選項

Ruby 命令行選項 概述 Ruby 是一種廣泛使用的編程語言,它擁有強大的命令行工具,可以幫助開發者進行各種任務。了解 Ruby 的命令行選項對于提高開發效率至關重要。本文將詳細介紹 Ruby 的常用命令行選項,幫助開發者更好地利用 Ruby 的命令行功能。 Ruby 命令行選項概述 R…

【STM32】WDG看門狗(學習筆記)

學習來源----->江協科技STM32 WDG簡介 WDG(Watchdog)看門狗看門狗可以監控程序的運行狀態,當程序因為設計漏洞、硬件故障、電磁干擾等原因,出現卡死或跑飛現象時,看門狗能及時復位程序,避免程序陷入長…

Java 數據庫連接池

HikariCP 老外開源的。 Spring Boot 2 之后默認選擇的連接池。 號稱性能最快的數據庫連接池。 為什么性能好呢? ● 字節碼級別的優化-盡量的利用 JIT 的內聯手段 ● 字節碼級別的優化-利用更容易被 JVM 優化的指令 ● 代碼級別的優化-利用改造后的 FastList 代替…

Spring Boot中@Valid 與 @Validated 注解的詳解

Spring Boot中Valid 與 Validated 注解的詳解 引言Valid注解功能介紹使用場景代碼樣例 Validated注解功能介紹使用場景代碼樣例 Valid與Validated的區別結論 引言 在Spring Boot應用中,參數校驗是確保數據完整性和一致性的重要手段。Valid和Validated注解是Spring …

C++搜索

功能擴展說明: 圖類封裝:將圖數據結構封裝為類,提高代碼復用性 最短路徑查找:基于BFS實現未加權圖的最短路徑查找 路徑重構:通過parent數組回溯構建完整路徑 異常處理:當路徑不存在時返回空向量 復雜度分析…

2023第十四屆藍橋杯大賽軟件賽國賽C/C++ 大學 B 組(真題題解)(C++/Java題解)

本來想刷省賽題呢,結果一不小心刷成國賽了 真是個小迷糊〒▽〒 但,又如何( ?? ω ?? )? 記錄刷題的過程、感悟、題解。 希望能幫到,那些與我一同前行的,來自遠方的朋友😉 大綱: 一、子2023-&#xff…

CSS學習筆記6——網頁布局

目錄 一、元素的浮動屬性、清除浮動 清除浮動的其他方法 1、使用空標簽清除浮動影響 2、使用overflow屬性清除浮動 3、使用偽元素清除浮動影響 原理 overflow屬性 二、元素的定位 1、相對定位 2、絕對定位 ?編輯 3、固定定位 z-index層疊等級屬性 一、元素的浮動…

sqlalchemy:將mysql切換到OpenGauss

說明 之前python的項目使用的mysql,近期要切換到國產數據庫OpenGauss。 之前的方案是fastapisqlalchemy,測試下來發現不用改代碼,只要改下配置即可。 切換方案 安裝openGauss-connector-python-psycopg2 其代碼工程在:https:…

uniapp 獲取dom信息(封裝獲取元素信息工具函數)

在uniapp開發中,需要獲取到dom的信息,需要用到uniapp的指定方式 uni.createSelectorQuery(),但是每次需要用到的時候都需要很長一段的繁瑣代碼,本篇文章將呈現獲取dom信息方法封裝,話不多說,上菜&#xff1…

Linux之數據鏈路層

Linux之數據鏈路層 一.以太網1.1以太網幀格式1.2MAC地址1.3MTU 二.ARP協議2.1ARP協議工作流程2.2ARP協議格式 三.NAT技術四.代理服務4.1正向代理4.2反向代理 五.四大層的學習總結 一.以太網 在我們學習完了網絡層后我們接下來就要進入數據鏈路層的學習了,在學習完網…

MySQL的基礎語法2(函數-字符串函數、數值函數、日期函數和流程函數 )

目錄 一、字符串函數 1.常見字符串函數 ?編輯 2.字符串函數的基本使用 3.字符串函數的數據庫案例演示 二、數值函數 1.常見數值函數(如下): 2.數值函數的基本使用 3.數值函數的數據庫案例演示 三、日期函數 1.常見的日期函數 2.日…

全新版租賃商城小程序源碼系統 源碼開源支持二開+圖文搭建教程

在互聯網商業的浪潮中,租賃業務憑借其獨特的優勢,正逐漸成為市場的新寵。對于開發者而言,快速搭建一個功能完備的租賃商城小程序,不僅能滿足市場需求,還能為自己的業務拓展帶來新的機遇。分享一款全新版租賃商城小程序…

Cent OS7+Docker+Dify

由于我之前安裝了Dify v1.0.0,出現了一些問題:無法刪除,包括:知識庫中的文件、應用、智能體、工作流,都無法刪除。現在把服務器初始化,一步步重新安裝,從0到有。 目錄 1、服務器重裝系統和配置…

OSI 七層模型和四層模型(TCP/IP 模型)

文章目錄 前言一、OSI 七層模型二、TCP/IP 四層模型三、運行協議及設備1. OSI 七層模型2. TCP/IP 四層模型3. 運行協議4. 各類設備的作用 總結 前言 OSI 七層模型和四層模型(TCP/IP 模型)是兩種常見的網絡協議分層架構,它們的主要區別如下&a…

AI的未來:機遇、挑戰與發展方向

📝個人主頁🌹:一ge科研小菜雞-CSDN博客 🌹🌹期待您的關注 🌹🌹 1. 引言 人工智能(AI)已經成為當今世界最具革命性的技術之一,它正在深刻改變各個行業&#x…

javascript實現一個函數,將字符串中的指定子串全部替換為另一個字符串的原理,以及多種方法實現。

大白話javascript實現一個函數,將字符串中的指定子串全部替換為另一個字符串的原理,以及多種方法實現。 在JavaScript里,要是你想把字符串里的指定子串都替換成另外一個字符串,有不少方法可以實現。下面我會詳細介紹實現的原理&a…