このソースは、読み取り専用のシステムレイヤーをデスクトップディストリビューションに変えようとするのではなく、ZimaOS をアプライアンスホストとして使用する好例です。ZimaOS には通常の apt 環境や組み込みの X.Org デスクトップに頼らず、著者はキオスクスタック全体を Docker 内に構築しました。ディスプレイ用の Debian + X.Org + Chromium に加え、ローカルダッシュボード用の小規模な nginx コンテナを使用しています。
その結果、ZimaBoard 2 1664 に接続された、動作する 22 インチタッチスクリーンキオスクが完成しました。これはコミュニティによる高度なビルドであり、IceWhale がサポートするデスクトップモードではありません。ホストネットワーク、グラフィックスと入力への直接アクセス、特権付きキオスクコンテナを使用するため、これをそのまま導入する前に、セキュリティとデバイスアクセスのトレードオフを理解してください。
キオスクは Docker 内でデスクトップスタックを実行する
ソースの Dockerfile は Debian Bookworm Slim をベースに、X.Org、libinput、Openbox、Chromium、X11 ユーティリティ、フォント、Mesa をインストールします。ホストは ZimaOS のままで、グラフィカルなユーザー空間はコンテナ内で動作します。
これはまさに、ZimaOS のアプライアンスモデルが促進するよう設計されたワークロード分離です。
Intel GPU はキオスクコンテナに公開される
このガイドでは、X.Org の modesetting ドライバーを使用し、Intel DRM デバイスをコンテナに渡します。著者は、ZimaBoard 2 で使用される N100 グラフィックススタックに必要な Mesa サポートには、Bookworm のバックポートが必要であることを確認しました。
現在の ZimaBoard 2 ハードウェアは Intel N150 を使用しているため、このガイドを再現するユーザーは、過去の N100 に関する記述が同一だと想定せず、現在の Mesa/X.Org のサポート状況を確認してください。
タッチ入力はホストの Input/Udev レイヤー経由で提供される
ディスプレイ信号には HDMI/miniDP を使用し、タッチスクリーンコントローラーは USB 経由で接続しました。このガイドでは、 /proc/bus/input/devices、X.Org で正しいイベントデバイスを割り当て、 /run/udev コンテナが入力ハードウェアを識別できるようにします。
別の nginx コンテナがダッシュボードを提供
ソースは実行されます nginx:alpine ZimaOS 以外のポート(例では 8888)で起動し、ダッシュボードファイルを読み取り専用でマウントします。Chromium はそのローカル URL をキオスクモードで開きます。
別の Web コンテナを使用すると、グラフィカルコンテナを再ビルドせずにダッシュボードファイルを簡単に更新できます。
ダッシュボードにZimaOSのポート80を再利用しないでください
このガイドでは、ZimaOSがすでにダッシュボードにポート80を使用していることを明記しています。Chromiumが誤ったページを開く場合は、カスタムダッシュボードのポートと KIOSK_URL ZimaOSを予期せず変更するのではなく、値を使用します。
著者はタッチタップ向けにポインターイベントの回避策を追加しました
ソースのダッシュボードでは、指のわずかな動きによってChromiumが従来の onclick ハンドラー。著者はクリック処理を pointerup に加えて、移動量のしきい値を設定しました。
このJavaScriptはアプリケーション固有のものです。タッチ向けに設計された最新のWebインターフェースでは、インラインの onclick 文字列。
特権モードは最大のセキュリティ上のトレードオフです
ソースではキオスクコンテナを次の設定で起動します。 --privileged。これによりデバイスとホストカーネルへの広範なアクセスが可能になり、通常のダッシュボードコンテナよりもはるかに許容範囲が広くなります。
ビルドを再現する場合は、まず明示的な設定が必要かどうかをテストしてください。 /dev/dri、入力デバイス、udevのマウント、および必要最小限のケイパビリティで十分です。ダッシュボードは信頼できるLAN上に置いてください。
ソースでは自動復旧にunless-stoppedを使用しています
nginxコンテナとキオスクコンテナは、どちらも restart: unless-stopped ZimaOSの再起動後にディスプレイが戻るように動作を設定します。Dockerfile、X.Org設定、エントリーポイント、ダッシュボードは永続 /DATA ストレージ。
現在のZimaOSではComposeによって、これをより再現性の高い形でパッケージ化できます
現在のZimaOSは、標準のDocker Compose/YAMLインポートに対応しています。複数の長い docker run コマンドを使えば、上級ユーザーは両方のサービス、再起動ポリシー、デバイス、ボリューム、ネットワークを、レビュー済みの1つのComposeファイルで指定できます。
現在のZimaOS Composeモデルを使用してください。
タッチスクリーン・キオスクに関するFAQ
ZimaOSでは、ホストにaptやデスクトップ環境をインストールする必要がありますか?
いいえ。ソースではX.Org、Openbox、Mesa、Chromiumを意図的にDocker内に保持しています。
これは公式のZimaOSデスクトップモードですか?
いいえ。これはコミュニティによるビルドで、IceWhaleがクレジット表記付きでの共有許可を求めました。
キオスクコンテナは通常のアプリと比べて、なぜ高リスクなのですか?
ソースは特権モードとグラフィックス/入力への直接アクセスを付与するため、Dockerの分離性が低下します。
