私はコンテナから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-nspawn
systemd-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...]]