背景
本人使用 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安裝時,大致有三個詢問的交互接口:
[press q to scroll to the bottom of this agreement]
,輸入q
并回車,跳至用戶協議底部;Please type y to accept, n otherwise:
,輸入y
并回車,同意用戶協議;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 暴露給用戶。
-
安裝 Xvfb 和 VNC 服務器:
sudo apt-get install xvfb x11vnc
-
啟動 Xvfb 并綁定 VNC 服務:
# 啟動 Xvfb(顯示號 99) Xvfb :99 -screen 0 1280x1024x24 &# 啟動 VNC 服務器,綁定到 Xvfb 的顯示號 x11vnc -display :99 -forever -shared -nopw &
-
通過 VNC 客戶端連接:
- 使用 VNC 客戶端(如 TigerVNC、RealVNC)連接到服務器的
5900
端口。 - 此時可以看到 Xvfb 的虛擬顯示界面,并操作其中的應用程序。
- 使用 VNC 客戶端(如 TigerVNC、RealVNC)連接到服務器的
構建&運行
命令如下:
# 構建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