Systemd-nspawn はコンテナを起動し、自動的に lxsession を実行します。

Systemd-nspawn はコンテナを起動し、自動的に lxsession を実行します。

私はコンテナから2番目のLinuxルートファイルシステムを起動するためにsystemd-nspawnを使用するスクリプトを作成しています。

スクリプトは現在、次の行を使用してコンテナを起動します。 systemd-nspawn -b --machine virtualdesktop -D "/mnt/virtualdesktop" ホストとコンテナはDebianに基づいており、systemdを使用しています。 (正確にはRaspbian Buster)

ゲストが正しく起動してログインすると、シェルが提供されます。
しかし、それが私が望むすべてではありません。スクリプトはゲストのグラフィックもロードする必要があります。ホストはXepyrウィンドウを開き、2番目のXディスプレイを実行します:1。その後、ゲストはディスプレイでlxsession:1を実行します。

ゲストシェルに次のコマンドを入力すると、これを手動で簡単に実行できます。DISPLAY=:1 lxsession -s LXDE-pi -e LXDEしかしこれが私が助けを必要とするものです:このコマンドを実行してください自動的に、オペレーターはゲストパスワードを入力し、lxsessionコマンドを入力する必要はありません。

私は試した:

  • 次のように、必要なlxsessionコマンドをコマンドの最後に追加しますが、何も起こりません。systemd-nspawnsystemd-nspawn -b --machine virtualdesktop -D "/mnt/virtualdesktop" 'DISPLAY=:1 lxsession -s LXDE-pi -e LXDE'
  • systemd-run推奨通りに使用ここ。コンテナの実行中に次のコマンドを実行します。systemd-run --machine virtualdesktop "/usr/binlxsession -s LXDE-pi -e LXDE"ただし、Xephyrは何も表示せず、ジャーナルCTLによって報告されます。Failed to execute command: No such file or directory
    Failed at step EXEC spawning /usr/bin/lxsession -s LXDE-pi -e LXDE: No such file or directory

ベストアンサー1

コマンドから引用符を削除し、次の-E, --setenvオプションを使用します。

systemd-nspawn --machine virtualdesktop -D "/mnt/virtualdesktop" -E DISPLAY=:1 lxsession -s LXDE-pi -e LXDE

または

systemd-run --machine virtualdesktop -E DISPLAY=:1 /usr/bin/lxsession -s LXDE-pi -e LXDE

ファイルを実行しよう'DISPLAY=:1 lxsession -s LXDE-pi -e LXDE'とし、次の操作を行います'/usr/bin/lxsession -s LXDE-pi -e LXDE'

systemd-run [OPTIONS...] COMMAND [ARGS...]
systemd-nspawn [OPTIONS...] [COMMAND [ARGS...]]

おすすめ記事